| Index: native_client_sdk/src/build_tools/build_sdk.py
|
| diff --git a/native_client_sdk/src/build_tools/build_sdk.py b/native_client_sdk/src/build_tools/build_sdk.py
|
| index 69243bee2eeef04e5bbce38ac4d0af2171f886ed..a6433fa32c13c974bdc627e11e25b86fef9bd877 100755
|
| --- a/native_client_sdk/src/build_tools/build_sdk.py
|
| +++ b/native_client_sdk/src/build_tools/build_sdk.py
|
| @@ -67,6 +67,7 @@
|
| TOOLCHAIN_PACKAGE_MAP = {
|
| 'arm_glibc': ('nacl_arm_glibc', '%(platform)s_arm_glibc', 'arm'),
|
| 'x86_glibc': ('nacl_x86_glibc', '%(platform)s_x86_glibc', 'x86'),
|
| + 'arm_bionic': ('nacl_arm_bionic', '%(platform)s_arm_bionic', 'arm'),
|
| 'pnacl': ('pnacl_newlib', '%(platform)s_pnacl', 'pnacl')
|
| }
|
|
|
| @@ -84,7 +85,7 @@
|
| def GetToolchainLibc(tcname):
|
| if tcname == 'pnacl':
|
| return 'newlib'
|
| - for libc in ('glibc', 'newlib', 'host'):
|
| + for libc in ('bionic', 'glibc', 'newlib', 'host'):
|
| if libc in tcname:
|
| return libc
|
|
|
| @@ -124,7 +125,10 @@
|
| else:
|
| lib_suffix = ''
|
|
|
| - tcdir = 'tc_' + GetToolchainLibc(tcname)
|
| + if tcname == 'arm_bionic':
|
| + tcdir = 'tc_newlib'
|
| + else:
|
| + tcdir = 'tc_' + GetToolchainLibc(tcname)
|
|
|
| if tcname == 'pnacl':
|
| if arch is None:
|
| @@ -163,6 +167,9 @@
|
| def BuildStepDownloadToolchains(toolchains):
|
| buildbot_common.BuildStep('Running package_version.py')
|
| args = [sys.executable, PKGVER, '--mode', 'nacl_core_sdk']
|
| + if 'arm_bionic' in toolchains:
|
| + build_platform = '%s_x86' % getos.GetPlatform()
|
| + args.extend(['--append', os.path.join(build_platform, 'nacl_arm_bionic')])
|
| args.extend(['sync', '--extract'])
|
| buildbot_common.Run(args, cwd=NACL_DIR)
|
|
|
| @@ -286,6 +293,9 @@
|
| ('native_client/src/untrusted/valgrind/dynamic_annotations.h', 'nacl/'),
|
| ('ppapi/nacl_irt/public/irt_ppapi.h', ''),
|
| ],
|
| + 'bionic': [
|
| + ('ppapi/nacl_irt/public/irt_ppapi.h', ''),
|
| + ],
|
| }
|
|
|
| def InstallFiles(src_root, dest_root, file_list):
|
| @@ -344,6 +354,13 @@
|
| # already provided by the toolchain.
|
| # Mapping from libc to libraries gyp-build trusted libraries
|
| TOOLCHAIN_LIBS = {
|
| + 'bionic' : [
|
| + 'libminidump_generator.a',
|
| + 'libnacl_dyncode.a',
|
| + 'libnacl_exception.a',
|
| + 'libnacl_list_mappings.a',
|
| + 'libppapi.a',
|
| + ],
|
| 'newlib' : [
|
| 'libminidump_generator.a',
|
| 'libnacl.a',
|
| @@ -435,7 +452,7 @@
|
| xarches = (None, 'ia32', 'x64', 'arm')
|
| elif tc in ('x86_glibc', 'x86_newlib'):
|
| xarches = ('ia32', 'x64')
|
| - elif tc == 'arm_glibc':
|
| + elif tc in ('arm_glibc', 'arm_bionic'):
|
| xarches = ('arm',)
|
| else:
|
| raise AssertionError('unexpected toolchain value: %s' % tc)
|
| @@ -852,7 +869,12 @@
|
|
|
| def main(args):
|
| parser = argparse.ArgumentParser(description=__doc__)
|
| + parser.add_argument('--nacl-tree-path',
|
| + help='Path to native client tree for bionic build.',
|
| + dest='nacl_tree_path')
|
| parser.add_argument('--qemu', help='Add qemu for ARM.',
|
| + action='store_true')
|
| + parser.add_argument('--bionic', help='Add bionic build.',
|
| action='store_true')
|
| parser.add_argument('--tar', help='Force the tar step.',
|
| action='store_true')
|
| @@ -890,6 +912,29 @@
|
|
|
| buildbot_common.BuildStep('build_sdk')
|
|
|
| + if options.nacl_tree_path:
|
| + options.bionic = True
|
| + toolchain_build = os.path.join(options.nacl_tree_path, 'toolchain_build')
|
| + print 'WARNING: Building bionic toolchain from NaCl checkout.'
|
| + print 'This option builds bionic from the sources currently in the'
|
| + print 'provided NativeClient checkout, and the results instead of '
|
| + print 'downloading a toolchain from the builder. This may result in a'
|
| + print 'NaCl SDK that can not run on ToT chrome.'
|
| + print 'NOTE: To clobber you will need to run toolchain_build_bionic.py'
|
| + print 'directly from the NativeClient checkout.'
|
| + print ''
|
| + response = raw_input("Type 'y' and hit enter to continue.\n")
|
| + if response != 'y' and response != 'Y':
|
| + print 'Aborting.'
|
| + return 1
|
| +
|
| + # Get head version of NativeClient tree
|
| + buildbot_common.BuildStep('Build bionic toolchain.')
|
| + buildbot_common.Run([sys.executable, 'toolchain_build_bionic.py', '-f'],
|
| + cwd=toolchain_build)
|
| + else:
|
| + toolchain_build = None
|
| +
|
| if buildbot_common.IsSDKBuilder():
|
| options.archive = True
|
| # TODO(binji): re-enable app_engine build when the linux builder stops
|
| @@ -902,6 +947,11 @@
|
| # Makefiles; the first toolchain will be the default.
|
| toolchains = ['pnacl', 'x86_glibc', 'arm_glibc', 'clang-newlib', 'host']
|
|
|
| + # Changes for experimental bionic builder
|
| + if options.bionic:
|
| + toolchains.append('arm_bionic')
|
| + options.build_app_engine = False
|
| +
|
| print 'Building: ' + ' '.join(toolchains)
|
| platform = getos.GetPlatform()
|
|
|
| @@ -915,7 +965,10 @@
|
| pepper_old = str(chrome_version - 1)
|
| pepperdir = os.path.join(OUT_DIR, 'pepper_' + pepper_ver)
|
| pepperdir_old = os.path.join(OUT_DIR, 'pepper_' + pepper_old)
|
| - tarname = 'naclsdk_%s.tar.bz2' % platform
|
| + if options.bionic:
|
| + tarname = 'naclsdk_bionic.tar.bz2'
|
| + else:
|
| + tarname = 'naclsdk_%s.tar.bz2' % platform
|
| tarfile = os.path.join(OUT_DIR, tarname)
|
|
|
| if options.release:
|
| @@ -940,7 +993,16 @@
|
| BuildStepCleanPepperDirs(pepperdir, pepperdir_old)
|
| BuildStepMakePepperDirs(pepperdir, ['include', 'toolchain', 'tools'])
|
| BuildStepDownloadToolchains(toolchains)
|
| - BuildStepUntarToolchains(pepperdir, toolchains)
|
| + if options.nacl_tree_path:
|
| + # Instead of untarring, copy the raw bionic toolchain
|
| + not_bionic = [i for i in toolchains if i != 'arm_bionic']
|
| + BuildStepUntarToolchains(pepperdir, not_bionic)
|
| + tcname = GetToolchainDirName('arm_bionic')
|
| + srcdir = os.path.join(toolchain_build, 'out', tcname)
|
| + bionicdir = os.path.join(pepperdir, 'toolchain', tcname)
|
| + oshelpers.Copy(['-r', srcdir, bionicdir])
|
| + else:
|
| + BuildStepUntarToolchains(pepperdir, toolchains)
|
| if platform == 'linux':
|
| buildbot_common.Move(os.path.join(pepperdir, 'toolchain', 'arm_trusted'),
|
| os.path.join(OUT_DIR, 'arm_trusted'))
|
| @@ -982,7 +1044,8 @@
|
| GenerateNotice(pepperdir)
|
|
|
| # Verify the SDK contains what we expect.
|
| - BuildStepVerifyFilelist(pepperdir)
|
| + if not options.bionic:
|
| + BuildStepVerifyFilelist(pepperdir)
|
|
|
| if options.tar:
|
| BuildStepTarBundle(pepper_ver, tarfile)
|
|
|