rpm/buildidprov.diff

63 lines
2.2 KiB
Diff

From: Jan Blunck <jblunck@suse.de>
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