Chromium Code Reviews| Index: build/linux/sysroot_scripts/install-sysroot.py |
| diff --git a/build/linux/sysroot_scripts/install-sysroot.py b/build/linux/sysroot_scripts/install-sysroot.py |
| index c1112891e282c0b255925f97cf6dfbbe63c1d562..fdd70b97de30dffc2e118e5244bd863d9cad59fa 100755 |
| --- a/build/linux/sysroot_scripts/install-sysroot.py |
| +++ b/build/linux/sysroot_scripts/install-sysroot.py |
| @@ -24,8 +24,13 @@ import shutil |
| import subprocess |
| import sys |
| - |
| SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) |
| +sys.path.append(os.path.dirname(os.path.dirname(os.path.join(SCRIPT_DIR)))) |
| +import detect_host_arch |
| +import gyp_chromium |
| +import gyp_environment |
| + |
| + |
| URL_PREFIX = 'http://storage.googleapis.com' |
| URL_PATH = 'chrome-linux-sysroot/toolchain' |
| REVISION_AMD64 = 'a2d45701cb21244b9514e420950ba6ba687fb655' |
| @@ -60,25 +65,29 @@ def GetSha1(filename): |
| return sha1.hexdigest() |
| -def DetectArch(gyp_defines): |
| +def DetectArch(gyp_defines, is_android): |
| # Check for optional target_arch and only install for that architecture. |
| # If target_arch is not specified, then only install for the host |
| # architecture. |
| - if 'target_arch=x64' in gyp_defines: |
| + target_arch = gyp_defines.get('target_arch') |
| + if target_arch == 'x64': |
| return 'amd64' |
| - elif 'target_arch=ia32' in gyp_defines: |
| + elif target_arch == 'ia32': |
| return 'i386' |
| - elif 'target_arch=arm' in gyp_defines: |
| + elif target_arch == 'arm': |
| return 'arm' |
| - elif 'target_arch=mipsel' in gyp_defines: |
| + elif target_arch == 'arm64': |
| + return 'arm64' |
| + elif target_arch == 'mipsel': |
| return 'mips' |
| + elif target_arch: |
| + raise Exception('Unrecognized target_arch: %s' % target_arch) |
| + |
| + if is_android: |
| + return 'arm' |
| # Figure out host arch using build/detect_host_arch.py and |
| # set target_arch to host arch |
| - build_dir = os.path.dirname(os.path.dirname(os.path.join(SCRIPT_DIR))) |
| - sys.path.append(build_dir) |
| - import detect_host_arch |
| - |
| detected_host_arch = detect_host_arch.HostArch() |
| if detected_host_arch == 'x64': |
| return 'amd64' |
| @@ -94,22 +103,23 @@ def DetectArch(gyp_defines): |
| return None |
| -def UsingSysroot(target_arch, gyp_defines): |
| +def UsingSysroot(target_arch, is_android, gyp_defines): |
| # ChromeOS uses a chroot, so doesn't need a sysroot |
| - if 'chromeos=1' in gyp_defines: |
| + if gyp_defines.get('chromeos'): |
| return False |
| # When cross-compiling we always use a sysroot |
| - if target_arch in ('arm', 'mips', 'i386'): |
| + if not is_android and target_arch in ('arm', 'mips', 'i386'): |
| return True |
| # Setting use_sysroot=1 GYP_DEFINES forces the use of the sysroot even |
| # when not cross compiling |
| - if 'use_sysroot=1' in gyp_defines: |
| + if gyp_defines.get('use_sysroot'): |
| return True |
| # Official builds always use the sysroot. |
| - if 'branding=Chrome' in gyp_defines and 'buildtype=Official' in gyp_defines: |
| + if (gyp_defines.get('branding') == 'Chrome' and |
| + gyp_defines.get('buildtype') == 'Official'): |
| return True |
| return False |
| @@ -119,19 +129,35 @@ def main(): |
| if options.running_as_hook and not sys.platform.startswith('linux'): |
| return 0 |
| - gyp_defines = os.environ.get('GYP_DEFINES', '') |
| + gyp_environment.SetEnvironment() |
| + supplemental_includes = gyp_chromium.GetSupplementalFiles() |
| + gyp_defines = gyp_chromium.GetGypVars(supplemental_includes) |
| + is_android = gyp_defines.get('OS') == 'android' |
| if options.arch: |
| target_arch = options.arch |
| else: |
| - target_arch = DetectArch(gyp_defines) |
| + target_arch = DetectArch(gyp_defines, is_android) |
| if not target_arch: |
| - print 'Unable to detect host architecture' |
| + print 'Unable to detect target architecture' |
| return 1 |
| - if options.running_as_hook and not UsingSysroot(target_arch, gyp_defines): |
| + if (options.running_as_hook and |
| + not UsingSysroot(target_arch, is_android, gyp_defines)): |
| return 0 |
| + if is_android: |
| + # Install the host sysroot that matches the size of the target. |
| + # Used for v8 snapshots. |
|
Dirk Pranke
2015/11/06 20:48:52
1) don't you need to install *both* the 32-bit x86
|
| + if '64' in target_arch: |
| + target_arch = 'amd64' |
| + else: |
| + target_arch = 'i386' |
| + |
| + return _InstallSysroot(target_arch) |
| + |
| + |
| +def _InstallSysroot(target_arch): |
| # The sysroot directory should match the one specified in build/common.gypi. |
| # TODO(thestig) Consider putting this else where to avoid having to recreate |
| # it on every build. |