[pacman-dev] [PATCH 2/2] makepkg: also move restore_envvars handling into libmakepkg

Dave Reisner d at falconindy.com
Tue Apr 16 16:59:40 UTC 2019


On Tue, Apr 16, 2019 at 12:22:38PM -0400, Eli Schwartz wrote:
> Signed-off-by: Eli Schwartz <eschwartz at archlinux.org>
> ---
>  scripts/libmakepkg/util/config.sh.in | 20 ++++++++++++++++++++
>  scripts/makepkg.sh.in                |  6 +-----
>  2 files changed, 21 insertions(+), 5 deletions(-)
> 
> diff --git a/scripts/libmakepkg/util/config.sh.in b/scripts/libmakepkg/util/config.sh.in
> index fdfeef89..2a6a0ae3 100644
> --- a/scripts/libmakepkg/util/config.sh.in
> +++ b/scripts/libmakepkg/util/config.sh.in
> @@ -53,3 +53,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:- at 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
> +			# declare -p does not work inside a function due to being marked as local
> +			[[ -v $var ]] && printf '%s=%s\n' "$var" "${var at Q}"

Shouldn't this be "${!var at Q}"?

> +		done
> +	)
> +
> +	source_makepkg_config "$MAKEPKG_CONF"
> +
> +	eval "$restore_envvars"
> +}
> diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
> index 08ec2a15..7a65d0f2 100644
> --- a/scripts/makepkg.sh.in
> +++ b/scripts/makepkg.sh.in
> @@ -1098,15 +1098,11 @@ 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)
>  
>  # default config is makepkg.conf
>  MAKEPKG_CONF=${MAKEPKG_CONF:-$confdir/makepkg.conf}
>  
> -source_makepkg_config "$MAKEPKG_CONF"
> -
> -eval "$restore_envvars"
> +load_makepkg_config "$MAKEPKG_CONF"
>  
>  # override settings from extra variables on commandline, if any
>  if (( ${#extra_environment[*]} )); then
> -- 
> 2.21.0


More information about the pacman-dev mailing list