mirror of
https://github.com/crosstool-ng/crosstool-ng.git
synced 2025-01-03 03:26:39 +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
|
# 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() {
|
CT_DoExecLog() {
|
||||||
local level="$1"
|
local level="$1"
|
||||||
shift
|
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}"
|
"${@}" 2>&1 |CT_DoLog "${level}"
|
||||||
|
)
|
||||||
|
# Catch failure of the sub-shell
|
||||||
|
[ $? -eq 0 ]
|
||||||
}
|
}
|
||||||
|
|
||||||
# Tail message to be logged whatever happens
|
# Tail message to be logged whatever happens
|
||||||
|
Loading…
Reference in New Issue
Block a user