summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorAllan McRae <allan@archlinux.org>2018-06-19 13:08:28 +0200
committerAllan McRae <allan@archlinux.org>2018-07-19 04:23:25 +0200
commit9a8c7154b1b5842a08db27bd3c3a1607fa0c8f0f (patch)
tree3aad3240dee94f4387174755e0a824f70dbf49f8 /scripts
parent4fe9adf418467505884dcc6e9a6ae9239c06c5f8 (diff)
downloadpacman-9a8c7154b1b5842a08db27bd3c3a1607fa0c8f0f.tar.gz
pacman-9a8c7154b1b5842a08db27bd3c3a1607fa0c8f0f.tar.xz
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. Revert back to the known good state. Signed-off-by: Allan McRae <allan@archlinux.org>
Diffstat (limited to 'scripts')
-rw-r--r--scripts/makepkg.sh.in20
1 files 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