summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortcely <tcely@users.noreply.github.com>2019-04-29 16:45:23 -0400
committerNatanael Copa <ncopa@alpinelinux.org>2019-04-29 20:52:23 +0000
commit5b163c2d58c7a135fd6ff6dc31995252f1c139d2 (patch)
tree17c0e7a828c29e0d02e791b02eab00ffae556bcb
parentdc41c1fc52c5bf6f7cb330d6de52c13e3e545cc2 (diff)
downloadabuild-5b163c2d58c7a135fd6ff6dc31995252f1c139d2.tar.bz2
abuild-5b163c2d58c7a135fd6ff6dc31995252f1c139d2.tar.xz
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
-rw-r--r--abuild.in35
1 files changed, 18 insertions, 17 deletions
diff --git a/abuild.in b/abuild.in
index d0ae691..7acc422 100644
--- a/abuild.in
+++ b/abuild.in
@@ -1676,25 +1676,26 @@ doc() {
# predefined splitfunc dbg
default_dbg() {
- local f
+ local ddbg_binfiles f ddbg_srcdir ddbg_srcfile ddbg_dstdir ddbg_dstfile
pkgdesc="$pkgdesc (debug symbols)"
- binfiles=$(scanelf -R "$pkgdir" | grep ET_DYN | sed "s:$pkgdir\/::g" | sed "s:ET_DYN ::g")
- for f in $binfiles; do
- srcdir=$(dirname $pkgdir/$f)
- srcfile=$(basename $pkgdir/$f)
- dstdir=$(dirname $subpkgdir/usr/lib/debug/$f.debug)
- dstfile=$(basename $subpkgdir/usr/lib/debug/$f.debug)
- if [ ! -d $dstdir ] ; then
- mkdir -p $dstdir
- fi
- cd $srcdir
- local XATTR=$(getfattr --match="" --dump "${srcfile}")
- ${CROSS_COMPILE}objcopy --only-keep-debug $srcfile $dstfile
- ${CROSS_COMPILE}objcopy --add-gnu-debuglink=$dstfile $srcdir/$srcfile
- mv $dstfile $dstdir
- ${CROSS_COMPILE}strip $srcfile
- [ -n "$XATTR" ] && { echo "$XATTR" | setfattr --restore=-; }
+ ddbg_binfiles=$(scanelf -R "$pkgdir" | grep ET_DYN | sed "s:$pkgdir\/::g" | sed "s:ET_DYN ::g")
+ for f in $ddbg_binfiles; do
+ ddbg_srcdir=$(dirname "$pkgdir/$f")
+ ddbg_srcfile=$(basename "$pkgdir/$f")
+ ddbg_dstdir=$(dirname "$subpkgdir/usr/lib/debug/$f.debug")
+ ddbg_dstfile=$(basename "$subpkgdir/usr/lib/debug/$f.debug")
+ [ -d "$ddbg_dstdir" ] || mkdir -p "$ddbg_dstdir"
+
+ (
+ cd "$ddbg_srcdir"
+ XATTR=$(getfattr --match="" --dump "${ddbg_srcfile}")
+ ${CROSS_COMPILE}objcopy --only-keep-debug "$ddbg_srcfile" "$ddbg_dstfile"
+ ${CROSS_COMPILE}objcopy --add-gnu-debuglink="$ddbg_dstfile" "$ddbg_srcdir/$ddbg_srcfile"
+ mv "$ddbg_dstfile" "$ddbg_dstdir"
+ ${CROSS_COMPILE}strip "$ddbg_srcfile"
+ [ -n "$XATTR" ] && { echo "$XATTR" | setfattr --restore=-; }
+ )
done
return 0
}