mirror of
https://github.com/flatcar/scripts.git
synced 2025-08-09 14:06:58 +02:00
Recently, a gcc-4.4.6 has been unmasked in the host, but no effort has been made to make sure the developers select it with gcc-config. BUG=chromium-os:19613 TEST=ran the tests below with set -x and observed 1) manually set the MINIMUM version to 4.4.7, see it fail 2) two gccs, current + old, set to old, observed the switch and unmerge 3) above, but set to new, same result 4) only one gcc, the current, observed nothing happening 5) only have old gcc, let the script update&select new one, unmerge old Change-Id: Id2a285a13f5b27d7531eae4db35e36f6b8cc5f4f Reviewed-on: http://gerrit.chromium.org/gerrit/6694 Reviewed-by: David James <davidjames@chromium.org> Tested-by: Zdenek Behan <zbehan@chromium.org>
49 lines
1.5 KiB
Bash
49 lines
1.5 KiB
Bash
#!/bin/bash
|
|
|
|
# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
# This is a generic script for upgrading the host toolchain. It should:
|
|
# - be able to run repeatedly, in case someone has ancient chroot with
|
|
# several missed gcc upgrades
|
|
# - be easily tweakable for future upgrades of the same kind, if needed
|
|
|
|
CHOST="$(portageq envvar CHOST)"
|
|
|
|
# This is the lowest we want to go in this particular case.
|
|
MINIMUM_GCC="4.4.6"
|
|
|
|
GCC_VERSIONS="$(gcc-config -l | grep "${CHOST}" | \
|
|
cut -f3 -d' ')"
|
|
GCC_LATEST="$(gcc-config -l | grep "${CHOST}" | tail -n1 | \
|
|
cut -f3 -d' ')"
|
|
|
|
if ! [ "$(portageq match / ">=sys-devel/gcc-${MINIMUM_GCC}")" ];
|
|
then
|
|
info "You don't have the latest gcc installed, trying to build it"
|
|
if ! sudo emerge -u --getbinpkg sys-devel/gcc; then
|
|
error "Emerging gcc failed. Please recreate your chroot."
|
|
exit 1
|
|
fi
|
|
if ! [ "$(portageq match / ">=sys-devel/gcc-${MINIMUM_GCC}")" ];
|
|
then
|
|
error "You still don't have the latest gcc. Something is very"
|
|
error "wrong with your tree. Recreating your chroot will likely fix it."
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
info "Updating the host toolchain. crosbug.com/19613"
|
|
info "Currently installed host gcc versions: $(echo -n ${GCC_VERSIONS})"
|
|
|
|
if ! sudo gcc-config "${GCC_LATEST}"; then
|
|
error "gcc-config failed. This is really bad. Recreate your chroot."
|
|
exit 1
|
|
fi
|
|
|
|
info "Cleaning up the old toolchain"
|
|
sudo emerge --unmerge "<sys-devel/gcc-${MINIMUM_GCC}"
|
|
|
|
exit 0
|