Blame SPECS/mingw-find-debuginfo.sh

Packit 40bd91
#!/bin/sh
Packit 40bd91
# mingw-find-debuginfo.sh - automagically generate debug info and file list
Packit 40bd91
# for inclusion in an rpm spec file for mingw-* packages.
Packit 40bd91
Packit 40bd91
if [ "$#" -lt 2 ] ; then
Packit 40bd91
    echo "Usage: $0 <BUILDDIR> [TARGET]..."
Packit 40bd91
    exit 1
Packit 40bd91
fi
Packit 40bd91
Packit 40bd91
BUILDDIR=$1
Packit 40bd91
shift
Packit 40bd91
Packit 40bd91
for f in `find $RPM_BUILD_ROOT -type f -name "*.exe" -or -name "*.dll" -or -name "*.pyd"`
Packit 40bd91
do
Packit 40bd91
	case $(mingw-objdump -h $f 2>/dev/null | egrep -o '(debug[\.a-z_]*|gnu.version)') in
Packit 40bd91
	    *debuglink*) continue ;;
Packit 40bd91
	    *debug*) ;;
Packit 40bd91
	    *gnu.version*)
Packit 40bd91
		echo "WARNING: "`echo $f | sed -e "s,^$RPM_BUILD_ROOT/*,/,"`" is already stripped!"
Packit 40bd91
		continue
Packit 40bd91
		;;
Packit 40bd91
	    *) continue ;;
Packit 40bd91
	esac
Packit 40bd91
Packit 40bd91
	echo extracting debug info from $f
Packit 40bd91
	mingw-objcopy --only-keep-debug $f $f.debug || :
Packit 40bd91
	pushd `dirname $f`
Packit 40bd91
	keep_symbols=`mktemp`
Packit 40bd91
  mingw-nm $f.debug --format=sysv --defined-only | awk -F \| '{ if ($4 ~ "Function") print $1 }' | sort > "$keep_symbols"
Packit 40bd91
	mingw-objcopy --add-gnu-debuglink=`basename $f.debug` --strip-unneeded `basename $f` --keep-symbols="$keep_symbols" || :
Packit 40bd91
	rm -f "$keep_symbols"
Packit 40bd91
	popd
Packit 40bd91
done
Packit 40bd91
Packit 40bd91
for target in $@; do
Packit 40bd91
	prefix=`rpm --eval "%{${target}_prefix}"`
Packit 40bd91
	if [ ! -d $RPM_BUILD_ROOT$prefix ] ; then
Packit 40bd91
		continue
Packit 40bd91
	fi
Packit 40bd91
	find $RPM_BUILD_ROOT$prefix -type f -name "*.exe.debug" -or -name "*.dll.debug" -or -name "*.pyd.debug" |
Packit 40bd91
		sed -n -e "s#^$RPM_BUILD_ROOT##p" > $BUILDDIR/${target}-debugfiles.list
Packit 40bd91
done