util/abuild: Enable abuild to compile a single variant
There are many boards in coreboot which support multiple variants. When abuild is used to compile a single target, it builds all its variants. If a target has 5 variants, then abuild takes nearly 10x the time to compile all variants of the target. This change adds an option -b/--board-variant to enable abuild to compile only a single variant of the target. TEST=Verified: 1. abuild builds all variants of the target if -b option is not provided. 2. abuild builds a single variant if -b option is provided. 3. abuild prints appropriate error message if invalid variant name is provided. Change-Id: I3781568c6409c5ec2610a8386a21d86037428e7f Signed-off-by: Furquan Shaikh <furquan@google.com> Reviewed-on: https://review.coreboot.org/27215 Reviewed-by: Aaron Durbin <adurbin@chromium.org> Reviewed-by: Justin TerAvest <teravest@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
0be087deee
commit
57ccb9c5e8
|
@ -168,8 +168,11 @@ function normalize_target
|
||||||
{
|
{
|
||||||
local targets
|
local targets
|
||||||
|
|
||||||
|
local VARIANT_UC=$(echo "${variant}" | tr '[:lower:]' '[:upper:]')
|
||||||
|
|
||||||
targets=$(get_mainboards "$1")
|
targets=$(get_mainboards "$1")
|
||||||
if [ -n "$targets" ]; then
|
if [ -n "$targets" ]; then
|
||||||
|
targets=$(grep "${VARIANT_UC}\$" <<< ${targets})
|
||||||
echo "$targets"
|
echo "$targets"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
@ -537,6 +540,8 @@ Usage: $0 [options]
|
||||||
Options:\n"
|
Options:\n"
|
||||||
[-a|--all] Build previously succeeded ports as well
|
[-a|--all] Build previously succeeded ports as well
|
||||||
[-A|--any-toolchain] Use any toolchain
|
[-A|--any-toolchain] Use any toolchain
|
||||||
|
[-b|--board-variant <name>] Build specific board variant under the
|
||||||
|
given target.
|
||||||
[-B|--blobs] Allow using binary files
|
[-B|--blobs] Allow using binary files
|
||||||
[--checksum <path/basefile>] Store checksums at path/basefile
|
[--checksum <path/basefile>] Store checksums at path/basefile
|
||||||
[-c|--cpus <numcpus>] Build on <numcpus> at the same time
|
[-c|--cpus <numcpus>] Build on <numcpus> at the same time
|
||||||
|
@ -613,12 +618,12 @@ getoptbrand="$(getopt -V)"
|
||||||
# shellcheck disable=SC2086
|
# shellcheck disable=SC2086
|
||||||
if [ "${getoptbrand:0:6}" == "getopt" ]; then
|
if [ "${getoptbrand:0:6}" == "getopt" ]; then
|
||||||
# Detected GNU getopt that supports long options.
|
# Detected GNU getopt that supports long options.
|
||||||
args=$(getopt -l version,verbose,quiet,help,all,target:,payloads:,cpus:,silent,junit,config,loglevel:,remove,prefix:,update,scan-build,ccache,blobs,clang,any-toolchain,clean,outdir:,chromeos,xmlfile:,kconfig:,dir:,root:,recursive,checksum:,timeless,exitcode -o Vvqhat:p:c:sJCl:rP:uyBLAzo:xX:K:d:R:Ie -- "$@") || exit 1
|
args=$(getopt -l version,verbose,quiet,help,all,target:,board-variant:,payloads:,cpus:,silent,junit,config,loglevel:,remove,prefix:,update,scan-build,ccache,blobs,clang,any-toolchain,clean,outdir:,chromeos,xmlfile:,kconfig:,dir:,root:,recursive,checksum:,timeless,exitcode -o Vvqhat:b:p:c:sJCl:rP:uyBLAzo:xX:K:d:R:Ie -- "$@") || exit 1
|
||||||
eval set -- $args
|
eval set -- $args
|
||||||
retval=$?
|
retval=$?
|
||||||
else
|
else
|
||||||
# Detected non-GNU getopt
|
# Detected non-GNU getopt
|
||||||
args=$(getopt Vvqhat:p:c:sJCl:rP:uyBLAzo:xX:K:d:R:Ie "$@")
|
args=$(getopt Vvqhat:b:p:c:sJCl:rP:uyBLAzo:xX:K:d:R:Ie "$@")
|
||||||
set -- $args
|
set -- $args
|
||||||
retval=$?
|
retval=$?
|
||||||
fi
|
fi
|
||||||
|
@ -639,6 +644,7 @@ while true ; do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
-J|--junit) shift; mode=junit; rm -f "$XMLFILE" ;;
|
-J|--junit) shift; mode=junit; rm -f "$XMLFILE" ;;
|
||||||
-t|--target) shift; target="$1"; shift;;
|
-t|--target) shift; target="$1"; shift;;
|
||||||
|
-b|--board-variant) shift; variant="$1"; shift;;
|
||||||
-a|--all) shift; buildall=true;;
|
-a|--all) shift; buildall=true;;
|
||||||
-d|--dir) shift; configdir="$1"; shift;;
|
-d|--dir) shift; configdir="$1"; shift;;
|
||||||
-e|--exitcode) shift; exitcode=1;;
|
-e|--exitcode) shift; exitcode=1;;
|
||||||
|
@ -829,7 +835,11 @@ if [ "$target" != "" ]; then
|
||||||
# build a single board
|
# build a single board
|
||||||
MAINBOARD=$(normalize_target "${target}")
|
MAINBOARD=$(normalize_target "${target}")
|
||||||
if [ -z "${MAINBOARD}" ]; then
|
if [ -z "${MAINBOARD}" ]; then
|
||||||
printf "No such target: %s\n" "$target"
|
printf "No such target: %s" "${target}"
|
||||||
|
if [ -n "${variant}" ]; then
|
||||||
|
printf ", variant: %s" "${variant}"
|
||||||
|
fi
|
||||||
|
printf "\n"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
build_srcdir="$(mainboard_directory "${MAINBOARD}")"
|
build_srcdir="$(mainboard_directory "${MAINBOARD}")"
|
||||||
|
|
Loading…
Reference in New Issue