teknoraver / rpms / rpm

Forked from rpms/rpm 4 months ago
Clone
Blob Blame History Raw
commit 0f162dc41f2051eab237bd223356d88e94a07580
Author: Mark Wielaard <mark@klomp.org>
Date:   Mon Jun 26 17:38:30 2017 +0200

    find-debuginfo.sh: Don't create dwz multi file if there is only one .debug.
    
    dwz -m multi only works when there are multiple .debug input files.
    With just one .debug file it doesn't really make sense to extract
    the shared debug info into a separate file and dwz will complain:
    
      dwz: Too few files for multifile optimization.
    
    So only add -m multi if there is more than one .debug file.
    
    Signed-off-by: Mark Wielaard <mark@klomp.org>

diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh
index 85a862f..360982d 100755
--- a/scripts/find-debuginfo.sh
+++ b/scripts/find-debuginfo.sh
@@ -458,8 +458,8 @@ fi
 # Invoke the DWARF Compressor utility.
 if $run_dwz \
    && [ -d "${RPM_BUILD_ROOT}/usr/lib/debug" ]; then
-  dwz_files="`cd "${RPM_BUILD_ROOT}/usr/lib/debug"; find -type f -name \*.debug`"
-  if [ -n "${dwz_files}" ]; then
+  readarray dwz_files < <(cd "${RPM_BUILD_ROOT}/usr/lib/debug"; find -type f -name \*.debug)
+  if [ ${#dwz_files[@]} -gt 0 ]; then
     dwz_multifile_name="${RPM_PACKAGE_NAME}-${RPM_PACKAGE_VERSION}-${RPM_PACKAGE_RELEASE}.${RPM_ARCH}"
     dwz_multifile_suffix=
     dwz_multifile_idx=0
@@ -468,14 +468,16 @@ if $run_dwz \
       dwz_multifile_suffix=".${dwz_multifile_idx}"
     done
     dwz_multfile_name="${dwz_multifile_name}${dwz_multifile_suffix}"
-    dwz_opts="-h -q -r -m .dwz/${dwz_multifile_name}"
+    dwz_opts="-h -q -r"
+    [ ${#dwz_files[@]} -gt 1 ] \
+      && dwz_opts="${dwz_opts} -m .dwz/${dwz_multifile_name}"
     mkdir -p "${RPM_BUILD_ROOT}/usr/lib/debug/.dwz"
     [ -n "${dwz_low_mem_die_limit}" ] \
       && dwz_opts="${dwz_opts} -l ${dwz_low_mem_die_limit}"
     [ -n "${dwz_max_die_limit}" ] \
       && dwz_opts="${dwz_opts} -L ${dwz_max_die_limit}"
     if type dwz >/dev/null 2>&1; then
-      ( cd "${RPM_BUILD_ROOT}/usr/lib/debug" && dwz $dwz_opts $dwz_files )
+      ( cd "${RPM_BUILD_ROOT}/usr/lib/debug" && dwz $dwz_opts ${dwz_files[@]} )
     else
       echo >&2 "*** ERROR: DWARF compression requested, but no dwz installed"
       exit 2