On 04/06/17 03:08, Stefan Bruens wrote:
Hi,
just stumbled over an omission in the shared library packaging policy [1].
The policy gives several examples for SONAMEs and package names when there are several versions of a library with incompatible API/ABI.
But there is no specification for libraries available in different variants, i.e. different implementations or optimizations, with compatible ABI.
One such library is openblas, which is available as singlethreaded ("serial"), multithreaded using pthreads, and multithreaded using openmp. These three libraries have the same ABI and thus are interchangeable, but unfortunately each one carries its own SONAME (libopenblas_serial.so.0, libopenblas_pthreads.so.0, libopenblas_openmp.so.0). Any program/library linking to libopenblas.so (linker flag -lopenblas) will end up with the default implementation, which is either openblas_pthreads (on x86*) or openblas_openmp (else). The library name then is fixed in both the program/ library dynamic linking as well as the rpm dependencies.
Now, it is trivial to set the SONAME for all three implementations to libopenblas.so.0, but unfortunately rpmlint insist on the package name to be libopenblas0 in this case, with no possibility to have different package names for the three variants.
IMHO the policy and rpmlint should be extended to cover these cases.
Later this week i'll be starting a topic on what rpmlint should be doing better so I guess we can cover it then. -- Simon Lees (Simotek) http://simotek.net Emergency Update Team keybase.io/simotek SUSE Linux Adelaide Australia, UTC+10:30 GPG Fingerprint: 5B87 DB9D 88DC F606 E489 CEC5 0922 C246 02F0 014B