public inbox for debugedit@sourceware.org
 help / color / mirror / Atom feed
From: Denys Vlasenko <dvlasenk@redhat.com>
To: Mark Wielaard <mark@klomp.org>, debugedit@sourceware.org
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Subject: [PATCH] find-debuginfo: unless -q -q, print messages what big steps we are at
Date: Thu, 22 Jun 2023 15:31:03 +0200	[thread overview]
Message-ID: <20230622133103.11551-1-dvlasenk@redhat.com> (raw)

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.

Two -q -q options suppress these messages too.

Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
---
 scripts/find-debuginfo.in | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/scripts/find-debuginfo.in b/scripts/find-debuginfo.in
index e7ac095..b76edaf 100755
--- a/scripts/find-debuginfo.in
+++ b/scripts/find-debuginfo.in
@@ -94,7 +94,8 @@ 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 verbose output from the script.
+Given twice, silences all non-error output from the script.
 
 All file names in switches are relative to builddir ('.' if not given).
 EOF
@@ -148,8 +149,10 @@ n_jobs=1
 # exit early on --version or --help
 done=false
 
-# silence non-error output
+# silence verbose output
 quiet=false
+# silence non-error output
+quiet2=false
 
 BUILDDIR=.
 out=debugfiles.list
@@ -245,6 +248,7 @@ while [ $# -gt 0 ]; do
     shift
     ;;
   -q|--quiet)
+    $quiet && quiet2=true
     quiet=true
     ;;
   --version)
@@ -289,6 +293,8 @@ if [ "$strip_g" = "true" ] && [ "$strip_glibs" = "true" ]; then
   exit 2
 fi
 
+$quiet2 || echo "find-debuginfo: starting" 2>&1
+
 i=0
 while ((i < nout)); do
   outs[$i]="$BUILDDIR/${outs[$i]}"
@@ -549,6 +555,7 @@ run_job()
 }
 
 n_files=$(wc -l <"$temp/primary")
+$quiet2 || echo "Extracting debug info from $n_files files" 2>&1
 if [ $n_jobs -gt $n_files ]; then
   n_jobs=$n_files
 fi
@@ -587,6 +594,7 @@ 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
+    $quiet2 || echo "DWARF-compressing ${#dwz_files[@]} files" 2>&1
     $quiet || 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=
@@ -625,6 +633,7 @@ fi
 
 # For each symlink whose target has a .debug file,
 # make a .debug symlink to that file.
+$quiet2 || echo "Creating .debug symlinks for symlinks to ELF files" 2>&1
 find "$RPM_BUILD_ROOT" ! -path "${debugdir}/*" -type l -print |
 while read f
 do
@@ -646,6 +655,7 @@ if [ -s "$SOURCEFILE" ]; then
     debug_dest_name="/usr/src/debug/${unique_debug_src_base}"
   fi
 
+  $quiet2 || 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>.
@@ -761,3 +771,5 @@ if ((nout > 0)); then
   cat "$LISTFILE" >> "${LISTFILE}.new"
   mv "${LISTFILE}.new" "$LISTFILE"
 fi
+
+$quiet2 || echo "find-debuginfo: done" 2>&1
-- 
2.37.2


             reply	other threads:[~2023-06-22 13:31 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-06-22 13:31 Denys Vlasenko [this message]
2023-06-29 14:13 ` Mark Wielaard
2023-06-30 13:25   ` Mark Wielaard
2023-06-30 18:51     ` Denys Vlasenko
2023-06-30 22:17       ` Mark Wielaard

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230622133103.11551-1-dvlasenk@redhat.com \
    --to=dvlasenk@redhat.com \
    --cc=debugedit@sourceware.org \
    --cc=mark@klomp.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).