mirror of
https://github.com/flatcar/scripts.git
synced 2025-09-24 15:11:19 +02:00
Added support for boards with only private overlays. (crosutils)
If a board has a public overlay it will be used as the primary overlay. However, with this change, if a board only has a private overlay it will be used as the primary. BUG=7339 TEST=Ran setup_board, build_packages, and build_image on a board with only a private overlay (locally created). Ran setup_board, build_packages, and build_image on a board with both public and private overlays. Change-Id: Ic56e4951272ddb80511a213e3a2e54419267a49a Related Issues: http://codereview.chromium.org/3544009 http://codereview.chromium.org/3571015 Review URL: http://codereview.chromium.org/3622003
This commit is contained in:
parent
2df2dd5d23
commit
7efdebf35f
@ -15,6 +15,8 @@ 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_boolean primary_only ${FLAGS_FALSE} \
|
||||
"Only return the path to the board's primary overlay. (Default: false)"
|
||||
DEFINE_string variant "" "Board variant."
|
||||
|
||||
# Parse command line flags
|
||||
@ -40,6 +42,53 @@ if [[ $FLAGS_variant =~ [_\ ] ]] ; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#
|
||||
# Check that the provided variant overlay name is valid.
|
||||
#
|
||||
if [ -n "$FLAGS_variant" ] ; then
|
||||
VARIANT_NAME="overlay-variant-${FLAGS_board}-${FLAGS_variant}"
|
||||
VARIANT_OVERLAY="${SRC_ROOT}/overlays/${VARIANT_NAME}"
|
||||
PRIVATE_VARIANT_NAME="overlay-variant-${FLAGS_board}-${FLAGS_variant}-private"
|
||||
PRIVATE_VARIANT_OVERLAY="${SRC_ROOT}/private-overlays/${PRIVATE_VARIANT_NAME}"
|
||||
if [ ! -d "${VARIANT_OVERLAY}" ] && \
|
||||
[ ! -d "${PRIVATE_VARIANT_OVERLAY}" ] ; then
|
||||
error "There is no variant overlay called '${FLAGS_variant}'"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
function is_primary_overlay() {
|
||||
local directory=$1
|
||||
[ -f "${directory}/make.conf" ] || return 1
|
||||
[ -f "${directory}/toolchain.conf" ] || return 1
|
||||
return 0
|
||||
}
|
||||
|
||||
BOARD_OVERLAY="${SRC_ROOT}/overlays/overlay-${FLAGS_board}"
|
||||
PRIVATE_OVERLAY_NAME="overlay-${FLAGS_board}-private"
|
||||
PRIVATE_BOARD_OVERLAY="${SRC_ROOT}/private-overlays/${PRIVATE_OVERLAY_NAME}"
|
||||
|
||||
#
|
||||
# Identify the primary board overlay or die.
|
||||
#
|
||||
if is_primary_overlay ${BOARD_OVERLAY}; then
|
||||
PRIMARY_OVERLAY="${BOARD_OVERLAY}"
|
||||
elif is_primary_overlay "${PRIVATE_BOARD_OVERLAY}"; then
|
||||
PRIMARY_OVERLAY="${PRIVATE_BOARD_OVERLAY}"
|
||||
fi
|
||||
if [ ! -n "${PRIMARY_OVERLAY}" ]; then
|
||||
error "There is no primary board overlay for ${FLAGS_board}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#
|
||||
# If only the primary overlay is needed, provide it and exit.
|
||||
#
|
||||
if [ "${FLAGS_primary_only}" -eq "${FLAGS_TRUE}" ]; then
|
||||
echo "${PRIMARY_OVERLAY}"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
#
|
||||
# Check for chromeos-overlay.
|
||||
#
|
||||
@ -50,33 +99,25 @@ if [ -d "${CHROMEOS_OVERLAY}" ]; then
|
||||
fi
|
||||
|
||||
#
|
||||
# Check if there are any board overlays. There should be at least a top
|
||||
# level board specific overlay.
|
||||
# Check if there are any public board overlays.
|
||||
#
|
||||
PRIMARY_BOARD_OVERLAY="${SRC_ROOT}/overlays/overlay-${FLAGS_board}"
|
||||
|
||||
if [ -d "${PRIMARY_BOARD_OVERLAY}" ]; then
|
||||
echo "${PRIMARY_BOARD_OVERLAY}"
|
||||
if [ -d "${BOARD_OVERLAY}" ]; then
|
||||
echo "${BOARD_OVERLAY}"
|
||||
|
||||
#
|
||||
# Add the public variant overlay
|
||||
# Add the public variant overlay if it exists.
|
||||
#
|
||||
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
|
||||
|
||||
if [ -d "$VARIANT_OVERLAY" ] ; then
|
||||
echo "${VARIANT_OVERLAY}"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
#
|
||||
# Add any private overlays and variant overlays for this board.
|
||||
#
|
||||
if [ -d "${SRC_ROOT}/private-overlays" ] ; then
|
||||
#
|
||||
# Add any private overlays and private 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}"
|
||||
|
||||
@ -85,17 +126,13 @@ if [ -d "${PRIMARY_BOARD_OVERLAY}" ]; then
|
||||
fi
|
||||
|
||||
#
|
||||
# Add the public and private variant overlays
|
||||
# Add the private variant overlay if it exists.
|
||||
#
|
||||
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
|
||||
|
||||
#
|
||||
|
@ -297,11 +297,23 @@ class DepGraphGenerator(object):
|
||||
os.environ["PORTAGE_SYSROOT"] = "/build/" + self.board
|
||||
os.environ["SYSROOT"] = "/build/" + self.board
|
||||
scripts_dir = os.path.dirname(os.path.realpath(__file__))
|
||||
toolchain_path = "%s/../overlays/overlay-%s/toolchain.conf"
|
||||
# Strip the variant out of the board name to look for the toolchain. This
|
||||
# is similar to what setup_board does.
|
||||
board_no_variant = self.board.split('_')[0]
|
||||
f = open(toolchain_path % (scripts_dir, board_no_variant))
|
||||
public_toolchain_path = ("%s/../overlays/overlay-%s/toolchain.conf" %
|
||||
(scripts_dir, board_no_variant))
|
||||
private_toolchain_path = (
|
||||
"%s/../private-overlays/overlay-%s-private/toolchain.conf" %
|
||||
(scripts_dir, board_no_variant))
|
||||
if os.path.isfile(public_toolchain_path):
|
||||
toolchain_path = public_toolchain_path
|
||||
elif os.path.isfile(private_toolchain_path):
|
||||
toolchain_path = private_toolchain_path
|
||||
else:
|
||||
print "Not able to locate toolchain.conf in board overlays"
|
||||
sys.exit(1)
|
||||
|
||||
f = open(toolchain_path)
|
||||
os.environ["CHOST"] = f.readline().strip()
|
||||
f.close()
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user