From d9bad00f487fddc4d476d05bcafecfdbb67594d1 Mon Sep 17 00:00:00 2001 From: epienbro Date: Mon, 22 Jun 2009 10:18:35 +0000 Subject: [PATCH] - Add script to create -debuginfo subpackages This script was created by Fridrich Strba - All mingw32 packages now need to add these lines to their .spec files: %define __os_install_post %{_mingw32_debug_install_post} %{_mingw32_debug_package} --- macros.mingw32 | 18 ++++++++++++++++++ mingw32-filesystem.spec | 12 ++++++++++-- mingw32-find-debuginfo.sh | 31 +++++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+), 2 deletions(-) create mode 100755 mingw32-find-debuginfo.sh diff --git a/macros.mingw32 b/macros.mingw32 index 6a257fd..27ac79e 100644 --- a/macros.mingw32 +++ b/macros.mingw32 @@ -52,6 +52,24 @@ %_mingw32_findprovides /usr/lib/rpm/mingw32-find-provides.sh %_mingw32_findrequires /usr/lib/rpm/mingw32-find-requires.sh +%_mingw32_finddebuginfo /usr/lib/rpm/mingw32-find-debuginfo.sh + +%_mingw32_debug_install_post \ + /usr/lib/rpm/mingw32-find-debuginfo.sh %{_builddir}/%{?buildsubdir}\ +%{nil} + +# Template for debug sub-package. +%_mingw32_debug_package(n:) \ +%package %{-n:-n %{-n*}-}debuginfo \ +Summary: Debug information for package %{name} \ +Group: Development/debug \ +%description %{-n:-n %{-n*}-}debuginfo \ +This package provides debug information for package %{name}.\ +Debug information is useful when developing applications that use this\ +package or when debugging this package.\ +%files debuginfo -f debugfiles.list\ +%defattr(-,root,root,-)\ +%{nil} %_mingw32_env HOST_CC=gcc; export HOST_CC; \ PKG_CONFIG_LIBDIR="%{_mingw32_libdir}/pkgconfig"; export PKG_CONFIG_LIBDIR; \ diff --git a/mingw32-filesystem.spec b/mingw32-filesystem.spec index d31c8df..49669e8 100644 --- a/mingw32-filesystem.spec +++ b/mingw32-filesystem.spec @@ -1,7 +1,7 @@ %define debug_package %{nil} Name: mingw32-filesystem -Version: 51 +Version: 52 Release: 1%{?dist} Summary: MinGW base filesystem and environment @@ -20,6 +20,7 @@ Source5: mingw32-find-provides.sh Source6: mingw32-scripts.sh Source7: mingw32-rpmlint.config Source8: Toolchain-mingw32.cmake +Source9: mingw32-find-debuginfo.sh Requires: setup Requires: rpm @@ -137,11 +138,11 @@ mkdir -p $RPM_BUILD_ROOT%{_prefix}/i686-pc-mingw32/sys-root/mingw/share/man/man{ mkdir -p $RPM_BUILD_ROOT/usr/lib/rpm install -m 0755 mingw32-find-requires.sh $RPM_BUILD_ROOT/usr/lib/rpm install -m 0755 %{SOURCE5} $RPM_BUILD_ROOT/usr/lib/rpm +install -m 0755 %{SOURCE9} $RPM_BUILD_ROOT/usr/lib/rpm mkdir -p $RPM_BUILD_ROOT%{_datadir}/mingw32 install -m 644 %{SOURCE8} $RPM_BUILD_ROOT%{_datadir}/mingw32 - %clean rm -rf $RPM_BUILD_ROOT @@ -164,6 +165,13 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Mon Jun 22 2009 Erik van Pienbroek - 52-0 +- Add script to create -debuginfo subpackages + This script was created by Fridrich Strba +- All mingw32 packages now need to add these lines to their .spec files: + %%define __os_install_post %%{_mingw32_debug_install_post} + %%{_mingw32_debug_package} + * Thu Jun 4 2009 Adam Goode - 51-1 - Add CMake rules diff --git a/mingw32-find-debuginfo.sh b/mingw32-find-debuginfo.sh new file mode 100755 index 0000000..7758058 --- /dev/null +++ b/mingw32-find-debuginfo.sh @@ -0,0 +1,31 @@ +#!/bin/sh +#mingw32_find-debuginfo.sh - automagically generate debug info and file list +#for inclusion in an rpm spec file for mingw32-* packages. + +if [ -z "$1" ] ; then BUILDDIR="." +else BUILDDIR=$1 +fi + +for f in `find $RPM_BUILD_ROOT -type f -name "*.exe" -or -name "*.dll"` +do + case $(i686-pc-mingw32-objdump -h $f 2>/dev/null | egrep -o '(debug[\.a-z_]*|gnu.version)') in + *debuglink*) continue ;; + *debug*) ;; + *gnu.version*) + echo "WARNING: "`echo $f | sed -e "s,^$RPM_BUILD_ROOT/*,/,"`" is already stripped!" + continue + ;; + *) continue ;; + esac + + echo extracting debug info from $f + i686-pc-mingw32-objcopy --only-keep-debug $f $f.debug || : + pushd `dirname $f` + i686-pc-mingw32-objcopy --add-gnu-debuglink=`basename $f.debug` --strip-unneeded `basename $f` || : + popd +done + +find $RPM_BUILD_ROOT -type f -name "*.exe.debug" -or -name "*.dll.debug" | + sed -n -e "s#^$RPM_BUILD_ROOT##p" > $BUILDDIR/debugfiles.list + +