[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