Hi Ian and Thibaut,

Inspired by Thibaut's comment, I worked out a good solution for
the co-installation problem, which only results in a single layer
of alternatives.

Thibaut's proposed layout:
>   Package: libblis2-openmp,  Provides: libblas.so.3, libblis.so.2
>   Package: libblis2-pthread, Provides: libblas.so.3, libblis.so.2
>   Package: libblis2-serial,  Provides: libblas.so.3, libblis.so.2
>   Package: python3-numpy,    Depends: libblas.so.3

My updated version, all variants are co-installable now:

 Package: libblis2-openmp,  Provides: libblas.so.3, libblis.so.2
 Package: libblis2-pthread, Provides: libblas.so.3, libblis.so.2
 Package: libblis2-serial,  Provides: libblas.so.3, libblis.so.2
 Package: libblis2 (meta),
 Package: python3-numpy,    Depends: libblas.so.3

The meta package is still necessary because of symbols/shlibdeps.
Different threading variants have the same ABI/API, so the
dependency template is written as

 libblis.so.2 libblis2 #MINVER#

instead of e.g.

 libblis.so.2 libblis2-openmp #MINVER#

On Sun, Feb 03, 2019 at 09:34:08PM +0000, Ian Jackson wrote:
> In general coinstallability is a good thing.
> ...
> This would mean that the user could choose a different library for
> "programs which wanted BLAS" and "programs which wanted BLIS" but I
> don't think that is a problem ?
> ...
> I agree that multiple layers of alternatives indirection is
> undesirable.  But I think these libraries can be made coinstallable
> without that.

My initial design of package layout is hierarchical. Inspired by
the comments I found the above solution after a rethink. BLIS
packaging has been updated and I'm testing it now.

Thank you for comments.

Reply via email to