kde-apps/kleopatra: fix build w/ gpgme-2

New revision as there's a chance it may break older gpgme compat.

Closes: https://bugs.gentoo.org/961317
Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
Sam James
2025-08-11 11:00:06 +01:00
parent f7bd614f7e
commit 805cb83c26
2 changed files with 193 additions and 0 deletions

View File

@@ -0,0 +1,121 @@
https://bugs.gentoo.org/961317
https://invent.kde.org/pim/kleopatra/-/commit/10b618703d74618c09b5e2b16e2db9d829aed93b
https://invent.kde.org/pim/kleopatra/-/commit/b1f3736de7ed3c2d4f58aa454064a4cd0f423250
https://invent.kde.org/pim/kleopatra/-/commit/d4f777ffa137148302ca39d5a2238c01c896605d
From 10b618703d74618c09b5e2b16e2db9d829aed93b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ingo=20Kl=C3=B6cker?= <dev@ingo-kloecker.de>
Date: Wed, 14 May 2025 17:29:18 +0200
Subject: [PATCH] Include QGpgME/Debug for QDebug operator for GpgME::Error
The missing QDebug operator was caught by the new explicit
conversion-to-bool operator for GpgME::Error. The safe-bool idiom didn't
prevent conversion of GpgME::Error to bool when passed to QDebug's
operator<<.
---
src/dialogs/useridswidget.cpp | 1 +
src/view/cardkeysview.cpp | 1 +
2 files changed, 2 insertions(+)
diff --git a/src/dialogs/useridswidget.cpp b/src/dialogs/useridswidget.cpp
index bcb540bc4..fc26e7b9e 100644
--- a/src/dialogs/useridswidget.cpp
+++ b/src/dialogs/useridswidget.cpp
@@ -33,6 +33,7 @@
#include <QPushButton>
#include <QVBoxLayout>
+#include <QGpgME/Debug>
#include <QGpgME/KeyListJob>
#include <QGpgME/Protocol>
diff --git a/src/view/cardkeysview.cpp b/src/view/cardkeysview.cpp
index eee754f7b..1f5a233aa 100644
--- a/src/view/cardkeysview.cpp
+++ b/src/view/cardkeysview.cpp
@@ -34,6 +34,7 @@
#include <KLocalizedString>
#include <KSharedConfig>
+#include <QGpgME/Debug>
#include <QGpgME/KeyListJob>
#include <QGpgME/Protocol>
--
GitLab
From b1f3736de7ed3c2d4f58aa454064a4cd0f423250 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ingo=20Kl=C3=B6cker?= <dev@ingo-kloecker.de>
Date: Wed, 14 May 2025 17:31:47 +0200
Subject: [PATCH] Use Error::isError() to check if an error occurred
The new explicit conversion-to-bool operator for Error prevents
implicit conversion of Error to bool.
---
src/crypto/signencrypttask.cpp | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/src/crypto/signencrypttask.cpp b/src/crypto/signencrypttask.cpp
index 483353f59..788a8865b 100644
--- a/src/crypto/signencrypttask.cpp
+++ b/src/crypto/signencrypttask.cpp
@@ -27,6 +27,7 @@
#include <QGpgME/SignEncryptArchiveJob>
#include <QGpgME/SignEncryptJob>
#include <QGpgME/SignJob>
+#include <qgpgme/qgpgme_version.h>
#include <gpgme++/encryptionresult.h>
#include <gpgme++/key.h>
@@ -1009,9 +1010,15 @@ QString SignEncryptFilesResult::overview() const
m_output.label,
!m_sresult.isNull(),
!m_eresult.isNull(),
+#if QGPGME_VERSION >= QT_VERSION_CHECK(2, 0, 0)
+ m_sresult.error().isError(),
+ m_eresult.error().isError(),
+ m_sresult.error().isError() ? m_sresult.error() : m_eresult.error());
+#else
m_sresult.error(),
m_eresult.error(),
m_sresult.error().code() ? m_sresult.error() : m_eresult.error());
+#endif
}
QString SignEncryptFilesResult::details() const
--
GitLab
From d4f777ffa137148302ca39d5a2238c01c896605d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ingo=20Kl=C3=B6cker?= <dev@ingo-kloecker.de>
Date: Wed, 14 May 2025 16:37:23 +0200
Subject: [PATCH] Remove long obsolete feature check
---
src/selftest/gpgagentcheck.cpp | 11 +----------
1 file changed, 1 insertion(+), 10 deletions(-)
diff --git a/src/selftest/gpgagentcheck.cpp b/src/selftest/gpgagentcheck.cpp
index 7f15d1c71..285635b83 100644
--- a/src/selftest/gpgagentcheck.cpp
+++ b/src/selftest/gpgagentcheck.cpp
@@ -37,16 +37,7 @@ public:
{
m_skipped = true;
- if (!hasFeature(AssuanEngineFeature, 0)) {
- m_error = i18n("GpgME library too old");
- m_explanation = i18nc("@info",
- "Either the GpgME library itself is too old, "
- "or the GpgME++ library was compiled against "
- "an older GpgME that did not support connecting to gpg-agent.");
- m_proposedFix = xi18nc("@info",
- "Upgrade to <application>gpgme</application> 1.2.0 or higher, "
- "and ensure that gpgme++ was compiled against it.");
- } else if (ensureEngineVersion(GpgME::GpgConfEngine, 2, 1, 0)) {
+ if (ensureEngineVersion(GpgME::GpgConfEngine, 2, 1, 0)) {
// 2.1 starts the agent on demand and requires it. So for 2.1.0 we can assume
// autostart works and we don't need to care about the agent.
m_skipped = false;
--
GitLab

View File

@@ -0,0 +1,72 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
ECM_HANDBOOK="optional"
ECM_TEST="forceoptional"
PVCUT=$(ver_cut 1-3)
KFMIN=6.13.0
QTMIN=6.7.2
inherit ecm gear.kde.org xdg
DESCRIPTION="Certificate manager and GUI for OpenPGP and CMS cryptography"
HOMEPAGE="https://apps.kde.org/kleopatra/"
LICENSE="GPL-2+ handbook? ( FDL-1.2+ )"
SLOT="6"
KEYWORDS="~amd64 ~arm64"
IUSE="pim"
# tests completely broken, bug #641720
RESTRICT="test"
DEPEND="
dev-cpp/gpgmepp:=
dev-libs/qgpgme:=
dev-libs/libassuan:=
dev-libs/libgpg-error
>=dev-qt/qtbase-${QTMIN}:6[dbus,gui,network,widgets]
>=kde-apps/kmime-${PVCUT}:6=
>=kde-apps/libkleo-${PVCUT}:6=
>=kde-apps/mimetreeparser-${PVCUT}:6=
>=kde-frameworks/kcodecs-${KFMIN}:6
>=kde-frameworks/kcolorscheme-${KFMIN}:6
>=kde-frameworks/kconfig-${KFMIN}:6
>=kde-frameworks/kconfigwidgets-${KFMIN}:6
>=kde-frameworks/kcoreaddons-${KFMIN}:6
>=kde-frameworks/kcrash-${KFMIN}:6
>=kde-frameworks/kdbusaddons-${KFMIN}:6
>=kde-frameworks/kguiaddons-${KFMIN}:6
>=kde-frameworks/ki18n-${KFMIN}:6
>=kde-frameworks/kiconthemes-${KFMIN}:6
>=kde-frameworks/kio-${KFMIN}:6
>=kde-frameworks/kitemmodels-${KFMIN}:6
>=kde-frameworks/knotifications-${KFMIN}:6
>=kde-frameworks/ktextwidgets-${KFMIN}:6
>=kde-frameworks/kwidgetsaddons-${KFMIN}:6
>=kde-frameworks/kwindowsystem-${KFMIN}:6
>=kde-frameworks/kxmlgui-${KFMIN}:6
pim? (
>=kde-apps/akonadi-mime-${PVCUT}:6=
>=kde-apps/kidentitymanagement-${PVCUT}:6=
>=kde-apps/kmailtransport-${PVCUT}:6=
)
"
RDEPEND="${DEPEND}
>=app-crypt/gnupg-2.1
app-crypt/paperkey
"
PATCHES=(
"${FILESDIR}"/${PN}-25.04.3-gpgme-2.patch
)
src_configure() {
local mycmakeargs=(
$(cmake_use_find_package pim KPim6AkonadiMime)
$(cmake_use_find_package pim KPim6IdentityManagementCore)
$(cmake_use_find_package pim KPim6MailTransport)
)
ecm_src_configure
}