summaryrefslogtreecommitdiffstats
path: root/native_client_sdk
diff options
context:
space:
mode:
Diffstat (limited to 'native_client_sdk')
-rwxr-xr-xnative_client_sdk/src/build_tools/build_sdk.py143
1 files changed, 56 insertions, 87 deletions
diff --git a/native_client_sdk/src/build_tools/build_sdk.py b/native_client_sdk/src/build_tools/build_sdk.py
index e90a142..1d8086f 100755
--- a/native_client_sdk/src/build_tools/build_sdk.py
+++ b/native_client_sdk/src/build_tools/build_sdk.py
@@ -49,7 +49,12 @@ sys.path.append(os.path.join(NACL_DIR, 'build'))
import getos
import oshelpers
-CYGTAR = os.path.join(NACL_DIR, 'build', 'cygtar.py')
+BUILD_DIR = os.path.join(NACL_DIR, 'build')
+NACL_TOOLCHAIN_DIR = os.path.join(NACL_DIR, 'toolchain')
+NACL_TOOLCHAINTARS_DIR = os.path.join(NACL_TOOLCHAIN_DIR, '.tars')
+
+CYGTAR = os.path.join(BUILD_DIR, 'cygtar.py')
+PKGVER = os.path.join(BUILD_DIR, 'package_version', 'package_version.py')
NACLPORTS_URL = 'https://naclports.googlecode.com/svn/trunk/src'
NACLPORTS_REV = 1226
@@ -58,29 +63,14 @@ GYPBUILD_DIR = 'gypbuild'
options = None
-
-def GetGlibcToolchain():
- tcdir = os.path.join(NACL_DIR, 'toolchain', '.tars')
- tcname = 'toolchain_%s_x86.tar.bz2' % getos.GetPlatform()
- return os.path.join(tcdir, tcname)
-
-
-def GetNewlibToolchain():
- tcdir = os.path.join(NACL_DIR, 'toolchain', '.tars')
- tcname = 'naclsdk_%s_x86.tgz' % getos.GetPlatform()
- return os.path.join(tcdir, tcname)
-
-
-def GetBionicToolchain():
- tcdir = os.path.join(NACL_DIR, 'toolchain', '.tars')
- tcname = 'naclsdk_%s_arm_bionic.tgz' % getos.GetPlatform()
- return os.path.join(tcdir, tcname)
-
-
-def GetPNaClToolchain():
- tcdir = os.path.join(NACL_DIR, 'toolchain', '.tars')
- tcname = 'naclsdk_pnacl_%s_x86.tgz' % getos.GetPlatform()
- return os.path.join(tcdir, tcname)
+ # Map of: ToolchainName: (PackageName, SDKDir).
+TOOLCHAIN_PACKAGE_MAP = {
+ 'newlib': ('nacl_x86_newlib', '%(platform)s_x86_newlib'),
+ 'bionic': ('nacl_arm_bionic', '%(platform)s_arm_bionic'),
+ 'arm': ('nacl_arm_newlib', '%(platform)s_arm_newlib'),
+ 'glibc': ('nacl_x86_glibc', '%(platform)s_x86_glibc'),
+ 'pnacl': ('pnacl_newlib', '%(platform)s_pnacl')
+ }
def GetToolchainNaClInclude(tcname, tcpath, arch):
@@ -131,8 +121,14 @@ def GetToolchainDirName(tcname, xarch):
def GetGypToolchainLib(tcname, xarch):
- tcpath = os.path.join(GetGypGenDir(xarch), 'sdk', 'toolchain',
- GetToolchainDirName(tcname, xarch))
+ if xarch == 'arm':
+ toolchain = xarch
+ else:
+ toolchain = tcname
+
+ tcpath = os.path.join(GetGypGenDir(xarch), 'sdk',
+ '%s_x86' % getos.GetPlatform(),
+ TOOLCHAIN_PACKAGE_MAP[toolchain][0])
return GetToolchainNaClLib(tcname, tcpath, xarch)
@@ -149,12 +145,12 @@ def GetPNaClNativeLib(tcpath, arch):
def BuildStepDownloadToolchains(toolchains):
- buildbot_common.BuildStep('Running download_toolchains.py')
- download_script = os.path.join('build', 'download_toolchains.py')
- args = [sys.executable, download_script, '--no-arm-trusted',
- '--arm-untrusted', '--keep']
+ buildbot_common.BuildStep('Running package_version.py')
+ args = [sys.executable, PKGVER, '--exclude', 'arm_trusted']
if 'bionic' in toolchains:
- args.append('--allow-bionic')
+ build_platform = '%s_x86' % getos.GetPlatform()
+ args.extend(['--append', os.path.join(build_platform, 'nacl_arm_bionic')])
+ args.append('sync')
buildbot_common.Run(args, cwd=NACL_DIR)
@@ -199,66 +195,39 @@ def BuildStepCopyTextFiles(pepperdir, pepper_ver, chrome_revision,
def BuildStepUntarToolchains(pepperdir, toolchains):
buildbot_common.BuildStep('Untar Toolchains')
platform = getos.GetPlatform()
+ build_platform = '%s_x86' % platform
tmpdir = os.path.join(OUT_DIR, 'tc_temp')
buildbot_common.RemoveDir(tmpdir)
buildbot_common.MakeDir(tmpdir)
- if 'newlib' in toolchains:
- # Untar the newlib toolchains
- tarfile = GetNewlibToolchain()
- buildbot_common.Run([sys.executable, CYGTAR, '-C', tmpdir, '-xf', tarfile],
- cwd=NACL_DIR)
-
- # Then rename/move it to the pepper toolchain directory
- srcdir = os.path.join(tmpdir, 'sdk', 'nacl-sdk')
- tcname = platform + '_x86_newlib'
- newlibdir = os.path.join(pepperdir, 'toolchain', tcname)
- buildbot_common.Move(srcdir, newlibdir)
-
- if 'bionic' in toolchains:
- # Untar the bionic toolchains
- tarfile = GetBionicToolchain()
- tcname = platform + '_arm_bionic'
- buildbot_common.Run([sys.executable, CYGTAR, '-C', tmpdir, '-xf', tarfile],
- cwd=NACL_DIR)
- srcdir = os.path.join(tmpdir, tcname)
- bionicdir = os.path.join(pepperdir, 'toolchain', tcname)
- buildbot_common.Move(srcdir, bionicdir)
-
- if 'arm' in toolchains:
- # Copy the existing arm toolchain from native_client tree
- tcname = platform + '_arm_newlib'
- arm_toolchain = os.path.join(NACL_DIR, 'toolchain', '%s_x86' % platform,
- 'nacl_arm_newlib' )
- arm_toolchain_sdk = os.path.join(pepperdir, 'toolchain', tcname)
- buildbot_common.CopyDir(arm_toolchain, arm_toolchain_sdk)
-
- if 'glibc' in toolchains:
- # Untar the glibc toolchains
- tarfile = GetGlibcToolchain()
- tcname = platform + '_x86_glibc'
- buildbot_common.Run([sys.executable, CYGTAR, '-C', tmpdir, '-xf', tarfile],
- cwd=NACL_DIR)
-
- # Then rename/move it to the pepper toolchain directory
- srcdir = os.path.join(tmpdir, 'toolchain', platform + '_x86')
- glibcdir = os.path.join(pepperdir, 'toolchain', tcname)
- buildbot_common.Move(srcdir, glibcdir)
-
- # Untar the pnacl toolchains
- if 'pnacl' in toolchains:
- tmpdir = os.path.join(tmpdir, 'pnacl')
- buildbot_common.RemoveDir(tmpdir)
- buildbot_common.MakeDir(tmpdir)
- tarfile = GetPNaClToolchain()
- tcname = platform + '_pnacl'
- buildbot_common.Run([sys.executable, CYGTAR, '-C', tmpdir, '-xf', tarfile],
- cwd=NACL_DIR)
-
- # Then rename/move it to the pepper toolchain directory
- pnacldir = os.path.join(pepperdir, 'toolchain', tcname)
- buildbot_common.Move(tmpdir, pnacldir)
-
+ # Create a list of extract packages tuples, the first part should be
+ # "$PACKAGE_TARGET/$PACKAGE". The second part should be the destination
+ # directory relative to pepperdir/toolchain.
+ extract_packages = []
+ for toolchain in toolchains:
+ toolchain_map = TOOLCHAIN_PACKAGE_MAP.get(toolchain, None)
+ if toolchain_map:
+ package_name, tcname = toolchain_map
+ package_tuple = (os.path.join(build_platform, package_name),
+ tcname % {'platform': platform})
+ extract_packages.append(package_tuple)
+
+ if extract_packages:
+ # Extract all of the packages into the temp directory.
+ package_names = [package_tuple[0] for package_tuple in extract_packages]
+ buildbot_common.Run([sys.executable, PKGVER,
+ '--packages', ','.join(package_names),
+ '--tar-dir', NACL_TOOLCHAINTARS_DIR,
+ '--dest-dir', tmpdir,
+ 'extract'])
+
+ # Move all the packages we extracted to the correct destination.
+ for package_name, dest_dir in extract_packages:
+ full_src_dir = os.path.join(tmpdir, package_name)
+ full_dst_dir = os.path.join(pepperdir, 'toolchain', dest_dir)
+ buildbot_common.Move(full_src_dir, full_dst_dir)
+
+ # Cleanup the temporary directory we are no longer using.
buildbot_common.RemoveDir(tmpdir)