[pkg-gnupg-maint] gpgme 1.7.1 FTBFS on 32-bit platforms due to symbols changes

Daniel Kahn Gillmor dkg at fifthhorseman.net
Mon Oct 31 17:08:55 UTC 2016


Hi Debian GnuPG packagers--

I just saw this notice about FTBFS on i386:

On Mon 2016-10-31 12:39:51 -0400, Debian buildds wrote:
>  * Source package: gpgme1.0
>  * Version: 1.7.1-2
>  * Architecture: i386
>  * State: failed
>  * Suite: experimental
>  * Builder: x86-ubc-01.debian.org
>  * Build log: https://buildd.debian.org/status/fetch.php?pkg=gpgme1.0&arch=i386&ver=1.7.1-2&stamp=1477931990&file=log

Looking at the log, it appears to be a problem with the symbols files
for C++ libraries (both gpgmepp and qgpgme).  For example:


dpkg-gensymbols: warning: some new symbols appeared in the symbols file: see diff output below
dpkg-gensymbols: warning: some symbols or patterns disappeared in the symbols file: see diff output below
dpkg-gensymbols: warning: debian/libgpgmepp6/DEBIAN/symbols doesn't match completely debian/libgpgmepp6.symbols
--- debian/libgpgmepp6.symbols (libgpgmepp6_1.7.1-2_i386)
+++ dpkg-gensymbolssAjySp	2016-10-31 16:40:12.872584277 +0000
@@ -161,7 +161,8 @@
  _ZN5GpgME19KeyGenerationResultC2ERKNS_5ErrorE at Base 1.7.0
  _ZN5GpgME19KeyGenerationResultC2Ev at Base 1.7.0
  _ZN5GpgME23data_provider_callbacksE at Base 1.7.0
- _ZN5GpgME24DefaultAssuanTransaction4dataEPKcm at Base 1.7.0
+ _ZN5GpgME24DefaultAssuanTransaction4dataEPKcj at Base 1.7.1-2
+#MISSING: 1.7.1-2# _ZN5GpgME24DefaultAssuanTransaction4dataEPKcm at Base 1.7.0
  _ZN5GpgME24DefaultAssuanTransaction6statusEPKcS2_ at Base 1.7.0
[…]


dpkg-gensymbols: warning: some new symbols appeared in the symbols file: see diff output below
dpkg-gensymbols: warning: some symbols or patterns disappeared in the symbols file: see diff output below
dpkg-gensymbols: warning: debian/libqgpgme7/DEBIAN/symbols doesn't match completely debian/libqgpgme7.symbols
--- debian/libqgpgme7.symbols (libqgpgme7_1.7.1-2_i386)
+++ dpkg-gensymbolsYTTRPd	2016-10-31 16:40:12.300565148 +0000
@@ -491,9 +491,12 @@
  _ZN6QGpgME21QGpgMEVerifyOpaqueJobD0Ev at Base 1.7.1
  _ZN6QGpgME21QGpgMEVerifyOpaqueJobD1Ev at Base 1.7.1
  _ZN6QGpgME21QGpgMEVerifyOpaqueJobD2Ev at Base 1.7.1
- _ZN6QGpgME21QIODeviceDataProvider4readEPvm at Base 1.7.1
- _ZN6QGpgME21QIODeviceDataProvider4seekEli at Base 1.7.1
- _ZN6QGpgME21QIODeviceDataProvider5writeEPKvm at Base 1.7.1
+ _ZN6QGpgME21QIODeviceDataProvider4readEPvj at Base 1.7.1-2
+#MISSING: 1.7.1-2# _ZN6QGpgME21QIODeviceDataProvider4readEPvm at Base 1.7.1
+#MISSING: 1.7.1-2# _ZN6QGpgME21QIODeviceDataProvider4seekEli at Base 1.7.1
+ _ZN6QGpgME21QIODeviceDataProvider4seekExi at Base 1.7.1-2
+ _ZN6QGpgME21QIODeviceDataProvider5writeEPKvj at Base 1.7.1-2
+#MISSING: 1.7.1-2# _ZN6QGpgME21QIODeviceDataProvider5writeEPKvm at Base 1.7.1
  _ZN6QGpgME21QIODeviceDataProvider7releaseEv at Base 1.7.1
[…]


The changes seem to be related to C++ name mangling, which i confess
don't really understand well:

    https://en.wikipedia.org/wiki/Name_mangling#C.2B.2B


The mangling of const std::string
&GpgME::DefaultAssuanTransaction::data() goes from PKcm (in the .symbols
file i created on amd64) to PKcj (in the .symbols file proposed for
i386).

At the moment, the problem seems to be happening with 32-bit
architectures, but not with 64-bit architectures:

     https://buildd.debian.org/status/logs.php?pkg=gpgme1.0&ver=1.7.1-2

I don't have much experience with packaging C++ libraries.  Are these
symbols files just too aggressive somehow?  Does name-mangling vary
across architectures? Sandro, i think you've done more C++ packaging for
Debian.  Do you have any suggestions for how to resolve this?

        --dkg
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 930 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/pkg-gnupg-maint/attachments/20161031/eb50823e/attachment.sig>


More information about the pkg-gnupg-maint mailing list