# 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
    ~/trunk/src/scripts/setup_board \
      --board=$(basename "${sysroot}") \
      --skip_chroot_upgrade \
      --regen_configs
  fi
done
