all.sh: Always build the list of components to run

Build the list of components to run in $RUN_COMPONENTS as part of
command line parsing. After parsing the command line, it no longer
matters how this list was built.
This commit is contained in:
Gilles Peskine 2019-01-06 22:11:25 +00:00
parent 1072610e14
commit 1bcb1c8e28

View file

@ -103,8 +103,6 @@ pre_initialize_variables () {
CONFIG_H='include/mbedtls/config.h' CONFIG_H='include/mbedtls/config.h'
CONFIG_BAK="$CONFIG_H.bak" CONFIG_BAK="$CONFIG_H.bak"
COMPONENTS=
ALL_EXCEPT=0
MEMORY=0 MEMORY=0
FORCE=0 FORCE=0
KEEP_GOING=0 KEEP_GOING=0
@ -150,7 +148,7 @@ is_component_excluded()
# Is $1 excluded via $COMPONENTS (a space-separated list of wildcard # Is $1 excluded via $COMPONENTS (a space-separated list of wildcard
# patterns)? # patterns)?
set -f set -f
for pattern in $COMPONENTS; do for pattern in $COMMAND_LINE_COMPONENTS; do
set +f set +f
case ${1#component_} in $pattern) return 0;; esac case ${1#component_} in $pattern) return 0;; esac
done done
@ -291,12 +289,15 @@ check_headers_in_cpp () {
} }
pre_parse_command_line () { pre_parse_command_line () {
COMMAND_LINE_COMPONENTS=
all_except=
while [ $# -gt 0 ]; do while [ $# -gt 0 ]; do
case "$1" in case "$1" in
--armcc) RUN_ARMCC=1;; --armcc) RUN_ARMCC=1;;
--armc5-bin-dir) shift; ARMC5_BIN_DIR="$1";; --armc5-bin-dir) shift; ARMC5_BIN_DIR="$1";;
--armc6-bin-dir) shift; ARMC6_BIN_DIR="$1";; --armc6-bin-dir) shift; ARMC6_BIN_DIR="$1";;
--except) ALL_EXCEPT=1;; --except) all_except=1;;
--force|-f) FORCE=1;; --force|-f) FORCE=1;;
--gnutls-cli) shift; GNUTLS_CLI="$1";; --gnutls-cli) shift; GNUTLS_CLI="$1";;
--gnutls-legacy-cli) shift; GNUTLS_LEGACY_CLI="$1";; --gnutls-legacy-cli) shift; GNUTLS_LEGACY_CLI="$1";;
@ -323,11 +324,28 @@ pre_parse_command_line () {
echo >&2 "Run $0 --help for usage." echo >&2 "Run $0 --help for usage."
exit 120 exit 120
;; ;;
*) *) COMMAND_LINE_COMPONENTS="$COMMAND_LINE_COMPONENTS $1";;
COMPONENTS="$COMPONENTS $1";;
esac esac
shift shift
done done
if [ -z "$COMMAND_LINE_COMPONENTS" ]; then
all_except=1
fi
# Build the list of components to run.
if [ -n "$all_except" ]; then
RUN_COMPONENTS=
for component in $SUPPORTED_COMPONENTS; do
if ! is_component_excluded "$component"; then
RUN_COMPONENTS="$RUN_COMPONENTS $component"
fi
done
else
RUN_COMPONENTS="$COMMAND_LINE_COMPONENTS"
fi
unset all_except
} }
pre_check_git () { pre_check_git () {
@ -1213,19 +1231,10 @@ pre_check_tools
pre_print_tools pre_print_tools
cleanup cleanup
if [ -n "$COMPONENTS" ] && [ $ALL_EXCEPT -eq 0 ]; then # Run the requested tests.
# Run the components passed on the command line. for component in $RUN_COMPONENTS; do
for component in $COMPONENTS; do
run_component "component_$component" run_component "component_$component"
done done
else
# Run all components except those excluded on the command line.
for component in $SUPPORTED_COMPONENTS; do
if ! is_component_excluded "$component"; then
run_component "component_$component"
fi
done
fi
# We're done. # We're done.
post_report post_report