flatcar-scripts/bin/cros_overlay_list
Dave Parker 7efdebf35f Added support for boards with only private overlays. (crosutils)
If a board has a public overlay it will be used as the primary overlay. However, with this change, if a board only has a private overlay it will be used as the primary.

BUG=7339
TEST=Ran setup_board, build_packages, and build_image on a board with only a private overlay (locally created). Ran setup_board, build_packages, and build_image on a board with both public and private overlays.

Change-Id: Ic56e4951272ddb80511a213e3a2e54419267a49a

Related Issues:
http://codereview.chromium.org/3544009
http://codereview.chromium.org/3571015

Review URL: http://codereview.chromium.org/3622003
2010-12-01 11:34:32 -08:00

144 lines
3.7 KiB
Bash
Executable File

#!/bin/bash
# Copyright (c) 2010 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.
# This script generates the list of board overlays and variants.
# Load common constants. This should be the first executable line.
# The path to common.sh should be relative to your script's location.
. "$(dirname "$0")/../common.sh"
get_default_board
# Flags
DEFINE_string board "$DEFAULT_BOARD" "The name of the board to set up."
DEFINE_string board_overlay "" "Location of the board overlay."
DEFINE_boolean primary_only ${FLAGS_FALSE} \
"Only return the path to the board's primary overlay. (Default: false)"
DEFINE_string variant "" "Board variant."
# Parse command line flags
FLAGS "$@" || exit 1
eval set -- "${FLAGS_ARGV}"
# Only now can we die on error. shflags functions leak non-zero error codes,
# so will die prematurely if 'set -e' is specified before now.
set -e
if [ -z "$FLAGS_board" ] ; then
error "--board required."
exit 1
fi
if [[ $FLAGS_board =~ [_\ ] ]] ; then
error "--board name must not contain an underscore (_) or a space ( )."
exit 1
fi
if [[ $FLAGS_variant =~ [_\ ] ]] ; then
error "--variant name must not contain an underscore (_) or a space ( )."
exit 1
fi
#
# Check that the provided variant overlay name is valid.
#
if [ -n "$FLAGS_variant" ] ; then
VARIANT_NAME="overlay-variant-${FLAGS_board}-${FLAGS_variant}"
VARIANT_OVERLAY="${SRC_ROOT}/overlays/${VARIANT_NAME}"
PRIVATE_VARIANT_NAME="overlay-variant-${FLAGS_board}-${FLAGS_variant}-private"
PRIVATE_VARIANT_OVERLAY="${SRC_ROOT}/private-overlays/${PRIVATE_VARIANT_NAME}"
if [ ! -d "${VARIANT_OVERLAY}" ] && \
[ ! -d "${PRIVATE_VARIANT_OVERLAY}" ] ; then
error "There is no variant overlay called '${FLAGS_variant}'"
exit 1
fi
fi
function is_primary_overlay() {
local directory=$1
[ -f "${directory}/make.conf" ] || return 1
[ -f "${directory}/toolchain.conf" ] || return 1
return 0
}
BOARD_OVERLAY="${SRC_ROOT}/overlays/overlay-${FLAGS_board}"
PRIVATE_OVERLAY_NAME="overlay-${FLAGS_board}-private"
PRIVATE_BOARD_OVERLAY="${SRC_ROOT}/private-overlays/${PRIVATE_OVERLAY_NAME}"
#
# Identify the primary board overlay or die.
#
if is_primary_overlay ${BOARD_OVERLAY}; then
PRIMARY_OVERLAY="${BOARD_OVERLAY}"
elif is_primary_overlay "${PRIVATE_BOARD_OVERLAY}"; then
PRIMARY_OVERLAY="${PRIVATE_BOARD_OVERLAY}"
fi
if [ ! -n "${PRIMARY_OVERLAY}" ]; then
error "There is no primary board overlay for ${FLAGS_board}"
exit 1
fi
#
# If only the primary overlay is needed, provide it and exit.
#
if [ "${FLAGS_primary_only}" -eq "${FLAGS_TRUE}" ]; then
echo "${PRIMARY_OVERLAY}"
exit 0
fi
#
# Check for chromeos-overlay.
#
CHROMEOS_OVERLAY="${SRC_ROOT}/private-overlays/chromeos-overlay"
if [ -d "${CHROMEOS_OVERLAY}" ]; then
echo "${CHROMEOS_OVERLAY}"
fi
#
# Check if there are any public board overlays.
#
if [ -d "${BOARD_OVERLAY}" ]; then
echo "${BOARD_OVERLAY}"
#
# Add the public variant overlay if it exists.
#
if [ -n "$FLAGS_variant" ] ; then
if [ -d "$VARIANT_OVERLAY" ] ; then
echo "${VARIANT_OVERLAY}"
fi
fi
fi
#
# Add any private overlays and private variant overlays for this board.
#
if [ -d "${SRC_ROOT}/private-overlays" ] ; then
OVERLAY_NAME="overlay-${FLAGS_board}-private"
PRIVATE_OVERLAY="${SRC_ROOT}/private-overlays/${OVERLAY_NAME}"
if [ -d "${PRIVATE_OVERLAY}" ] ; then
echo "${PRIVATE_OVERLAY}"
fi
#
# Add the private variant overlay if it exists.
#
if [ -n "$FLAGS_variant" ] ; then
if [ -d "${PRIVATE_VARIANT_OVERLAY}" ] ; then
echo "${PRIVATE_VARIANT_OVERLAY}"
fi
fi
fi
#
# Finally, add in any user requested board overlays.
#
if [ -d "${FLAGS_board_overlay}" ] ; then
echo "${FLAGS_board_overlay}"
fi