util/abuild: Clean up the missing_arches check

This change adds the following improvements:
* Easier to read.
* Checks to see if .xcompile is complete.
* Checks the make return code. This will catch if .xcompile is missing.

BUG=b:112267918
TEST=Modified my .xcompile and ran abuild and verified that
missing_arches got set correctly. Also deleted .xcompile and verified
there was a failure.

Change-Id: I7604d431f398fc0c80a857a0c7c21e164004cc99
Signed-off-by: Raul E Rangel <rrangel@chromium.org>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/34241
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Martin Roth <martinroth@google.com>
This commit is contained in:
Raul E Rangel 2019-07-10 12:49:24 -06:00 committed by Martin Roth
parent f4d2c8714f
commit cccb815c5e
1 changed files with 18 additions and 2 deletions

View File

@ -462,10 +462,26 @@ function build_config
return return
fi fi
local required_arches
required_arches=$(grep -E "^CONFIG_ARCH_(BOOTBLOCK|R.MSTAGE|VERSTAGE)" "$TARGET/${BUILD_NAME}/config.build" | \ required_arches=$(grep -E "^CONFIG_ARCH_(BOOTBLOCK|R.MSTAGE|VERSTAGE)" "$TARGET/${BUILD_NAME}/config.build" | \
sed "s,^CONFIG_ARCH_[^_]*_\([^=]*\)=.*$,\1," |sort -u |tr 'A-Z\n\r' 'a-z ') sed "s,^CONFIG_ARCH_[^_]*_\([^=]*\)=.*$,\1," |sort -u |tr 'A-Z\n\r' 'a-z ')
# shellcheck disable=SC2016,SC2059
missing_arches=$(printf 'include .xcompile\nall: ; @echo $(foreach arch,'"$required_arches"',$(if $(filter $(arch),$(SUBARCH_SUPPORTED)),,$(arch)))' | $MAKE --no-print-directory -f -) missing_arches="$($MAKE --no-print-directory -f - \
REQUIRED_ARCHES="$required_arches" <<'EOF'
include .xcompile
.PHONY: missing_arches
missing_arches:
$(if $(XCOMPILE_COMPLETE),,$(error .xcompile is invalid.))
@echo $(foreach arch,$(REQUIRED_ARCHES),$(if $(filter $(arch),$(SUBARCH_SUPPORTED)),,$(arch)))
EOF
)"
# shellcheck disable=SC2181
if [[ $? -ne 0 ]]; then
echo "Calculating missing_arches failed" >&2
exit 1
fi
if [ -n "$missing_arches" ]; then if [ -n "$missing_arches" ]; then
printf "skipping %s because we're missing compilers for (%s)\n" "$BUILD_NAME" "$missing_arches" printf "skipping %s because we're missing compilers for (%s)\n" "$BUILD_NAME" "$missing_arches"
return return