diff options
Diffstat (limited to 'pkgs/development/libraries/linbox')
-rw-r--r-- | pkgs/development/libraries/linbox/default.nix | 53 | ||||
-rw-r--r-- | pkgs/development/libraries/linbox/patches/linbox-pr256-part2.patch | 13 |
2 files changed, 45 insertions, 21 deletions
diff --git a/pkgs/development/libraries/linbox/default.nix b/pkgs/development/libraries/linbox/default.nix index 2217996acdb..821edd33369 100644 --- a/pkgs/development/libraries/linbox/default.nix +++ b/pkgs/development/libraries/linbox/default.nix @@ -1,8 +1,8 @@ -{ stdenv +{ lib, stdenv , fetchFromGitHub , autoreconfHook , givaro -, pkgconfig +, pkg-config , blas , lapack , fflas-ffpack @@ -14,8 +14,7 @@ assert (!blas.isILP64) && (!lapack.isILP64); stdenv.mkDerivation rec { pname = "linbox"; - version = "1.6.3"; - + version = "1.6.3"; # TODO: Check postPatch script on update src = fetchFromGitHub { owner = "linbox-team"; @@ -26,7 +25,7 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ autoreconfHook - pkgconfig + pkg-config ]; buildInputs = [ @@ -36,21 +35,34 @@ stdenv.mkDerivation rec { fflas-ffpack ]; + patches = [ + # Remove inappropriate `const &` qualifiers on data members that can be + # modified via member functions. + # See also: https://github.com/linbox-team/linbox/pull/256 + ./patches/linbox-pr256-part2.patch # TODO: Remove on 1.7.0 update + ]; + + postPatch = '' + # Remove @LINBOXSAGE_LIBS@ that is actually undefined. + # See also: https://github.com/linbox-team/linbox/pull/249 + # TODO: Remove on 1.7.0 update + find . -type f -exec sed -e 's/@LINBOXSAGE_LIBS@//' -i {} \; + ''; + configureFlags = [ "--with-blas-libs=-lblas" "--disable-optimization" - ] ++ stdenv.lib.optionals stdenv.isx86_64 { + ] ++ lib.optionals stdenv.isx86_64 [ # disable SIMD instructions (which are enabled *when available* by default) - default = [ "--disable-sse3" "--disable-ssse3" "--disable-sse41" "--disable-sse42" "--disable-avx" "--disable-avx2" "--disable-fma" "--disable-fma4" ]; - westmere = [ "--disable-avx" "--disable-avx2" "--disable-fma" "--disable-fma4" ]; - sandybridge = [ "--disable-avx2" "--disable-fma" "--disable-fma4" ]; - ivybridge = [ "--disable-avx2" "--disable-fma" "--disable-fma4" ]; - haswell = [ "--disable-fma4" ]; - broadwell = [ "--disable-fma4" ]; - skylake = [ "--disable-fma4" ]; - skylake-avx512 = [ "--disable-fma4" ]; - }.${stdenv.hostPlatform.platform.gcc.arch or "default"} - ++ stdenv.lib.optionals withSage [ + "--${if stdenv.hostPlatform.sse3Support then "enable" else "disable"}-sse3" + "--${if stdenv.hostPlatform.ssse3Support then "enable" else "disable"}-ssse3" + "--${if stdenv.hostPlatform.sse4_1Support then "enable" else "disable"}-sse41" + "--${if stdenv.hostPlatform.sse4_2Support then "enable" else "disable"}-sse42" + "--${if stdenv.hostPlatform.avxSupport then "enable" else "disable"}-avx" + "--${if stdenv.hostPlatform.avx2Support then "enable" else "disable"}-avx2" + "--${if stdenv.hostPlatform.fmaSupport then "enable" else "disable"}-fma" + "--${if stdenv.hostPlatform.fma4Support then "enable" else "disable"}-fma4" + ] ++ lib.optionals withSage [ "--enable-sage" ]; @@ -58,12 +70,11 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; - meta = { - inherit version; + meta = with lib; { description = "C++ library for exact, high-performance linear algebra"; - license = stdenv.lib.licenses.lgpl21Plus; - maintainers = [stdenv.lib.maintainers.timokau]; - platforms = stdenv.lib.platforms.unix; + license = licenses.lgpl21Plus; + maintainers = teams.sage.members; + platforms = platforms.unix; homepage = "https://linalg.org/"; }; } diff --git a/pkgs/development/libraries/linbox/patches/linbox-pr256-part2.patch b/pkgs/development/libraries/linbox/patches/linbox-pr256-part2.patch new file mode 100644 index 00000000000..ec8571a7d71 --- /dev/null +++ b/pkgs/development/libraries/linbox/patches/linbox-pr256-part2.patch @@ -0,0 +1,13 @@ +--- a/linbox/algorithms/det-rational.h ++++ b/linbox/algorithms/det-rational.h +@@ -79,8 +79,8 @@ + struct MyRationalModularDet { + const Blackbox &A; + const MyMethod &M; +- const Integer &mul;//multiplicative prec; +- const Integer ÷ ++ Integer mul;//multiplicative prec; ++ Integer div; + + MyRationalModularDet(const Blackbox& b, const MyMethod& n, + const Integer & p1, const Integer & p2) : |