Previously, makechrootpkg hardcoded ~/.gnupg. Therefore, if a user
uses a custom GPG home directory, the siganture checking would fail.
Now makechrootpkg uses $GNUPGHOME, with a fallback to ~/.gnupg.

Signed-off-by: Emiel Wiedijk <m...@aimileus.nl>
---
 makechrootpkg.in | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/makechrootpkg.in b/makechrootpkg.in
index afcd121..5a79dc0 100644
--- a/makechrootpkg.in
+++ b/makechrootpkg.in
@@ -182,9 +182,10 @@ prepare_chroot() {
 
        $install -d 
"$copydir"/{build,build/.gnupg,startdir,{pkg,srcpkg,src,log}dest}
 
-       for x in .gnupg/pubring.{kbx,gpg}; do
-               [[ -r $USER_HOME/$x ]] || continue
-               $install -m 644 "$USER_HOME/$x" "$copydir/build/$x"
+       for x in pubring.{kbx,gpg}; do
+               local pubring="${GNUPGHOME:-$USER_HOME/.gnupg}/$x"
+               [[ -r "$pubring" ]] || continue
+               $install -m 644 "$pubring" "$copydir/build/.gnupg/$x"
        done
 
        sed -e '/^MAKEFLAGS=/d' -e '/^PACKAGER=/d' -i 
"$copydir/etc/makepkg.conf"
@@ -252,7 +253,8 @@ download_sources() {
        chmod 1777 "$builddir"
 
        # Ensure sources are downloaded
-       sudo -u "$makepkg_user" env SRCDEST="$SRCDEST" BUILDDIR="$builddir" \
+       sudo -u "$makepkg_user" --preserve-env=GNUPGHOME \
+               env SRCDEST="$SRCDEST" BUILDDIR="$builddir" \
                makepkg --config="$copydir/etc/makepkg.conf" --verifysource -o 
||
                die "Could not download sources."
 
@@ -341,7 +343,7 @@ main() {
        [[ -n $makepkg_user && -z $(id -u "$makepkg_user") ]] && die 'Invalid 
makepkg user.'
        makepkg_user=${makepkg_user:-${SUDO_USER:-$USER}}
 
-       check_root SOURCE_DATE_EPOCH
+       check_root SOURCE_DATE_EPOCH,GNUPGHOME
 
        # Canonicalize chrootdir, getting rid of trailing /
        chrootdir=$(readlink -e "$passeddir")
-- 
2.16.2

Reply via email to