Handling BIC-without-SONAME-bump in KDE SC libraries

Modestas Vainius modax at debian.org
Mon Mar 14 22:23:14 UTC 2011


Hello,

I personally can't comment on how much upstream improved after the last 
discussion (iirc, on kde-core-devel). However, it would be naive to think that 
we will never face BIC-without-SONAME-bump problems in the future. Solving 
them all upstream would be great but it's simply too optimistic scenario due 
to many factors.

Generally I can think of two ways of dealing with this. The first is our 
policy at the moment.

1. [ Package level ]. Rename the library package and add Breaks/Replaces 
against the previous versions, keep library SONAME (and filenames) unchanged.

Pros:

a) binary compatible with upstream and other distributions (at least in 
theory);

b) ensures users have no old BIC libs (and apps linked to them) around. If an 
app ends up directly or indirectly linked to the old and new library with the 
same symbols, bad things may happen (e.g. recent libpng case and see below);

c) does not require patching of upstream source.

Cons:

a) apt unfriendly because two library packages cannot be co-installed. Library 
packages are typically deep in the dependency chain so apt may require to 
force removal/installation in some cases;

b) makes partial upgrade to new KDE releases very painful. I.e. it renders 
some 3rd party applications uninstallable due to conflicting library packages;

2. [ Library level ]. Change library SONAME (e.g. add debN suffix, specifics 
to be discussed) and rename the package. No Breaks/Replaces needed as there 
are no conflicting files.

Pros:

a) apt friendly as it's a recommended way to deal with SONAME changes;

b) new KDE releases should no longer break 3rd party applications (at least at 
the package management level);

Cons:

a) custom SONAMEs and library filenames will be binary incompatible with the 
rest of the world;

b) if conflicting libraries are loaded in the same app memory space (unlikely 
though), it might lead to crashes at runtime;

c) crashes might occur due incompatibilities in the runtime client/server 
protocols (if there are ones);

d) requires patching of upstream source (i.e. altering SOVERSION in the 
CMakeLists.txt);

So what I am proposing is the switch to 2). I do believe that user experience 
is more important than SONAME compatibility with the rest of the world (which 
is theoretical anyway, at least in the KDE land). IMHO, other cons are not a 
big deal either as KDE is not libpng and runtime conflicts are more unlikely 
than likely.

So what do you think and which way do you prefer? Maybe we could think of 
something better?

-- 
Modestas Vainius <modax at debian.org>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.alioth.debian.org/pipermail/pkg-kde-talk/attachments/20110315/da2c08de/attachment.pgp>


More information about the pkg-kde-talk mailing list