mirror of
https://github.com/flatcar/scripts.git
synced 2025-08-08 05:26:58 +02:00
BUG=chromium-os:19613 TEST=below 1) Manually create a chroot with old gcc 2) Let the script update&select new one, unmerge old Change-Id: I71732da315ed4effc6df48afab797718e44d7a06 Reviewed-on: http://gerrit.chromium.org/gerrit/7117 Tested-by: Zdenek Behan <zbehan@chromium.org> Reviewed-by: Zdenek Behan <zbehan@chromium.org> Reviewed-by: David James <davidjames@chromium.org>
55 lines
1.6 KiB
Bash
55 lines
1.6 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"
|
|
|
|
function env_setup() {
|
|
GCC_VERSIONS="$(gcc-config -l | grep "${CHOST}" | \
|
|
cut -f3 -d' ')"
|
|
GCC_LATEST="$(gcc-config -l | grep "${CHOST}" | tail -n1 | \
|
|
cut -f3 -d' ')"
|
|
}
|
|
|
|
env_setup
|
|
|
|
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
|
|
|
|
env_setup
|
|
|
|
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
|