PKGDEST and other variables can be set in /etc/makepkg.conf and local
correspondents in $HOME, with the file in /etc taking precedence.
Specifying a default makepkg.conf on the command line (similar to
makepkg) allows to change the directory where build products are moved
(move_products), without the need to modify the system configuration
in /etc/makepkg.conf or rely on sudoers policy.

Fixes FS#44827
---
 makechrootpkg.in | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/makechrootpkg.in b/makechrootpkg.in
index cd9efce..efb3cdd 100644
--- a/makechrootpkg.in
+++ b/makechrootpkg.in
@@ -21,6 +21,7 @@ run_namcap=false
 temp_chroot=false
 chrootdir=
 passeddir=
+makepkg_conf=/etc/makepkg.conf
 declare -a install_pkgs
 declare -i ret=0
 
@@ -63,6 +64,7 @@ usage() {
        echo "           Default: $copy"
        echo '-n         Run namcap on the package'
        echo '-T         Build in a temporary directory'
+       echo '-M         Load variables from an alternate config file'
        exit 1
 }
 
@@ -252,7 +254,7 @@ move_products() {
 
 orig_argv=("$@")
 
-while getopts 'hcur:I:l:nTD:d:' arg; do
+while getopts 'hcur:I:l:nTD:d:M:' arg; do
        case "$arg" in
                c) clean_first=true ;;
                D) bindmounts_ro+=(--bind-ro="$OPTARG") ;;
@@ -263,11 +265,13 @@ while getopts 'hcur:I:l:nTD:d:' arg; do
                l) copy="$OPTARG" ;;
                n) run_namcap=true; makepkg_args+=(-i) ;;
                T) temp_chroot=true; copy+="-$$" ;;
+               M) makepkg_conf="$OPTARG" ;;
                h|*) usage ;;
        esac
 done
 
 [[ ! -f PKGBUILD && -z "${install_pkgs[*]}" ]] && die 'This must be run in a 
directory containing a PKGBUILD.'
+[[ ! -f $makepkg_conf ]] && die "$makepkg_conf does not exist."
 
 check_root "$0" "${orig_argv[@]}"
 
@@ -307,7 +311,7 @@ fi
 umask 0022
 
 load_vars "${XDG_CONFIG_HOME:-$USER_HOME/.config}/pacman/makepkg.conf" || 
load_vars "$USER_HOME/.makepkg.conf"
-load_vars /etc/makepkg.conf
+load_vars "$makepkg_conf"
 
 # Use PKGBUILD directory if these don't exist
 [[ -d $PKGDEST ]]    || PKGDEST=$PWD
-- 
2.9.0

Reply via email to