[pkg-golang-devel] go shared library packaging changes

Michael Hudson-Doyle michael.hudson at canonical.com
Fri Feb 5 01:11:55 UTC 2016


On 3 February 2016 at 18:43, Tianon Gravi <admwiggin at gmail.com> wrote:
> On 31 January 2016 at 19:48, Michael Hudson-Doyle
> <michael.hudson at canonical.com> wrote:
>> So, um, thoughts? Would these patches be OK for Debian after 1.6 is uploaded?
>
> I'm not an expert by any stretch of the imagination on shared objects,
> but IIRC the way Go's shared objects were implemented there's not
> really any compatibility promises, and Go updates and library updates
> still require rebuilding linked components -- is that the case, or
> have I grossly misunderstood?  (ie, what's the benefit we gain by
> doing this?  less rebuilds?  less bits for users to download?)

While it's true that ABI stability with Go is not going to be as much
of a thing as it is with C, it's not quite as bad as "all changes mean
all linked libraries must rebuild". There is a concept of an "ABI
hash" that changes when an ABI incompatible change is made. The
dh-golang machinery I've put together means that ${shlibs:Depends}
evaluates to a package name containing the ABI hash, so britney should
prevent ABI breaking changes from ending up in the archive without
dependencies being rebuilt. It remains to be seen a bit how stable the
ABI hash will be in the real world.

The motivation for this is mostly to allow security fixes to be
distributed without rebuilding the world. Smaller binary sizes are a
nice bonus too.

Cheers,
mwh



More information about the pkg-golang-devel mailing list