diff options
Diffstat (limited to 'compiler_wrapper/reset_compiler_wrapper.sh')
-rwxr-xr-x | compiler_wrapper/reset_compiler_wrapper.sh | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/compiler_wrapper/reset_compiler_wrapper.sh b/compiler_wrapper/reset_compiler_wrapper.sh new file mode 100755 index 00000000..523e972d --- /dev/null +++ b/compiler_wrapper/reset_compiler_wrapper.sh @@ -0,0 +1,42 @@ +#!/bin/bash -eux +# +# Copyright 2021 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. + +# If your compiler wrapper ends up broken, you can run this script to try to +# restore it to a working version. We can only use artifacts we download from +# gs://, since it's kind of hard to build a working compiler with a broken +# compiler wrapper. ;) + +if [[ ! -e "/etc/cros_chroot_version" ]]; then + echo "Run me inside of the chroot." + exit 1 +fi + +packages_to_reemerge=( + # We want to reemerge the host wrapper... + sys-devel/llvm +) + +gcc_wrappers=( + cross-x86_64-cros-linux-gnu/gcc + cross-armv7a-cros-linux-gnueabihf/gcc + cross-aarch64-cros-linux-gnu/gcc +) + +# ...and any existing target wrappers. +for gcc in "${gcc_wrappers[@]}"; do + # cheap check for whether or not the package in question is already installed + if ls /var/db/pkg/"${gcc}"-* >& /dev/null; then + packages_to_reemerge+=( "${gcc}" ) + fi +done + +# Ensure that we don't pick up any broken binpkgs for these when we install +# them below. +for pkg in "${packages_to_reemerge[@]}"; do + sudo rm -f "/var/lib/portage/pkgs/${pkg}"* +done + +sudo emerge -j16 -G "${packages_to_reemerge[@]}" |