113 lines
4.1 KiB
Diff
113 lines
4.1 KiB
Diff
Subject: Split sources for debugging into separate -debugsource package
|
|
|
|
At the moment the -debuginfo package also include the sources where used to
|
|
build the binary. The patches moves them into a separate package -debugsource.
|
|
|
|
---
|
|
macros.in | 12 ++++++++++++
|
|
scripts/find-debuginfo.sh | 43 ++++++++++++++++++++++++++-----------------
|
|
2 files changed, 38 insertions(+), 17 deletions(-)
|
|
|
|
Index: b/macros.in
|
|
===================================================================
|
|
--- macros.in
|
|
+++ macros.in
|
|
@@ -179,6 +179,18 @@ Debug information is useful when develop
|
|
package or when debugging this package.\
|
|
%files debuginfo -f debugfiles.list\
|
|
%defattr(-,root,root)\
|
|
+\
|
|
+%package debugsource\
|
|
+Summary: Debug sources for package %{name}\
|
|
+Group: Development/Debug\
|
|
+AutoReqProv: 0\
|
|
+Requires: %{name}-debuginfo = %{version}-%{release}\
|
|
+%description debugsource\
|
|
+This package provides debug sources for package %{name}.\
|
|
+Debug sources are useful when developing applications that use this\
|
|
+package or when debugging this package.\
|
|
+%files debugsource -f debugsources.list\
|
|
+%defattr(-,root,root)\
|
|
%{nil}
|
|
|
|
%_defaultdocdir %{_usr}/doc/packages
|
|
Index: b/scripts/find-debuginfo.sh
|
|
===================================================================
|
|
--- scripts/find-debuginfo.sh
|
|
+++ scripts/find-debuginfo.sh
|
|
@@ -7,14 +7,16 @@ else BUILDDIR=$1
|
|
fi
|
|
|
|
LISTFILE=$BUILDDIR/debugfiles.list
|
|
-SOURCEFILE=$BUILDDIR/debugsources.list
|
|
+LISTSOURCE=$BUILDDIR/debugsources.list
|
|
|
|
debugdir="${RPM_BUILD_ROOT}/usr/lib/debug"
|
|
+debugsrcdir="${RPM_BUILD_ROOT}/usr/src/debug"
|
|
|
|
-echo -n > $SOURCEFILE
|
|
+[ -d "$TMPDIR" ] || TMPDIR="/tmp"
|
|
+SOURCES_TMP=`mktemp $TMPDIR/rpmXXXXXX`
|
|
|
|
-# Strip ELF binaries
|
|
-for f in `find $RPM_BUILD_ROOT ! -path "${debugdir}/*.debug" -type f \( -perm +111 -or -name "*.so*" -or -name "*.ko" \) `
|
|
+# Strip ELF binaries (and never strip static libraries here)
|
|
+for f in `find $RPM_BUILD_ROOT ! -path "${debugdir}/*.debug" -type f \( -perm +111 -or -name "*.so*" -or -name "*.ko" \) ! -name "*.a" `
|
|
do
|
|
case $(objdump -h $f 2>/dev/null | egrep -o '(debug[\.a-z_]*|gnu.version)') in
|
|
*debuglink*) continue ;;
|
|
@@ -36,7 +38,8 @@ do
|
|
echo extracting debug info from $f
|
|
mode=$(stat -c %a $f)
|
|
chmod +w $f
|
|
- /usr/lib/rpm/debugedit -b "$RPM_BUILD_DIR" -d /usr/src/debug -l "$SOURCEFILE" "$f"
|
|
+ /usr/lib/rpm/debugedit -b "$RPM_BUILD_DIR" -d $(echo ${debugsrcdir} | \
|
|
+ sed -n -e "s#^$RPM_BUILD_ROOT##p") -l "$SOURCES_TMP" "$f"
|
|
|
|
# A binary already copied into /usr/lib/debug doesn't get stripped,
|
|
# just has its file names collected and adjusted.
|
|
@@ -75,12 +78,25 @@ done
|
|
# mv "$f" "${debugdn}"
|
|
#done
|
|
|
|
+# fixup paths, just in case ?!
|
|
+find ${debugdir} -type d -print0 | xargs -0 -r chmod 0755
|
|
+find ${debugdir} -type f -print0 | xargs -0 -r chmod 0644
|
|
+
|
|
+find ${debugdir} -mindepth 1 -maxdepth 1 2>/dev/null | \
|
|
+ sed -n -e "s#^$RPM_BUILD_ROOT##p" > $LISTFILE
|
|
|
|
-mkdir -p ${RPM_BUILD_ROOT}/usr/src/debug
|
|
-(cd $RPM_BUILD_DIR; LANG=C sort -z -u | cpio -pd0m ${RPM_BUILD_ROOT}/usr/src/debug) < $SOURCEFILE
|
|
+
|
|
+if [ -s "$SOURCES_TMP" ] ; then
|
|
+ # strip GCC built-in code from sources list
|
|
+ (cd $RPM_BUILD_DIR && LANG=C sort -z -u | grep -z -v "<built-in>" | \
|
|
+ cpio -pd0m ${debugsrcdir} ) < $SOURCES_TMP
|
|
+ # stupid cpio creates new directories in mode 0700, fixup
|
|
+ find ${debugsrcdir} -type d -print0 | xargs -0 -r chmod 0755
|
|
+ find ${debugsrcdir} -type f -print0 | xargs -0 -r chmod 0644
|
|
+fi
|
|
|
|
# trying to replace dangling and/or absolute symlink
|
|
-DBASE=${RPM_BUILD_ROOT}/usr/src/debug
|
|
+DBASE=${debugsrcdir}
|
|
for link in `find $DBASE -type l -printf "%P\n"` ; do
|
|
link_file=`readlink $RPM_BUILD_DIR/$link`
|
|
case $link_file in
|
|
@@ -93,12 +109,5 @@ for link in `find $DBASE -type l -printf
|
|
fi
|
|
done
|
|
|
|
-{
|
|
- test -d ${RPM_BUILD_ROOT}/usr/lib/debug && echo /usr/lib/debug
|
|
- echo /usr/src/debug
|
|
-} > $LISTFILE
|
|
-
|
|
-for p in $(<$LISTFILE); do
|
|
- find $RPM_BUILD_ROOT/$p -type f -print0 | xargs -0 -r chmod 0644
|
|
- find $RPM_BUILD_ROOT/$p -type d -print0 | xargs -0 -r chmod 0755
|
|
-done
|
|
+find ${debugsrcdir} -mindepth 1 -maxdepth 1 2>/dev/null | \
|
|
+ sed -n -e "s#^$RPM_BUILD_ROOT##p" > $LISTSOURCE
|