aboutsummaryrefslogtreecommitdiffstats
path: root/main/abuild/0001-abuild-default_dbg-eliminate-side-effects.patch
blob: 4c311664c12c12d7eef2ba4cd4702ef4a7d245c2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
From 5b163c2d58c7a135fd6ff6dc31995252f1c139d2 Mon Sep 17 00:00:00 2001
From: tcely <tcely@users.noreply.github.com>
Date: Mon, 29 Apr 2019 16:45:23 -0400
Subject: [PATCH] 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
---
 abuild.in | 35 ++++++++++++++++++-----------------
 1 file 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
 }
-- 
2.21.0