ci: Rewrite broken wrap-valgrind.sh to .py

Shellcheck marked the script as violating SC2044.

Instead of re-writing the Bash from scratch, just use Python.
This commit is contained in:
MarcoFalke
2026-05-27 16:53:31 +02:00
parent faf7e38973
commit fa98d44951
3 changed files with 33 additions and 19 deletions

View File

@@ -168,7 +168,7 @@ if [ -n "${CI_LIMIT_STACK_SIZE}" ]; then
fi
if [ -n "$USE_VALGRIND" ]; then
"${BASE_ROOT_DIR}/ci/test/wrap-valgrind.sh"
"${BASE_ROOT_DIR}/ci/test/wrap-valgrind.py"
fi
if [ "$RUN_CHECK_DEPS" = "true" ]; then

32
ci/test/wrap-valgrind.py Executable file
View File

@@ -0,0 +1,32 @@
#!/usr/bin/env python3
# Copyright (c) The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or https://opensource.org/license/mit/.
import os
import shlex
from pathlib import Path
def main():
base_root = Path(os.environ["BASE_ROOT_DIR"])
base_out = Path(os.environ["BASE_OUTDIR"])
suppressions_file = base_root / "test" / "sanitizer_suppressions" / "valgrind.supp"
target_names = {b.name for b in (base_out / "bin").iterdir()}
for exe in base_root.rglob("*"):
if exe.name in target_names and exe.is_file() and os.access(exe, os.X_OK):
print(f"Wrap {exe} ...")
original_path = exe.with_name(f"{exe.name}_orig")
exe.rename(original_path)
exe.write_text(
"#!/usr/bin/env bash\n"
"exec valgrind --gen-suppressions=all --quiet --error-exitcode=1 "
f"--suppressions={shlex.quote(str(suppressions_file))} "
f'{shlex.quote(str(original_path))} "$@"\n'
)
exe.chmod(exe.stat().st_mode | 0o111)
if __name__ == "__main__":
main()

View File

@@ -1,18 +0,0 @@
#!/usr/bin/env bash
#
# Copyright (c) 2018-present The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
export LC_ALL=C.UTF-8
for b_name in "${BASE_OUTDIR}/bin"/*; do
# shellcheck disable=SC2044
for b in $(find "${BASE_ROOT_DIR}" -executable -type f -name "$(basename "$b_name")"); do
echo "Wrap $b ..."
mv "$b" "${b}_orig"
echo '#!/usr/bin/env bash' > "$b"
echo "exec valgrind --gen-suppressions=all --quiet --error-exitcode=1 --suppressions=${BASE_ROOT_DIR}/test/sanitizer_suppressions/valgrind.supp \"${b}_orig\" \"\$@\"" >> "$b"
chmod +x "$b"
done
done