| OLD | NEW |
| (Empty) |
| 1 #!/bin/bash | |
| 2 | |
| 3 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. | |
| 4 # Use of this source code is governed by a BSD-style license that can be | |
| 5 # found in the LICENSE file. | |
| 6 | |
| 7 # This script generates the list of board overlays and variants. | |
| 8 | |
| 9 # Load common CrOS utilities. Inside the chroot this file is installed in | |
| 10 # /usr/lib/crosutils. Outside the chroot we find it relative to the scripts | |
| 11 # location. | |
| 12 common_paths="/usr/lib/crosutils $(dirname "$0")/.." | |
| 13 | |
| 14 for path in ${common_paths} ; do | |
| 15 if [ -f "${path}/common.sh" ] ; then | |
| 16 COMMON_SH="${path}/common.sh" | |
| 17 break | |
| 18 fi | |
| 19 done | |
| 20 | |
| 21 if [ -z "${COMMON_SH}" ] ; then | |
| 22 error "common.sh not found in search path (${common_paths})" | |
| 23 exit 1 | |
| 24 fi | |
| 25 | |
| 26 . "${COMMON_SH}" | |
| 27 | |
| 28 get_default_board | |
| 29 | |
| 30 # Flags | |
| 31 DEFINE_string board "$DEFAULT_BOARD" "The name of the board to set up." | |
| 32 DEFINE_string board_overlay "" "Location of the board overlay." | |
| 33 DEFINE_boolean primary_only ${FLAGS_FALSE} \ | |
| 34 "Only return the path to the board's primary overlay. (Default: false)" | |
| 35 DEFINE_string variant "" "Board variant." | |
| 36 | |
| 37 # Parse command line flags | |
| 38 FLAGS "$@" || exit 1 | |
| 39 eval set -- "${FLAGS_ARGV}" | |
| 40 | |
| 41 # Only now can we die on error. shflags functions leak non-zero error codes, | |
| 42 # so will die prematurely if 'set -e' is specified before now. | |
| 43 set -e | |
| 44 | |
| 45 if [ -z "$FLAGS_board" ] ; then | |
| 46 error "--board required." | |
| 47 exit 1 | |
| 48 fi | |
| 49 | |
| 50 if [[ $FLAGS_board =~ [_\ ] ]] ; then | |
| 51 error "--board name must not contain an underscore (_) or a space ( )." | |
| 52 exit 1 | |
| 53 fi | |
| 54 | |
| 55 if [[ $FLAGS_variant =~ [_\ ] ]] ; then | |
| 56 error "--variant name must not contain an underscore (_) or a space ( )." | |
| 57 exit 1 | |
| 58 fi | |
| 59 | |
| 60 # | |
| 61 # Check that the provided variant overlay name is valid. | |
| 62 # | |
| 63 if [ -n "$FLAGS_variant" ] ; then | |
| 64 VARIANT_NAME="overlay-variant-${FLAGS_board}-${FLAGS_variant}" | |
| 65 VARIANT_OVERLAY="${SRC_ROOT}/overlays/${VARIANT_NAME}" | |
| 66 PRIVATE_VARIANT_NAME="overlay-variant-${FLAGS_board}-${FLAGS_variant}-private" | |
| 67 PRIVATE_VARIANT_OVERLAY="${SRC_ROOT}/private-overlays/${PRIVATE_VARIANT_NAME}" | |
| 68 if [ ! -d "${VARIANT_OVERLAY}" ] && \ | |
| 69 [ ! -d "${PRIVATE_VARIANT_OVERLAY}" ] ; then | |
| 70 error "There is no variant overlay called '${FLAGS_variant}'" | |
| 71 exit 1 | |
| 72 fi | |
| 73 fi | |
| 74 | |
| 75 function is_primary_overlay() { | |
| 76 local directory=$1 | |
| 77 [ -f "${directory}/make.conf" ] || return 1 | |
| 78 [ -f "${directory}/toolchain.conf" ] || return 1 | |
| 79 return 0 | |
| 80 } | |
| 81 | |
| 82 BOARD_OVERLAY="${SRC_ROOT}/overlays/overlay-${FLAGS_board}" | |
| 83 PRIVATE_OVERLAY_NAME="overlay-${FLAGS_board}-private" | |
| 84 PRIVATE_BOARD_OVERLAY="${SRC_ROOT}/private-overlays/${PRIVATE_OVERLAY_NAME}" | |
| 85 | |
| 86 # | |
| 87 # Identify the primary board overlay or die. | |
| 88 # | |
| 89 if is_primary_overlay ${BOARD_OVERLAY}; then | |
| 90 PRIMARY_OVERLAY="${BOARD_OVERLAY}" | |
| 91 elif is_primary_overlay "${PRIVATE_BOARD_OVERLAY}"; then | |
| 92 PRIMARY_OVERLAY="${PRIVATE_BOARD_OVERLAY}" | |
| 93 fi | |
| 94 if [ ! -n "${PRIMARY_OVERLAY}" ]; then | |
| 95 error "There is no primary board overlay for ${FLAGS_board}" | |
| 96 exit 1 | |
| 97 fi | |
| 98 | |
| 99 # | |
| 100 # If only the primary overlay is needed, provide it and exit. | |
| 101 # | |
| 102 if [ "${FLAGS_primary_only}" -eq "${FLAGS_TRUE}" ]; then | |
| 103 echo "${PRIMARY_OVERLAY}" | |
| 104 exit 0 | |
| 105 fi | |
| 106 | |
| 107 # | |
| 108 # Check for chromeos-overlay. | |
| 109 # | |
| 110 CHROMEOS_OVERLAY="${SRC_ROOT}/private-overlays/chromeos-overlay" | |
| 111 | |
| 112 if [ -d "${CHROMEOS_OVERLAY}" ]; then | |
| 113 echo "${CHROMEOS_OVERLAY}" | |
| 114 fi | |
| 115 | |
| 116 # | |
| 117 # Check if there are any public board overlays. | |
| 118 # | |
| 119 if [ -d "${BOARD_OVERLAY}" ]; then | |
| 120 echo "${BOARD_OVERLAY}" | |
| 121 | |
| 122 # | |
| 123 # Add the public variant overlay if it exists. | |
| 124 # | |
| 125 if [ -n "$FLAGS_variant" ] ; then | |
| 126 if [ -d "$VARIANT_OVERLAY" ] ; then | |
| 127 echo "${VARIANT_OVERLAY}" | |
| 128 fi | |
| 129 fi | |
| 130 fi | |
| 131 | |
| 132 # | |
| 133 # Add any private overlays and private variant overlays for this board. | |
| 134 # | |
| 135 if [ -d "${SRC_ROOT}/private-overlays" ] ; then | |
| 136 OVERLAY_NAME="overlay-${FLAGS_board}-private" | |
| 137 PRIVATE_OVERLAY="${SRC_ROOT}/private-overlays/${OVERLAY_NAME}" | |
| 138 | |
| 139 if [ -d "${PRIVATE_OVERLAY}" ] ; then | |
| 140 echo "${PRIVATE_OVERLAY}" | |
| 141 fi | |
| 142 | |
| 143 # | |
| 144 # Add the private variant overlay if it exists. | |
| 145 # | |
| 146 if [ -n "$FLAGS_variant" ] ; then | |
| 147 if [ -d "${PRIVATE_VARIANT_OVERLAY}" ] ; then | |
| 148 echo "${PRIVATE_VARIANT_OVERLAY}" | |
| 149 fi | |
| 150 fi | |
| 151 fi | |
| 152 | |
| 153 # | |
| 154 # Finally, add in any user requested board overlays. | |
| 155 # | |
| 156 if [ -d "${FLAGS_board_overlay}" ] ; then | |
| 157 echo "${FLAGS_board_overlay}" | |
| 158 fi | |
| OLD | NEW |