makepkg: use the declare
builtin when backing up variables to eval
Rather than manually crafting foo_backup in a loop and eval'ing them with a complicated escape pattern, store every splitpkg_overrides element into a single variable via the eval-friendly `declare` builtin. An alternative to eval would be using `printf -v` but this does not work for arrays. This has the additional benefit of reducing the number of variables/arrays floating around in the environment. Signed-off-by: Eli Schwartz <eschwartz@archlinux.org> Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
parent
f054351e52
commit
9e52a36794
1 changed files with 4 additions and 16 deletions
|
@ -1115,34 +1115,22 @@ 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
|
||||||
local indirect="${var}_backup"
|
declare -p $var 2>/dev/null || printf '%s\n' "unset $var"
|
||||||
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"
|
||||||
backup_package_variables
|
restore_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
|
||||||
restore_package_variables
|
eval "$restore_package_variables"
|
||||||
done
|
done
|
||||||
pkgname=("${pkgname_backup[@]}")
|
pkgname=("${pkgname_backup[@]}")
|
||||||
create_debug_package
|
create_debug_package
|
||||||
|
|
Loading…
Add table
Reference in a new issue