#!/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