# Copyright 2019 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.

# A hack to try and unwedge some rust rebuilds.  https://crbug.com/1018589

export CLEAN_DELAY=0

for board_root in /build/*; do
  board_name=${board_root##*/}
  if [[ -d "${board_root}/var/db/pkg/dev-rust" ]]; then
    if rust_pkgs=$(qlist-"${board_name}" -IC dev-rust); then
      emerge-"${board_name}" -Cq ${rust_pkgs} &
    fi
  fi
done
wait
