Merge pull request #316792 from fpletz/pkg/pinentry-1.3.0

pinentry: 1.2.1 -> 1.3.0
This commit is contained in:
Ben Siraphob 2024-06-16 05:20:00 +00:00 committed by GitHub
commit 6f35d8d794
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,23 +1,27 @@
{ stdenv
, lib
, fetchurl
, fetchpatch
, pkg-config
, autoreconfHook
, wrapGAppsHook3
, libgpg-error
, libassuan
, libsForQt5
, ncurses
, gtk2
, gcr
, withLibsecret ? true
, libsecret
{
stdenv,
lib,
fetchurl,
fetchpatch,
pkg-config,
autoreconfHook,
wrapGAppsHook3,
libgpg-error,
libassuan,
libsForQt5,
qt6,
ncurses,
gtk2,
gcr,
withLibsecret ? true,
libsecret,
}:
let
flavorInfo = {
tty = { flag = "tty"; };
tty = {
flag = "tty";
};
curses = {
flag = "curses";
buildInputs = [ ncurses ];
@ -31,52 +35,70 @@ let
buildInputs = [ gcr ];
nativeBuildInputs = [ wrapGAppsHook3 ];
};
qt = {
flag = "qt";
buildInputs = [ libsForQt5.qtbase ];
qt5 = {
flag = "qt5";
buildInputs = [
libsForQt5.qtbase
libsForQt5.kwayland
libsForQt5.qtx11extras
];
nativeBuildInputs = [ libsForQt5.wrapQtAppsHook ];
};
emacs = { flag = "emacs"; };
qt = {
flag = "qt";
buildInputs = [
qt6.qtbase
qt6.qtwayland
];
nativeBuildInputs = [ qt6.wrapQtAppsHook ];
};
emacs = {
flag = "emacs";
};
};
buildPinentry = pinentryExtraPname: buildFlavors:
buildPinentry =
pinentryExtraPname: buildFlavors:
let
enableFeaturePinentry = f:
lib.enableFeature (lib.elem f buildFlavors) ("pinentry-" + flavorInfo.${f}.flag);
enableFeaturePinentry =
f: lib.enableFeature (lib.elem f buildFlavors) ("pinentry-" + flavorInfo.${f}.flag);
pinentryMkDerivation =
if (lib.elem "qt" buildFlavors)
then libsForQt5.mkDerivation
else stdenv.mkDerivation;
if (lib.elem "qt5" buildFlavors) then libsForQt5.mkDerivation else stdenv.mkDerivation;
in
pinentryMkDerivation rec {
pname = "pinentry-${pinentryExtraPname}";
version = "1.2.1";
version = "1.3.0";
src = fetchurl {
url = "mirror://gnupg/pinentry/pinentry-${version}.tar.bz2";
hash = "sha256-RXoYXlqFI4+5RalV3GNSq5YtyLSHILYvyfpIx1QKQGc=";
hash = "sha256-mzzVIm51l/L97TmaO8ZZkjNRU2VZ6dsIJpgbyjFklN4=";
};
nativeBuildInputs = [ pkg-config autoreconfHook ]
++ lib.concatMap (f: flavorInfo.${f}.nativeBuildInputs or [ ]) buildFlavors;
nativeBuildInputs = [
pkg-config
autoreconfHook
] ++ lib.concatMap (f: flavorInfo.${f}.nativeBuildInputs or [ ]) buildFlavors;
buildInputs = [ libgpg-error libassuan ]
buildInputs =
[
libgpg-error
libassuan
]
++ lib.optional withLibsecret libsecret
++ lib.concatMap (f: flavorInfo.${f}.buildInputs or [ ]) buildFlavors;
dontWrapGApps = true;
dontWrapQtApps = true;
patches = [
./autoconf-ar.patch
] ++ lib.optionals (lib.elem "gtk2" buildFlavors) [
(fetchpatch {
url = "https://salsa.debian.org/debian/pinentry/raw/debian/1.1.0-1/debian/patches/0007-gtk2-When-X11-input-grabbing-fails-try-again-over-0..patch";
sha256 = "15r1axby3fdlzz9wg5zx7miv7gqx2jy4immaw4xmmw5skiifnhfd";
})
];
patches =
[ ./autoconf-ar.patch ]
++ lib.optionals (lib.elem "gtk2" buildFlavors) [
(fetchpatch {
url = "https://salsa.debian.org/debian/pinentry/raw/debian/1.1.0-1/debian/patches/0007-gtk2-When-X11-input-grabbing-fails-try-again-over-0..patch";
sha256 = "15r1axby3fdlzz9wg5zx7miv7gqx2jy4immaw4xmmw5skiifnhfd";
})
];
configureFlags = [
"--with-libgpg-error-prefix=${libgpg-error.dev}"
@ -87,35 +109,76 @@ let
postInstall =
lib.optionalString (lib.elem "gnome3" buildFlavors) ''
wrapGApp $out/bin/pinentry-gnome3
'' + lib.optionalString (lib.elem "qt" buildFlavors) ''
''
+ lib.optionalString (lib.elem "qt5" buildFlavors) ''
wrapQtApp $out/bin/pinentry-qt5
ln -sf $out/bin/pinentry-qt5 $out/bin/pinentry-qt
''
+ lib.optionalString (lib.elem "qt" buildFlavors) ''
wrapQtApp $out/bin/pinentry-qt
'';
passthru = { flavors = buildFlavors; };
passthru = {
flavors = buildFlavors;
};
meta = with lib; {
meta = {
homepage = "https://gnupg.org/software/pinentry/index.html";
description = "GnuPGs interface to passphrase input";
license = licenses.gpl2Plus;
license = lib.licenses.gpl2Plus;
platforms =
if elem "gnome3" buildFlavors then platforms.linux else
if elem "qt" buildFlavors then (remove "aarch64-darwin" platforms.all) else
platforms.all;
if lib.elem "gnome3" buildFlavors then
lib.platforms.linux
else if (lib.elem "qt5" buildFlavors || lib.elem "qt" buildFlavors) then
(lib.remove "aarch64-darwin" lib.platforms.all)
else
lib.platforms.all;
longDescription = ''
Pinentry provides a console and (optional) GTK and Qt GUIs allowing users
to enter a passphrase when `gpg` or `gpg2` is run and needs it.
'';
maintainers = with maintainers; [ fpletz ];
maintainers = with lib.maintainers; [ fpletz ];
mainProgram = "pinentry";
};
};
in
{
pinentry-curses = buildPinentry "curses" [ "curses" "tty" ];
pinentry-emacs = buildPinentry "emacs" [ "emacs" "curses" "tty" ];
pinentry-gnome3 = buildPinentry "gnome3" [ "gnome3" "curses" "tty" ];
pinentry-gtk2 = buildPinentry "gtk2" [ "gtk2" "curses" "tty" ];
pinentry-qt = buildPinentry "qt" [ "qt" "curses" "tty" ];
pinentry-curses = buildPinentry "curses" [
"curses"
"tty"
];
pinentry-emacs = buildPinentry "emacs" [
"emacs"
"curses"
"tty"
];
pinentry-gnome3 = buildPinentry "gnome3" [
"gnome3"
"curses"
"tty"
];
pinentry-gtk2 = buildPinentry "gtk2" [
"gtk2"
"curses"
"tty"
];
pinentry-qt5 = buildPinentry "qt5" [
"qt5"
"curses"
"tty"
];
pinentry-qt = buildPinentry "qt" [
"qt"
"curses"
"tty"
];
pinentry-tty = buildPinentry "tty" [ "tty" ];
pinentry-all = buildPinentry "all" [ "curses" "tty" "gtk2" "gnome3" "qt" "emacs" ];
pinentry-all = buildPinentry "all" [
"curses"
"tty"
"gtk2"
"gnome3"
"qt"
"emacs"
];
}