From 5434f3c02d9f444e0e16bf7ed91690d85b46e4d4 Mon Sep 17 00:00:00 2001 From: thomasanderson Date: Fri, 24 Mar 2017 14:16:03 -0700 Subject: [PATCH] Revert of "Update linux sysroot from Wheezy to Jessie" (patchset #1 id:1 of https://codereview.chromium.org/2772503005/ ) Reason for revert: expected_deps_x64_jessie changes are causing a failure on the official builder https://luci-logdog.appspot.com/v/?s=chromium%2Fbb%2Fchromium.chrome%2FGoogle_Chrome_Linux_x64%2F16997%2F%2B%2Frecipes%2Fsteps%2Fcompile%2F0%2Fstdout Original issue's description: > Reland of "Update linux sysroot from Wheezy to Jessie" > > The last version of this change was: > https://codereview.chromium.org/2748183005 > > Which was reverted in: > https://codereview.chromium.org/2776503002 > > I've updated the expected package deps again, this > time being sure to use is_chrome_branded=true when > testing (which oddly seems to effect the deps). > > TBR=thestig (since this is effectively a reland) > BUG=701894 > > Review-Url: https://codereview.chromium.org/2772503005 > Cr-Commit-Position: refs/heads/master@{#459492} > Committed: https://chromium.googlesource.com/chromium/src/+/7f43e46a7830cb92c08b8245f7f48f0d3a2fab47 TBR=thakis@chromium.org,dpranke@chromium.org,thestig@chromium.org,sbc@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=701894 Review-Url: https://codereview.chromium.org/2772113002 Cr-Original-Commit-Position: refs/heads/master@{#459553} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: f2296e4fcaef7fdced40ebf3ca736d5dc58c66cd --- config/sysroot.gni | 18 +++++--- linux/sysroot_scripts/install-sysroot.py | 56 ++++++++++++++---------- 2 files changed, 44 insertions(+), 30 deletions(-) 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.