commit 4842adfd91c3b37744c66d9f01c0112468fdbf37 Author: Michael Schroeder Date: Tue Mar 28 14:20:50 2017 +0200 Untangle unique build options in find-debuginfo.sh Rename --ver-rel option to --build-id-seed, so that it reflects what it does, not how it is used. Remove implcit usage of the old --ver-rel option for --unique-debug-arch and --unique-debug-src-base, instead already call find-debuginfo.sh with the version included. Rename --unique-debug-arch to --unique-debug-suffix because it now also contains the package version. diff --git a/macros.in b/macros.in index 7656c06..0ddde29 100644 --- a/macros.in +++ b/macros.in @@ -172,7 +172,18 @@ # the script. See the script for details. # %__debug_install_post \ - %{_rpmconfigdir}/find-debuginfo.sh %{?_smp_mflags} %{?_missing_build_ids_terminate_build:--strict-build-id} %{?_no_recompute_build_ids:-n} %{?_include_minidebuginfo:-m} %{?_include_gdb_index:-i} %{?_unique_build_ids:--ver-rel "%{VERSION}-%{RELEASE}"} %{?_unique_debug_names:--unique-debug-arch "%{_arch}"} %{?_unique_debug_srcs:--unique-debug-src-base "%{name}"} %{?_find_debuginfo_dwz_opts} %{?_find_debuginfo_opts} "%{_builddir}/%{?buildsubdir}"\ + %{_rpmconfigdir}/find-debuginfo.sh \\\ + %{?_smp_mflags} \\\ + %{?_missing_build_ids_terminate_build:--strict-build-id} \\\ + %{?_no_recompute_build_ids:-n} \\\ + %{?_include_minidebuginfo:-m} \\\ + %{?_include_gdb_index:-i} \\\ + %{?_unique_build_ids:--build-id-seed "%{VERSION}-%{RELEASE}"} \\\ + %{?_unique_debug_names:--unique-debug-suffix "-%{VERSION}-%{RELEASE}.%{_arch}"} \\\ + %{?_unique_debug_srcs:--unique-debug-src-base "%{name}-%{VERSION}-%{RELEASE}.%{_arch}"} \\\ + %{?_find_debuginfo_dwz_opts} \\\ + %{?_find_debuginfo_opts} \\\ + "%{_builddir}/%{?buildsubdir}"\ %{nil} # Template for debug information sub-package. diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh index 8effac8..1ebc159 100755 --- a/scripts/find-debuginfo.sh +++ b/scripts/find-debuginfo.sh @@ -6,7 +6,7 @@ # [-o debugfiles.list] # [--run-dwz] [--dwz-low-mem-die-limit N] # [--dwz-max-die-limit N] -# [--ver-rel VERSION-RELEASE] +# [--build-id-seed VERSION-RELEASE] # [[-l filelist]... [-p 'pattern'] -o debuginfo.list] # [builddir] # @@ -30,7 +30,7 @@ # if available, and --dwz-low-mem-die-limit and --dwz-max-die-limit # provide detailed limits. See dwz(1) -l and -L option for details. # -# If --ver-rel VERSION-RELEASE is given then debugedit is called to +# If --build-id-seed VERSION-RELEASE is given then debugedit is called to # update the build-ids it finds adding the VERSION-RELEASE string as # seed to recalculate the build-id hash. This makes sure the # build-ids in the ELF files are unique between versions and releases @@ -65,11 +65,11 @@ run_dwz=false dwz_low_mem_die_limit= dwz_max_die_limit= -# Version and release of the spec. Given by --ver-rel -ver_rel= +# build id seed given by the --build-id-seed option +build_id_seed= # Arch given by --unique-debug-arch -unique_debug_arch= +unique_debug_suffix= # Base given by --unique-debug-src-base unique_debug_src_base= @@ -96,12 +96,12 @@ while [ $# -gt 0 ]; do dwz_max_die_limit=$2 shift ;; - --ver-rel) - ver_rel=$2 + --build-id-seed) + build_id_seed=$2 shift ;; - --unique-debug-arch) - unique_debug_arch=$2 + --unique-debug-suffix) + unique_debug_suffix=$2 shift ;; --unique-debug-src-base) @@ -156,18 +156,8 @@ while [ $# -gt 0 ]; do shift done -if test -z "$ver_rel" -a -n "$unique_debug_arch"; then - echo >&2 "*** ERROR: --unique-debug-arch (${unique_debug_arch}) needs --ver-rel (${ver_rel})" - exit 2 -fi - -if test -z "$unique_debug_arch" -a -n "$unique_debug_src_base"; then - echo >&2 "*** ERROR: --unique-debug-src-base (${unique_debug_src_base}) needs --unique-debug-arch (${unique_debug_arch})" - exit 2 -fi - -if test -n "$ver_rel" -a "$no_recompute_build_id" = "true"; then - echo >&2 "*** ERROR: --ver-rel (unique build-ids) and -n (do not recompute build-id cannot be used together" +if test -n "$build_id_seed" -a "$no_recompute_build_id" = "true"; then + echo >&2 "*** ERROR: --build-id-seed (unique build-ids) and -n (do not recompute build-id) cannot be used together" exit 2 fi @@ -278,12 +268,7 @@ debug_link() get_debugfn() { dn=$(dirname "${1#$RPM_BUILD_ROOT}") - if test -n "${unique_debug_arch}"; then - bn=$(basename "$1" .debug)-${ver_rel}.${unique_debug_arch}.debug - else - bn=$(basename "$1" .debug).debug - fi - + bn=$(basename "$1" .debug)${unique_debug_suffix}.debug debugdn=${debugdir}${dn} debugfn=${debugdn}/${bn} } @@ -310,23 +310,21 @@ [ -f "${debugfn}" ] && return echo "extracting debug info from $f" - build_id_seed= - if [ ! -z "$ver_rel" ]; then - build_id_seed="--build-id-seed=$ver_rel" - fi # See also cpio SOURCEFILE copy. Directories must match up. debug_base_name="$RPM_BUILD_DIR" debug_dest_name="/usr/src/debug" if [ ! -z "$unique_debug_src_base" ]; then debug_base_name="$BUILDDIR" - debug_dest_name="/usr/src/debug/${unique_debug_src_base}-${ver_rel}.${unique_debug_arch}" + debug_dest_name="/usr/src/debug/${unique_debug_src_base}" fi no_recompute= if [ "$no_recompute_build_id" = "true" ]; then no_recompute="-n" fi - id=$(${lib_rpm_dir}/debugedit -b $debug_base_name -d $debug_dest_name \ - $no_recompute -i $build_id_seed -l "$SOURCEFILE" "$f") || exit + id=$(${lib_rpm_dir}/debugedit -b "$debug_base_name" -d "$debug_dest_name" \ + $no_recompute -i \ + ${build_id_seed:+--build-id-seed="$build_id_seed"} \ + -l "$SOURCEFILE" "$f") || exit if [ -z "$id" ]; then echo >&2 "*** ${strict_error}: No build ID note found in $f" $strict && exit 2 @@ -509,7 +492,7 @@ if [ -s "$SOURCEFILE" ]; then debug_dest_name="/usr/src/debug" if [ ! -z "$unique_debug_src_base" ]; then debug_base_name="$BUILDDIR" - debug_dest_name="/usr/src/debug/${unique_debug_src_base}-${ver_rel}.${unique_debug_arch}" + debug_dest_name="/usr/src/debug/${unique_debug_src_base}" fi mkdir -p "${RPM_BUILD_ROOT}${debug_dest_name}"