blob: 7057ea3022e745d95e49f7fa2f554b12113a429e [file] [log] [blame]
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Copyright 2018 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Build openssl package."""
from __future__ import print_function
import logging
import os
import sys
FILESDIR = os.path.dirname(os.path.realpath(__file__))
sys.path.insert(0, os.path.join(FILESDIR, '..', '..', 'bin'))
import ssh_client # pylint: disable=wrong-import-position
ARCHIVES = ('%(p)s.tar.gz',)
PATCHES = (
'nacl.patch',
'openssl-1.0.0a-ldflags.patch',
'openssl-1.0.2i-parallel-build.patch',
'openssl-1.0.2a-parallel-obj-headers.patch',
'openssl-1.0.2a-parallel-install-dirs.patch',
'openssl-1.0.2a-parallel-symlinking.patch',
)
def src_configure(metadata):
"""Configure the source."""
tc = metadata['toolchain']
if tc.chost == 'nacl':
machine = 'le32newlib'
else:
machine = tc.chost.split('-')[0]
# See if configure passed.
with open('Makefile', encoding='utf-8') as fp:
if machine in fp.read():
logging.info('Makefile exists; skipping ./configure step')
return
env = os.environ.copy()
env.update({
'SYSTEM': tc.chost,
'MACHINE': machine,
'RELEASE': '0',
})
cmd = [
'./config',
'--prefix=/',
'no-asm',
'no-deprecated',
'no-dso',
'no-ec2m',
'no-engine',
'no-gmp',
'no-gost',
'no-heartbeats',
'no-hw',
'no-krb5',
'no-rfc3779',
'no-sctp',
'no-srp',
'no-sse2',
'no-ssl2',
'no-ssl3',
'no-syslog',
'no-threads',
'no-unit-test',
'-fgnu-inline-asm',
'-D_GNU_SOURCE',
'-DNO_SYSLOG',
] + env['CPPFLAGS'].split()
ssh_client.run(cmd, env=env)
ssh_client.emake('depend', 'DIRS=crypto ssl', env=env)
def src_compile(_metadata):
"""Compile the source."""
ssh_client.emake('build_libs', 'DIRS=crypto ssl')
def src_install(metadata):
"""Install the package."""
tc = metadata['toolchain']
ssh_client.emake('install_sw', 'INSTALL_PREFIX=%s' % (tc.sysroot,),
'DIRS=crypto ssl', 'LIBS=libcrypto.a libssl.a')
ssh_client.build_package(sys.modules[__name__], 'pnacl')