Bumping the soname is part of our release process, since C++ ABI
compatibility is practically impossible to maintain.  Unfortunately, if SVN
is to be believed, it appears that somehow this didn't happen with the 2.2.0
release.  And here I thought I had finally done a release without screwing
anything up!

I guess I will do a 2.2.0a which does nothing but fix this.  I'd like to
avoid changing the last digit there because it would create a bunch of new
ways that I could screw up.

On Wed, Nov 18, 2009 at 3:55 PM, Robert Edmonds <edmo...@debian.org> wrote:

> [ kenton varda, upstream release engineer for protobuf, added to Cc. ]
>
> Dirk Eddelbuettel wrote:
> > I am not sure what the best way forward is. Given that mumble is the only
> > user of protobuf, could you just rebuild based on the protobuf?  That is
> > probably quicker than a new upload, NEW queue, required rebuild, ... and
> > avoids all hazzles regarding soname conflicts if we move to 5 now and
> Google
> > later claims 5.
>
> since the changes from 2.1.0 to 2.2.0 have demonstrably broken ABI
> compatibility, the SONAME really should be bumped, regardless of NEW
> delays, etc. because it is the correct thing to do, rather than breaking
> unrelated software.  ideally it should be coordinated with upstream so
> that we don't break binary compatibility with other linux distributions
> (to the extent that this is possible with the C++ ABI, which i am not
> especially familiar with).
>
> kenton, is it possible to make a 2.2.1 release with just a SONAME bump?
> see http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=556563 for the
> relevant justification:
>
>    m...@exez:~$ mumble
>    mumble: Symbol `_ZTIN6google8protobuf7MessageE' has different size in
> shared object, consider re-linking
>    mumble: symbol lookup error: mumble: undefined symbol:
> _ZN6google8protobuf14MessageFactory29InternalRegisterGeneratedFileEPKcPFvvE
>
> i've also noticed that these changes break the protobuf-c package (for
> which i am the debian maintainer):
>
>    edmo...@chase{0}:~$ protoc-c
>    protoc-c: symbol lookup error: /usr/lib/libprotoc.so.4: undefined
> symbol: _ZN6google8protobuf8internal10WireFormat21kWireTypeForFieldTypeE
>
> i think protobuf-c and mumble are the only two reverse dependencies of
> protobuf, and they're both broken by the 2.2.0-0.1 upload.
>
> the protobuf debian package unfortunately lacks .symbols files for
> libprotocN and libprotobufN, which would have caught this problem.
> when .symbols files are in use, the package build should fail if there
> are any symbol insertions or deletions.
>
> i've rebuilt the debian protobuf 2.1.0-1 package, adding symbol files,
> and then used the result to rebuild the 2.2.0-0.1 package, which reveals
> that there are quite a few missing symbols in 2.2.0:
>
>    edmo...@chase{0}:~/debian/protobuf/symbols/protobuf-2.2.0/debian$ grep
> _ZN6google8protobuf14MessageFactory29InternalRegisterGeneratedFileEPKcPFvvE
> *.symbols
>    libprotobuf4.symbols:#MISSING: 2.2.0#
> _zn6google8protobuf14messagefactory29internalregistergeneratedfileepkcpf...@base2.1.0
>
> (the missing symbol that broke mumble.)
>
>    edmo...@chase{0}:~/debian/protobuf/symbols/protobuf-2.2.0/debian$ grep
> MISSING *.symbols | wc -l
>    311
>
> (310 other symbols are missing as well.)
>
> i've attached the revelant diff.gz's.
>
> btw, 2.2.0 introduced a new 'libprotobuf-lite' library which should be
> split out of the libprotobuf binary package, since (i gather) the idea
> is to have a lite version of the library which doesn't require the full
> heft of libprotobuf.
>
> --
> Robert Edmonds
> edmo...@debian.org
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.10 (GNU/Linux)
>
> iEYEARECAAYFAksEiVcACgkQdp+/SHMBQJFXTQCgi8udEma1ccxxzHxMw4RPcjT/
> 7e8An3+4He41DprUK0BefB/hdWLncwag
> =3+hv
> -----END PGP SIGNATURE-----
>
>

Reply via email to