Hi list, I'm going to participate the gsoc project "BLAS and LAPACK runtime"[1]. However it seems to pose a significant change on Gentoo Science Team's packages, so I'd better ask for approval first before really working on this, in case anybody disagree with the proposal.
Briefly speaking, The solution of “BLAS and LAPACK runtime switching” is to mimic Debian. The Netlib BLAS and LAPACK packages are mandatory when one needs to build any application on top of BLAS/LAPACK. The netlib implementation functions as the last fallback implementation, a linkder stub, the standard header provider, and most importantly the fallback alternative for libblas.so.3 and liblapack.so.3. All packages depend on BLAS and LAPACK should link against libblas.so.3 or liblapack.so.3, which could be provided by various BLAS and LAPACK implementations. The recommended header used to build reverse dependencies is the one from netlib. All other BLAS and LAPACK implementations should register themselves as alternatives to the netlib implementation, where each implementation provides two groups of candidates: development files, and shared objects. The proposed solution involes no usage of USE flag, or eselect feature. Objective of this project: 1. Integrate update-alternatives mechanism into Gentoo's reference blas, i.e. netlib blas' packaging. 2. Package BLIS for Gentoo, and register it as another netlib blas alternative. 3. Update the packaging of a BLAS/LAPACK reverse dependency to validate the efficacy of the mechanism on Gentoo. Specifically, the package will be compiled against BLIS's libblas.so.3 and netlib's libblas.so.3 respectively, and always use the netlib headers. 4. Modify the packaging for OpenBLAS to register libopenblas.so as an alternative to netlib blas. Header are not exposed in public include directory. 5. Update packaging for BLAS and LAPACK reverse dependencies, and enforce linkage against libblas.so.3 (any BLAS implementation could provide this). 6. Update gentoo wiki or documentations, describing related changes. 7. Optionally, write an eselect-to-update-alternatives bridge. *** Does it sound like an acceptable solution to Gentoo Science Team? *** BTW, I'm the Debian Developer maintaining Julia, BLIS, MKL and many other packages. I'm a long-time member of Debian Science Team and many other teams. [1] https://wiki.gentoo.org/wiki/Google_Summer_of_Code/2019/Ideas#BLAS_and_LAPACK_runtime_switching
