New cfitsio 3.330 in Rawhide and F19 (take 2)

Kevin Kofler kevin.kofler at chello.at
Thu Mar 28 18:32:52 UTC 2013


Michael Schwendt wrote:

> On Mon, 25 Mar 2013 01:44:49 +0100, Kevin Kofler wrote:
>> But there's no rule that says that the soname has to be libcfitsio.so.3
>> (well, there is if the package builds using libtool, but e.g. CMake
>> allows any arbitrary soname, and it also correctly handles the case where
>> the soname is the same as the fully-versioned name). In cfitsio's case,
>> the makefile commands writing the library are handwritten (i.e. don't use
>> libtool) and thus also allow an arbitrary soname; in fact, the soname WAS
>> libcfitsio.so.3.330 before you incorrectly told him to change it
> 
> Why is that incorrect?

There seem to be quite some misunderstandings in this thread.

He had the soname set to libcfitsio.so.3.330 starting from the post which 
started this thread:
| The new soname is libcfitsio.so.%{version} (libcfitsio.so.3.330 in this
| case).

You replied to that:
| > in this case). A lot of packages check the existance of libcfitsio.so
| > (instead of using the pkg-config file cfitsio provides), Changing the
| > name to libcfitsio-%{version}.so would require to patch those packages
| > also.
|
| Do you refer to build-time? If so, the libcfitsio.so symlink could
| point at anything and would not influence your choices of how to name
| the run-time lib.
and unfortunately, this was misunderstood by Sergio as a request to change 
from the already-fine libcfitsio.so.3.330 to the worse libcfitsio-3.330.so.0 
scheme.

>> (based on
>> the wrong assumption that he would be setting the soname to just
>> libcfitsio.so.3, which would of course be wrong).
> 
> Huh? Who has made that assumption?

Looks like it was actually all a misunderstanding instead.

> The previous soname was libcfitsio.so.0, which has been a bad choice for
> an API/ABI that changes so frequently.

Yes, it's clear that that soname was broken. But the correct soname is 
libcfitsio.so.3.330, not libcfitsio-3.330.so.0.

>> Just set the soname and the fully-versioned name both to
>> "libcfitsio.so.%{version}".
> 
> That is misleading. IMHO.

IMHO, it's libcfitsio-3.330.so.0 which is misleading (implies that you need 
-lcfitsio-3.330 to link the library, which is clearly not what we want, as 
you also seem to agree judging from your next reply).

>> >> The version goes after .so, not before it, unless you want to have it
>> >> also in the symlink, which you explicitly DON'T want here.
>> > 
>> > Why not? It would even have been okay to name the run-time lib
>> > libcfitsio-3.330.so with the implicit opportunity to use the same file
>> > as the build-time lib. That would even make it possible to ship
>> > multiple releases of cfitsio, since with a non-versioning build-time
>> > lib, multiple -devel packages would conflict in their .so symlink (if
>> > that one is used).
>> 
>> But then ALL packages using cfitsio have to be patched to use the
>> versioned name. It just doesn't make sense.
> 
> That isn't done, however, so currently no patching is necessary.

See above.

> "Cleaner"? That's all? Then this is a superfluous discussion. It doesn't
> make sense to go in circles. What you consider cleaner is just a version
> that pretends that a clean versioning scheme is implemented. The added .0
> does no harm. It would make it possible to change the ABI without bumping
> the library version.

It's not superfluous. I'm fed up of libraries using nonstandard versioning 
schemes. The version belongs in the version, not in the name, unless you're 
doing major versions designed to coexist as compatibility libraries and to 
be effectively treated as different libraries (and even then, you want only 
the major version in the name, i.e., (e.g.) libQt5Core.so*, not 
libQtCore-5.0.0.so*). The name part must be the same in the devel symlink 
and the actual library, everything else is a hack.

        Kevin Kofler



More information about the devel mailing list