diff --git a/config/sysroot.gni b/config/sysroot.gni index 5ea877752..2bcd6caae 100644 --- a/config/sysroot.gni +++ b/config/sysroot.gni @@ -16,6 +16,10 @@ declare_args() { target_sysroot_dir = "" use_sysroot = true + + # TODO(tonikitoo): Remove this arg when wheezy is finally dropped and we + # can just use debian/jessie everywhere by default. crbug.com/564904. + use_jessie_sysroot = false } if (is_linux && target_sysroot_dir != "") { @@ -53,18 +57,20 @@ if (is_linux && target_sysroot_dir != "") { # functionality where possible) needs to run on the buliders, which are # running precise. The precise build has a different set of dependencies # from the wheezy build, so we cannot use the wheezy sysroot. - # TODO(sbc): This condition can perhaps be eliminated now that we are - # using jessie rather than wheezy. sysroot = "//build/linux/ubuntu_precise_amd64-sysroot" } else { if (current_cpu == "x64") { - sysroot = "//build/linux/debian_jessie_amd64-sysroot" + sysroot = "//build/linux/debian_wheezy_amd64-sysroot" + + if (use_jessie_sysroot) { + sysroot = "//build/linux/debian_jessie_amd64-sysroot" + } } else if (current_cpu == "x86") { - sysroot = "//build/linux/debian_jessie_i386-sysroot" + sysroot = "//build/linux/debian_wheezy_i386-sysroot" } else if (current_cpu == "mipsel") { - sysroot = "//build/linux/debian_jessie_mips-sysroot" + sysroot = "//build/linux/debian_wheezy_mips-sysroot" } else if (current_cpu == "arm") { - sysroot = "//build/linux/debian_jessie_arm-sysroot" + sysroot = "//build/linux/debian_wheezy_arm-sysroot" } else if (current_cpu == "arm64") { sysroot = "//build/linux/debian_jessie_arm64-sysroot" } else { diff --git a/linux/sysroot_scripts/install-sysroot.py b/linux/sysroot_scripts/install-sysroot.py index c8e88ee0a..d79c12bbb 100755 --- a/linux/sysroot_scripts/install-sysroot.py +++ b/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 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 -# 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 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 @@ def InstallDefaultSysroots(host_arch): 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 @@ def main(args): ' 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 @@ def main(args): if host_arch in ['ppc','s390']: return 0 InstallDefaultSysroots(host_arch) - elif options.arch: - InstallDefaultSysrootForArch(options.arch) - elif options.all: - for arch in VALID_ARCHS: - InstallDefaultSysrootForArch(arch) else: - print 'You much specify either --arch, --all or --running-as-hook' - return 1 + if not options.arch: + print 'You much specify either --arch or --running-as-hook' + return 1 + InstallDefaultSysrootForArch(options.arch) return 0 - def InstallDefaultSysrootForArch(target_arch): - if target_arch not in VALID_ARCHS: + 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: 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.