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 c8e88ee0a8ab2b4edf35ec6201e57caae8d9da65..d79c12bbbbcef46057e6be67da92b5654d528709 100755 |
--- a/build/linux/sysroot_scripts/install-sysroot.py |
+++ b/build/linux/sysroot_scripts/install-sysroot.py |
@@ -6,17 +6,16 @@ |
"""Install Debian sysroots for building chromium. |
""" |
-# The sysroot is needed to ensure that binaries that get built will run on |
-# the oldest stable version of Debian that we currently support. |
-# This script can be run manually but is more often run as part of gclient |
-# hooks. When run from hooks this script is a no-op on non-linux platforms. |
- |
-# The sysroot image could be constructed from scratch based on the current state |
-# of the Debian archive but for consistency we use a pre-built root image (we |
-# don't want upstream changes to Debian to effect the chromium build until we |
-# choose to pull them in). The images will normally need to be rebuilt every |
-# time chrome's build dependencies are changed but should also be updated |
-# periodically to include upstream security fixes from Debian. |
+# The sysroot is needed to ensure that binaries will run on Debian Wheezy, |
+# the oldest supported linux distribution. For ARM64 linux, we have Debian |
+# Jessie sysroot as Jessie is the first version with ARM64 support. This script |
+# can be run manually but is more often run as part of gclient hooks. When run |
+# from hooks this script is a no-op on non-linux platforms. |
+ |
+# The sysroot image could be constructed from scratch based on the current |
+# state or Debian Wheezy/Jessie but for consistency we currently use a |
+# pre-built root image. The image will normally need to be rebuilt every time |
+# chrome's build dependencies are changed. |
import hashlib |
import json |
@@ -135,6 +134,14 @@ |
if target_arch and target_arch not in (host_arch, 'i386'): |
InstallDefaultSysrootForArch(target_arch) |
+ # Desktop Linux ozone builds require libxkbcommon* which is not |
+ # available in Wheezy. |
+ # TODO(thomasanderson): Remove this once the Jessie sysroot is used |
+ # by default. |
+ gyp_defines = gyp_chromium.GetGypVars(gyp_chromium.GetSupplementalFiles()) |
+ if gyp_defines.get('use_ozone') == '1': |
+ InstallSysroot('Jessie', 'amd64') |
+ |
def main(args): |
parser = optparse.OptionParser('usage: %prog [OPTIONS]', description=__doc__) |
@@ -143,9 +150,6 @@ |
' Installs default sysroot images.') |
parser.add_option('--arch', type='choice', choices=VALID_ARCHS, |
help='Sysroot architecture: %s' % ', '.join(VALID_ARCHS)) |
- parser.add_option('--all', action='store_true', |
- help='Install all sysroot images (useful when updating the' |
- ' images)') |
options, _ = parser.parse_args(args) |
if options.running_as_hook and not sys.platform.startswith('linux'): |
return 0 |
@@ -156,23 +160,27 @@ |
if host_arch in ['ppc','s390']: |
return 0 |
InstallDefaultSysroots(host_arch) |
- elif options.arch: |
+ else: |
+ if not options.arch: |
+ print 'You much specify either --arch or --running-as-hook' |
+ return 1 |
InstallDefaultSysrootForArch(options.arch) |
- elif options.all: |
- for arch in VALID_ARCHS: |
- InstallDefaultSysrootForArch(arch) |
+ |
+ return 0 |
+ |
+def InstallDefaultSysrootForArch(target_arch): |
+ if target_arch == 'amd64': |
+ InstallSysroot('Wheezy', 'amd64') |
+ elif target_arch == 'arm': |
+ InstallSysroot('Wheezy', 'arm') |
+ elif target_arch == 'arm64': |
+ InstallSysroot('Jessie', 'arm64') |
+ elif target_arch == 'i386': |
+ InstallSysroot('Wheezy', 'i386') |
+ elif target_arch == 'mips': |
+ InstallSysroot('Wheezy', 'mips') |
else: |
- print 'You much specify either --arch, --all or --running-as-hook' |
- return 1 |
- |
- return 0 |
- |
- |
-def InstallDefaultSysrootForArch(target_arch): |
- if target_arch not in VALID_ARCHS: |
raise Error('Unknown architecture: %s' % target_arch) |
- InstallSysroot('Jessie', target_arch) |
- |
def InstallSysroot(target_platform, target_arch): |
# The sysroot directory should match the one specified in build/common.gypi. |