mirror of
https://github.com/crosstool-ng/crosstool-ng.git
synced 2024-12-21 21:57:48 +00:00
scripts: allow logging of commands with variables
In a lot of places, we need to call some commands with specific variable settings, a-la: var1=val1 var2=val2 /foo/bar/buz opt1 opt2 Unfortunately, we currently can not log the variable settings. Enhance CT_DoExecLog with a crude heuristic that works pretty well and that can also log setting variables. Reported-by: ANDY KENNEDY <ANDY.KENNEDY@adtran.com> Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
This commit is contained in:
parent
7bfa4139ad
commit
807daf12d0
@ -119,12 +119,26 @@ CT_DoLog() {
|
||||
}
|
||||
|
||||
# Execute an action, and log its messages
|
||||
# Usage: [VAR=val...] CT_DoExecLog <level> <command [parameters...]>
|
||||
# It is possible to even log local variable assignments (a-la: var=val ./cmd opts)
|
||||
# Usage: CT_DoExecLog <level> [VAR=val...] <command> [parameters...]
|
||||
CT_DoExecLog() {
|
||||
local level="$1"
|
||||
shift
|
||||
CT_DoLog DEBUG "==> Executing: '${*}'"
|
||||
(
|
||||
for i in "$@"; do
|
||||
tmp_log+="'${i}' "
|
||||
done
|
||||
while true; do
|
||||
case "${1}" in
|
||||
*=*) eval export "'${1}'"; shift;;
|
||||
*) break;;
|
||||
esac
|
||||
done
|
||||
CT_DoLog DEBUG "==> Executing: ${tmp_log}"
|
||||
"${@}" 2>&1 |CT_DoLog "${level}"
|
||||
)
|
||||
# Catch failure of the sub-shell
|
||||
[ $? -eq 0 ]
|
||||
}
|
||||
|
||||
# Tail message to be logged whatever happens
|
||||
|
Loading…
Reference in New Issue
Block a user