Commit: e6556a623d11a30a89d92de90504cc7983be0b05
Parent: 67bf0eea050f9a06eb9a22e031c925bbbd3fc31a
Author: Randy Palamar
Date: Thu, 14 May 2026 06:50:45 -0600
app-crypt/gnupg: 2.5.20
Diffstat:
5 files changed, 190 insertions(+), 437 deletions(-)
diff --git a/app-crypt/gnupg/Manifest b/app-crypt/gnupg/Manifest
@@ -1,2 +1,2 @@
-DIST gnupg-2.5.17.tar.bz2 8308629 BLAKE2B e52c4cf6219a8ce877511c2cfb2e32abf9fafc66c280ddd5f37b7dc6abffaeb60a5ebe925332fd00735a81bb8bb9ebeff79d04d112bd52ec00c2e8692cea6eb0 SHA512 8c1fe6afb04034ed1579080cf8d384f5b331ac1bc277f77c8e9103d29971c944fcb4c072586d2c045630ef34483b355a1b35f1785dded6f8d8da1e4760bef308
-DIST gnupg-2.5.17.tar.bz2.sig 119 BLAKE2B b404b6cdff76187c410a7751708e1cbb0ad173658b8c0dde9726063b16c6e9d5c673cb6ae86142e00ca48790dc314968625ec6aa2364ba4a48a3cf0c03e9b06f SHA512 385de45addf2c857ebf054bcc85d03d4fc0ccd70149138baac5cfcefccd7c0b0e48219dd9da757f36b1c6411816dcb43213920442796da03fb38ee59709877a4
+DIST gnupg-2.5.20.tar.bz2 8327674 BLAKE2B 5a2890203cf4ac52d86897ffb104896c5cbc8ab6f088336f423cb539ae0d917e6df0dcb99b8d51d2d6cdc4068e5570e63982e78c14631a332b4fa87ba0ae16bb SHA512 73e5f3020271069421c220871caffcb6ec05c52a8e12d8dcbd214ce2b14a2b22ce0030d9e1fedf25c60ec1077a33630b0a6bd1cc1043fbbaf7083b998113f90f
+DIST gnupg-2.5.20.tar.bz2.sig 119 BLAKE2B fc54197b59aad9cb26cfcef062a25f882cf26e5cf8ca0c9d3672d4501cbe453b3334225291b3d4fbc4a49c7bb52102963a5386e9b59b4ec10a0385fe8be004b6 SHA512 0a54e9df9f1d6aa6d2f5fb841a3ae36d7530d3ab34bc7635892f58020e73e950a420120430206860e5eb4a7dc7b668f03e31eb42e381b25c4bca07f3e5f2f95b
diff --git a/app-crypt/gnupg/files/0001-Fix-stub-functions-to-avoid-LTO-linking-bugs.patch b/app-crypt/gnupg/files/0001-Fix-stub-functions-to-avoid-LTO-linking-bugs.patch
@@ -1,200 +0,0 @@
-https://bugs.gentoo.org/854222
-
-From 81760cc931d69f37cf2a8ad54616a1af590fd2cf Mon Sep 17 00:00:00 2001
-Message-ID: <81760cc931d69f37cf2a8ad54616a1af590fd2cf.1770174575.git.sam@gentoo.org>
-From: Werner Koch <wk@gnupg.org>
-Date: Wed, 28 Jan 2026 13:45:00 +0100
-Subject: [PATCH GnuPG] Fix stub functions to avoid LTO linking bugs.
-
---
----
- g10/gpgv.c | 42 ++++++++++++++++++++++++++++--------------
- g10/test-stubs.c | 36 +++++++++++++++++++++++-------------
- 2 files changed, 51 insertions(+), 27 deletions(-)
-
-diff --git a/g10/gpgv.c b/g10/gpgv.c
-index b65dfa66b..23704e21c 100644
---- a/g10/gpgv.c
-+++ b/g10/gpgv.c
-@@ -462,10 +462,13 @@ keyserver_any_configured (ctrl_t ctrl)
- }
-
- int
--keyserver_import_keyid (u32 *keyid, void *dummy, unsigned int flags)
-+keyserver_import_keyid (ctrl_t ctrl,
-+ u32 *keyid,struct keyserver_spec *keyserver,
-+ unsigned int flags)
- {
-+ (void)ctrl;
- (void)keyid;
-- (void)dummy;
-+ (void)keyserver;
- (void)flags;
- return -1;
- }
-@@ -493,9 +496,14 @@ keyserver_import_fpr_ntds (ctrl_t ctrl,
- }
-
- int
--keyserver_import_cert (const char *name)
-+keyserver_import_cert (ctrl_t ctrl, const char *name, int dane_mode,
-+ unsigned char **fpr,size_t *fpr_len)
- {
-+ (void)ctrl;
- (void)name;
-+ (void)dane_mode;
-+ (void)fpr;
-+ (void)fpr_len;
- return -1;
- }
-
-@@ -511,11 +519,17 @@ keyserver_import_wkd (ctrl_t ctrl, const char *name, unsigned int flags,
- return GPG_ERR_BUG;
- }
-
--int
--keyserver_import_mbox (const char *name,struct keyserver_spec *spec)
-+gpg_error_t
-+keyserver_import_mbox (ctrl_t ctrl, const char *mbox,
-+ unsigned char **fpr, size_t *fprlen,
-+ struct keyserver_spec *keyserver, unsigned int flags)
- {
-- (void)name;
-- (void)spec;
-+ (void)ctrl;
-+ (void)mbox;
-+ (void)fpr;
-+ (void)fprlen;
-+ (void)keyserver;
-+ (void)flags;
- return -1;
- }
-
-@@ -647,14 +661,11 @@ parse_preferred_keyserver(PKT_signature *sig)
- return NULL;
- }
-
--struct keyserver_spec *
--parse_keyserver_uri (const char *uri, int require_scheme,
-- const char *configname, unsigned int configlineno)
-+keyserver_spec_t
-+parse_keyserver_uri (const char *string, int require_scheme)
- {
-- (void)uri;
-+ (void)string;
- (void)require_scheme;
-- (void)configname;
-- (void)configlineno;
- return NULL;
- }
-
-@@ -666,11 +677,14 @@ free_keyserver_spec (struct keyserver_spec *keyserver)
-
- /* Stubs to avoid linking to photoid.c */
- void
--show_photos (const struct user_attribute *attrs, int count, PKT_public_key *pk)
-+show_photos (ctrl_t ctrl, const struct user_attribute *attrs, int count,
-+ PKT_public_key *pk, PKT_user_id *uid)
- {
-+ (void)ctrl;
- (void)attrs;
- (void)count;
- (void)pk;
-+ (void)uid;
- }
-
- int
-diff --git a/g10/test-stubs.c b/g10/test-stubs.c
-index 9b41c8929..16d10972d 100644
---- a/g10/test-stubs.c
-+++ b/g10/test-stubs.c
-@@ -193,10 +193,13 @@ keyserver_any_configured (ctrl_t ctrl)
- }
-
- int
--keyserver_import_keyid (u32 *keyid, void *dummy, unsigned int flags)
-+keyserver_import_keyid (ctrl_t ctrl,
-+ u32 *keyid,struct keyserver_spec *keyserver,
-+ unsigned int flags)
- {
-+ (void)ctrl;
- (void)keyid;
-- (void)dummy;
-+ (void)keyserver;
- (void)flags;
- return -1;
- }
-@@ -224,9 +227,14 @@ keyserver_import_fpr_ntds (ctrl_t ctrl,
- }
-
- int
--keyserver_import_cert (const char *name)
-+keyserver_import_cert (ctrl_t ctrl, const char *name, int dane_mode,
-+ unsigned char **fpr,size_t *fpr_len)
- {
-+ (void)ctrl;
- (void)name;
-+ (void)dane_mode;
-+ (void)fpr;
-+ (void)fpr_len;
- return -1;
- }
-
-@@ -242,15 +250,17 @@ keyserver_import_wkd (ctrl_t ctrl, const char *name, unsigned int flags,
- return GPG_ERR_BUG;
- }
-
--int
--keyserver_import_mbox (ctrl_t ctrl, const char *mbox, unsigned char **fpr,
-- size_t *fprlen, struct keyserver_spec *keyserver)
-+gpg_error_t
-+keyserver_import_mbox (ctrl_t ctrl, const char *mbox,
-+ unsigned char **fpr, size_t *fprlen,
-+ struct keyserver_spec *keyserver, unsigned int flags)
- {
- (void)ctrl;
- (void)mbox;
- (void)fpr;
- (void)fprlen;
- (void)keyserver;
-+ (void)flags;
- return -1;
- }
-
-@@ -381,14 +391,11 @@ parse_preferred_keyserver(PKT_signature *sig)
- return NULL;
- }
-
--struct keyserver_spec *
--parse_keyserver_uri (const char *uri, int require_scheme,
-- const char *configname, unsigned int configlineno)
-+keyserver_spec_t
-+parse_keyserver_uri (const char *string, int require_scheme)
- {
-- (void)uri;
-+ (void)string;
- (void)require_scheme;
-- (void)configname;
-- (void)configlineno;
- return NULL;
- }
-
-@@ -400,11 +407,14 @@ free_keyserver_spec (struct keyserver_spec *keyserver)
-
- /* Stubs to avoid linking to photoid.c */
- void
--show_photos (const struct user_attribute *attrs, int count, PKT_public_key *pk)
-+show_photos (ctrl_t ctrl, const struct user_attribute *attrs, int count,
-+ PKT_public_key *pk, PKT_user_id *uid)
- {
-+ (void)ctrl;
- (void)attrs;
- (void)count;
- (void)pk;
-+ (void)uid;
- }
-
- int
---
-2.53.0
-
diff --git a/app-crypt/gnupg/files/0003-agent-Fix-the-regression-in-pkdecrypt-with-TPM-RSA.patch b/app-crypt/gnupg/files/0003-agent-Fix-the-regression-in-pkdecrypt-with-TPM-RSA.patch
@@ -1,40 +0,0 @@
-From 6eed3959303c81c9699fe9273030e480732f72be Mon Sep 17 00:00:00 2001
-Message-ID: <6eed3959303c81c9699fe9273030e480732f72be.1771025112.git.sam@gentoo.org>
-From: NIIBE Yutaka <gniibe@fsij.org>
-Date: Thu, 12 Feb 2026 11:51:17 +0900
-Subject: [PATCH GnuPG] agent: Fix the regression in pkdecrypt with TPM RSA.
-
-* agent/divert-tpm2.c (divert_tpm2_pkdecrypt): Care about additional
-0x00.
-
---
-
-GnuPG-bug-id: 8045
-Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
----
- agent/divert-tpm2.c | 9 +++++++++
- 1 file changed, 9 insertions(+)
-
-diff --git a/agent/divert-tpm2.c b/agent/divert-tpm2.c
-index 5500c07f1..839a039bc 100644
---- a/agent/divert-tpm2.c
-+++ b/agent/divert-tpm2.c
-@@ -138,6 +138,15 @@ divert_tpm2_pkdecrypt (ctrl_t ctrl,
- if (!smatch (&s, n, "a"))
- return gpg_error (GPG_ERR_UNKNOWN_SEXP);
- n = snext (&s);
-+ /* NOTE: gpg-agent protocol uses signed integer for RSA (%m in
-+ * MPI), where 0x00 is added when the MSB is 1. TPM2 uses
-+ * unsigned integer. We need to remove this 0x00, or else
-+ * it may result GPG_ERR_TOO_LARGE in tpm2daemon. */
-+ if (!*s && (n&1))
-+ {
-+ s++;
-+ n--;
-+ }
- }
- else if (smatch (&s, n, "ecdh"))
- {
---
-2.53.0
-
diff --git a/app-crypt/gnupg/gnupg-2.5.17-r2.ebuild b/app-crypt/gnupg/gnupg-2.5.17-r2.ebuild
@@ -1,195 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-# Maintainers should:
-# 1. Join the "Gentoo" project at https://dev.gnupg.org/project/view/27/
-# 2. Subscribe to release tasks like https://dev.gnupg.org/T6159
-# (find the one for the current release then subscribe to it +
-# any subsequent ones linked within so you're covered for a while.)
-
-VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/gnupg.asc
-# in-source builds are not supported: https://dev.gnupg.org/T6313#166339
-inherit flag-o-matic out-of-source multiprocessing systemd toolchain-funcs verify-sig
-
-MY_P="${P/_/-}"
-
-DESCRIPTION="The GNU Privacy Guard, a GPL OpenPGP implementation"
-HOMEPAGE="https://gnupg.org/"
-SRC_URI="mirror://gnupg/gnupg/${MY_P}.tar.bz2"
-SRC_URI+=" verify-sig? ( mirror://gnupg/gnupg/${P}.tar.bz2.sig )"
-S="${WORKDIR}/${MY_P}"
-
-LICENSE="GPL-3+"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos ~x64-solaris"
-IUSE="+alternatives bzip2 doc ldap nls readline selinux +smartcard ssl test +tofu tpm tools usb user-socket wks-server"
-RESTRICT="!test? ( test )"
-REQUIRED_USE="test? ( tofu )"
-
-# Existence of executables is checked during configuration.
-# Note: On each bump, update dep bounds on each version from configure.ac!
-DEPEND="
- >=dev-libs/libassuan-3.0.0-r1:=
- >=dev-libs/libgcrypt-1.11.0:=
- >=dev-libs/libgpg-error-1.56
- >=dev-libs/libksba-1.6.3
- >=dev-libs/npth-1.2
- virtual/zlib:=
- bzip2? ( app-arch/bzip2 )
- ldap? ( net-nds/openldap:= )
- readline? ( sys-libs/readline:0= )
- smartcard? ( usb? ( virtual/libusb:1 ) )
- tofu? ( >=dev-db/sqlite-3.27 )
- tpm? ( >=app-crypt/tpm2-tss-2.4.0:= )
- ssl? ( >=net-libs/gnutls-3.2:0= )
-"
-RDEPEND="
- ${DEPEND}
- nls? ( virtual/libintl )
- selinux? ( sec-policy/selinux-gpg )
- wks-server? ( virtual/mta )
-"
-PDEPEND="
- || (
- app-crypt/pinentry
- app-crypt/pinentry-dmenu
- )
- alternatives? (
- app-alternatives/gpg[-freepg(-)]
- )
-"
-BDEPEND="
- virtual/pkgconfig
- doc? ( sys-apps/texinfo )
- nls? ( sys-devel/gettext )
- verify-sig? ( sec-keys/openpgp-keys-gnupg )
-"
-
-DOCS=(
- ChangeLog NEWS README THANKS TODO VERSION
- doc/FAQ doc/DETAILS doc/HACKING doc/TRANSLATE doc/OpenPGP doc/KEYSERVER
-)
-
-PATCHES=(
- "${FILESDIR}"/${PN}-2.1.20-gpgscm-Use-shorter-socket-path-lengts-to-improve-tes.patch
- "${FILESDIR}"/0001-Fix-stub-functions-to-avoid-LTO-linking-bugs.patch
- "${FILESDIR}"/0002-Fix-stub-functions-to-avoid-LTO-linking-bugs-followup.patch
- "${FILESDIR}"/0003-agent-Fix-the-regression-in-pkdecrypt-with-TPM-RSA.patch
-)
-
-src_prepare() {
- default
-}
-
-my_src_configure() {
- local myconf=(
- $(use_enable bzip2)
- $(use_enable nls)
- $(use_enable smartcard scdaemon)
- $(use_enable ssl gnutls)
- $(use_enable test all-tests)
- $(use_enable test tests)
- $(use_enable tofu)
- $(use_enable tofu keyboxd)
- $(use_enable tofu sqlite)
- $(usex tpm '--with-tss=intel' '--disable-tpm2d')
- $(use smartcard && use_enable usb ccid-driver || echo '--disable-ccid-driver')
- $(use_enable wks-server wks-tools)
- $(use_with ldap)
- $(use_with readline)
-
- # Hardcode mailprog to /usr/libexec/sendmail even if it does not exist.
- # As of GnuPG 2.3, the mailprog substitution is used for the binary called
- # by wks-client & wks-server; and if it's autodetected but not not exist at
- # build time, then then 'gpg-wks-client --send' functionality will not
- # work. This has an unwanted side-effect in stage3 builds: there was a
- # [R]DEPEND on virtual/mta, which also brought in virtual/logger, bloating
- # the build where the install guide previously make the user chose the
- # logger & mta early in the install.
- --with-mailprog=/usr/libexec/sendmail
-
- --disable-ntbtls
- --enable-gpgsm
- --enable-large-secmem
-
- CC_FOR_BUILD="$(tc-getBUILD_CC)"
- GPGRT_CONFIG="${ESYSROOT}/usr/bin/${CHOST}-gpgrt-config"
-
- $("${S}/configure" --help | grep -o -- '--without-.*-prefix')
- )
-
- if use prefix && use usb; then
- # bug #649598
- append-cppflags -I"${ESYSROOT}/usr/include/libusb-1.0"
- fi
-
- if [[ ${CHOST} == *-solaris* ]] ; then
- # these somehow are treated as fatal, but Solaris has different
- # types for getpeername with socket_t
- append-flags -Wno-incompatible-pointer-types
- append-flags -Wno-unused-label
- fi
-
- # bug #663142
- if use user-socket; then
- myconf+=( --enable-run-gnupg-user-socket )
- fi
-
- # glib fails and picks up clang's internal stdint.h causing weird errors
- tc-is-clang && export gl_cv_absolute_stdint_h="${ESYSROOT}"/usr/include/stdint.h
-
- econf "${myconf[@]}"
-}
-
-my_src_compile() {
- default
-
- use doc && emake -C doc html
-}
-
-my_src_test() {
- export TESTFLAGS="--parallel=$(makeopts_jobs)"
-
- default
-}
-
-my_src_install() {
- emake DESTDIR="${D}" install
-
- use tools && dobin tools/{gpgconf,gpgsplit,gpg-check-pattern} tools/make-dns-cert
-
- if use alternatives; then
- # rename for app-alternatives/gpg
- mv "${ED}"/usr/bin/gpg{,-reference} || die
- mv "${ED}"/usr/bin/gpgv{,-reference} || die
- mv "${ED}"/usr/share/man/man1/gpg{,-reference}.1 || die
- mv "${ED}"/usr/share/man/man1/gpgv{,-reference}.1 || die
- else
- dosym gpg /usr/bin/gpg2
- dosym gpgv /usr/bin/gpgv2
- echo ".so man1/gpg.1" > "${ED}"/usr/share/man/man1/gpg2.1 || die
- echo ".so man1/gpgv.1" > "${ED}"/usr/share/man/man1/gpgv2.1 || die
- fi
-
- use doc && dodoc doc/gnupg.html/*
-}
-
-my_src_install_all() {
- einstalldocs
-
- use tools && dobin tools/{convert-from-106,mail-signed-keys,lspgpot}
- use doc && dodoc doc/*.png
-}
-
-pkg_postinst() {
- # If /usr/bin/gpg and /usr/bin/gpgv do not exist, provide them.
- if [[ ! -e ${EROOT}/usr/bin/gpg ]]; then
- ln -sf -- gpg-reference "${EROOT}"/usr/bin/gpg || die
- fi
-
- if [[ ! -e ${EROOT}/usr/bin/gpgv ]]; then
- ln -sf -- gpgv-reference "${EROOT}"/usr/bin/gpgv || die
- fi
-}
diff --git a/app-crypt/gnupg/gnupg-2.5.20.ebuild b/app-crypt/gnupg/gnupg-2.5.20.ebuild
@@ -0,0 +1,188 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# Maintainers should:
+# 1. Join the "Gentoo" project at https://dev.gnupg.org/project/view/27/
+# 2. Subscribe to release tasks like https://dev.gnupg.org/T6159
+# (find the one for the current release then subscribe to it +
+# any subsequent ones linked within so you're covered for a while.)
+
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/gnupg.asc
+# in-source builds are not supported: https://dev.gnupg.org/T6313#166339
+inherit flag-o-matic out-of-source multiprocessing systemd toolchain-funcs verify-sig
+
+MY_P="${P/_/-}"
+
+DESCRIPTION="The GNU Privacy Guard, a GPL OpenPGP implementation"
+HOMEPAGE="https://gnupg.org/"
+SRC_URI="mirror://gnupg/gnupg/${MY_P}.tar.bz2"
+SRC_URI+=" verify-sig? ( mirror://gnupg/gnupg/${P}.tar.bz2.sig )"
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="GPL-3+"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos ~x64-solaris"
+IUSE="+alternatives bzip2 doc ldap nls readline selinux +smartcard ssl test +tofu tpm tools usb user-socket wks-server"
+RESTRICT="!test? ( test )"
+REQUIRED_USE="test? ( tofu )"
+
+# Existence of executables is checked during configuration
+DEPEND="
+ >=dev-libs/libassuan-3.0.0-r1:=
+ >=dev-libs/libgcrypt-1.11.0:=
+ >=dev-libs/libgpg-error-1.56
+ >=dev-libs/libksba-1.6.3
+ >=dev-libs/npth-1.2
+ virtual/zlib:=
+ bzip2? ( app-arch/bzip2 )
+ ldap? ( net-nds/openldap:= )
+ readline? ( sys-libs/readline:0= )
+ smartcard? ( usb? ( virtual/libusb:1 ) )
+ tofu? ( >=dev-db/sqlite-3.27 )
+ tpm? ( >=app-crypt/tpm2-tss-2.4.0:= )
+ ssl? ( >=net-libs/gnutls-3.2:0= )
+"
+RDEPEND="
+ ${DEPEND}
+ nls? ( virtual/libintl )
+ selinux? ( sec-policy/selinux-gpg )
+ wks-server? ( virtual/mta )
+"
+PDEPEND="
+ || (
+ app-crypt/pinentry
+ app-crypt/pinentry-dmenu
+ )
+ alternatives? (
+ app-alternatives/gpg[-freepg(-)]
+ )
+"
+BDEPEND="
+ virtual/pkgconfig
+ doc? ( sys-apps/texinfo )
+ nls? ( sys-devel/gettext )
+ verify-sig? ( sec-keys/openpgp-keys-gnupg )
+"
+
+DOCS=(
+ ChangeLog NEWS README THANKS TODO VERSION
+ doc/FAQ doc/DETAILS doc/HACKING doc/TRANSLATE doc/OpenPGP doc/KEYSERVER
+)
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-2.1.20-gpgscm-Use-shorter-socket-path-lengts-to-improve-tes.patch
+ "${FILESDIR}"/0002-Fix-stub-functions-to-avoid-LTO-linking-bugs-followup.patch
+)
+
+my_src_configure() {
+ local myconf=(
+ $(use_enable bzip2)
+ $(use_enable nls)
+ $(use_enable smartcard scdaemon)
+ $(use_enable ssl gnutls)
+ $(use_enable test all-tests)
+ $(use_enable test tests)
+ $(use_enable tofu)
+ $(use_enable tofu keyboxd)
+ $(use_enable tofu sqlite)
+ $(usex tpm '--with-tss=intel' '--disable-tpm2d')
+ $(use smartcard && use_enable usb ccid-driver || echo '--disable-ccid-driver')
+ $(use_enable wks-server wks-tools)
+ $(use_with ldap)
+ $(use_with readline)
+
+ # Hardcode mailprog to /usr/libexec/sendmail even if it does not exist.
+ # As of GnuPG 2.3, the mailprog substitution is used for the binary called
+ # by wks-client & wks-server; and if it's autodetected but not not exist at
+ # build time, then then 'gpg-wks-client --send' functionality will not
+ # work. This has an unwanted side-effect in stage3 builds: there was a
+ # [R]DEPEND on virtual/mta, which also brought in virtual/logger, bloating
+ # the build where the install guide previously make the user chose the
+ # logger & mta early in the install.
+ --with-mailprog=/usr/libexec/sendmail
+
+ --disable-ntbtls
+ --enable-gpgsm
+ --enable-large-secmem
+
+ CC_FOR_BUILD="$(tc-getBUILD_CC)"
+ GPGRT_CONFIG="${ESYSROOT}/usr/bin/${CHOST}-gpgrt-config"
+
+ $("${S}/configure" --help | grep -o -- '--without-.*-prefix')
+ )
+
+ if use prefix && use usb; then
+ # bug #649598
+ append-cppflags -I"${ESYSROOT}/usr/include/libusb-1.0"
+ fi
+
+ if [[ ${CHOST} == *-solaris* ]] ; then
+ # these somehow are treated as fatal, but Solaris has different
+ # types for getpeername with socket_t
+ append-flags -Wno-incompatible-pointer-types
+ append-flags -Wno-unused-label
+ fi
+
+ # bug #663142
+ if use user-socket; then
+ myconf+=( --enable-run-gnupg-user-socket )
+ fi
+
+ # glib fails and picks up clang's internal stdint.h causing weird errors
+ tc-is-clang && export gl_cv_absolute_stdint_h="${ESYSROOT}"/usr/include/stdint.h
+
+ econf "${myconf[@]}"
+}
+
+my_src_compile() {
+ default
+
+ use doc && emake -C doc html
+}
+
+my_src_test() {
+ export TESTFLAGS="--parallel=$(get_makeopts_jobs)"
+
+ default
+}
+
+my_src_install() {
+ emake DESTDIR="${D}" install
+
+ use tools && dobin tools/{gpgconf,gpgsplit,gpg-check-pattern} tools/make-dns-cert
+
+ if use alternatives; then
+ # rename for app-alternatives/gpg
+ mv "${ED}"/usr/bin/gpg{,-reference} || die
+ mv "${ED}"/usr/bin/gpgv{,-reference} || die
+ mv "${ED}"/usr/share/man/man1/gpg{,-reference}.1 || die
+ mv "${ED}"/usr/share/man/man1/gpgv{,-reference}.1 || die
+ else
+ dosym gpg /usr/bin/gpg2
+ dosym gpgv /usr/bin/gpgv2
+ echo ".so man1/gpg.1" > "${ED}"/usr/share/man/man1/gpg2.1 || die
+ echo ".so man1/gpgv.1" > "${ED}"/usr/share/man/man1/gpgv2.1 || die
+ fi
+
+ use doc && dodoc doc/gnupg.html/*
+}
+
+my_src_install_all() {
+ einstalldocs
+
+ use tools && dobin tools/{convert-from-106,mail-signed-keys,lspgpot}
+ use doc && dodoc doc/*.png
+}
+
+pkg_postinst() {
+ # If /usr/bin/gpg and /usr/bin/gpgv do not exist, provide them.
+ if [[ ! -e ${EROOT}/usr/bin/gpg ]]; then
+ ln -sf -- gpg-reference "${EROOT}"/usr/bin/gpg || die
+ fi
+
+ if [[ ! -e ${EROOT}/usr/bin/gpgv ]]; then
+ ln -sf -- gpgv-reference "${EROOT}"/usr/bin/gpgv || die
+ fi
+}