From: Paolo Bonzini Date: Sun, 12 Jul 2009 10:58:36 +0000 (+0200) Subject: Simplify handling of autotest tracing X-Git-Tag: v2.64~24 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b22c5fde553df0f101ede21b5a3cd302bc046da8;p=thirdparty%2Fautoconf.git Simplify handling of autotest tracing * lib/autotest/general.m4 (at_fn_check_prepare_notrace): Use $at_trace_echo. Add new REASON argument. (at_fn_check_prepare_trace): Do not call at_fn_check_prepare_notrace. Use $at_check_filter_trace. (at_fn_check_prepare_dynamic): Use at_fn_check_prepare_notrace. (at_traceon): Initialize to ':'. (at_traceoff): Remove, use 'set +x' instead throughout. (at_check_filter_trace, at_trace_echo): New shell variables. Initialize them if tracing is requested. (_AT_DECIDE_TRACEABLE): Adjust call to at_fn_check_prepare_notrace. --- diff --git a/ChangeLog b/ChangeLog index 2e5822dec..440e93620 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2009-07-13 Paolo Bonzini + + * lib/autotest/general.m4 (at_fn_check_prepare_notrace): Use + $at_trace_echo. Add new REASON argument. + (at_fn_check_prepare_trace): Do not call at_fn_check_prepare_notrace. + Use $at_check_filter_trace. + (at_fn_check_prepare_dynamic): Use at_fn_check_prepare_notrace. + (at_traceon): Initialize to ':'. + (at_traceoff): Remove, use 'set +x' instead throughout. + (at_check_filter_trace, at_trace_echo): New shell variables. + Initialize them if tracing is requested. + (_AT_DECIDE_TRACEABLE): Adjust call to at_fn_check_prepare_notrace. + 2009-07-12 Paolo Bonzini Move atlocal feature tests to configure diff --git a/lib/autotest/general.m4 b/lib/autotest/general.m4 index a032462b7..59cce958e 100644 --- a/lib/autotest/general.m4 +++ b/lib/autotest/general.m4 @@ -263,12 +263,13 @@ at_fn_banner () AS_ECHO(["$as_nl$at_banner_text$as_nl"]) } # at_fn_banner -AS_FUNCTION_DESCRIBE([at_fn_check_prepare_notrace], [LINE], +AS_FUNCTION_DESCRIBE([at_fn_check_prepare_notrace], [REASON LINE], [Perform AT_CHECK preparations for the command at LINE for an -untraceable command, or when tracing is disabled.]) +untraceable command; REASON is the reason for disabling tracing.]) at_fn_check_prepare_notrace () { - AS_ECHO(["$[1]"]) >"$at_check_line_file" + $at_trace_echo "Not enabling shell tracing (command contains $1)" + AS_ECHO(["$[2]"]) >"$at_check_line_file" at_check_trace=: at_check_filter=: : >"$at_stdout"; : >"$at_stderr" } @@ -278,13 +279,9 @@ AS_FUNCTION_DESCRIBE([at_fn_check_prepare_trace], [LINE], command.]) at_fn_check_prepare_trace () { - if test -n "$at_traceon"; then - AS_ECHO(["$[1]"]) >"$at_check_line_file" - at_check_trace=$at_traceon at_check_filter=at_fn_filter_trace - : >"$at_stdout"; : >"$at_stderr" - else - at_fn_check_prepare_notrace "$[1]" - fi + AS_ECHO(["$[1]"]) >"$at_check_line_file" + at_check_trace=$at_traceon at_check_filter=$at_check_filter_trace + : >"$at_stdout"; : >"$at_stderr" } AS_FUNCTION_DESCRIBE([at_fn_check_prepare_dynamic], [COMMAND LINE], @@ -292,12 +289,9 @@ AS_FUNCTION_DESCRIBE([at_fn_check_prepare_dynamic], [COMMAND LINE], appropriate preparation function.]) at_fn_check_prepare_dynamic () { - case "$at_traceon:$[1]" in - :*$as_nl*) - at_fn_check_prepare_notrace "$[2]" ;; + case $[1] in *$as_nl*) - echo 'Not enabling shell tracing (command contains an embedded newline)' - at_fn_check_prepare_notrace "$[2]" ;; + at_fn_check_prepare_notrace 'an embedded newline' "$[2]" ;; *) at_fn_check_prepare_trace "$[2]" ;; esac @@ -407,6 +401,9 @@ at_verbose=: at_quiet= # Running several jobs in parallel, 0 means as many as test groups. at_jobs=1 +at_traceon=: +at_trace_echo=: +at_check_filter_trace=: # Shall we keep the debug scripts? Must be `:' when the suite is # run by a debug script, so that the script doesn't remove itself. @@ -522,7 +519,9 @@ do ;; --trace | -x ) - at_traceon='set -x'; at_traceoff='set +x' + at_traceon='set -x' + at_trace_echo=echo + at_check_filter_trace=at_fn_filter_trace ;; [[0-9] | [0-9][0-9] | [0-9][0-9][0-9] | [0-9][0-9][0-9][0-9]]) @@ -1828,7 +1827,7 @@ echo "# -*- compilation -*-" >> "$at_group_log" AS_ECHO(["AT_ordinal. m4_defn([AT_line]): testing $1..."]) $at_traceon m4_undivert([TEST_SCRIPT])dnl Insert the code here - $at_traceoff + set +x $at_times_p && times >"$at_times_file" ) AS_MESSAGE_LOG_FD>&1 2>&1 | eval $at_tee_pipe read at_status <"$at_status_file" @@ -2016,8 +2015,7 @@ m4_cond([m4_eval(m4_index([$1], [`]) >= 0)], [1], []))]dnl No reason. [m4_if(m4_index(_m4_defn([at_reason]), [a]), [0],]dnl dnl We know at build time that tracing COMMANDS is never safe. -[[echo 'Not enabling shell tracing (command contains ]m4_defn([at_reason])[)' -at_fn_check_prepare_notrace], +[[at_fn_check_prepare_notrace 'm4_defn([at_reason])'],dnl m4_index([$1], [$]), [-1],]dnl dnl We know at build time that tracing COMMANDS is always safe. [[at_fn_check_prepare_trace],]dnl @@ -2090,7 +2088,7 @@ m4_define([AT_DIFF_STDOUT()], # with parallel jobs. m4_define([_AT_CHECK], [m4_define([AT_ingroup])]dnl -[{ $at_traceoff +[{ set +x AS_ECHO(["$at_srcdir/AT_LINE: AS_ESCAPE([[$1]])"]) _AT_DECIDE_TRACEABLE([$1]) "AS_ESCAPE(m4_dquote(AT_LINE))" ( $at_check_trace; [$1]