Index | Thread | Search

From:
Rafael Sadowski <rafael@sizeofvoid.org>
Subject:
Re: security/gpgme -qt6
To:
Stuart Henderson via ports <ports@openbsd.org>
Cc:
Jeremie Courreges-Anglas <jca@openbsd.org>, Stuart Henderson <sthen@openbsd.org>
Date:
Sat, 23 Mar 2024 22:15:13 +0100

Download raw body.

Thread
On Thu Mar 14, 2024 at 09:58:52PM +0000, Stuart Henderson via ports wrote:
> This needs something more, the qt-headers package needs to be knocked out
> unless one of the qt versions is built.

$ env TRUSTED_PKG_PATH=/usr/ports/packages/amd64/all doas pkg_add -Dunsigned -u
gpgme+gpgme-qt-1.23.2->gpgme-1.23.2p0+gpgme-qt-1.23.2p0+gpgme-qt-headers-1.23.2: internal conflict between gpgme-1.23.2p0 and gpgme-qt-1.23.2p0

Unfortunately, you're right. Do you have any idea how we can solve this puzzle?

(One comment below)

> 
> -- 
>  Sent from a phone, apologies for poor formatting.
> 
> On 14 March 2024 20:09:15 "Rafael Sadowski via ports" <ports@openbsd.org>
> wrote:
> 
> > Based on the fantastic work of jca@, below is a diff to add -qt6 flavor
> > support in gpgme. I have added the cmake qt6 tweak that we can see in
> > -qt5.
> > 
> > The diff needs a simple MODQT_ENV_SETUP tweak in qt6 and qt5. (Diff in a
> > different mail)
> > 
> > 
> > Looking for OKs after the look.
> > 
> > Rafael
> > 
> > diff --git a/security/gpgme/Makefile b/security/gpgme/Makefile
> > index 67bbcb43657..9ebd69008d9 100644
> > --- a/security/gpgme/Makefile
> > +++ b/security/gpgme/Makefile
> > @@ -1,16 +1,26 @@
> > COMMENT-main =	GnuPG Made Easy
> > +COMMENT-qt-headers =	Qt headers for GPGme
> > COMMENT-qt =	Qt bindings for GPGme
> > +COMMENT-qt6 =	Qt6 bindings for GPGme
> > 
> > VERSION =	1.23.2
> > +REVISION-main =	0
> > +REVISION-qt =	0
> > +
> > DISTNAME =	gpgme-${VERSION}
> > PKGNAME-main =	gpgme-${VERSION}
> > +PKGNAME-qt-headers =	gpgme-qt-headers-${VERSION}
> > PKGNAME-qt =	gpgme-qt-${VERSION}
> > +PKGNAME-qt6 =	gpgme-qt6-${VERSION}
> > +
> > +PKG_ARCH-qt-headers =	*
> > 
> > CATEGORIES =	security devel
> > 
> > SHARED_LIBS +=  gpgme                24.2     # 43.0
> > SHARED_LIBS +=  gpgmepp              3.3      # 26.0
> > SHARED_LIBS +=  qgpgme               3.2      # 20.0
> > +SHARED_LIBS +=  qgpgmeqt6            0.0      # 20.0
> > 
> > HOMEPAGE =	https://www.gnupg.org/software/gpgme/
> > 
> > @@ -20,44 +30,80 @@ EXTRACT_SUFX =	.tar.bz2
> > # GPLv2 - LGPLv2.1
> > PERMIT_PACKAGE=	Yes
> > 
> > -WANTLIB =	assuan gpg-error iconv intl
> > -WANTLIB-main =	${WANTLIB} c m
> > -WANTLIB-qt =	${COMPILER_LIBCXX} ${WANTLIB} Qt5Core double-conversion
> > -WANTLIB-qt +=	execinfo glib-2.0 gpgme gthread-2.0 icudata icui18n icuuc
> > -WANTLIB-qt +=	m pcre2-8 pcre2-16 z zstd
> > +WANTLIB-main =	${COMPILER_LIBCXX} assuan c gpg-error iconv intl m
> > +WANTLIB-qt-headers =
> > +WANTLIB-qt += ${COMPILER_LIBCXX} Qt5Core assuan double-conversion
> > +WANTLIB-qt += execinfo glib-2.0 gpg-error gpgme gpgmepp gthread-2.0
> > +WANTLIB-qt += iconv icudata icui18n icuuc intl m pcre2-16 pcre2-8
> > +WANTLIB-qt += z zstd
> > +WANTLIB-qt6 += ${COMPILER_LIBCXX} Qt6Core assuan b2 double-conversion
> > +WANTLIB-qt6 += execinfo glib-2.0 gpg-error gpgme gpgmepp gthread-2.0
> > +WANTLIB-qt6 += iconv icudata icui18n icuuc intl m pcre2-16 pcre2-8
> > +WANTLIB-qt6 += z zstd
> > 
> > COMPILER =	base-clang ports-gcc
> > 
> > -MULTI_PACKAGES =	-main -qt
> > -PSEUDO_FLAVORS =	no_qt
> > -FLAVOR ?=
> > +MULTI_PACKAGES =	-main -qt-headers -qt -qt6
> > +# XXX we forcefully set either no_qt or no_qt6,
> > +# is "bootstrap" doing anything useful?
> > +PSEUDO_FLAVORS =	no_qt no_qt6 bootstrap qt6
> > +FLAVOR ?=		no_qt6 bootstrap
> > +
> > +.if ${FLAVOR:Mqt6}
> > +# Cannot build both qt5 and qt6 at the same time
> > +# FLAVOR="qt6 no_qt6" makes no sense
> > +FLAVOR :=		no_qt ${FLAVOR:Nno_qt6}
> > +.elif !${FLAVOR:Mno_qt*} && !${FLAVOR:Mqt6}
> > +# XXX will portcheck STFU?!?
> > +FLAVOR +=		no_qt6
> > +.endif
> > 
> > -# don't depend on Qt5 on arches where it's known to fail
> > +# don't depend on Qt on arches where it's known to fail
> > +# XXX needs MODQT_NOT_FOR_ARCHS?
> > NOT_FOR_ARCHS-qt =	alpha mips64 sh
> > +NOT_FOR_ARCHS-qt6 =	alpha mips64 sh
> > 
> > CONFIGURE_STYLE =	gnu
> > 
> > BUILD_DEPENDS =		security/gnupg>=2.2.23p1
> > RUN_DEPENDS =		security/gnupg>=2.2.23p1
> > -LIB_DEPENDS-main =	${LIB_DEPENDS:N*qt*} \
> > -			devel/gettext,-runtime \
> > +LIB_DEPENDS-main =	devel/gettext,-runtime \
> > 			security/libgpg-error>=1.4 \
> > 			security/libassuan
> > +LIB_DEPENDS-qt-headers =
> > +RUN_DEPENDS-qt-headers =
> > +# XXX WIP: not accurate enough, should handle REVISION
> > +LIB_DEPENDS-qt +=	${MODQT5_LIB_DEPENDS} \
> > +			gpgme-=${VERSION}:${BUILD_PKGPATH},-main
> > +RUN_DEPENDS-qt =	gpgme-qt-headers-=${VERSION}:${BUILD_PKGPATH},-qt-headers

