teknoraver / rpms / rpm

Forked from rpms/rpm 4 months ago
Clone

Blame find-debuginfo-dwz-multi.patch

Mark Wielaard 150179
commit 0f162dc41f2051eab237bd223356d88e94a07580
Mark Wielaard 150179
Author: Mark Wielaard <mark@klomp.org>
Mark Wielaard 150179
Date:   Mon Jun 26 17:38:30 2017 +0200
Mark Wielaard 150179
Mark Wielaard 150179
    find-debuginfo.sh: Don't create dwz multi file if there is only one .debug.
Mark Wielaard 150179
    
Mark Wielaard 150179
    dwz -m multi only works when there are multiple .debug input files.
Mark Wielaard 150179
    With just one .debug file it doesn't really make sense to extract
Mark Wielaard 150179
    the shared debug info into a separate file and dwz will complain:
Mark Wielaard 150179
    
Mark Wielaard 150179
      dwz: Too few files for multifile optimization.
Mark Wielaard 150179
    
Mark Wielaard 150179
    So only add -m multi if there is more than one .debug file.
Mark Wielaard 150179
    
Mark Wielaard 150179
    Signed-off-by: Mark Wielaard <mark@klomp.org>
Mark Wielaard 150179
Mark Wielaard 150179
diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh
Mark Wielaard 150179
index 85a862f..360982d 100755
Mark Wielaard 150179
--- a/scripts/find-debuginfo.sh
Mark Wielaard 150179
+++ b/scripts/find-debuginfo.sh
Mark Wielaard 150179
@@ -458,8 +458,8 @@ fi
Mark Wielaard 150179
 # Invoke the DWARF Compressor utility.
Mark Wielaard 150179
 if $run_dwz \
Mark Wielaard 150179
    && [ -d "${RPM_BUILD_ROOT}/usr/lib/debug" ]; then
Mark Wielaard 150179
-  dwz_files="`cd "${RPM_BUILD_ROOT}/usr/lib/debug"; find -type f -name \*.debug`"
Mark Wielaard 150179
-  if [ -n "${dwz_files}" ]; then
Mark Wielaard 150179
+  readarray dwz_files < <(cd "${RPM_BUILD_ROOT}/usr/lib/debug"; find -type f -name \*.debug)
Mark Wielaard 150179
+  if [ ${#dwz_files[@]} -gt 0 ]; then
Mark Wielaard 150179
     dwz_multifile_name="${RPM_PACKAGE_NAME}-${RPM_PACKAGE_VERSION}-${RPM_PACKAGE_RELEASE}.${RPM_ARCH}"
Mark Wielaard 150179
     dwz_multifile_suffix=
Mark Wielaard 150179
     dwz_multifile_idx=0
Mark Wielaard 150179
@@ -468,14 +468,16 @@ if $run_dwz \
Mark Wielaard 150179
       dwz_multifile_suffix=".${dwz_multifile_idx}"
Mark Wielaard 150179
     done
Mark Wielaard 150179
     dwz_multfile_name="${dwz_multifile_name}${dwz_multifile_suffix}"
Mark Wielaard 150179
-    dwz_opts="-h -q -r -m .dwz/${dwz_multifile_name}"
Mark Wielaard 150179
+    dwz_opts="-h -q -r"
Mark Wielaard 150179
+    [ ${#dwz_files[@]} -gt 1 ] \
Mark Wielaard 150179
+      && dwz_opts="${dwz_opts} -m .dwz/${dwz_multifile_name}"
Mark Wielaard 150179
     mkdir -p "${RPM_BUILD_ROOT}/usr/lib/debug/.dwz"
Mark Wielaard 150179
     [ -n "${dwz_low_mem_die_limit}" ] \
Mark Wielaard 150179
       && dwz_opts="${dwz_opts} -l ${dwz_low_mem_die_limit}"
Mark Wielaard 150179
     [ -n "${dwz_max_die_limit}" ] \
Mark Wielaard 150179
       && dwz_opts="${dwz_opts} -L ${dwz_max_die_limit}"
Mark Wielaard 150179
     if type dwz >/dev/null 2>&1; then
Mark Wielaard 150179
-      ( cd "${RPM_BUILD_ROOT}/usr/lib/debug" && dwz $dwz_opts $dwz_files )
Mark Wielaard 150179
+      ( cd "${RPM_BUILD_ROOT}/usr/lib/debug" && dwz $dwz_opts ${dwz_files[@]} )
Mark Wielaard 150179
     else
Mark Wielaard 150179
       echo >&2 "*** ERROR: DWARF compression requested, but no dwz installed"
Mark Wielaard 150179
       exit 2