summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app-crypt/pinentry/files')
-rw-r--r--app-crypt/pinentry/files/pinentry-0.8.2-ncurses.patch25
-rw-r--r--app-crypt/pinentry/files/pinentry-1.0.0-make-icon-work-under-Plasma-Wayland.patch52
-rw-r--r--app-crypt/pinentry/files/pinentry-1.2.1-automagic-capslock.patch99
-rw-r--r--app-crypt/pinentry/files/pinentry-1.2.1-include-memory.patch313
-rw-r--r--app-crypt/pinentry/files/pinentry-1.3.0-automagic.patch141
-rw-r--r--app-crypt/pinentry/files/pinentry-1.3.0-ifdef-qt.patch125
6 files changed, 678 insertions, 77 deletions
diff --git a/app-crypt/pinentry/files/pinentry-0.8.2-ncurses.patch b/app-crypt/pinentry/files/pinentry-0.8.2-ncurses.patch
deleted file mode 100644
index 3bb92c63d00c..000000000000
--- a/app-crypt/pinentry/files/pinentry-0.8.2-ncurses.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From bafe8608fc525ef103b3d1f3048ca28958bef596 Mon Sep 17 00:00:00 2001
-From: Alon Bar-Lev <alon.barlev@gmail.com>
-Date: Sun, 5 May 2013 02:23:08 +0300
-Subject: [PATCH] ncurses: link with optional tinfo
-
----
- m4/curses.m4 | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/m4/curses.m4 b/m4/curses.m4
-index 3a01881..ffb6bd1 100644
---- a/m4/curses.m4
-+++ b/m4/curses.m4
-@@ -36,6 +36,8 @@ AC_DEFUN([IU_LIB_NCURSES], [
- have_ncursesw=no
- fi
- if test "$LIBNCURSES"; then
-+ AC_CHECK_LIB(tinfow, curs_set, LIBNCURSES="${LIBNCURSES} -ltinfow",
-+ AC_CHECK_LIB(tinfo, curs_set, LIBNCURSES="${LIBNCURSES} -ltinfo"))
- # Use ncurses header files instead of the ordinary ones, if possible;
- # is there a better way of doing this, that avoids looking in specific
- # directories?
---
-1.8.1.5
-
diff --git a/app-crypt/pinentry/files/pinentry-1.0.0-make-icon-work-under-Plasma-Wayland.patch b/app-crypt/pinentry/files/pinentry-1.0.0-make-icon-work-under-Plasma-Wayland.patch
deleted file mode 100644
index 646df1963760..000000000000
--- a/app-crypt/pinentry/files/pinentry-1.0.0-make-icon-work-under-Plasma-Wayland.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 7218becac7132c2508d4e8f42c693d69c406795a Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andrius=20=C5=A0tikonas?= <andrius@stikonas.eu>
-Date: Wed, 7 Mar 2018 15:14:22 +0100
-Subject: [PATCH] Make pinentry-qt icon work under Plasma Wayland.
-
----
- qt/Makefile.am | 2 ++
- qt/main.cpp | 2 ++
- qt/org.gnupg.pinentry-qt.desktop | 5 +++++
- 3 files changed, 9 insertions(+)
- create mode 100644 qt/org.gnupg.pinentry-qt.desktop
-
-diff --git a/qt/Makefile.am b/qt/Makefile.am
-index 698005e..bbf39d1 100644
---- a/qt/Makefile.am
-+++ b/qt/Makefile.am
-@@ -24,6 +24,8 @@ bin_PROGRAMS = pinentry-qt
-
- EXTRA_DIST = document-encrypt.png pinentry.qrc
-
-+desktopdir = $(datadir)/applications
-+dist_desktop_DATA = org.gnupg.pinentry-qt.desktop
-
- if FALLBACK_CURSES
- ncurses_include = $(NCURSES_INCLUDE)
-diff --git a/qt/main.cpp b/qt/main.cpp
-index fe88d26..b767cb4 100644
---- a/qt/main.cpp
-+++ b/qt/main.cpp
-@@ -372,6 +372,8 @@ main(int argc, char *argv[])
- i = argc;
- app = new QApplication(i, new_argv);
- app->setWindowIcon(QIcon(QLatin1String(":/document-encrypt.png")));
-+ app->setOrganizationDomain(QStringLiteral("gnupg.org"));
-+ app->setDesktopFileName(QStringLiteral("org.gnupg.pinentry-qt"));
- }
-
- pinentry_parse_opts(argc, argv);
-diff --git a/qt/org.gnupg.pinentry-qt.desktop b/qt/org.gnupg.pinentry-qt.desktop
-new file mode 100644
-index 0000000..0ac89aa
---- /dev/null
-+++ b/qt/org.gnupg.pinentry-qt.desktop
-@@ -0,0 +1,5 @@
-+[Desktop Entry]
-+Type=Application
-+Name=Pinentry dialog
-+Icon=document-encrypt
-+NoDisplay=true
---
-2.16.1
-
diff --git a/app-crypt/pinentry/files/pinentry-1.2.1-automagic-capslock.patch b/app-crypt/pinentry/files/pinentry-1.2.1-automagic-capslock.patch
new file mode 100644
index 000000000000..081fad60eb03
--- /dev/null
+++ b/app-crypt/pinentry/files/pinentry-1.2.1-automagic-capslock.patch
@@ -0,0 +1,99 @@
+https://dev.gnupg.org/T6161
+https://bugs.gentoo.org/819939
+https://bugs.gentoo.org/837719
+--- a/configure.ac
++++ b/configure.ac
+@@ -508,8 +508,12 @@ fi
+ dnl
+ dnl Check for libX11 library
+ dnl
++AC_ARG_WITH(x,
++ AS_HELP_STRING([--with-x],[use libX11]),
++ [want_x11=$withval], [want_x11=maybe])
++
+ have_x11=no
+-if test "$have_w32_system" != "yes"; then
++AS_IF([test "$have_w32_system" != "yes" && test "$want_x11" != "no"], [
+ PKG_CHECK_MODULES(
+ LIBX11,
+ [x11],
+@@ -519,18 +523,20 @@ if test "$have_w32_system" != "yes"; then
+ have_x11=no
+ ]
+ )
++])
+
+- if test "$have_x11" = "yes"; then
+- AC_DEFINE(HAVE_X11, 1,
+- [The pinentries can optionally use x11.])
+- fi
+-fi
++AS_IF([test "$have_x11" = "yes"], [AC_DEFINE(HAVE_X11, 1, [The pinentries can optionally use x11.])])
+
+ dnl
+ dnl Check for KF5WaylandClient library
+ dnl
++
++AC_ARG_ENABLE(kf5-wayland,
++ AS_HELP_STRING([--enable-kf5-wayland],[use KF5WaylandClient for capslock indication on Wayland]),
++ [want_kf5_wayland=$enableval], [want_kf5_wayland=maybe])
++
+ have_kf5waylandclient=no
+-if test "$have_w32_system" != "yes"; then
++AS_IF([test "$have_w32_system" != "yes" && test "$want_kf5_wayland" != "no"], [
+ PKG_CHECK_MODULES(
+ KF5WAYLANDCLIENT,
+ [KF5WaylandClient >= 5.60],
+@@ -540,7 +546,7 @@ if test "$have_w32_system" != "yes"; then
+ have_kf5waylandclient=no
+ ]
+ )
+-fi
++])
+
+ dnl
+ dnl Check for Qt5 pinentry program.
+--- a/m4/qt.m4
++++ b/m4/qt.m4
+@@ -33,6 +33,10 @@ AC_DEFUN([FIND_QT],
+ enable_pinentry_qt5=$enableval,
+ enable_pinentry_qt5="try")
+
++ AC_ARG_ENABLE(qtx11extras,
++ AS_HELP_STRING([--enable-qtx11extras],[use Qt5X11Extras for capslock indication on X11]),
++ [want_qtx11extras=$enableval], [want_qtx11extras=maybe])
++
+ have_qt5_libs="no";
+ require_qt_cpp11="no";
+
+@@ -63,20 +67,22 @@ AC_DEFUN([FIND_QT],
+ fi
+ fi
+
+- if test "$have_x11" = "yes"; then
++ have_qt5_x11extras=no
++ AS_IF([test "$have_x11" = "yes" && test "$want_qtx11extras" != "no"], [
+ PKG_CHECK_MODULES(
+ PINENTRY_QT_X11_EXTRAS,
+ Qt5X11Extras >= 5.1.0,
+ [have_qt5_x11extras="yes"],
+- [
+- AC_MSG_WARN([pinentry-qt will be built without Caps Lock warning on X11])
+- have_qt5_x11extras="no"
+- ])
+- if test "$have_qt5_x11extras" = "yes"; then
++ [have_qt5_x11extras="no"]
++ )
++ ])
++
++ AS_IF([test "$have_qt5_x11extras" = "yes"], [
+ PINENTRY_QT_CFLAGS="$LIBX11_CFLAGS $PINENTRY_QT_CFLAGS $PINENTRY_QT_X11_EXTRAS_CFLAGS"
+ PINENTRY_QT_LIBS="$LIBX11_LIBS $PINENTRY_QT_LIBS $PINENTRY_QT_X11_EXTRAS_LIBS"
+- fi
+- fi
++ ], [
++ AC_MSG_WARN([pinentry-qt will be built without Caps Lock warning on X11])
++ ])
+
+ AC_CHECK_TOOL(MOC, moc)
+ AC_MSG_CHECKING([moc version])
diff --git a/app-crypt/pinentry/files/pinentry-1.2.1-include-memory.patch b/app-crypt/pinentry/files/pinentry-1.2.1-include-memory.patch
new file mode 100644
index 000000000000..8c67950af6f3
--- /dev/null
+++ b/app-crypt/pinentry/files/pinentry-1.2.1-include-memory.patch
@@ -0,0 +1,313 @@
+https://bugs.gentoo.org/925557
+https://dev.gnupg.org/D566
+
+From 8ab1682e80a2b4185ee9ef66cbb44340245966fc Mon Sep 17 00:00:00 2001
+From: Werner Koch <wk@gnupg.org>
+Date: Mon, 20 Mar 2023 08:31:04 +0100
+Subject: [PATCH] Fix problem with inclusion of wrong memory.h.
+
+* secmem/memory.h: Rename to ...
+* secmem/secmem.h: this.
+* pinentry/pinentry.h: Include secmem.h. Remove almost all inclusions
+of memory.h or replace them by "../secmem/secmem.h".
+--
+
+See-also: https://dev.gnupg.org/D566
+---
+ fltk/main.cxx | 1 -
+ fltk/pinwindow.cxx | 2 +-
+ gnome3/pinentry-gnome3.c | 2 --
+ pinentry/password-cache.c | 2 +-
+ pinentry/pinentry-curses.c | 7 +++----
+ pinentry/pinentry-emacs.c | 2 +-
+ pinentry/pinentry.c | 1 -
+ pinentry/pinentry.h | 2 ++
+ secmem/Makefile.am | 2 +-
+ secmem/secmem++.h | 2 +-
+ secmem/secmem.c | 2 +-
+ secmem/{memory.h => secmem.h} | 0
+ tqt/secqstring.h | 2 +-
+ tty/pinentry-tty.c | 1 -
+ w32/main.c | 1 -
+ 15 files changed, 12 insertions(+), 17 deletions(-)
+ rename secmem/{memory.h => secmem.h} (100%)
+
+--- a/fltk/main.cxx 2019-03-05 23:09:48.000000000 -0800
++++ b/fltk/main.cxx 2024-02-26 11:02:47.822134762 -0800
+@@ -34,7 +34,6 @@
+ #include <getopt.h>
+ #include <assert.h>
+
+-#include "memory.h"
+ #include <memory>
+
+ #include <pinentry.h>
+--- a/fltk/pinwindow.cxx 2017-12-03 08:13:05.000000000 -0800
++++ b/fltk/pinwindow.cxx 2024-02-26 11:02:47.822134762 -0800
+@@ -32,7 +32,7 @@
+ #include <FL/Fl_Return_Button.H>
+ #include <FL/Fl_Pixmap.H>
+
+-#include "memory.h"
++#include "../secmem/secmem.h"
+
+ #include "encrypt.xpm"
+ #include "icon.xpm"
+--- a/gnome3/pinentry-gnome3.c 2022-08-24 03:31:59.000000000 -0700
++++ b/gnome3/pinentry-gnome3.c 2024-02-26 11:02:47.822134762 -0800
+@@ -30,8 +30,6 @@
+
+ #include <assuan.h>
+
+-#include "memory.h"
+-
+ #include "pinentry.h"
+
+ #ifdef FALLBACK_CURSES
+--- a/pinentry/password-cache.c 2017-12-03 08:13:15.000000000 -0800
++++ b/pinentry/password-cache.c 2024-02-26 11:02:47.822134762 -0800
+@@ -31,7 +31,7 @@
+ #endif
+
+ #include "password-cache.h"
+-#include "memory.h"
++#include "../secmem/secmem.h"
+
+ #ifdef HAVE_LIBSECRET
+ static const SecretSchema *
+--- a/pinentry/pinentry.c 2022-08-24 03:31:59.000000000 -0700
++++ b/pinentry/pinentry.c 2024-02-26 11:02:47.822134762 -0800
+@@ -44,7 +44,6 @@
+
+ #include <assuan.h>
+
+-#include "memory.h"
+ #include "secmem-util.h"
+ #include "argparse.h"
+ #include "pinentry.h"
+--- a/pinentry/pinentry-curses.c 2022-08-24 03:31:59.000000000 -0700
++++ b/pinentry/pinentry-curses.c 2024-02-26 11:02:47.822134762 -0800
+@@ -62,8 +62,6 @@
+ #include <utime.h>
+ #endif /*HAVE_UTIME_H*/
+
+-#include <memory.h>
+-
+ #ifdef HAVE_WCHAR_H
+ #include <wchar.h>
+ #endif /*HAVE_WCHAR_H*/
+@@ -1017,10 +1015,11 @@
+ #ifndef HAVE_DOSISH_SYSTEM
+ int no_input = 1;
+ #endif
+-
+ #ifdef HAVE_NCURSESW
+ char *old_ctype = NULL;
++#endif
+
++#ifdef HAVE_NCURSESW
+ if (pinentry->lc_ctype)
+ {
+ old_ctype = strdup (setlocale (LC_CTYPE, NULL));
+--- a/pinentry/pinentry-emacs.c 2021-08-11 04:16:10.000000000 -0700
++++ b/pinentry/pinentry-emacs.c 2024-02-26 11:02:47.822134762 -0800
+@@ -48,7 +48,7 @@
+ #include <assuan.h>
+
+ #include "pinentry-emacs.h"
+-#include "memory.h"
++#include "../secmem/secmem.h"
+ #include "secmem-util.h"
+
+ /* The communication mechanism is similar to emacsclient, but there
+--- a/pinentry/pinentry.h 2022-08-24 03:31:59.000000000 -0700
++++ b/pinentry/pinentry.h 2024-02-26 11:02:47.822134762 -0800
+@@ -21,6 +21,8 @@
+ #ifndef PINENTRY_H
+ #define PINENTRY_H
+
++#include "../secmem/secmem.h"
++
+ #ifdef __cplusplus
+ extern "C" {
+ #if 0
+--- a/secmem/Makefile.am 2017-12-03 08:13:05.000000000 -0800
++++ b/secmem/Makefile.am 2024-02-26 11:02:47.822134762 -0800
+@@ -22,7 +22,7 @@
+ noinst_LIBRARIES = libsecmem.a
+
+ libsecmem_a_SOURCES = \
+- memory.h \
++ secmem.h \
+ secmem-util.h \
+ util.h \
+ secmem.c \
+--- a/secmem/memory.h 2017-12-03 08:13:05.000000000 -0800
++++ b/secmem/memory.h 1969-12-31 16:00:00.000000000 -0800
+@@ -1,55 +0,0 @@
+-/* Quintuple Agent secure memory allocation
+- * Copyright (C) 1998,1999 Free Software Foundation, Inc.
+- * Copyright (C) 1999,2000 Robert Bihlmeyer <robbe@orcus.priv.at>
+- *
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 2 of the License, or
+- * (at your option) any later version.
+- *
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- * GNU General Public License for more details.
+- *
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, see <https://www.gnu.org/licenses/>.
+- * SPDX-License-Identifier: GPL-2.0+
+- */
+-
+-#ifndef _MEMORY_H
+-#define _MEMORY_H
+-
+-#include <sys/types.h>
+-
+-#ifdef __cplusplus
+-extern "C" {
+-#if 0
+-}
+-#endif
+-#endif
+-
+-
+-/* values for flags, hardcoded in secmem.c */
+-#define SECMEM_WARN 0
+-#define SECMEM_DONT_WARN 1
+-#define SECMEM_SUSPEND_WARN 2
+-
+-void secmem_init( size_t npool );
+-void secmem_term( void );
+-void *secmem_malloc( size_t size );
+-void *secmem_realloc( void *a, size_t newsize );
+-void secmem_free( void *a );
+-int m_is_secure( const void *p );
+-void secmem_dump_stats(void);
+-void secmem_set_flags( unsigned flags );
+-unsigned secmem_get_flags(void);
+-size_t secmem_get_max_size (void);
+-
+-#if 0
+-{
+-#endif
+-#ifdef __cplusplus
+-}
+-#endif
+-#endif /* _MEMORY_H */
+--- a/secmem/secmem.c 2022-08-24 03:31:59.000000000 -0700
++++ b/secmem/secmem.c 2024-02-26 11:02:47.822134762 -0800
+@@ -34,7 +34,7 @@
+ #endif
+ #include <string.h>
+
+-#include "memory.h"
++#include "secmem.h"
+
+ #ifdef ORIGINAL_GPG_VERSION
+ #include "types.h"
+--- a/secmem/secmem++.h 2017-12-03 08:13:05.000000000 -0800
++++ b/secmem/secmem++.h 2024-02-26 11:02:47.822134762 -0800
+@@ -19,7 +19,7 @@
+ #ifndef __SECMEM_SECMEMPP_H__
+ #define __SECMEM_SECMEMPP_H__
+
+-#include "secmem/memory.h"
++#include "../secmem/secmem.h"
+ #include <cstddef>
+
+ namespace secmem {
+--- a/secmem/secmem.h 1969-12-31 16:00:00.000000000 -0800
++++ b/secmem/secmem.h 2024-02-26 11:02:47.822134762 -0800
+@@ -0,0 +1,55 @@
++/* Quintuple Agent secure memory allocation
++ * Copyright (C) 1998,1999 Free Software Foundation, Inc.
++ * Copyright (C) 1999,2000 Robert Bihlmeyer <robbe@orcus.priv.at>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, see <https://www.gnu.org/licenses/>.
++ * SPDX-License-Identifier: GPL-2.0+
++ */
++
++#ifndef _MEMORY_H
++#define _MEMORY_H
++
++#include <sys/types.h>
++
++#ifdef __cplusplus
++extern "C" {
++#if 0
++}
++#endif
++#endif
++
++
++/* values for flags, hardcoded in secmem.c */
++#define SECMEM_WARN 0
++#define SECMEM_DONT_WARN 1
++#define SECMEM_SUSPEND_WARN 2
++
++void secmem_init( size_t npool );
++void secmem_term( void );
++void *secmem_malloc( size_t size );
++void *secmem_realloc( void *a, size_t newsize );
++void secmem_free( void *a );
++int m_is_secure( const void *p );
++void secmem_dump_stats(void);
++void secmem_set_flags( unsigned flags );
++unsigned secmem_get_flags(void);
++size_t secmem_get_max_size (void);
++
++#if 0
++{
++#endif
++#ifdef __cplusplus
++}
++#endif
++#endif /* _MEMORY_H */
+--- a/tqt/secqstring.h 2017-12-03 08:33:12.000000000 -0800
++++ b/tqt/secqstring.h 2024-02-26 11:02:47.822134762 -0800
+@@ -65,7 +65,7 @@
+
+ extern "C"
+ {
+-#include "memory.h"
++#include "../secmem/secmem.h"
+ }
+
+ /* We need the original qchar and qstring for transparent conversion
+--- a/tty/pinentry-tty.c 2021-08-11 04:16:10.000000000 -0700
++++ b/tty/pinentry-tty.c 2024-02-26 11:02:47.822134762 -0800
+@@ -41,7 +41,6 @@
+ #include <gpg-error.h>
+
+ #include "pinentry.h"
+-#include "memory.h"
+
+ #ifndef HAVE_DOSISH_SYSTEM
+ static int timed_out;
+--- a/w32/main.c 2022-08-24 03:31:59.000000000 -0700
++++ b/w32/main.c 2024-02-26 11:02:47.822134762 -0800
+@@ -29,7 +29,6 @@
+ #endif
+
+ #include "pinentry.h"
+-#include "memory.h"
+
+ #include "resource.h"
+ /* #include "msgcodes.h" */
diff --git a/app-crypt/pinentry/files/pinentry-1.3.0-automagic.patch b/app-crypt/pinentry/files/pinentry-1.3.0-automagic.patch
new file mode 100644
index 000000000000..a9f59ae66682
--- /dev/null
+++ b/app-crypt/pinentry/files/pinentry-1.3.0-automagic.patch
@@ -0,0 +1,141 @@
+https://dev.gnupg.org/T6161
+https://bugs.gentoo.org/819939
+https://bugs.gentoo.org/837719
+--- a/configure.ac
++++ b/configure.ac
+@@ -514,8 +514,12 @@ fi
+ dnl
+ dnl Check for libX11 library
+ dnl
++AC_ARG_WITH(x,
++ AS_HELP_STRING([--with-x],[use libX11]),
++ [want_x11=$withval], [want_x11=maybe])
++
+ have_x11=no
+-if test "$have_w32_system" != "yes"; then
++AS_IF([test "$have_w32_system" != "yes" && test "$want_x11" != "no"], [
+ PKG_CHECK_MODULES(
+ LIBX11,
+ [x11],
+@@ -525,18 +529,20 @@ if test "$have_w32_system" != "yes"; then
+ have_x11=no
+ ]
+ )
++])
+
+- if test "$have_x11" = "yes"; then
+- AC_DEFINE(HAVE_X11, 1,
+- [The pinentries can optionally use x11.])
+- fi
+-fi
++AS_IF([test "$have_x11" = "yes"], [AC_DEFINE(HAVE_X11, 1, [The pinentries can optionally use x11.])])
+
+ dnl
+ dnl Check for KF5WaylandClient library
+ dnl
++
++AC_ARG_ENABLE(kf5-wayland,
++ AS_HELP_STRING([--enable-kf5-wayland],[use KF5WaylandClient for capslock indication on Wayland]),
++ [want_kf5_wayland=$enableval], [want_kf5_wayland=maybe])
++
+ have_kf5waylandclient=no
+-if test "$have_w32_system" != "yes"; then
++AS_IF([test "$have_w32_system" != "yes" && test "$want_kf5_wayland" != "no"], [
+ PKG_CHECK_MODULES(
+ KF5WAYLANDCLIENT,
+ [KF5WaylandClient >= 5.60],
+@@ -546,13 +552,18 @@ if test "$have_w32_system" != "yes"; then
+ have_kf5waylandclient=no
+ ]
+ )
+-fi
++])
+
+ dnl
+ dnl Check for KF6GuiAddons library
+ dnl
++
++AC_ARG_ENABLE(kf6-wayland,
++ AS_HELP_STRING([--enable-kf6-wayland],[use KF6GuiAddons for capslock indication and KF6WindowSystem for window parenting on Wayland]),
++ [want_kf6_wayland=$enableval], [want_kf6_wayland=maybe])
++
+ have_kf6guiaddons=no
+-if test "$have_w32_system" != "yes"; then
++AS_IF([test "$have_w32_system" != "yes" && test "$want_kf6_wayland" != "no"], [
+ PKG_CHECK_MODULES(
+ KF6GUIADDONS,
+ [KF6GuiAddons >= 5.240],
+@@ -562,7 +573,7 @@ if test "$have_w32_system" != "yes"; then
+ have_kf6guiaddons=no
+ ]
+ )
+-fi
++])
+
+ dnl
+ dnl Check for Qt5 pinentry program.
+@@ -663,7 +674,8 @@ dnl
+ dnl Check for KF6WindowSystem library
+ dnl
+ have_kf6windowsystem=no
+-if test "$have_w32_system" != "yes" && test "$pinentry_qt6" = "yes"; then
++
++AS_IF([test "$have_w32_system" != "yes" && test "$want_kf6_wayland" != "no"], [
+ PKG_CHECK_MODULES(
+ KF6WINDOWSYSTEM,
+ [KF6WindowSystem >= 5.240],
+@@ -673,7 +685,7 @@ if test "$have_w32_system" != "yes" && test "$pinentry_qt6" = "yes"; then
+ have_kf6windowsystem=no
+ ]
+ )
+-fi
++])
+
+ if test "$have_kf6windowsystem" = "yes"; then
+ PINENTRY_QT6_CFLAGS="$KF6WINDOWSYSTEM_CFLAGS $PINENTRY_QT6_CFLAGS"
+--- a/m4/qt5.m4
++++ b/m4/qt5.m4
+@@ -33,6 +33,10 @@ AC_DEFUN([FIND_QT5],
+ enable_pinentry_qt5=$enableval,
+ enable_pinentry_qt5="try")
+
++ AC_ARG_ENABLE(qtx11extras,
++ AS_HELP_STRING([--enable-qtx11extras],[use Qt5X11Extras for capslock indication on X11]),
++ [want_qtx11extras=$enableval], [want_qtx11extras=maybe])
++
+ have_qt5_libs="no";
+ require_qt5_cpp11="no";
+
+@@ -63,20 +67,22 @@ AC_DEFUN([FIND_QT5],
+ fi
+ fi
+
+- if test "$have_x11" = "yes"; then
++ have_qt5_x11extras=no
++ AS_IF([test "$have_x11" = "yes" && test "$want_qtx11extras" != "no"], [
+ PKG_CHECK_MODULES(
+ PINENTRY_QT5_X11_EXTRAS,
+ Qt5X11Extras >= 5.1.0,
+ [have_qt5_x11extras="yes"],
+- [
+- AC_MSG_WARN([pinentry-qt will be built without Caps Lock warning on X11])
+- have_qt5_x11extras="no"
+- ])
+- if test "$have_qt5_x11extras" = "yes"; then
+- PINENTRY_QT5_CFLAGS="$LIBX11_CFLAGS $PINENTRY_QT5_CFLAGS $PINENTRY_QT5_X11_EXTRAS_CFLAGS"
+- PINENTRY_QT5_LIBS="$LIBX11_LIBS $PINENTRY_QT5_LIBS $PINENTRY_QT5_X11_EXTRAS_LIBS"
+- fi
+- fi
++ [have_qt5_x11extras="no"]
++ )
++ ])
++
++ AS_IF([test "$have_qt5_x11extras" = "yes"], [
++ PINENTRY_QT5_CFLAGS="$LIBX11_CFLAGS $PINENTRY_QT5_CFLAGS $PINENTRY_QT5_X11_EXTRAS_CFLAGS"
++ PINENTRY_QT5_LIBS="$LIBX11_LIBS $PINENTRY_QT5_LIBS $PINENTRY_QT5_X11_EXTRAS_LIBS"
++ ], [
++ AC_MSG_WARN([pinentry-qt will be built without Caps Lock warning on X11])
++ ])
+
+ AC_CHECK_TOOL(MOC5, moc)
+ AC_MSG_CHECKING([moc version])
diff --git a/app-crypt/pinentry/files/pinentry-1.3.0-ifdef-qt.patch b/app-crypt/pinentry/files/pinentry-1.3.0-ifdef-qt.patch
new file mode 100644
index 000000000000..4fc724287515
--- /dev/null
+++ b/app-crypt/pinentry/files/pinentry-1.3.0-ifdef-qt.patch
@@ -0,0 +1,125 @@
+https://dev.gnupg.org/D596
+
+From 762346c5d1877cde6b37b191cd3c2469e1c7ddbb Mon Sep 17 00:00:00 2001
+From: Heiko Becker <heiko.becker@kde.org>
+Date: Mon, 18 Mar 2024 20:38:09 +0100
+Subject: [PATCH] qt5: Add a '5' to adjust defines
+
+They were changed from PINENTRY_QT_FOO to PINENTRY_QT5_FOO in
+1e79123c389584b8240387914b193be41b823e92.
+--- a/qt5/capslock.cpp
++++ b/qt5/capslock.cpp
+@@ -32,7 +32,7 @@
+ CapsLockWatcher::Private::Private(CapsLockWatcher *q)
+ : q{q}
+ {
+-#ifdef PINENTRY_QT_WAYLAND
++#ifdef PINENTRY_QT5_WAYLAND
+ if (qApp->platformName() == QLatin1String("wayland")) {
+ watchWayland();
+ }
+@@ -44,7 +44,7 @@ CapsLockWatcher::CapsLockWatcher(QObject *parent)
+ , d{new Private{this}}
+ {
+ if (qApp->platformName() == QLatin1String("wayland")) {
+-#ifndef PINENTRY_QT_WAYLAND
++#ifndef PINENTRY_QT5_WAYLAND
+ qWarning() << "CapsLockWatcher was compiled without support for Wayland";
+ #endif
+ }
+--- a/qt5/capslock_p.h
++++ b/qt5/capslock_p.h
+@@ -23,7 +23,7 @@
+
+ #include "capslock.h"
+
+-#ifdef PINENTRY_QT_WAYLAND
++#ifdef PINENTRY_QT5_WAYLAND
+ namespace KWayland
+ {
+ namespace Client
+@@ -38,12 +38,12 @@ class CapsLockWatcher::Private
+ {
+ public:
+ explicit Private(CapsLockWatcher *);
+-#ifdef PINENTRY_QT_WAYLAND
++#ifdef PINENTRY_QT5_WAYLAND
+ void watchWayland();
+ #endif
+
+ private:
+-#ifdef PINENTRY_QT_WAYLAND
++#ifdef PINENTRY_QT5_WAYLAND
+ void registry_seatAnnounced(quint32, quint32);
+ void seat_hasKeyboardChanged(bool);
+ void keyboard_modifiersChanged(quint32);
+@@ -52,7 +52,7 @@ private:
+ private:
+ CapsLockWatcher *const q;
+
+-#ifdef PINENTRY_QT_WAYLAND
++#ifdef PINENTRY_QT5_WAYLAND
+ KWayland::Client::Registry *registry = nullptr;
+ KWayland::Client::Seat *seat = nullptr;
+ #endif
+--- a/qt5/capslock_unix.cpp
++++ b/qt5/capslock_unix.cpp
+@@ -25,7 +25,7 @@
+ #include "capslock.h"
+ #include "capslock_p.h"
+
+-#ifdef PINENTRY_QT_WAYLAND
++#ifdef PINENTRY_QT5_WAYLAND
+ # include <KWayland/Client/connection_thread.h>
+ # include <KWayland/Client/keyboard.h>
+ # include <KWayland/Client/registry.h>
+@@ -34,7 +34,7 @@
+
+ #include <QGuiApplication>
+
+-#ifdef PINENTRY_QT_X11
++#ifdef PINENTRY_QT5_X11
+ # include <QX11Info>
+ # include <X11/XKBlib.h>
+ # undef Status
+@@ -42,25 +42,25 @@
+
+ #include <QDebug>
+
+-#ifdef PINENTRY_QT_WAYLAND
++#ifdef PINENTRY_QT5_WAYLAND
+ using namespace KWayland::Client;
+ #endif
+
+-#ifdef PINENTRY_QT_WAYLAND
++#ifdef PINENTRY_QT5_WAYLAND
+ static bool watchingWayland = false;
+ #endif
+
+ LockState capsLockState()
+ {
+ static bool reportUnsupportedPlatform = true;
+-#ifdef PINENTRY_QT_X11
++#ifdef PINENTRY_QT5_X11
+ if (qApp->platformName() == QLatin1String("xcb")) {
+ unsigned int state;
+ XkbGetIndicatorState(QX11Info::display(), XkbUseCoreKbd, &state);
+ return (state & 0x01) == 1 ? LockState::On : LockState::Off;
+ }
+ #endif
+-#ifdef PINENTRY_QT_WAYLAND
++#ifdef PINENTRY_QT5_WAYLAND
+ if (qApp->platformName() == QLatin1String("wayland")) {
+ if (!watchingWayland && reportUnsupportedPlatform) {
+ qDebug() << "Use CapsLockWatcher for checking for Caps Lock on Wayland";
+@@ -74,7 +74,7 @@ LockState capsLockState()
+ return LockState::Unknown;
+ }
+
+-#ifdef PINENTRY_QT_WAYLAND
++#ifdef PINENTRY_QT5_WAYLAND
+ void CapsLockWatcher::Private::watchWayland()
+ {
+ watchingWayland = true;
+--
+2.44.0