abuild: default_dbg: eliminate side effects

- do not overwrite variables

srcdir is very important for abuild operation

- quoted various paths
- use a sub-shell to contain directory changing

Resolves alpinelinux/abuild#58
This commit is contained in:
tcely 2019-04-29 16:45:23 -04:00 committed by Natanael Copa
parent dc41c1fc52
commit 5b163c2d58

View File

@ -1676,25 +1676,26 @@ doc() {
# predefined splitfunc dbg # predefined splitfunc dbg
default_dbg() { default_dbg() {
local f local ddbg_binfiles f ddbg_srcdir ddbg_srcfile ddbg_dstdir ddbg_dstfile
pkgdesc="$pkgdesc (debug symbols)" pkgdesc="$pkgdesc (debug symbols)"
binfiles=$(scanelf -R "$pkgdir" | grep ET_DYN | sed "s:$pkgdir\/::g" | sed "s:ET_DYN ::g") ddbg_binfiles=$(scanelf -R "$pkgdir" | grep ET_DYN | sed "s:$pkgdir\/::g" | sed "s:ET_DYN ::g")
for f in $binfiles; do for f in $ddbg_binfiles; do
srcdir=$(dirname $pkgdir/$f) ddbg_srcdir=$(dirname "$pkgdir/$f")
srcfile=$(basename $pkgdir/$f) ddbg_srcfile=$(basename "$pkgdir/$f")
dstdir=$(dirname $subpkgdir/usr/lib/debug/$f.debug) ddbg_dstdir=$(dirname "$subpkgdir/usr/lib/debug/$f.debug")
dstfile=$(basename $subpkgdir/usr/lib/debug/$f.debug) ddbg_dstfile=$(basename "$subpkgdir/usr/lib/debug/$f.debug")
if [ ! -d $dstdir ] ; then [ -d "$ddbg_dstdir" ] || mkdir -p "$ddbg_dstdir"
mkdir -p $dstdir
fi (
cd $srcdir cd "$ddbg_srcdir"
local XATTR=$(getfattr --match="" --dump "${srcfile}") XATTR=$(getfattr --match="" --dump "${ddbg_srcfile}")
${CROSS_COMPILE}objcopy --only-keep-debug $srcfile $dstfile ${CROSS_COMPILE}objcopy --only-keep-debug "$ddbg_srcfile" "$ddbg_dstfile"
${CROSS_COMPILE}objcopy --add-gnu-debuglink=$dstfile $srcdir/$srcfile ${CROSS_COMPILE}objcopy --add-gnu-debuglink="$ddbg_dstfile" "$ddbg_srcdir/$ddbg_srcfile"
mv $dstfile $dstdir mv "$ddbg_dstfile" "$ddbg_dstdir"
${CROSS_COMPILE}strip $srcfile ${CROSS_COMPILE}strip "$ddbg_srcfile"
[ -n "$XATTR" ] && { echo "$XATTR" | setfattr --restore=-; } [ -n "$XATTR" ] && { echo "$XATTR" | setfattr --restore=-; }
)
done done
return 0 return 0
} }