GpgME++ and QGpgME now Released as part of GpgME

Andre Heinecke aheinecke at intevation.de
Wed Sep 21 15:46:43 UTC 2016


Hi,

I'm pleased to announce that the C++ bindings for GnuPG's GPGME library and 
the Qt Job API for GpgME++ (QGpgME) that was previously in Libkleo are now 
part of the upstream GPGME repository and have been released today with 
GPGME-1.7:

https://lists.gnupg.org/pipermail/gnupg-devel/2016-September/031647.html

This means:
* With Applications 16.12 there will be no more release of pim/gpgmepp

* Libkleo will still be released with the focus of providing common classes to 
be used in different Applications working with GnuPG based crypto. The backend 
abstraction and Chiasmus support (which was untested for years and probably 
didn't work anymore) will be removed.


For Packagers this will also mean that you are likely (at least until we are 
done adding support for GnuPG's latest features in KMail / Kleopatra) to 
require a very new GPGME (not GnuPG itself) version that is built with the qt 
and c++ binding enabled. Thanks to the CI Team we already have GPGME on 
build.kde.org :-).

Sorry about that, but this will mean that there are two PIM libraries fewer 
(yay) and in the long term that these bindings are maintained by the GnuPG 
Project. (And there will be many less Ifdefs in our code as we previously 
supported multiple versions of GPGME in GpgMEpp).

Another bad thing: As a concession to the GPGME maintainer I ported the build 
system back in time to autotools *brr*. But then your GnuPG Packagers are 
probably more used to that anyway ;-). At least the libraries still install 
CMake Config files. So cmake based users will be able to easily switch from

	find_package(KF5Gpgmepp) to
	find_package(Gpgmepp)

Both libraries should be coinstallable by default. But the header names of 
GpgMEpp will conflict with the headers from KDE4's kdepimlibs/gpgme++.


QGpgME:
--------------
QGpgME is now basically a Tier 0 (requires qtbase only) library. It provides a 
consistent Job based API and is heavily used by KMail and Kleopatra as the 
highest Abstraction for crypto.

Please not that because QGpgME was mostly part of Libkleo (although 
confusingly libqpgme was part of gpgmepp) it is licensed under the GPLv2+ and 
not under LGPL as the rest of GPGME.

There was some inconsistent error handling code in libkleo that required 
KMessageBox and Ki18n in the past. This as been removed and applications need 
to handle these errors themself.

The API is mostly untouched but functionality moved from the Libkleo Namspace 
to the QGpgME Namespace.

Instead of using the CryptoBackendFactory / Protocol to obtain jobs you now 
just use:
QGpgME::openpgp()->someJob(...)
or 
QGpgME::smime()->someJob(...)


GpgMEpp:
---------------
Yes we use a different casing for GPGME everywhere, sorry, historic reasons,...

This should be mostly a drop in replacement for KF5Gpgmepp. There were some 
API breaks to get rid of boost (in favour of C++11) so you might need to 
replace some boost::shared_ptr with the standard equivalent.
For the Assuan based API (I am not aware of a use outside of Kleopatra) there 
was a larger break to port from the deprecated auto_ptr to unique_ptr.


We'll start switching to the new Library soon in Kdepim there are already some 
branches prepared for this. For developers I'll try to add gpgme to kdesrc-
build so that the transition will not break your development builds.

My task for the transition is: https://phabricator.kde.org/T3158



Regards,
Andre

-- 
Andre Heinecke |  ++49-541-335083-262  | http://www.intevation.de/
Intevation GmbH, Neuer Graben 17, 49074 Osnabrück | AG Osnabrück, HR B 18998
Geschäftsführer: Frank Koormann, Bernhard Reiter, Dr. Jan-Oliver Wagner	
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 630 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/release-team/attachments/20160921/ce58fed6/attachment.sig>


More information about the release-team mailing list