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 |