Notification time stamped 2023-06-30 22:13:59 UTC
From dd85126482279a858caae33415135f7a4739fb3d Mon Sep 17 00:00:00 2001
From: Mark Wielaard <mjw(a)redhat.com>
Date: Jun 30 2023 22:13:07 +0000
Subject: 5.0-9 - Add 0001-find-debuginfo-Add-v-verbose-for-per-file-messages.patch
---
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 <dvlasenk(a)redhat.com>
+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 <dvlasenk(a)redhat.com>
+Signed-off-by: Mark Wielaard <mark(a)klomp.org>
+---
+ 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/<BASE>. 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. <internal>, <built-in>, <__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 <mjw(a)fedoraproject.org> - 5.0-9
+- Add 0001-find-debuginfo-Add-v-verbose-for-per-file-messages.patch
+
* Fri Jun 30 2023 Mark Wielaard <mjw(a)fedoraproject.org> - 5.0-8
- Add 0001-find-debuginfo-Prefix-install_dir-to-PATH.patch
https://src.fedoraproject.org/rpms/debugedit/c/dd85126482279a858caae33415...