Revert "makepkg: use the declare builtin when backing up variables to eval"

This reverts commit 9e52a36794.

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>
This commit is contained in:
Allan McRae 2018-06-19 21:08:28 +10:00
parent 4fe9adf418
commit 9a8c7154b1

View file

@ -1125,22 +1125,34 @@ check_build_status() {
backup_package_variables() { backup_package_variables() {
local var local var
for var in ${splitpkg_overrides[@]}; do 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 done
} }
run_split_packaging() { run_split_packaging() {
local pkgname_backup=("${pkgname[@]}") local pkgname_backup=("${pkgname[@]}")
local restore_package_variables
for pkgname in ${pkgname_backup[@]}; do for pkgname in ${pkgname_backup[@]}; do
pkgdir="$pkgdirbase/$pkgname" pkgdir="$pkgdirbase/$pkgname"
mkdir "$pkgdir" mkdir "$pkgdir"
restore_package_variables="$(backup_package_variables)" backup_package_variables
run_package $pkgname run_package $pkgname
tidy_install tidy_install
lint_package || exit $E_PACKAGE_FAILED lint_package || exit $E_PACKAGE_FAILED
create_package create_package
eval "$restore_package_variables" restore_package_variables
done done
pkgname=("${pkgname_backup[@]}") pkgname=("${pkgname_backup[@]}")
create_debug_package create_debug_package