From: Jan Blunck Subject: Let debuginfo packages provide the build-id This patch lets debuginfo packages provide build-id like follows: debuginfo(build-id) = c63cb23876c5fa85f36beaff58f8557e1bf22517 Users can therefore ask zypper to install the correct debuginfo package with: zypper install -C "debuginfo(build-id) = c63cb23876c5fa85f36beaff58f8557e1bf22517" --- ./autodeps/linux.prov.orig 2011-05-11 15:58:28.000000000 +0000 +++ ./autodeps/linux.prov 2011-05-11 15:59:31.000000000 +0000 @@ -5,6 +5,9 @@ IFS=$'\n' filelist=($(cat)) +debuginfolist=($(printf "%s\n" "${filelist[@]}" | grep "/usr/lib/debug/")) +filelist=($(printf "%s\n" "${filelist[@]}" | grep -v "/usr/lib/debug/")) + solist=($(printf "%s\n" "${filelist[@]}" | grep "\\.so" | grep -v "^/lib/ld.so" | \ tr '\n' '\0' | xargs -0 -r file -L | grep "ELF.*shared object" | \ cut -d: -f1)) @@ -71,6 +74,11 @@ done | sort -u printf "%s\n" "${firmwarelist[@]}" | /usr/lib/rpm/firmware.prov | sort -u # +# --- debuginfo files +[ -x /usr/lib/rpm/debuginfo.prov -a -n "$debuginfolist" ] && + printf "%s\n" "${debuginfolist[@]}" | /usr/lib/rpm/debuginfo.prov | sort -u + +# # --- Mono exes/dlls : ${MONO_PREFIX=/usr} if [ -x $MONO_PREFIX/bin/mono -a -n "$monolist" ] ; then --- ./macros.in.orig 2011-05-11 15:59:08.000000000 +0000 +++ ./macros.in 2011-05-11 15:59:31.000000000 +0000 @@ -182,7 +182,8 @@ %package debuginfo\ Summary: Debug information for package %{name}\ Group: Development/Debug\ -AutoReqProv: 0\ +AutoReq: 0\ +AutoProv: 1\ #Requires: %{?!debug_package_requires:%{name} = %{version}-%{release}}%{?debug_package_requires}\ %description debuginfo\ This package provides debug information for package %{name}.\ --- ./scripts/debuginfo.prov.orig 2011-05-11 15:59:31.000000000 +0000 +++ ./scripts/debuginfo.prov 2011-05-11 15:59:31.000000000 +0000 @@ -0,0 +1,12 @@ +#!/bin/sh + +while read instfile ; do + case $instfile in + */usr/lib/debug/.build-id/*.debug) + if [ -f "$instfile" ] ; then + BUILDID=$(echo $instfile | sed -ne 's|.*/usr/lib/debug/.build-id/\([0-9a-f]*\)/\([0-9a-f]*\)\.debug|\1\2|p') + echo "debuginfo(build-id) = $BUILDID" + fi + ;; + esac +done