diff --git a/0001-find-debuginfo-Add-v-verbose-for-per-file-messages.patch b/0001-find-debuginfo-Add-v-verbose-for-per-file-messages.patch new file mode 100644 index 0000000..a8294a9 --- /dev/null +++ b/0001-find-debuginfo-Add-v-verbose-for-per-file-messages.patch @@ -0,0 +1,199 @@ +From 84cfaca936a9dcfc26bd9d59edbdeeae88fc4763 Mon Sep 17 00:00:00 2001 +From: Denys Vlasenko +Date: Thu, 22 Jun 2023 15:31:03 +0200 +Subject: [PATCH] find-debuginfo: Add -v,--verbose for per file messages + +Only print messages what big steps we are at without --verbose. + +For a reader of rpmbuild's log, it's rather unclear what find-debuginfo +is doing. It used to be too verbose, "extracting debug info from FILE" +for every file, and while this can be suppressed now, we still end up +with something semi-mysterious like this: + +... +extracting debug info from /builddir/build/BUILDROOT/xyz +gdb-add-index: No index was created for /builddir/build/BUILDROOT/xyz +gdb-add-index: [Was there no debuginfo? Was there already an index?] +symlinked /usr/lib/debug/usr/lib64/libcpupower.so.0.0.1.debug to /usr/lib/debug/usr/lib64/libcpupower.so.debug +symlinked /usr/lib/debug/usr/lib64/libcpupower.so.0.0.1.debug to /usr/lib/debug/usr/lib64/libcpupower.so.0.debug +cpio: binutils-2.30/bfd: Cannot stat: No such file or directory +cpio: binutils-2.30/bfd/aout-target.h: Cannot stat: No such file or directory +cpio: binutils-2.30/bfd/aoutx.h: Cannot stat: No such file or directory +cpio: binutils-2.30/bfd/archive.c: Cannot stat: No such file or directory +cpio: binutils-2.30/bfd/archive64.c: Cannot stat: No such file or directory +... +775655 blocks ++ /usr/lib/rpm/check-buildroot ++ /usr/lib/rpm/redhat/brp-ldconfig +... + +The reader is left confused. "What these cpio errors are about? +Why those sources are not found?" (Well, because not every source +name extracted by 'debugedit -l' has to exist, but this requires +considerable digging aroung to understand). + +We can give a few messages explaining what general steps we go through: + + Extracting debug info from N files + DWARF-compressing N files + Creating .debug symlinks for symlinks to ELF files + Copying sources found by 'debugedit -l' + +This is also useful to get a feeling which steps are time consuming. +Kernel builds often need to investigate this aspect. To help a bit more, +add "find-debuginfo: starting" and "find-debuginfo: done" messages too. + +This patch adds these messages. +The -q options suppress these messages too. + +It also adds a --verbose flag to print per file messages. +Those per file messages are now suppressed by default and +only the general step messages are show. Unless -q is given, +which suppresses all non-error output. + +Signed-off-by: Denys Vlasenko +Signed-off-by: Mark Wielaard +--- + scripts/find-debuginfo.in | 36 +++++++++++++++++++++++++++--------- + 1 file changed, 27 insertions(+), 9 deletions(-) + +diff --git a/scripts/find-debuginfo.in b/scripts/find-debuginfo.in +index f87b777..5613f69 100755 +--- a/scripts/find-debuginfo.in ++++ b/scripts/find-debuginfo.in +@@ -26,7 +26,7 @@ Usage: find-debuginfo [OPTION]... [builddir] + automagically generates debug info and file lists + + Options: +-[--strict-build-id] [-g] [-r] [-m] [-i] [-n] [-q] ++[--strict-build-id] [-g] [-r] [-m] [-i] [-n] [-q] [-v] + [--keep-section SECTION] [--remove-section SECTION] + [--g-libs] + [-j N] [--jobs N] +@@ -94,7 +94,9 @@ will be called /usr/debug/src/. This makes sure the debug source + dirs are unique between package version, release and achitecture (Use + --unique-debug-src-base "%{name}-%{VERSION}-%{RELEASE}.%{_arch}") + +-The -q or --quiet flag silences non-error output from the script. ++The -q or --quiet flag silences all non-error output from the script. ++The -v or --verbose flag add more output for all files processed. ++When neither -q or -v is given then only output for each pass is given. + + All file names in switches are relative to builddir ('.' if not given). + EOF +@@ -150,9 +152,12 @@ n_jobs=1 + # exit early on --version or --help + done=false + +-# silence non-error output ++# silence all output + quiet=false + ++# add more non-error output ++verbose=false ++ + BUILDDIR=. + out=debugfiles.list + srcout= +@@ -248,6 +253,11 @@ while [ $# -gt 0 ]; do + ;; + -q|--quiet) + quiet=true ++ verbose=false ++ ;; ++ -v|--verbose) ++ quiet=false ++ verbose=true + ;; + --version) + echo "find-debuginfo @VERSION@" +@@ -291,6 +301,8 @@ if [ "$strip_g" = "true" ] && [ "$strip_glibs" = "true" ]; then + exit 2 + fi + ++$quiet || echo "find-debuginfo: starting" 2>&1 ++ + i=0 + while ((i < nout)); do + outs[$i]="$BUILDDIR/${outs[$i]}" +@@ -447,7 +459,7 @@ do_file() + get_debugfn "$f" + [ -f "${debugfn}" ] && return + +- $quiet || echo "extracting debug info from $f" ++ $verbose && echo "extracting debug info from $f" + # See also cpio SOURCEFILE copy. Directories must match up. + debug_base_name="$RPM_BUILD_DIR" + debug_dest_name="/usr/src/debug" +@@ -523,7 +535,7 @@ do_file() + grep "^$inum " "$temp/linked" | while read inum linked; do + link=$debugfn + get_debugfn "$linked" +- $quiet || echo "hard linked $link to $debugfn" ++ $verbose && echo "hard linked $link to $debugfn" + mkdir -p "$(dirname "$debugfn")" && ln -nf "$link" "$debugfn" + done + fi +@@ -551,6 +563,7 @@ run_job() + } + + n_files=$(wc -l <"$temp/primary") ++$quiet || echo "Extracting debug info from $n_files files" 2>&1 + if [ $n_jobs -gt $n_files ]; then + n_jobs=$n_files + fi +@@ -589,7 +602,8 @@ if $run_dwz \ + && [ -d "${RPM_BUILD_ROOT}/usr/lib/debug" ]; then + readarray dwz_files < <(cd "${RPM_BUILD_ROOT}/usr/lib/debug"; find -type f -name \*.debug | LC_ALL=C sort) + if [ ${#dwz_files[@]} -gt 0 ]; then +- $quiet || size_before=$(du -sk ${RPM_BUILD_ROOT}/usr/lib/debug | cut -f1) ++ $quiet || echo "DWARF-compressing ${#dwz_files[@]} files" 2>&1 ++ $verbose && size_before=$(du -sk ${RPM_BUILD_ROOT}/usr/lib/debug | cut -f1) + dwz_multifile_name="${RPM_PACKAGE_NAME}-${RPM_PACKAGE_VERSION}-${RPM_PACKAGE_RELEASE}.${RPM_ARCH}" + dwz_multifile_suffix= + dwz_multifile_idx=0 +@@ -613,8 +627,8 @@ if $run_dwz \ + echo >&2 "*** ERROR: DWARF compression requested, but no dwz installed" + exit 2 + fi +- $quiet || size_after=$(du -sk ${RPM_BUILD_ROOT}/usr/lib/debug | cut -f1) +- $quiet || echo "original debug info size: ${size_before}kB, size after compression: ${size_after}kB" ++ $verbose && size_after=$(du -sk ${RPM_BUILD_ROOT}/usr/lib/debug | cut -f1) ++ $verbose && echo "original debug info size: ${size_before}kB, size after compression: ${size_after}kB" + # Remove .dwz directory if empty + rmdir "${RPM_BUILD_ROOT}/usr/lib/debug/.dwz" 2>/dev/null + +@@ -627,6 +641,7 @@ fi + + # For each symlink whose target has a .debug file, + # make a .debug symlink to that file. ++$quiet || echo "Creating .debug symlinks for symlinks to ELF files" 2>&1 + find "$RPM_BUILD_ROOT" ! -path "${debugdir}/*" -type l -print | + while read f + do +@@ -634,7 +649,7 @@ do + f=${f#$RPM_BUILD_ROOT} + t=${t#$RPM_BUILD_ROOT} + if [ -f "$debugdir$t" ]; then +- $quiet || echo "symlinked /usr/lib/debug$t to /usr/lib/debug${f}.debug" ++ $verbose && echo "symlinked /usr/lib/debug$t to /usr/lib/debug${f}.debug" + debug_link "/usr/lib/debug$t" "${f}.debug" + fi + done +@@ -648,6 +663,7 @@ if [ -s "$SOURCEFILE" ]; then + debug_dest_name="/usr/src/debug/${unique_debug_src_base}" + fi + ++ $quiet || echo "Copying sources found by 'debugedit -l' to ${debug_dest_name}" 2>&1 + mkdir -p "${RPM_BUILD_ROOT}${debug_dest_name}" + # Filter out anything compiler generated which isn't a source file. + # e.g. , , <__thread_local_inner macros>. +@@ -763,3 +779,5 @@ if ((nout > 0)); then + cat "$LISTFILE" >> "${LISTFILE}.new" + mv "${LISTFILE}.new" "$LISTFILE" + fi ++ ++$quiet || echo "find-debuginfo: done" 2>&1 +-- +2.39.3 + diff --git a/debugedit.spec b/debugedit.spec index fe6e7a4..f256590 100644 --- a/debugedit.spec +++ b/debugedit.spec @@ -1,6 +1,6 @@ Name: debugedit Version: 5.0 -Release: 8%{?dist} +Release: 9%{?dist} Summary: Tools for debuginfo creation License: GPLv3+ and GPLv2+ and LGPLv2+ URL: https://sourceware.org/debugedit/ @@ -48,6 +48,7 @@ Patch4: 0002-configure.ac-Use-AC_LINK_IFELSE-for-gz-none-check.patch Patch5: 0003-configure.ac-Use-AC_LANG_PROGRAM-for-AC_LINK_IFELSE-.patch Patch6: 0004-scripts-find-debuginfo.in-Add-q-quiet.patch Patch7: 0001-find-debuginfo-Prefix-install_dir-to-PATH.patch +Patch8: 0001-find-debuginfo-Add-v-verbose-for-per-file-messages.patch %description The debugedit project provides programs and scripts for creating @@ -89,6 +90,9 @@ make check %{?_smp_mflags} %{_mandir}/man1/find-debuginfo.1* %changelog +* Fri Jun 30 2023 Mark Wielaard - 5.0-9 +- Add 0001-find-debuginfo-Add-v-verbose-for-per-file-messages.patch + * Fri Jun 30 2023 Mark Wielaard - 5.0-8 - Add 0001-find-debuginfo-Prefix-install_dir-to-PATH.patch