blob: d3d96b87df209f94c64c2864db32d540374065eb (
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
|
From 10ca4f48311370cdd580f66096d5e94858fde467 Mon Sep 17 00:00:00 2001
From: Allan McRae <allan@archlinux.org>
Date: Tue, 19 Jun 2018 21:08:28 +1000
Subject: [PATCH] Revert "makepkg: use the `declare` builtin when backing up
variables to eval"
This reverts commit 9e52a36794552b77ecf26f7f34b226d096978f1e.
The change to use declare for the split package metadata backup/restore
resulted in variables being declared at a local scope. When these variables
were unset (mostly noticed with debug packaging) this left the variable at
global scope defined. The decided fix for this requires the use of
bash-4.2 features, which is greater than our current minimum version and so
is not suitable for a maint release. Revert the change in the meantime.
Signed-off-by: Allan McRae <allan@archlinux.org>
---
scripts/makepkg.sh.in | 20 ++++++++++++++++----
1 file changed, 16 insertions(+), 4 deletions(-)
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index 32423262..d35dd62d 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -1125,22 +1125,34 @@ check_build_status() {
backup_package_variables() {
local var
for var in ${splitpkg_overrides[@]}; do
- declare -p $var 2>/dev/null || printf '%s\n' "unset $var"
+ local indirect="${var}_backup"
+ eval "${indirect}=(\"\${$var[@]}\")"
+ done
+}
+
+restore_package_variables() {
+ local var
+ for var in ${splitpkg_overrides[@]}; do
+ local indirect="${var}_backup"
+ if [[ -n ${!indirect} ]]; then
+ eval "${var}=(\"\${$indirect[@]}\")"
+ else
+ unset ${var}
+ fi
done
}
run_split_packaging() {
local pkgname_backup=("${pkgname[@]}")
- local restore_package_variables
for pkgname in ${pkgname_backup[@]}; do
pkgdir="$pkgdirbase/$pkgname"
mkdir "$pkgdir"
- restore_package_variables="$(backup_package_variables)"
+ backup_package_variables
run_package $pkgname
tidy_install
lint_package || exit $E_PACKAGE_FAILED
create_package
- eval "$restore_package_variables"
+ restore_package_variables
done
pkgname=("${pkgname_backup[@]}")
create_debug_package
--
2.17.1
|