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 <[email protected]>
---
 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

Reply via email to