2012.01.22 16:53 "[Tiff] update on tiff 4.x in debian", by Jay Berkenbilt

2012.01.28 17:38 "Re: [Tiff] update on tiff 4.x in debian", by Jay Berkenbilt

On 01/23/2012 11:26 AM, Tom Lane wrote:

I will get to this as soon as I can, but I will probably want to get someone from the debian release team to look at it. Maybe Tom Lane can look at it too -- he probably has more experience with this than I do.

Sorry, I don't know much of anything about versioned symbols. My reaction TBH is that it's a big mistake to be changing 3.9.x's ABI at this late date, and that if this ships it will be a blocker to ever again updating libtiff 3.9 in existing RHEL branches.

I thought I'd follow up a little more on this. I just prepared tiff packages for debian with versioned symbols enabled and did a bunch of tests.

If an executable or shared library was linked with a version of the library that was built without versioned symbols, that executable or library still works with a version of the tiff library that does have versioned symbols. The reverse is not the case, however: something linked with a versioned tiff library does not work without a versioned tiff library. So in that way, enabling versioned symbols with no other ABI changes is like adding interfaces, not like changing or removing them. So it should be safe to enable versioned symbols at any time. This is, in fact, the position of the debian release team, which does not require or request any coordination to upload a library with versioned symbols that replaces one that doesn't have them.

I think it's only safe to have two different versions of the tiff library at the same time if both have versioned symbols and everything has linked with a versioned copy of the library, but I'm not 100% certain that that may not be stricter than needed.

In any case, debian will link everything with a versioned 3.9.x before introducing 4.0.x. The non-versioned 4.0.x will never have existed in the main debian archive.

I guess my thinking would be that 4.0.1 and newer should have versioned symbols enabled by default.

For what it's worth, here are the tests I ran:

link x with non-versioned library
upgrade to versioned library
run x successfully

link libf with versioned tiff3
link libg with versioned tiff4
link main with libf and libg

run main successfully; verify that both tiff libraries are loaded together

If interested in more details, you can find my thread on the debian-release list. I'm just about to post details there.

--Jay