On Sat, 3 Jun 2017, Jan Engelhardt wrote:
On Saturday 2017-06-03 19:38, Stefan Bruens wrote:
But there is no specification for libraries available in different variants, i.e. different implementations or optimizations, with compatible ABI.
You are correct in that it is not specified. One could say that we were still experimenting with what works. One arm of that experiment was Mesa-libGL1.
openblas [...] three libraries [..] each one carries its own SONAME (libopenblas_serial.so.0, libopenblas_pthreads.so.0, libopenblas_openmp.so.0).
Different SONAME => different package names. It's that simple.
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.
The pattern is [vendor-][libblah1][-variant].rpm, stemming from the "other" arm of the experiment that is libatomic1-gcc6, libblasc2-openmp.
With the important part that each of the variants shall
Provide: libblah1 = %version
Conflict: libblah1
to explicitely disallow installing multiple variants at the same time
(you'll get file conflicts) plus make requiring them via sth other
than the SONAME auto generated provides possible.
Note that in case of libopenblas_serial vs. libopenblas_pthreads vs.
libopenblas_openmp it's also a matter of how an application was built
thus using the same SONAME for this might not be what you want as
you do want the possibility to run a OpenMP app at the same time
as a serial one both using openblas.
Richard.
--
Richard Biener