summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Schwartz <eschwartz@archlinux.org>2019-05-22 16:44:27 +0200
committerAllan McRae <allan@archlinux.org>2019-05-28 04:46:44 +0200
commit27e80ca7f61d0eb9861d36c24520a3e081bcb2ec (patch)
treebf5f5ebe3a4c84ff5ef13e165b44737b3e6558b5
parenta00615bfdad628299352b94e0f44d211a758fd17 (diff)
downloadpacman-27e80ca7f61d0eb9861d36c24520a3e081bcb2ec.tar.gz
pacman-27e80ca7f61d0eb9861d36c24520a3e081bcb2ec.tar.xz
makepkg: also move restore_envvars handling into libmakepkg
Signed-off-by: Eli Schwartz <eschwartz@archlinux.org> Signed-off-by: Allan McRae <allan@archlinux.org>
-rw-r--r--scripts/libmakepkg/util/config.sh.in20
-rw-r--r--scripts/makepkg.sh.in7
2 files changed, 21 insertions, 6 deletions
diff --git a/scripts/libmakepkg/util/config.sh.in b/scripts/libmakepkg/util/config.sh.in
index 9201bc01..5e3a9b6a 100644
--- a/scripts/libmakepkg/util/config.sh.in
+++ b/scripts/libmakepkg/util/config.sh.in
@@ -54,3 +54,23 @@ source_makepkg_config() {
fi
fi
}
+
+# load makepkg.conf by sourcing the configuration files, and preserving
+# existing environment settings
+load_makepkg_config() {
+ # $1: override system config file
+
+ local MAKEPKG_CONF=${1:-${MAKEPKG_CONF:-@sysconfdir@/makepkg.conf}}
+
+ # preserve environment variables to override makepkg.conf
+ local restore_envvars=$(
+ for var in PKGDEST SRCDEST SRCPKGDEST LOGDEST BUILDDIR PKGEXT SRCEXT GPGKEY PACKAGER CARCH; do
+ # the output of 'declare -p' results in locally scoped values when used within a function
+ [[ -v $var ]] && printf '%s=%s\n' "$var" "${!var@Q}"
+ done
+ )
+
+ source_makepkg_config "$MAKEPKG_CONF"
+
+ eval "$restore_envvars"
+}
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index f5285a0d..aa03e9d9 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -1100,12 +1100,7 @@ done
trap 'trap_exit INT "$(gettext "Aborted by user! Exiting...")"' INT
trap 'trap_exit USR1 "$(gettext "An unknown error has occurred. Exiting...")"' ERR
-# preserve environment variables to override makepkg.conf
-restore_envvars=$(declare -p PKGDEST SRCDEST SRCPKGDEST LOGDEST BUILDDIR PKGEXT SRCEXT GPGKEY PACKAGER CARCH 2>/dev/null || true)
-
-source_makepkg_config
-
-eval "$restore_envvars"
+load_makepkg_config
# override settings from extra variables on commandline, if any
if (( ${#extra_environment[*]} )); then