From f968285d631013bac51efb554dbd955cc6bcdc33 Mon Sep 17 00:00:00 2001 From: robotboy Date: Mon, 2 Aug 2010 17:07:36 -0700 Subject: [PATCH] Add overlay_list script. This script generates the list of overlays, including variant overlays, for a particular board/variant combination. It will be called from setup_board. Review URL: http://codereview.chromium.org/3080019 --- overlay_list | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100755 overlay_list diff --git a/overlay_list b/overlay_list new file mode 100755 index 0000000000..73b8570e25 --- /dev/null +++ b/overlay_list @@ -0,0 +1,96 @@ +#!/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_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 + +# +# 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 board overlays. There should be at least a top +# level board specific overlay. +# +PRIMARY_BOARD_OVERLAY="${SRC_ROOT}/overlays/overlay-${FLAGS_board}" + +if [ -d "${PRIMARY_BOARD_OVERLAY}" ]; then + echo "${PRIMARY_BOARD_OVERLAY}" + + # + # Add the public variant overlay + # + if [ -n "$FLAGS_variant" ] ; then + VARIANT_NAME="overlay-variant-${FLAGS_board}-${FLAGS_variant}" + VARIANT_OVERLAY="${SRC_ROOT}/overlays/${VARIANT_NAME}" + + if [ ! -d "$VARIANT_OVERLAY" ] ; then + error "Can't find variant overlay directory $VARIANT_OVERLAY" + exit 1 + fi + + echo "${VARIANT_OVERLAY}" + fi + + # + # Add any private overlays and 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 public and private variant overlays + # + if [ -n "$FLAGS_variant" ] ; then + VARIANT_NAME="overlay-variant-${FLAGS_board}-${FLAGS_variant}-private" + PRIVATE_VARIANT_OVERLAY="${SRC_ROOT}/private-overlays/${VARIANT_NAME}" + + if [ -d "${PRIVATE_VARIANT_OVERLAY}" ] ; then + echo "${PRIVATE_VARIANT_OVERLAY}" + fi + fi + fi +fi + +# +# Finally, add in any user requested board overlays. +# +if [ -d "${FLAGS_board_overlay}" ] ; then + echo "${FLAGS_board_overlay}" +fi