commit 0ba2e4aa9945019a8c6db95d27d142b660a63a79 Author: Mark Wielaard Date: Tue Mar 26 21:42:39 2024 +0100 config: Make sure profile.sh succeeds with set -e and set -o pipefail profile.sh might fail with set -o pipefail because: cat /dev/null "${prefix}/etc/debuginfod"/*.urls 2>/dev/null | tr '\n' ' ' might fail when there isn't an *.urls file the first command in the pipe fails (the 2>/dev/null is there to hide that failure). This can be fixed by adding || : at the end. This works because : always succeeds and produces no outpur which is what the script expects when the command would fail. Also add a new testcase that runs profile.sh with bout set -e and set -o pipefail. * config/profile.sh.in: Add || : at end of pipe. * tests/run-debuginfod-client-profile.sh: New test. * tests/Makefile.am (TESTS): Add run-debuginfod-client-profile.sh. (EXTRA_DIST): Likewise. https://sourceware.org/bugzilla/show_bug.cgi?id=31562 Signed-off-by: Mark Wielaard diff --git a/config/profile.sh.in b/config/profile.sh.in index 3f4397dcb44d..84d3260ddcfc 100644 --- a/config/profile.sh.in +++ b/config/profile.sh.in @@ -6,7 +6,7 @@ if [ -z "$DEBUGINFOD_URLS" ]; then prefix="@prefix@" - DEBUGINFOD_URLS=$(cat /dev/null "@sysconfdir@/debuginfod"/*.urls 2>/dev/null | tr '\n' ' ') + DEBUGINFOD_URLS=$(cat /dev/null "@sysconfdir@/debuginfod"/*.urls 2>/dev/null | tr '\n' ' ' || :) [ -n "$DEBUGINFOD_URLS" ] && export DEBUGINFOD_URLS || unset DEBUGINFOD_URLS unset prefix fi diff --git a/tests/Makefile.am b/tests/Makefile.am index 9315ec3bbe4c..344d6706e16e 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -209,6 +209,7 @@ TESTS = run-arextract.sh run-arsymtest.sh run-ar.sh newfile test-nlist \ run-disasm-riscv64.sh \ run-pt_gnu_prop-tests.sh \ run-getphdrnum.sh run-test-includes.sh \ + run-debuginfod-client-profile.sh \ leb128 read_unaligned \ msg_tst system-elf-libelf-test system-elf-gelf-test \ $(asm_TESTS) run-disasm-bpf.sh run-low_high_pc-dw-form-indirect.sh \ @@ -636,6 +637,7 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \ testfile_pt_gnu_prop.bz2 testfile_pt_gnu_prop32.bz2 \ run-getphdrnum.sh testfile-phdrs.elf.bz2 \ run-test-includes.sh run-low_high_pc-dw-form-indirect.sh \ + run-debuginfod-client-profile.sh \ run-readelf-dw-form-indirect.sh testfile-dw-form-indirect.bz2 \ run-nvidia-extended-linemap-libdw.sh run-nvidia-extended-linemap-readelf.sh \ testfile_nvidia_linemap.bz2 \ diff --git a/tests/run-debuginfod-client-profile.sh b/tests/run-debuginfod-client-profile.sh new file mode 100755 index 000000000000..7435ced83f15 --- /dev/null +++ b/tests/run-debuginfod-client-profile.sh @@ -0,0 +1,27 @@ +#! /bin/sh +# Copyright (C) 2024 Mark J. Wielaard +# This file is part of elfutils. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# elfutils is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +. $srcdir/test-subr.sh + +# Make sure the profile.sh or profile.d/debuginfod.sh works even with +# set -e (any command error is an error) and set -o pipefail (any error +# in a pipe fails the whole pipe command). + +set -e +set -o pipefail + +source ${abs_top_builddir}/config/profile.sh