a76d6c30a2
Copy from Base:System/rpm based on submit request 18841 from user mlschroe OBS-URL: https://build.opensuse.org/request/show/18841 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/rpm?expand=0&rev=84
76 lines
2.4 KiB
Diff
76 lines
2.4 KiB
Diff
From: Jan Blunck <jblunck@suse.de>
|
|
Subject: Let debuginfo packages provide the build-id
|
|
|
|
This patch let 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"
|
|
|
|
Signed-off-by: Jan Blunck <jblunck@suse.de>
|
|
---
|
|
autodeps/linux.prov | 8 ++++++++
|
|
macros.in | 3 ++-
|
|
scripts/debuginfo.prov | 12 ++++++++++++
|
|
3 files changed, 22 insertions(+), 1 deletion(-)
|
|
|
|
Index: autodeps/linux.prov
|
|
===================================================================
|
|
--- autodeps/linux.prov.orig
|
|
+++ autodeps/linux.prov
|
|
@@ -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
|
|
Index: macros.in
|
|
===================================================================
|
|
--- macros.in.orig
|
|
+++ macros.in
|
|
@@ -179,7 +179,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}.\
|
|
Index: scripts/debuginfo.prov
|
|
===================================================================
|
|
--- /dev/null
|
|
+++ scripts/debuginfo.prov
|
|
@@ -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
|