diff options
author | Michael Raskin <7c6f434c@mail.ru> | 2020-02-27 06:32:54 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-27 06:32:54 +0000 |
commit | b41a7eeb189d5051770b6523f996d250620c54e0 (patch) | |
tree | 8d99406c7469c2c345e539bb35728de7cf517a57 | |
parent | 6865d6e71317dc093113c34322f99622ca31964d (diff) | |
parent | 3fa64cd5de6a724ea984d73b3db7212d73dbded7 (diff) | |
download | nixlib-b41a7eeb189d5051770b6523f996d250620c54e0.tar nixlib-b41a7eeb189d5051770b6523f996d250620c54e0.tar.gz nixlib-b41a7eeb189d5051770b6523f996d250620c54e0.tar.bz2 nixlib-b41a7eeb189d5051770b6523f996d250620c54e0.tar.lz nixlib-b41a7eeb189d5051770b6523f996d250620c54e0.tar.xz nixlib-b41a7eeb189d5051770b6523f996d250620c54e0.tar.zst nixlib-b41a7eeb189d5051770b6523f996d250620c54e0.zip |
Merge pull request #79864 from doronbehar/improve-octave
octave: Use qt5 and other improvements
-rw-r--r-- | pkgs/development/interpreters/octave/default.nix | 151 | ||||
-rw-r--r-- | pkgs/development/libraries/sundials/2.x.nix | 61 | ||||
-rw-r--r-- | pkgs/top-level/all-packages.nix | 32 |
3 files changed, 193 insertions, 51 deletions
diff --git a/pkgs/development/interpreters/octave/default.nix b/pkgs/development/interpreters/octave/default.nix index f0f80f758548..b32d15b2a1f9 100644 --- a/pkgs/development/interpreters/octave/default.nix +++ b/pkgs/development/interpreters/octave/default.nix @@ -1,8 +1,54 @@ -{ stdenv, fetchurl, gfortran, readline, ncurses, perl, flex, texinfo, qhull -, libsndfile, portaudio, libX11, graphicsmagick, pcre, pkgconfig, libGL, libGLU, fltk -, fftw, fftwSinglePrec, zlib, curl, qrupdate, openblas, arpack, libwebp, gl2ps -, qt ? null, qscintilla ? null, ghostscript ? null, llvm ? null, hdf5 ? null,glpk ? null -, suitesparse ? null, gnuplot ? null, jdk ? null, python ? null, overridePlatforms ? null +{ stdenv +, fetchurl +, gfortran +, ncurses +, perl +, flex +, texinfo +, qhull +, libsndfile +, portaudio +, libX11 +, graphicsmagick +, pcre +, pkgconfig +, libGL +, libGLU +, fltk +# Both are needed for discrete Fourier transform +, fftw +, fftwSinglePrec +, zlib +, curl +, qrupdate +, openblas +, arpack +, libwebp +, gl2ps +, ghostscript ? null +, hdf5 ? null +, glpk ? null +, suitesparse ? null +, gnuplot ? null +# - Include support for GNU readline: +, enableReadline ? true +, readline ? null +# - Build Java interface: +, enableJava ? true +, jdk ? null +, python ? null +, overridePlatforms ? null +, sundials_2 ? null +# - Build Octave Qt GUI: +, enableQt ? false +, qtbase ? null +, qtsvg ? null +, qtscript ? null +, qscintilla ? null +, qttools ? null +# - JIT compiler for loops: +, enableJIT ? false +, llvm ? null }: let @@ -20,33 +66,63 @@ in stdenv.mkDerivation rec { version = "5.2.0"; pname = "octave"; + src = fetchurl { url = "mirror://gnu/octave/${pname}-${version}.tar.gz"; sha256 = "1qcmcpsq1lfka19fxzvxjwjhg113c39a9a0x8plkhvwdqyrn5sig"; }; - buildInputs = [ gfortran readline ncurses perl flex texinfo qhull - graphicsmagick pcre pkgconfig fltk zlib curl openblas libsndfile fftw - fftwSinglePrec portaudio qrupdate arpack libwebp gl2ps ] - ++ (stdenv.lib.optional (qt != null) qt) - ++ (stdenv.lib.optional (qscintilla != null) qscintilla) - ++ (stdenv.lib.optional (ghostscript != null) ghostscript) - ++ (stdenv.lib.optional (llvm != null) llvm) - ++ (stdenv.lib.optional (hdf5 != null) hdf5) - ++ (stdenv.lib.optional (glpk != null) glpk) - ++ (stdenv.lib.optional (suitesparse != null) suitesparse) - ++ (stdenv.lib.optional (jdk != null) jdk) - ++ (stdenv.lib.optional (gnuplot != null) gnuplot) - ++ (stdenv.lib.optional (python != null) python) - ++ (stdenv.lib.optionals (!stdenv.isDarwin) [ libGL libGLU libX11 ]) - ; - - # makeinfo is required by Octave at runtime to display help - prePatch = '' - substituteInPlace libinterp/corefcn/help.cc \ - --replace 'Vmakeinfo_program = "makeinfo"' \ - 'Vmakeinfo_program = "${texinfo}/bin/makeinfo"' - ''; + buildInputs = [ + readline + ncurses + perl + flex + qhull + graphicsmagick + pcre + fltk + zlib + curl + openblas + libsndfile + fftw + fftwSinglePrec + portaudio + qrupdate + arpack + libwebp + gl2ps + ] + ++ (stdenv.lib.optionals enableQt [ + qtbase + qtsvg + qscintilla + ]) + ++ (stdenv.lib.optional (ghostscript != null) ghostscript) + ++ (stdenv.lib.optional (hdf5 != null) hdf5) + ++ (stdenv.lib.optional (glpk != null) glpk) + ++ (stdenv.lib.optional (suitesparse != null) suitesparse) + ++ (stdenv.lib.optional (enableJava) jdk) + ++ (stdenv.lib.optional (sundials_2 != null) sundials_2) + ++ (stdenv.lib.optional (gnuplot != null) gnuplot) + ++ (stdenv.lib.optional (python != null) python) + ++ (stdenv.lib.optionals (!stdenv.isDarwin) [ libGL libGLU libX11 ]) + ; + nativeBuildInputs = [ + pkgconfig + gfortran + # Listed here as well because it's outputs are split + fftw + fftwSinglePrec + texinfo + ] + ++ (stdenv.lib.optional (sundials_2 != null) sundials_2) + ++ (stdenv.lib.optional enableJIT llvm) + ++ (stdenv.lib.optionals enableQt [ + qtscript + qttools + ]) + ; doCheck = !stdenv.isDarwin; @@ -55,15 +131,16 @@ stdenv.mkDerivation rec { # See https://savannah.gnu.org/bugs/?50339 F77_INTEGER_8_FLAG = if openblas.blas64 then "-fdefault-integer-8" else ""; - configureFlags = - [ "--enable-readline" - "--enable-dl" - "--with-blas=openblas" - "--with-lapack=openblas" - ] - ++ stdenv.lib.optional openblas.blas64 "--enable-64" - ++ stdenv.lib.optionals stdenv.isDarwin ["--with-x=no"] - ; + configureFlags = [ + "--with-blas=openblas" + "--with-lapack=openblas" + ] + ++ stdenv.lib.optionals enableReadline [ "--enable-readline" ] + ++ stdenv.lib.optionals openblas.blas64 [ "--enable-64" ] + ++ stdenv.lib.optionals stdenv.isDarwin [ "--with-x=no" ] + ++ stdenv.lib.optionals enableQt [ "--with-qt=5" ] + ++ stdenv.lib.optionals enableJIT [ "--enable-jit" ] + ; # Keep a copy of the octave tests detailed results in the output # derivation, because someone may care @@ -81,6 +158,8 @@ stdenv.mkDerivation rec { license = stdenv.lib.licenses.gpl3Plus; maintainers = with stdenv.lib.maintainers; [raskin]; description = "Scientific Pragramming Language"; + # https://savannah.gnu.org/bugs/?func=detailitem&item_id=56425 is the best attempt to fix JIT + broken = enableJIT; platforms = if overridePlatforms == null then (with stdenv.lib.platforms; linux ++ darwin) else overridePlatforms; diff --git a/pkgs/development/libraries/sundials/2.x.nix b/pkgs/development/libraries/sundials/2.x.nix new file mode 100644 index 000000000000..12840b769403 --- /dev/null +++ b/pkgs/development/libraries/sundials/2.x.nix @@ -0,0 +1,61 @@ +{ stdenv +, cmake +, fetchurl +, python +# GNU Octave needs KLU for ODE solvers +, suitesparse +, liblapack +, gfortran +, lapackSupport ? true }: + +let liblapackShared = liblapack.override { + shared = true; +}; + +in stdenv.mkDerivation rec { + pname = "sundials"; + version = "2.7.0"; + + buildInputs = [ python ] ++ stdenv.lib.optionals (lapackSupport) [ + gfortran + suitesparse + ]; + nativeBuildInputs = [ cmake ]; + + src = fetchurl { + url = "https://computation.llnl.gov/projects/${pname}/download/${pname}-${version}.tar.gz"; + sha256 = "01513g0j7nr3rh7hqjld6mw0mcx5j9z9y87bwjc16w2x2z3wm7yk"; + }; + + patches = [ + (fetchurl { + # https://github.com/LLNL/sundials/pull/19 + url = "https://github.com/LLNL/sundials/commit/1350421eab6c5ab479de5eccf6af2dcad1eddf30.patch"; + sha256 = "0g67lixp9m85fqpb9rzz1hl1z8ibdg0ldwq5z6flj5zl8a7cw52l"; + }) + ]; + + cmakeFlags = [ + "-DEXAMPLES_INSTALL_PATH=${placeholder "out"}/share/examples" + ] ++ stdenv.lib.optionals (lapackSupport) [ + "-DSUNDIALS_INDEX_TYPE=int32_t" + # GNU Octave needs KLU for ODE solvers + "-DKLU_ENABLE=ON" + "-DKLU_INCLUDE_DIR=${suitesparse}/include" + "-DKLU_LIBRARY_DIR=${suitesparse}/lib" + "-DLAPACK_ENABLE=ON" + "-DLAPACK_LIBRARIES=${liblapackShared}/lib/liblapack${stdenv.hostPlatform.extensions.sharedLibrary};${liblapackShared}/lib/libblas${stdenv.hostPlatform.extensions.sharedLibrary}" + ]; + + # flaky tests, and patch in https://github.com/LLNL/sundials/pull/21 doesn't apply cleanly for sundials_3 + doCheck = false; + checkPhase = "make test"; + + meta = with stdenv.lib; { + description = "Suite of nonlinear differential/algebraic equation solvers"; + homepage = https://computation.llnl.gov/projects/sundials; + platforms = platforms.all; + maintainers = with maintainers; [ flokli idontgetoutmuch ]; + license = licenses.bsd3; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 04e454961c30..d681fd0fe039 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -9247,23 +9247,19 @@ in }; octave = callPackage ../development/interpreters/octave { - qt = null; - qscintilla = null; - ghostscript = null; - graphicsmagick = null; - llvm = null; - hdf5 = null; - glpk = null; - suitesparse = null; - jdk = null; + python = python3; openblas = if stdenv.isDarwin then openblasCompat else openblas; }; - - octaveFull = (lowPrio (octave.override { - qt = qt4; - inherit qscintilla; - overridePlatforms = ["x86_64-linux" "x86_64-darwin"]; + octave-jit = callPackage ../development/interpreters/octave { + python = python3; openblas = if stdenv.isDarwin then openblasCompat else openblas; + enableJIT = true; + }; + octaveFull = (lowPrio (libsForQt512.callPackage ../development/interpreters/octave { + python = python3; + openblas = if stdenv.isDarwin then openblasCompat else openblas; + enableQt = true; + overridePlatforms = ["x86_64-linux" "x86_64-darwin"]; })); ocropus = callPackage ../applications/misc/ocropus { }; @@ -14432,7 +14428,13 @@ in withQt5 = false; }; - sundials = callPackage ../development/libraries/sundials { }; + sundials = callPackage ../development/libraries/sundials { + python = python3; + }; + + sundials_2 = callPackage ../development/libraries/sundials/2.x.nix { + python = python3; + }; sutils = callPackage ../tools/misc/sutils { }; |