summaryrefslogtreecommitdiff
blob: 65cc9de488d357d1d62a193bda2047cafe6d6c99 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/gnupg.asc
inherit autotools qmake-utils verify-sig

DESCRIPTION="Simple passphrase entry dialogs which utilize the Assuan protocol"
HOMEPAGE="https://gnupg.org/related_software/pinentry/"
SRC_URI="mirror://gnupg/${PN}/${P}.tar.bz2"
SRC_URI+=" verify-sig? ( mirror://gnupg/${PN}/${P}.tar.bz2.sig )"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
IUSE="caps efl emacs gtk keyring ncurses qt5 qt6 wayland X"

DEPEND="
	>=dev-libs/libassuan-2.1
	>=dev-libs/libgcrypt-1.6.3
	>=dev-libs/libgpg-error-1.17
	efl? ( dev-libs/efl[X] )
	keyring? ( app-crypt/libsecret )
	ncurses? ( sys-libs/ncurses:= )
	qt5? (
		dev-qt/qtcore:5
		dev-qt/qtgui:5
		dev-qt/qtwidgets:5
		wayland? ( kde-plasma/kwayland:5 )
		X? (
			dev-qt/qtx11extras:5
			x11-libs/libX11
		)
	)
	qt6? (
		dev-qt/qtbase:6[gui,widgets]
		wayland? (
			kde-frameworks/kguiaddons:6
			kde-frameworks/kwindowsystem:6
		)
	)
"
RDEPEND="
	${DEPEND}
	gtk? ( app-crypt/gcr:4[gtk] )
"
BDEPEND="
	sys-devel/gettext
	virtual/pkgconfig
	verify-sig? ( sec-keys/openpgp-keys-gnupg )
"
PDEPEND="emacs? ( app-emacs/pinentry )"
IDEPEND=">=app-eselect/eselect-pinentry-0.7.4"

DOCS=( AUTHORS ChangeLog NEWS README THANKS TODO )

PATCHES=(
	"${FILESDIR}/${PN}-1.0.0-AR.patch"
	"${FILESDIR}/${PN}-1.3.0-automagic.patch" # bug #819939, bug #837719
	"${FILESDIR}/${PN}-1.3.0-ifdef-qt.patch"
)

src_prepare() {
	default

	eautoreconf
}

src_configure() {
	unset FLTK_CONFIG

	local myeconfargs=(
		$(use_enable efl pinentry-efl)
		$(use_enable emacs pinentry-emacs)
		$(use_enable keyring libsecret)
		$(use_enable gtk pinentry-gnome3)
		$(use_enable ncurses fallback-curses)
		$(use_enable ncurses pinentry-curses)
		$(use_enable qt5 pinentry-qt5)
		$(use_enable qt6 pinentry-qt)
		# TODO: could split this up into qt5/qt6?
		$(use_enable X qtx11extras)
		$(use_with X x)

		--enable-pinentry-tty
		--disable-pinentry-fltk
		--disable-pinentry-gtk2

		ac_cv_path_GPGRT_CONFIG="${ESYSROOT}/usr/bin/${CHOST}-gpgrt-config"

		$("${S}/configure" --help | grep -- '--without-.*-prefix' | sed -e 's/^ *\([^ ]*\) .*/\1/g')
	)

	if use qt5 ; then
		export PATH="$(qt5_get_bindir):${PATH}"
		export QTLIB="$(qt5_get_libdir):${QTLIB}"
		export MOC5="$(qt5_get_bindir)"/moc

		myeconfargs+=(
			$(use_enable wayland kf5-wayland)
		)
	else
		myeconfargs+=(
			--disable-kf5-wayland
		)
	fi

	if use qt6 ; then
		export PATH="$(qt6_get_bindir):${PATH}"
		export QTLIB="$(qt6_get_libdir):${QTLIB}"
		export MOC="$(qt6_get_libdir)/qt6/libexec/moc"

		myeconfargs+=(
			$(use_enable wayland kf6-wayland)
		)
	else
		myeconfargs+=(
			--disable-kf6-wayland
		)
	fi

	econf "${myeconfargs[@]}"
}

src_install() {
	default

	rm "${ED}"/usr/bin/pinentry || die

	# The preferred Qt implementation upstream gets installed as just 'qt'.
	# Make a symlink for eselect-pinentry and friends.
	if use qt6 ; then
		dosym pinentry-qt /usr/bin/pinentry-qt6
	fi
}

pkg_postinst() {
	eselect pinentry update ifunset
}

pkg_postrm() {
	eselect pinentry update ifunset
}