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

# We added an ARCH field to make.conf.board_setup. If that field is not set in
# one of the board, regenerate the sysroot's configuration.
# The user might have lots of boards set up. As we added this field few months
# ago, only set up the boards that do not have that field.

for sysroot in /build/*; do
  make_conf="${sysroot}/etc/make.conf.board_setup"
  if [[ -f "${make_conf}" ]] && ! grep -q "ARCH=" "${make_conf}"; then
    /mnt/host/source/chromite/bin/setup_board \
      --board=$(basename "${sysroot}") \
      --skip-chroot-upgrade \
      --regen-configs
  fi
done
