New cfitsio 3.330 in Rawhide and F19 (take 2)

Kevin Kofler kevin.kofler at chello.at
Mon Mar 25 00:44:49 UTC 2013


Michael Schwendt wrote:
> "Standard" versioning is not beneficial here at all. As explained before,
> here the full version is part of the SONAME. Not just the major version.
> libcfitsio.so.3.330 would be incompatible with libcfitsio.so.3.340 as
> mentioned in a later post by Sergio (on 2013-03-22) already. There is
> no common libcfitsio.so.3 that would be downward compatible.

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 (based on 
the wrong assumption that he would be setting the soname to just 
libcfitsio.so.3, which would of course be wrong).

Just set the soname and the fully-versioned name both to
"libcfitsio.so.%{version}".

>> 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.

>> I know that going back and forth sucks (as everything will have to be
>> rebuilt AGAIN), but I think you should really should change this back
>> (and you should never have changed it from .so.3.330 to -3.330.so.0 in
>> the first place).
> 
> Either naming version would require rebuilds of dependencies for version
> changes. So, why bother?

Because libcfitsio.so → libcfitsio.so.3.330 is just the cleaner scheme 
compared to libcfitsio.so → libcfitsio-3.330.so.0. Your scheme has 2 
versions, one of which is always 0, and the devel symlink does not follow 
the pattern of pointing from foo.so to foo.so.* with the same name foo.

        Kevin Kofler



More information about the devel mailing list