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 |