From 18aec11b11db463f37faf3ef13f0425483a09ac6 Mon Sep 17 00:00:00 2001 From: Max Howell Date: Sat, 25 Nov 2023 08:05:20 -0500 Subject: [PATCH] make gpg relocatable without hacks --- projects/gnupg.org/gpg | 18 ------------------ projects/gnupg.org/gpg.conf | 2 ++ projects/gnupg.org/gpgconf.ctl | 1 + projects/gnupg.org/package.yml | 31 ++++++++++++++++++------------- 4 files changed, 21 insertions(+), 31 deletions(-) delete mode 100755 projects/gnupg.org/gpg create mode 100644 projects/gnupg.org/gpg.conf create mode 100644 projects/gnupg.org/gpgconf.ctl diff --git a/projects/gnupg.org/gpg b/projects/gnupg.org/gpg deleted file mode 100755 index aab2641e..00000000 --- a/projects/gnupg.org/gpg +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh - -d="$(dirname "$0")" -etc="$d/../etc/gnupg" - -export GNUPGHOME="${GNUPGHOME:-"$etc"}" - -if [ ! -f "$etc/gpg.conf" ]; then - mkdir -p "$etc" - chmod 700 "$etc" - cat << EOF > "$etc"/gpg.conf -use-agent -pinentry-mode loopback -agent-program $d/gpg-agent -EOF -fi - -exec "$d"/gpg-exec "$@" diff --git a/projects/gnupg.org/gpg.conf b/projects/gnupg.org/gpg.conf new file mode 100644 index 00000000..740fb392 --- /dev/null +++ b/projects/gnupg.org/gpg.conf @@ -0,0 +1,2 @@ +use-agent +pinentry-mode loopback diff --git a/projects/gnupg.org/gpgconf.ctl b/projects/gnupg.org/gpgconf.ctl new file mode 100644 index 00000000..b465f270 --- /dev/null +++ b/projects/gnupg.org/gpgconf.ctl @@ -0,0 +1 @@ +rootdir = $GNUPG_BUILD_ROOT/ diff --git a/projects/gnupg.org/package.yml b/projects/gnupg.org/package.yml index 6412800a..56f0921b 100644 --- a/projects/gnupg.org/package.yml +++ b/projects/gnupg.org/package.yml @@ -9,8 +9,16 @@ versions: - /gnupg-/ - /.tar.bz2/ +runtime: + env: + # allows us to be relocatable provided `gpgconf.ctl` exists alongside + # the `gpgconf` binary. NOTE causes warning messages on Darwin: + # error reading symlink '/proc/curproc/file': No such file or directory + # which seemingly cannot be avoided without a patch + GNUPG_BUILD_ROOT: '{{prefix}}' + dependencies: - zlib.net: '*' + zlib.net: ^1.1 sourceware.org/bzip2: '*' gnupg.org/npth: '*' gnupg.org/libgpg-error: '*' @@ -22,13 +30,8 @@ dependencies: openldap.org: ^2 gnu.org/readline: ^8 sqlite.org: ^3 - thrysoee.dk/editline: ^3 #NOTE added by jacob to try and fix a bug - darwin: - gnu.org/gettext: ^0.22.4 - -runtime: - env: - GNUPGHOME: '{{prefix}}/etc/gnupg' + darwin: # nobody added a comment to say why this is Darwin only + gnu.org/gettext: ^0.21 build: freedesktop.org/pkg-config: '*' @@ -38,6 +41,10 @@ build: - ./configure $ARGS - make --jobs {{ hw.concurrency }} - make --jobs {{ hw.concurrency }} install + + # this makes the lookup machinery relocatable, see above + - cp props/gpgconf.ctl {{prefix}}/bin + - run: | sed -i.bak "s|{{prefix}}|\$(dirname \$0)/..|g" gpg-wks-client rm gpg-wks-client.bak @@ -46,11 +53,9 @@ build: mkdir -p var/run etc/gnupg chmod 700 etc/gnupg working-directory: '{{prefix}}' - - run: | - mv ./gpg ./gpg-exec - working-directory: '{{prefix}}/bin' - - run: install gpg {{prefix}}/bin/ - working-directory: props + + # nobody added a comment explaining why this conf is required + - run: cp props/gpg.conf {{prefix}}/etc/gnupg/gpg.conf env: ARGS: - --prefix={{prefix}}