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