From 71c71eb91cb066c802c668a5b79297cd5af51d9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bence=20Sz=C3=A9pk=C3=BAti?= Date: Fri, 15 Dec 2023 19:20:31 +0100 Subject: [PATCH] all.sh: Parse arguments before checking if a test is supported MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Support for each test was checked before the command line had been parsed, causing the support_ functions to ignore arguments that set a tool's location. Signed-off-by: Bence Szépkúti --- tests/scripts/all.sh | 46 ++++++++++++++++++++------------------------ 1 file changed, 21 insertions(+), 25 deletions(-) diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh index 10a76ec182..beeff05d22 100755 --- a/tests/scripts/all.sh +++ b/tests/scripts/all.sh @@ -205,15 +205,8 @@ pre_initialize_variables () { # defined in this script whose name starts with "component_". ALL_COMPONENTS=$(compgen -A function component_ | sed 's/component_//') - # Exclude components that are not supported on this platform. - SUPPORTED_COMPONENTS= - for component in $ALL_COMPONENTS; do - case $(type "support_$component" 2>&1) in - *' function'*) - if ! support_$component; then continue; fi;; - esac - SUPPORTED_COMPONENTS="$SUPPORTED_COMPONENTS $component" - done + # Delay determinig SUPPORTED_COMPONENTS until the command line options have a chance to override + # the commands set by the environment } # Test whether the component $1 is included in the command line patterns. @@ -423,22 +416,11 @@ check_tools() done } -pre_parse_command_line_for_dirs () { - # Make an early pass through the options given, so we can set directories - # for Arm compilers, before SUPPORTED_COMPONENTS is determined. - while [ $# -gt 0 ]; do - case "$1" in - --armc5-bin-dir) shift; ARMC5_BIN_DIR="$1";; - --armc6-bin-dir) shift; ARMC6_BIN_DIR="$1";; - esac - shift - done -} - pre_parse_command_line () { COMMAND_LINE_COMPONENTS= all_except=0 error_test=0 + list_components=0 restore_first=0 no_armcc= @@ -451,8 +433,8 @@ pre_parse_command_line () { --arm-none-eabi-gcc-prefix) shift; ARM_NONE_EABI_GCC_PREFIX="$1";; --arm-linux-gnueabi-gcc-prefix) shift; ARM_LINUX_GNUEABI_GCC_PREFIX="$1";; --armcc) no_armcc=;; - --armc5-bin-dir) shift; ;; # assignment to ARMC5_BIN_DIR done in pre_parse_command_line_for_dirs - --armc6-bin-dir) shift; ;; # assignment to ARMC6_BIN_DIR done in pre_parse_command_line_for_dirs + --armc5-bin-dir) shift; ARMC5_BIN_DIR="$1";; + --armc6-bin-dir) shift; ARMC6_BIN_DIR="$1";; --clang-earliest) shift; CLANG_EARLIEST="$1";; --clang-latest) shift; CLANG_LATEST="$1";; --error-test) error_test=$((error_test + 1));; @@ -467,7 +449,7 @@ pre_parse_command_line () { --help|-h) usage; exit;; --keep-going|-k) KEEP_GOING=1;; --list-all-components) printf '%s\n' $ALL_COMPONENTS; exit;; - --list-components) printf '%s\n' $SUPPORTED_COMPONENTS; exit;; + --list-components) list_components=1;; --memory|-m) MEMORY=1;; --no-append-outcome) append_outcome=0;; --no-armcc) no_armcc=1;; @@ -494,6 +476,21 @@ pre_parse_command_line () { shift done + # Exclude components that are not supported on this platform. + SUPPORTED_COMPONENTS= + for component in $ALL_COMPONENTS; do + case $(type "support_$component" 2>&1) in + *' function'*) + if ! support_$component; then continue; fi;; + esac + SUPPORTED_COMPONENTS="$SUPPORTED_COMPONENTS $component" + done + + if [ $list_components -eq 1 ]; then + printf '%s\n' $SUPPORTED_COMPONENTS + exit + fi + # With no list of components, run everything. if [ -z "$COMMAND_LINE_COMPONENTS" ] && [ $restore_first -eq 0 ]; then all_except=1 @@ -6157,7 +6154,6 @@ run_component () { # Preliminary setup pre_check_environment -pre_parse_command_line_for_dirs "$@" pre_initialize_variables pre_parse_command_line "$@"