| # 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. |
| |
| # Clean up rust packages which no longer have corresponding ebuilds |
| # |
| # This is achieved by: |
| # * Running `eclean` to remove binary packages without a corresponding ebuild |
| # * Running `equery l -b` to find ebuilds with no binary package |
| # * Running `emerge -C` to remove those revisions. |
| |
| export CLEAN_DELAY=0 |
| |
| do_clean() { |
| local suffix="$1" |
| local emerge_cmd=() |
| local args |
| |
| if [[ -z "${suffix}" ]]; then |
| emerge_cmd+=( sudo ) |
| |
| qlist -IC ^cross- | sudo eclean -e /dev/stdin packages |
| else |
| "eclean${suffix}" packages |
| fi |
| emerge_cmd+=( "emerge${suffix}" ) |
| |
| args=( $("equery${suffix}" l -b --format='=$cpv' 'dev-rust/*' ) ) |
| if [[ ${#args[@]} -eq 0 ]]; then |
| return |
| fi |
| |
| "${emerge_cmd[@]}" -C "${args[@]}" |
| } |
| |
| do_clean |
| for board_root in /build/*; do |
| board_name=${board_root##*/} |
| if [[ -d "${board_root}/var/db/pkg/dev-rust" ]]; then |
| do_clean "-${board_name}" |
| fi |
| done |