That doesn't help but ...
gpgme-=${VERSION}p${REVISION-main}:${BUILD_PKGPATH},-main

> > +LIB_DEPENDS-qt6 +=	${MODQT6_LIB_DEPENDS} \
> > +			gpgme-=${VERSION}:${BUILD_PKGPATH},-main
> > +RUN_DEPENDS-qt6 =	gpgme-qt-headers-=${VERSION}:${BUILD_PKGPATH},-qt-headers
> > 
> > CONFIGURE_ENV +=	CPPFLAGS="-I${LOCALBASE}/include" \
> > 			LDFLAGS="-L${LOCALBASE}/lib" \
> > 			ac_cv_prog_DOXYGEN=false
> > 
> > -.include <bsd.port.arch.mk>
> > +MODQT_DEPS =		No
> > +MODQT_ENV_SETUP =	No
> > 
> > -.if ${BUILD_PACKAGES:M-qt}
> > -MODULES +=		x11/qt5
> > +.include <bsd.port.arch.mk>
> > +.if ${BUILD_PACKAGES:M-qt} && ${BUILD_PACKAGES:M-qt6}
> > +ERRORS +=		"Cannot build Qt and Qt6 support at the same time."
> > +.elif ${BUILD_PACKAGES:M-qt}
> > +MODULES +=		x11/qt5 \
> > +			x11/qt6
> > +MODQT5_DEPS =		Yes
> > +MODQT5_ENV_SETUP =	Yes
> > CONFIGURE_ARGS +=	--enable-languages='cpp qt'
> > -LIB_DEPENDS-qt +=	${LIB_DEPENDS} \
> > -			gpgme-=${VERSION}:${BUILD_PKGPATH},-main
> > +.elif ${BUILD_PACKAGES:M-qt6}
> > +MODULES +=		x11/qt6 \
> > +			x11/qt5
> > +MODQT6_DEPS =		Yes
> > +MODQT6_ENV_SETUP =	Yes
> > +CONFIGURE_ARGS +=	--enable-languages='cpp qt6'
> > .else
> > -COMPILER_LANGS =	c
> > -CONFIGURE_ARGS +=	--enable-languages=''
> > +CONFIGURE_ARGS +=	--enable-languages='cpp'
> > .endif
> > 
> > # needed for the regression tests
> > @@ -65,6 +111,7 @@ USE_GMAKE =		Yes
> > 
> > pre-configure:
> > 	${SUBST_CMD} ${WRKSRC}/lang/cpp/src/GpgmeppConfig.cmake.in.in \
> > -	    ${WRKSRC}/lang/qt/src/QGpgmeConfig.cmake.in.in
> > +	    ${WRKSRC}/lang/qt/src/QGpgmeConfig.cmake.in.in \
> > +	    ${WRKSRC}/lang/qt/src/QGpgmeQt6Config.cmake.in.in
> > 
> > .include <bsd.port.mk>
> > diff --git
> > a/security/gpgme/patches/patch-lang_qt_src_QGpgmeQt6Config_cmake_in_in
> > b/security/gpgme/patches/patch-lang_qt_src_QGpgmeQt6Config_cmake_in_in
> > new file mode 100644
> > index 00000000000..81eac551914
> > --- /dev/null
> > +++ b/security/gpgme/patches/patch-lang_qt_src_QGpgmeQt6Config_cmake_in_in
> > @@ -0,0 +1,12 @@
> > +Index: lang/qt/src/QGpgmeQt6Config.cmake.in.in
> > +--- lang/qt/src/QGpgmeQt6Config.cmake.in.in.orig
> > ++++ lang/qt/src/QGpgmeQt6Config.cmake.in.in
> > +@@ -64,7 +64,7 @@ add_library(QGpgmeQt6 SHARED IMPORTED)
> > + set_target_properties(QGpgmeQt6 PROPERTIES
> > +   INTERFACE_INCLUDE_DIRECTORIES
> > "@resolved_includedir@/qgpgme;@resolved_includedir@"
> > +   INTERFACE_LINK_LIBRARIES "Gpgmepp;Qt6::Core"
> > +-  IMPORTED_LOCATION "@resolved_libdir@/libqgpgmeqt6@libsuffix@"
> > ++  IMPORTED_LOCATION
> > "@resolved_libdir@/libqgpgmeqt6@libsuffix@.${LIBqgpgmeqt6_VERSION}"
> > + )
> > +
> > + if(CMAKE_VERSION VERSION_LESS 2.8.12)
> > diff --git a/security/gpgme/pkg/DESCR-qt b/security/gpgme/pkg/DESCR-qt
> > index d0ea53fcd01..49a04ab5310 100644
> > --- a/security/gpgme/pkg/DESCR-qt
> > +++ b/security/gpgme/pkg/DESCR-qt
> > @@ -1 +1 @@
> > -Qt and C++  bindings for GnuPG Made Easy (GPGME).
> > +Qt5 bindings for GnuPG Made Easy (GPGME).
> > diff --git a/security/gpgme/pkg/DESCR-qt-headers
> > b/security/gpgme/pkg/DESCR-qt-headers
> > new file mode 100644
> > index 00000000000..874baabfc61
> > --- /dev/null
> > +++ b/security/gpgme/pkg/DESCR-qt-headers
> > @@ -0,0 +1,4 @@
> > +GnuPG Made Easy (GPGME) is a library designed to make access to
> > +GnuPG easier for applications.
> > +
> > +This package provides only the headers for the Qt GPGME bindings.
> > diff --git a/security/gpgme/pkg/DESCR-qt6 b/security/gpgme/pkg/DESCR-qt6
> > new file mode 100644
> > index 00000000000..4a7928755b2
> > --- /dev/null
> > +++ b/security/gpgme/pkg/DESCR-qt6
> > @@ -0,0 +1 @@
> > +Qt6 bindings for GnuPG Made Easy (GPGME).
> > diff --git a/security/gpgme/pkg/PLIST-main b/security/gpgme/pkg/PLIST-main
> > index 66cdf7dfcb1..b3a4c20284a 100644
> > --- a/security/gpgme/pkg/PLIST-main
> > +++ b/security/gpgme/pkg/PLIST-main
> > @@ -1,15 +1,64 @@
> > -@pkgpath security/gpgme
> > +@conflict gpgme-qt-<=1.23.2
> > +@pkgpath security/gpgme,-main
> > bin/gpgme-config
> > @bin bin/gpgme-json
> > @bin bin/gpgme-tool
> > -include/QGpgME/WKDRefreshJob
> > +include/gpgme++/
> > +include/gpgme++/configuration.h
> > +include/gpgme++/context.h
> > +include/gpgme++/data.h
> > +include/gpgme++/decryptionresult.h
> > +include/gpgme++/defaultassuantransaction.h
> > +include/gpgme++/editinteractor.h
> > +include/gpgme++/encryptionresult.h
> > +include/gpgme++/engineinfo.h
> > +include/gpgme++/error.h
> > +include/gpgme++/eventloopinteractor.h
> > +include/gpgme++/exception.h
> > +include/gpgme++/global.h
> > +include/gpgme++/gpgaddexistingsubkeyeditinteractor.h
> > +include/gpgme++/gpgadduserideditinteractor.h
> > +include/gpgme++/gpgagentgetinfoassuantransaction.h
> > +include/gpgme++/gpggencardkeyinteractor.h
> > +include/gpgme++/gpgmefw.h
> > +include/gpgme++/gpgmepp_export.h
> > +include/gpgme++/gpgmepp_version.h
> > +include/gpgme++/gpgrevokekeyeditinteractor.h
> > +include/gpgme++/gpgsetexpirytimeeditinteractor.h
> > +include/gpgme++/gpgsetownertrusteditinteractor.h
> > +include/gpgme++/gpgsignkeyeditinteractor.h
> > +include/gpgme++/importresult.h
> > +include/gpgme++/interfaces/
> > +include/gpgme++/interfaces/assuantransaction.h
> > +include/gpgme++/interfaces/dataprovider.h
> > +include/gpgme++/interfaces/passphraseprovider.h
> > +include/gpgme++/interfaces/progressprovider.h
> > +include/gpgme++/interfaces/statusconsumer.h
> > +include/gpgme++/key.h
> > +include/gpgme++/keygenerationresult.h
> > +include/gpgme++/keylistresult.h
> > +include/gpgme++/notation.h
> > +include/gpgme++/result.h
> > +include/gpgme++/scdgetinfoassuantransaction.h
> > +include/gpgme++/signingresult.h
> > +include/gpgme++/statusconsumerassuantransaction.h
> > +include/gpgme++/swdbresult.h
> > +include/gpgme++/tofuinfo.h
> > +include/gpgme++/trustitem.h
> > +include/gpgme++/verificationresult.h
> > +include/gpgme++/vfsmountresult.h
> > include/gpgme.h
> > -include/qgpgme/wkdrefreshjob.h
> > @info info/gpgme.info
> > lib/cmake/
> > +lib/cmake/Gpgmepp/
> > +lib/cmake/Gpgmepp/GpgmeppConfig.cmake
> > +lib/cmake/Gpgmepp/GpgmeppConfigVersion.cmake
> > @static-lib lib/libgpgme.a
> > lib/libgpgme.la
> > @lib lib/libgpgme.so.${LIBgpgme_VERSION}
> > +@static-lib lib/libgpgmepp.a
> > +lib/libgpgmepp.la
> > +@lib lib/libgpgmepp.so.${LIBgpgmepp_VERSION}
> > lib/pkgconfig/gpgme-glib.pc
> > lib/pkgconfig/gpgme.pc
> > share/aclocal/gpgme.m4
> > diff --git a/security/gpgme/pkg/PLIST-qt b/security/gpgme/pkg/PLIST-qt
> > index ae1eaac39de..bf3db87c504 100644
> > --- a/security/gpgme/pkg/PLIST-qt
> > +++ b/security/gpgme/pkg/PLIST-qt
> > @@ -1,158 +1,6 @@
> > -include/QGpgME/
> > -include/QGpgME/AbstractImportJob
> > -include/QGpgME/AddExistingSubkeyJob
> > -include/QGpgME/AddUserIDJob
> > -include/QGpgME/ChangeExpiryJob
> > -include/QGpgME/ChangeOwnerTrustJob
> > -include/QGpgME/ChangePasswdJob
> > -include/QGpgME/CryptoConfig
> > -include/QGpgME/DN
> > -include/QGpgME/DataProvider
> > -include/QGpgME/Debug
> > -include/QGpgME/DecryptJob
> > -include/QGpgME/DecryptVerifyArchiveJob
> > -include/QGpgME/DecryptVerifyJob
> > -include/QGpgME/DefaultKeyGenerationJob
> > -include/QGpgME/DeleteJob
> > -include/QGpgME/DownloadJob
> > -include/QGpgME/EncryptArchiveJob
> > -include/QGpgME/EncryptJob
> > -include/QGpgME/ExportJob
> > -include/QGpgME/FileListDataProvider
> > -include/QGpgME/GpgCardJob
> > -include/QGpgME/HierarchicalKeyKistJob
> > -include/QGpgME/ImportFromKeyserverJob
> > -include/QGpgME/ImportJob
> > -include/QGpgME/Job
> > -include/QGpgME/KeyForMailboxJob
> > -include/QGpgME/KeyGenerationJob
> > -include/QGpgME/KeyListJob
> > -include/QGpgME/ListAllKeysJob
> > -include/QGpgME/MultiDeleteJob
> > -include/QGpgME/Protocol
> > -include/QGpgME/QGpgMENewCryptoConfig
> > -include/QGpgME/QuickJob
> > -include/QGpgME/ReceiveKeysJob
> > -include/QGpgME/RefreshKeysJob
> > -include/QGpgME/RevokeKeyJob
> > -include/QGpgME/SetPrimaryUserIDJob
> > -include/QGpgME/SignArchiveJob
> > -include/QGpgME/SignEncryptArchiveJob
> > -include/QGpgME/SignEncryptJob
> > -include/QGpgME/SignJob
> > -include/QGpgME/SignKeyJob
> > -include/QGpgME/SpecialJob
> > -include/QGpgME/TofuPolicyJob
> > -include/QGpgME/VerifyDetachedJob
> > -include/QGpgME/VerifyOpaqueJob
> > -include/QGpgME/WKDLookupJob
> > -include/QGpgME/WKDLookupResult
> > -include/QGpgME/WKSPublishJob
> > -include/gpgme++/
> > -include/gpgme++/configuration.h
> > -include/gpgme++/context.h
> > -include/gpgme++/data.h
> > -include/gpgme++/decryptionresult.h
> > -include/gpgme++/defaultassuantransaction.h
> > -include/gpgme++/editinteractor.h
> > -include/gpgme++/encryptionresult.h
> > -include/gpgme++/engineinfo.h
> > -include/gpgme++/error.h
> > -include/gpgme++/eventloopinteractor.h
> > -include/gpgme++/exception.h
> > -include/gpgme++/global.h
> > -include/gpgme++/gpgaddexistingsubkeyeditinteractor.h
> > -include/gpgme++/gpgadduserideditinteractor.h
> > -include/gpgme++/gpgagentgetinfoassuantransaction.h
> > -include/gpgme++/gpggencardkeyinteractor.h
> > -include/gpgme++/gpgmefw.h
> > -include/gpgme++/gpgmepp_export.h
> > -include/gpgme++/gpgmepp_version.h
> > -include/gpgme++/gpgrevokekeyeditinteractor.h
> > -include/gpgme++/gpgsetexpirytimeeditinteractor.h
> > -include/gpgme++/gpgsetownertrusteditinteractor.h
> > -include/gpgme++/gpgsignkeyeditinteractor.h
> > -include/gpgme++/importresult.h
> > -include/gpgme++/interfaces/
> > -include/gpgme++/interfaces/assuantransaction.h
> > -include/gpgme++/interfaces/dataprovider.h
> > -include/gpgme++/interfaces/passphraseprovider.h
> > -include/gpgme++/interfaces/progressprovider.h
> > -include/gpgme++/interfaces/statusconsumer.h
> > -include/gpgme++/key.h
> > -include/gpgme++/keygenerationresult.h
> > -include/gpgme++/keylistresult.h
> > -include/gpgme++/notation.h
> > -include/gpgme++/result.h
> > -include/gpgme++/scdgetinfoassuantransaction.h
> > -include/gpgme++/signingresult.h
> > -include/gpgme++/statusconsumerassuantransaction.h
> > -include/gpgme++/swdbresult.h
> > -include/gpgme++/tofuinfo.h
> > -include/gpgme++/trustitem.h
> > -include/gpgme++/verificationresult.h
> > -include/gpgme++/vfsmountresult.h
> > -include/qgpgme/
> > -include/qgpgme/abstractimportjob.h
> > -include/qgpgme/addexistingsubkeyjob.h
> > -include/qgpgme/adduseridjob.h
> > -include/qgpgme/changeexpiryjob.h
> > -include/qgpgme/changeownertrustjob.h
> > -include/qgpgme/changepasswdjob.h
> > -include/qgpgme/cryptoconfig.h
> > -include/qgpgme/dataprovider.h
> > -include/qgpgme/debug.h
> > -include/qgpgme/decryptjob.h
> > -include/qgpgme/decryptverifyarchivejob.h
> > -include/qgpgme/decryptverifyjob.h
> > -include/qgpgme/defaultkeygenerationjob.h
> > -include/qgpgme/deletejob.h
> > -include/qgpgme/dn.h
> > -include/qgpgme/downloadjob.h
> > -include/qgpgme/encryptarchivejob.h
> > -include/qgpgme/encryptjob.h
> > -include/qgpgme/exportjob.h
> > -include/qgpgme/filelistdataprovider.h
> > -include/qgpgme/gpgcardjob.h
> > -include/qgpgme/hierarchicalkeylistjob.h
> > -include/qgpgme/importfromkeyserverjob.h
> > -include/qgpgme/importjob.h
> > -include/qgpgme/job.h
> > -include/qgpgme/keyformailboxjob.h
> > -include/qgpgme/keygenerationjob.h
> > -include/qgpgme/keylistjob.h
> > -include/qgpgme/listallkeysjob.h
> > -include/qgpgme/multideletejob.h
> > -include/qgpgme/protocol.h
> > -include/qgpgme/qgpgme_export.h
> > -include/qgpgme/qgpgme_version.h
> > -include/qgpgme/qgpgmenewcryptoconfig.h
> > -include/qgpgme/quickjob.h
> > -include/qgpgme/receivekeysjob.h
> > -include/qgpgme/refreshkeysjob.h
> > -include/qgpgme/revokekeyjob.h
> > -include/qgpgme/setprimaryuseridjob.h
> > -include/qgpgme/signarchivejob.h
> > -include/qgpgme/signencryptarchivejob.h
> > -include/qgpgme/signencryptjob.h
> > -include/qgpgme/signjob.h
> > -include/qgpgme/signkeyjob.h
> > -include/qgpgme/specialjob.h
> > -include/qgpgme/tofupolicyjob.h
> > -include/qgpgme/verifydetachedjob.h
> > -include/qgpgme/verifyopaquejob.h
> > -include/qgpgme/wkdlookupjob.h
> > -include/qgpgme/wkdlookupresult.h
> > -include/qgpgme/wkspublishjob.h
> > -lib/cmake/Gpgmepp/
> > -lib/cmake/Gpgmepp/GpgmeppConfig.cmake
> > -lib/cmake/Gpgmepp/GpgmeppConfigVersion.cmake
> > lib/cmake/QGpgme/
> > lib/cmake/QGpgme/QGpgmeConfig.cmake
> > lib/cmake/QGpgme/QGpgmeConfigVersion.cmake
> > -@static-lib lib/libgpgmepp.a
> > -lib/libgpgmepp.la
> > -@lib lib/libgpgmepp.so.${LIBgpgmepp_VERSION}
> > @static-lib lib/libqgpgme.a
> > lib/libqgpgme.la
> > @lib lib/libqgpgme.so.${LIBqgpgme_VERSION}
> > diff --git a/security/gpgme/pkg/PLIST-qt-headers
> > b/security/gpgme/pkg/PLIST-qt-headers
> > new file mode 100644
> > index 00000000000..032c6dcc7b4
> > --- /dev/null
> > +++ b/security/gpgme/pkg/PLIST-qt-headers
> > @@ -0,0 +1,105 @@
> > +@conflict gpgme-qt-<=1.23.2
> > +include/QGpgME/
> > +include/QGpgME/AbstractImportJob
> > +include/QGpgME/AddExistingSubkeyJob
> > +include/QGpgME/AddUserIDJob
> > +include/QGpgME/ChangeExpiryJob
> > +include/QGpgME/ChangeOwnerTrustJob
> > +include/QGpgME/ChangePasswdJob
> > +include/QGpgME/CryptoConfig
> > +include/QGpgME/DN
> > +include/QGpgME/DataProvider
> > +include/QGpgME/Debug
> > +include/QGpgME/DecryptJob
> > +include/QGpgME/DecryptVerifyArchiveJob
> > +include/QGpgME/DecryptVerifyJob
> > +include/QGpgME/DefaultKeyGenerationJob
> > +include/QGpgME/DeleteJob
> > +include/QGpgME/DownloadJob
> > +include/QGpgME/EncryptArchiveJob
> > +include/QGpgME/EncryptJob
> > +include/QGpgME/ExportJob
> > +include/QGpgME/FileListDataProvider
> > +include/QGpgME/GpgCardJob
> > +include/QGpgME/HierarchicalKeyKistJob
> > +include/QGpgME/ImportFromKeyserverJob
> > +include/QGpgME/ImportJob
> > +include/QGpgME/Job
> > +include/QGpgME/KeyForMailboxJob
> > +include/QGpgME/KeyGenerationJob
> > +include/QGpgME/KeyListJob
> > +include/QGpgME/ListAllKeysJob
> > +include/QGpgME/MultiDeleteJob
> > +include/QGpgME/Protocol
> > +include/QGpgME/QGpgMENewCryptoConfig
> > +include/QGpgME/QuickJob
> > +include/QGpgME/ReceiveKeysJob
> > +include/QGpgME/RefreshKeysJob
> > +include/QGpgME/RevokeKeyJob
> > +include/QGpgME/SetPrimaryUserIDJob
> > +include/QGpgME/SignArchiveJob
> > +include/QGpgME/SignEncryptArchiveJob
> > +include/QGpgME/SignEncryptJob
> > +include/QGpgME/SignJob
> > +include/QGpgME/SignKeyJob
> > +include/QGpgME/SpecialJob
> > +include/QGpgME/TofuPolicyJob
> > +include/QGpgME/VerifyDetachedJob
> > +include/QGpgME/VerifyOpaqueJob
> > +include/QGpgME/WKDLookupJob
> > +include/QGpgME/WKDLookupResult
> > +include/QGpgME/WKDRefreshJob
> > +include/QGpgME/WKSPublishJob
> > +include/qgpgme/
> > +include/qgpgme/abstractimportjob.h
> > +include/qgpgme/addexistingsubkeyjob.h
> > +include/qgpgme/adduseridjob.h
> > +include/qgpgme/changeexpiryjob.h
> > +include/qgpgme/changeownertrustjob.h
> > +include/qgpgme/changepasswdjob.h
> > +include/qgpgme/cryptoconfig.h
> > +include/qgpgme/dataprovider.h
> > +include/qgpgme/debug.h
> > +include/qgpgme/decryptjob.h
> > +include/qgpgme/decryptverifyarchivejob.h
> > +include/qgpgme/decryptverifyjob.h
> > +include/qgpgme/defaultkeygenerationjob.h
> > +include/qgpgme/deletejob.h
> > +include/qgpgme/dn.h
> > +include/qgpgme/downloadjob.h
> > +include/qgpgme/encryptarchivejob.h
> > +include/qgpgme/encryptjob.h
> > +include/qgpgme/exportjob.h
> > +include/qgpgme/filelistdataprovider.h
> > +include/qgpgme/gpgcardjob.h
> > +include/qgpgme/hierarchicalkeylistjob.h
> > +include/qgpgme/importfromkeyserverjob.h
> > +include/qgpgme/importjob.h
> > +include/qgpgme/job.h
> > +include/qgpgme/keyformailboxjob.h
> > +include/qgpgme/keygenerationjob.h
> > +include/qgpgme/keylistjob.h
> > +include/qgpgme/listallkeysjob.h
> > +include/qgpgme/multideletejob.h
> > +include/qgpgme/protocol.h
> > +include/qgpgme/qgpgme_export.h
> > +include/qgpgme/qgpgme_version.h
> > +include/qgpgme/qgpgmenewcryptoconfig.h
> > +include/qgpgme/quickjob.h
> > +include/qgpgme/receivekeysjob.h
> > +include/qgpgme/refreshkeysjob.h
> > +include/qgpgme/revokekeyjob.h
> > +include/qgpgme/setprimaryuseridjob.h
> > +include/qgpgme/signarchivejob.h
> > +include/qgpgme/signencryptarchivejob.h
> > +include/qgpgme/signencryptjob.h
> > +include/qgpgme/signjob.h
> > +include/qgpgme/signkeyjob.h
> > +include/qgpgme/specialjob.h
> > +include/qgpgme/tofupolicyjob.h
> > +include/qgpgme/verifydetachedjob.h
> > +include/qgpgme/verifyopaquejob.h
> > +include/qgpgme/wkdlookupjob.h
> > +include/qgpgme/wkdlookupresult.h
> > +include/qgpgme/wkdrefreshjob.h
> > +include/qgpgme/wkspublishjob.h
> > diff --git a/security/gpgme/pkg/PLIST-qt6 b/security/gpgme/pkg/PLIST-qt6
> > new file mode 100644
> > index 00000000000..80c776b51ba
> > --- /dev/null
> > +++ b/security/gpgme/pkg/PLIST-qt6
> > @@ -0,0 +1,6 @@
> > +lib/cmake/QGpgmeQt6/
> > +lib/cmake/QGpgmeQt6/QGpgmeQt6Config.cmake
> > +lib/cmake/QGpgmeQt6/QGpgmeQt6ConfigVersion.cmake
> > +@static-lib lib/libqgpgmeqt6.a
> > +lib/libqgpgmeqt6.la
> > +@lib lib/libqgpgmeqt6.so.${LIBqgpgmeqt6_VERSION}
>