-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #8873 from daverodgman/quietbuild-2.28
Make builds less verbose - 2.28 backport
- Loading branch information
Showing
6 changed files
with
132 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
#! /usr/bin/env bash | ||
# | ||
# Copyright The Mbed TLS Contributors | ||
# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later | ||
# | ||
# This swallows the output of the wrapped tool, unless there is an error. | ||
# This helps reduce excess logging in the CI. | ||
|
||
# If you are debugging a build / CI issue, you can get complete unsilenced logs | ||
# by un-commenting the following line (or setting VERBOSE_LOGS in your environment): | ||
|
||
# export VERBOSE_LOGS=1 | ||
|
||
# don't silence invocations containing these arguments | ||
export NO_SILENCE=" --version " | ||
|
||
export TOOL="cmake" | ||
|
||
exec "$(dirname "$0")/quiet.sh" "$@" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
#! /usr/bin/env bash | ||
# | ||
# Copyright The Mbed TLS Contributors | ||
# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later | ||
# | ||
# This swallows the output of the wrapped tool, unless there is an error. | ||
# This helps reduce excess logging in the CI. | ||
|
||
# If you are debugging a build / CI issue, you can get complete unsilenced logs | ||
# by un-commenting the following line (or setting VERBOSE_LOGS in your environment): | ||
|
||
# export VERBOSE_LOGS=1 | ||
|
||
# don't silence invocations containing these arguments | ||
export NO_SILENCE=" --version | test " | ||
|
||
export TOOL="make" | ||
|
||
exec "$(dirname "$0")/quiet.sh" "$@" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
# -*-mode: sh; sh-shell: bash -*- | ||
# | ||
# Copyright The Mbed TLS Contributors | ||
# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later | ||
# | ||
# This swallows the output of the wrapped tool, unless there is an error. | ||
# This helps reduce excess logging in the CI. | ||
|
||
# If you are debugging a build / CI issue, you can get complete unsilenced logs | ||
# by un-commenting the following line (or setting VERBOSE_LOGS in your environment): | ||
# | ||
# VERBOSE_LOGS=1 | ||
# | ||
# This script provides most of the functionality for the adjacent make and cmake | ||
# wrappers. | ||
# | ||
# It requires two variables to be set: | ||
# | ||
# TOOL - the name of the tool that is being wrapped (with no path), e.g. "make" | ||
# | ||
# NO_SILENCE - a regex that describes the commandline arguments for which output will not | ||
# be silenced, e.g. " --version | test ". In this example, "make lib test" will | ||
# not be silent, but "make lib" will be. | ||
|
||
# Locate original tool | ||
TOOL_WITH_PATH=$(dirname "$0")/$TOOL | ||
ORIGINAL_TOOL=$(type -ap "${TOOL}" | grep -v -Fx "$TOOL_WITH_PATH" | head -n1) | ||
|
||
print_quoted_args() { | ||
# similar to printf '%q' "$@" | ||
# but produce more human-readable results for common/simple cases like "a b" | ||
for a in "$@"; do | ||
# Get bash to quote the string | ||
printf -v q '%q' "$a" | ||
simple_pattern="^([-[:alnum:]_+./:@]+=)?([^']*)$" | ||
if [[ "$a" != "$q" && $a =~ $simple_pattern ]]; then | ||
# a requires some quoting (a != q), but has no single quotes, so we can | ||
# simplify the quoted form - e.g.: | ||
# a b -> 'a b' | ||
# CFLAGS=a b -> CFLAGS='a b' | ||
q="${BASH_REMATCH[1]}'${BASH_REMATCH[2]}'" | ||
fi | ||
printf " %s" "$q" | ||
done | ||
} | ||
|
||
if [[ ! " $* " =~ " --version " ]]; then | ||
# Display the command being invoked - if it succeeds, this is all that will | ||
# be displayed. Don't do this for invocations with --version, because | ||
# this output is often parsed by scripts, so we don't want to modify it. | ||
printf %s "${TOOL}" 1>&2 | ||
print_quoted_args "$@" 1>&2 | ||
echo 1>&2 | ||
fi | ||
|
||
if [[ " $@ " =~ $NO_SILENCE || -n "${VERBOSE_LOGS}" ]]; then | ||
# Run original command with no output supression | ||
exec "${ORIGINAL_TOOL}" "$@" | ||
else | ||
# Run original command and capture output & exit status | ||
TMPFILE=$(mktemp "quiet-${TOOL}.XXXXXX") | ||
"${ORIGINAL_TOOL}" "$@" > "${TMPFILE}" 2>&1 | ||
EXIT_STATUS=$? | ||
|
||
if [[ $EXIT_STATUS -ne 0 ]]; then | ||
# On error, display the full output | ||
cat "${TMPFILE}" | ||
fi | ||
|
||
# Remove tmpfile | ||
rm "${TMPFILE}" | ||
|
||
# Propagate the exit status | ||
exit $EXIT_STATUS | ||
fi |