This is a better name since we have multiple 64-bit things that could
be referred to.
LP64 : integer=32, long=64, pointer=64
ILP64 : integer=64, long=64, pointer=64
This is based on previous work for switching between BLAS and LAPACK
implementation in Debian[1] and Gentoo[2]. The goal is to have one way
to depend on the BLAS/LAPACK libraries that all packages must use. The
attrs “blas” and “lapack” are used to represent a wrapped BLAS/LAPACK
provider. Derivations that don’t care how BLAS and LAPACK are
implemented can just use blas and lapack directly. If you do care what
you get (perhaps for some CPP), you should verify that blas and lapack
match what you expect with an assertion.
The “blas” package collides with the old “blas” reference
implementation. This has been renamed to “blas-reference”. In
addition, “lapack-reference” is also included, corresponding to
“liblapack” from Netlib.org.
Currently, there are 3 providers of the BLAS and LAPACK interfaces:
- lapack-reference: the BLAS/LAPACK implementation maintained by netlib.org
- OpenBLAS: an optimized version of BLAS and LAPACK
- MKL: Intel’s unfree but highly optimized BLAS/LAPACK implementation
By default, the above implementations all use the “LP64” BLAS and
LAPACK ABI. This corresponds to “openblasCompat” and is the safest way
to use BLAS/LAPACK. You may received some benefits from “ILP64” or
8-byte integer BLAS at the expense of breaking compatibility with some
packages.
This can be switched at build time with an override like:
import <nixpkgs> {
config.allowUnfree = true;
overlays = [(self: super: {
lapack = super.lapack.override {
lapackProvider = super.lapack-reference;
};
blas = super.blas.override {
blasProvider = super.lapack-reference;
};
})];
}
or, switched at runtime via LD_LIBRARY_PATH like:
$ LD_LIBRARY_PATH=$(nix-build -E '(with import <nixpkgs> {}).lapack.override { lapackProvider = pkgs.mkl; is64bit = true; })')/lib:$(nix-build -E '(with import <nixpkgs> {}).blas.override { blasProvider = pkgs.mkl; is64bit = true; })')/lib ./your-blas-linked-binary
By default, we use OpenBLAS LP64 also known in Nixpkgs as
openblasCompat.
[1]: https://wiki.debian.org/DebianScience/LinearAlgebraLibraries
[2]: https://wiki.gentoo.org/wiki/Blas-lapack-switch
Semi-automatic update generated by https://github.com/ryantm/nix-update tools. These checks were done:
- built on NixOS
- ran `/nix/store/10g4cklvbc5d7hkymlzbgnn7yw7mgdkp-fflas-ffpack-2.3.2/bin/fflas-ffpack-config -h` got 0 exit code
- ran `/nix/store/10g4cklvbc5d7hkymlzbgnn7yw7mgdkp-fflas-ffpack-2.3.2/bin/fflas-ffpack-config --help` got 0 exit code
- ran `/nix/store/10g4cklvbc5d7hkymlzbgnn7yw7mgdkp-fflas-ffpack-2.3.2/bin/fflas-ffpack-config help` got 0 exit code
- ran `/nix/store/10g4cklvbc5d7hkymlzbgnn7yw7mgdkp-fflas-ffpack-2.3.2/bin/fflas-ffpack-config -V` and found version 2.3.2
- ran `/nix/store/10g4cklvbc5d7hkymlzbgnn7yw7mgdkp-fflas-ffpack-2.3.2/bin/fflas-ffpack-config -v` and found version 2.3.2
- ran `/nix/store/10g4cklvbc5d7hkymlzbgnn7yw7mgdkp-fflas-ffpack-2.3.2/bin/fflas-ffpack-config --version` and found version 2.3.2
- ran `/nix/store/10g4cklvbc5d7hkymlzbgnn7yw7mgdkp-fflas-ffpack-2.3.2/bin/fflas-ffpack-config version` and found version 2.3.2
- ran `/nix/store/10g4cklvbc5d7hkymlzbgnn7yw7mgdkp-fflas-ffpack-2.3.2/bin/fflas-ffpack-config -h` and found version 2.3.2
- ran `/nix/store/10g4cklvbc5d7hkymlzbgnn7yw7mgdkp-fflas-ffpack-2.3.2/bin/fflas-ffpack-config --help` and found version 2.3.2
- ran `/nix/store/10g4cklvbc5d7hkymlzbgnn7yw7mgdkp-fflas-ffpack-2.3.2/bin/fflas-ffpack-config help` and found version 2.3.2
- found 2.3.2 with grep in /nix/store/10g4cklvbc5d7hkymlzbgnn7yw7mgdkp-fflas-ffpack-2.3.2
- directory tree listing: https://gist.github.com/e66f5e5926034e2f224c064aba1c3613
* pkgs: refactor needless quoting of homepage meta attribute
A lot of packages are needlessly quoting the homepage meta attribute
(about 1400, 22%), this commit refactors all of those instances.
* pkgs: Fixing some links that were wrongfully unquoted in the previous
commit
* Fixed some instances