octave.pkgs: init

Heavily based on Python's packages set.
This commit is contained in:
Karl Hallsby
2021-02-24 21:00:48 +02:00
committed by Doron Behar
parent 148eff94b3
commit 481e1d3a77
11 changed files with 646 additions and 99 deletions
+132 -99
View File
@@ -1,4 +1,5 @@
{ stdenv
, pkgs
, lib
# Note: either stdenv.mkDerivation or, for octaveFull, the qt-5 mkDerivation
# with wrapQtAppsHook (comes from libsForQt5.callPackage)
@@ -45,6 +46,11 @@
, python ? null
, overridePlatforms ? null
, sundials ? null
# - Packages required for building extra packages.
, newScope
, callPackage
, makeSetupHook
, makeWrapper
# - Build Octave Qt GUI:
, enableQt ? false
, qtbase ? null
@@ -60,6 +66,7 @@
}:
let
# Not always evaluated
blas' = if use64BitIdx then
blas.override {
@@ -94,118 +101,144 @@ let
else
null
;
in mkDerivation rec {
version = "6.2.0";
pname = "octave";
src = fetchurl {
url = "mirror://gnu/octave/${pname}-${version}.tar.gz";
sha256 = "sha256-RX0f2oY0qDni/Xz8VbmL1W82tq5z0xu530Pd4wEsqnw=";
octavePackages = import ../../../top-level/octave-packages.nix {
inherit pkgs;
inherit lib stdenv fetchurl newScope;
octave = self;
};
buildInputs = [
readline
ncurses
perl
flex
qhull
graphicsmagick
pcre
fltk
zlib
curl
blas'
lapack'
libsndfile
fftw
fftwSinglePrec
portaudio
qrupdate'
arpack'
libwebp
gl2ps
]
++ lib.optionals enableQt [
qtbase
qtsvg
qscintilla
]
++ lib.optionals (ghostscript != null) [ ghostscript ]
++ lib.optionals (hdf5 != null) [ hdf5 ]
++ lib.optionals (glpk != null) [ glpk ]
++ lib.optionals (suitesparse != null) [ suitesparse' ]
++ lib.optionals (enableJava) [ jdk ]
++ lib.optionals (sundials != null) [ sundials ]
++ lib.optionals (gnuplot != null) [ gnuplot ]
++ lib.optionals (python != null) [ python ]
++ lib.optionals (!stdenv.isDarwin) [ libGL libGLU libX11 ]
++ lib.optionals stdenv.isDarwin [
libiconv
darwin.apple_sdk.frameworks.Accelerate
darwin.apple_sdk.frameworks.Cocoa
]
;
nativeBuildInputs = [
pkg-config
gfortran
# Listed here as well because it's outputs are split
fftw
fftwSinglePrec
texinfo
]
++ lib.optionals (sundials != null) [ sundials ]
++ lib.optionals enableJIT [ llvm ]
++ lib.optionals enableQt [
qtscript
qttools
]
;
wrapOctave = callPackage ./wrap-octave.nix {
octave = self;
inherit (pkgs) makeSetupHook makeWrapper;
};
doCheck = !stdenv.isDarwin;
self = mkDerivation rec {
version = "6.2.0";
pname = "octave";
enableParallelBuilding = true;
src = fetchurl {
url = "mirror://gnu/octave/${pname}-${version}.tar.gz";
sha256 = "sha256-RX0f2oY0qDni/Xz8VbmL1W82tq5z0xu530Pd4wEsqnw=";
};
# See https://savannah.gnu.org/bugs/?50339
F77_INTEGER_8_FLAG = if use64BitIdx then "-fdefault-integer-8" else "";
buildInputs = [
readline
ncurses
perl
flex
qhull
graphicsmagick
pcre
fltk
zlib
curl
blas'
lapack'
libsndfile
fftw
fftwSinglePrec
portaudio
qrupdate'
arpack'
libwebp
gl2ps
]
++ lib.optionals enableQt [
qtbase
qtsvg
qscintilla
]
++ lib.optionals (ghostscript != null) [ ghostscript ]
++ lib.optionals (hdf5 != null) [ hdf5 ]
++ lib.optionals (glpk != null) [ glpk ]
++ lib.optionals (suitesparse != null) [ suitesparse' ]
++ lib.optionals (enableJava) [ jdk ]
++ lib.optionals (sundials != null) [ sundials ]
++ lib.optionals (gnuplot != null) [ gnuplot ]
++ lib.optionals (python != null) [ python ]
++ lib.optionals (!stdenv.isDarwin) [ libGL libGLU libX11 ]
++ lib.optionals stdenv.isDarwin [
libiconv
darwin.apple_sdk.frameworks.Accelerate
darwin.apple_sdk.frameworks.Cocoa
]
;
nativeBuildInputs = [
pkg-config
gfortran
# Listed here as well because it's outputs are split
fftw
fftwSinglePrec
texinfo
]
++ lib.optionals (sundials != null) [ sundials ]
++ lib.optionals enableJIT [ llvm ]
++ lib.optionals enableQt [
qtscript
qttools
]
;
configureFlags = [
"--with-blas=blas"
"--with-lapack=lapack"
(if use64BitIdx then "--enable-64" else "--disable-64")
]
doCheck = !stdenv.isDarwin;
enableParallelBuilding = true;
# See https://savannah.gnu.org/bugs/?50339
F77_INTEGER_8_FLAG = if use64BitIdx then "-fdefault-integer-8" else "";
configureFlags = [
"--with-blas=blas"
"--with-lapack=lapack"
(if use64BitIdx then "--enable-64" else "--disable-64")
]
++ lib.optionals stdenv.isDarwin [ "--enable-link-all-dependencies" ]
++ lib.optionals enableReadline [ "--enable-readline" ]
++ lib.optionals stdenv.isDarwin [ "--with-x=no" ]
++ lib.optionals enableQt [ "--with-qt=5" ]
++ lib.optionals enableJIT [ "--enable-jit" ]
;
;
# Keep a copy of the octave tests detailed results in the output
# derivation, because someone may care
postInstall = ''
cp test/fntests.log $out/share/octave/${pname}-${version}-fntests.log || true
'';
# Keep a copy of the octave tests detailed results in the output
# derivation, because someone may care
postInstall = ''
cp test/fntests.log $out/share/octave/${pname}-${version}-fntests.log || true
'';
passthru = {
sitePath = "share/octave/${version}/site";
blas = blas';
lapack = lapack';
qrupdate = qrupdate';
arpack = arpack';
suitesparse = suitesparse';
inherit python;
inherit enableQt enableJIT enableReadline enableJava;
passthru = rec {
sitePath = "share/octave/${version}/site";
octPkgsPath = "share/octave/octave_packages";
blas = blas';
lapack = lapack';
qrupdate = qrupdate';
arpack = arpack';
suitesparse = suitesparse';
inherit fftw fftwSinglePrec;
inherit portaudio;
inherit jdk;
inherit python;
inherit enableQt enableJIT enableReadline enableJava;
buildEnv = callPackage ./build-env.nix {
octave = self;
inherit octavePackages wrapOctave;
inherit (octavePackages) computeRequiredOctavePackages;
};
withPackages = import ./with-packages.nix { inherit buildEnv octavePackages; };
pkgs = octavePackages;
interpreter = "${self}/bin/octave";
};
meta = {
homepage = "https://www.gnu.org/software/octave/";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [ raskin doronbehar ];
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
(lib.platforms.linux ++ lib.platforms.darwin)
else overridePlatforms;
};
};
meta = {
homepage = "https://www.gnu.org/software/octave/";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [ raskin doronbehar ];
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
(lib.platforms.linux ++ lib.platforms.darwin)
else overridePlatforms;
};
}
in self