Merge pull request #64195 from flokli/scikits-odes

scikits-odes: init at 2.4.0
This commit is contained in:
Florian Klink 2019-09-08 16:31:59 -07:00 committed by GitHub
commit a77fba2ef9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 195 additions and 9 deletions

View File

@ -0,0 +1,52 @@
{ stdenv
, cmake
, fetchurl
, python
, liblapack
, gfortran
, lapackSupport ? true }:
let liblapackShared = liblapack.override {
shared = true;
};
in stdenv.mkDerivation rec {
pname = "sundials";
version = "3.2.1";
buildInputs = [ python ] ++ stdenv.lib.optionals (lapackSupport) [ gfortran ];
nativeBuildInputs = [ cmake ];
src = fetchurl {
url = "https://computation.llnl.gov/projects/${pname}/download/${pname}-${version}.tar.gz";
sha256 = "0238r1qnwqz13wcjzfsbcfi8rfnlxcjjmxq2vpf2qf5jgablvna7";
};
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"
"-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;
};
}

View File

@ -1,28 +1,58 @@
{ cmake, fetchurl, python, stdenv }:
{ stdenv
, cmake
, fetchurl
, python
, liblapack
, gfortran
, lapackSupport ? true }:
stdenv.mkDerivation rec {
let liblapackShared = liblapack.override {
shared = true;
};
in stdenv.mkDerivation rec {
pname = "sundials";
version = "4.1.0";
buildInputs = [ python ] ++ stdenv.lib.optionals (lapackSupport) [ gfortran ];
nativeBuildInputs = [ cmake ];
src = fetchurl {
url = "https://computation.llnl.gov/projects/${pname}/download/${pname}-${version}.tar.gz";
sha256 = "19ca4nmlf6i9ijqcibyvpprxzsdfnackgjs6dw51fq13gg1f2398";
};
preConfigure = ''
export cmakeFlags="-DCMAKE_INSTALL_PREFIX=$out -DEXAMPLES_INSTALL_PATH=$out/share/examples $cmakeFlags"
'';
patches = [
(fetchurl {
# https://github.com/LLNL/sundials/pull/19
url = "https://github.com/LLNL/sundials/commit/1350421eab6c5ab479de5eccf6af2dcad1eddf30.patch";
sha256 = "0g67lixp9m85fqpb9rzz1hl1z8ibdg0ldwq5z6flj5zl8a7cw52l";
})
(fetchurl {
# https://github.com/LLNL/sundials/pull/20
url = "https://github.com/LLNL/sundials/pull/20/commits/2d951bbe1ff7842fcd0dafa28c61b0aa94015f66.patch";
sha256 = "0lcr6m4lk14yqrxah4rdscpczny5l7m1zpfsjh8bgspadfsgk512";
})
# https://github.com/LLNL/sundials/pull/21
./tests-parallel.patch
];
nativeBuildInputs = [ cmake ];
buildInputs = [ python ];
cmakeFlags = [
"-DEXAMPLES_INSTALL_PATH=${placeholder "out"}/share/examples"
] ++ stdenv.lib.optionals (lapackSupport) [
"-DSUNDIALS_INDEX_TYPE=int32_t"
"-DLAPACK_ENABLE=ON"
"-DLAPACK_LIBRARIES=${liblapackShared}/lib/liblapack${stdenv.hostPlatform.extensions.sharedLibrary};${liblapackShared}/lib/libblas${stdenv.hostPlatform.extensions.sharedLibrary}"
];
doCheck = true;
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 = [ maintainers.idontgetoutmuch ];
maintainers = with maintainers; [ flokli idontgetoutmuch ];
license = licenses.bsd3;
};
}

View File

@ -0,0 +1,45 @@
diff --git a/config/SundialsAddTest.cmake b/config/SundialsAddTest.cmake
index e965fed..a7fb1d2 100644
--- a/config/SundialsAddTest.cmake
+++ b/config/SundialsAddTest.cmake
@@ -70,7 +70,7 @@ MACRO(SUNDIALS_ADD_TEST NAME EXECUTABLE)
"--verbose"
"--testname=${NAME}"
"--executablename=$<TARGET_FILE:${EXECUTABLE}>"
- "--outputdir=${CMAKE_BINARY_DIR}/Testing/output"
+ "--outputdir=${TEST_OUTPUT_DIR}"
)
# do not diff the output and answer files
diff --git a/config/SundialsTesting.cmake b/config/SundialsTesting.cmake
index 815576a..d91801a 100644
--- a/config/SundialsTesting.cmake
+++ b/config/SundialsTesting.cmake
@@ -29,6 +29,13 @@ IF(SUNDIALS_DEVTESTS)
ENDIF()
ENDIF()
+ # Directory for test output
+ SET(TEST_OUTPUT_DIR ${PROJECT_BINARY_DIR}/Testing/output)
+
+ IF(NOT EXISTS ${TEST_OUTPUT_DIR})
+ FILE(MAKE_DIRECTORY ${TEST_OUTPUT_DIR})
+ ENDIF()
+
# look for the testRunner script in the test directory
FIND_PROGRAM(TESTRUNNER testRunner PATHS test)
HIDE_VARIABLE(TESTRUNNER)
diff --git a/test/testRunner b/test/testRunner
index f450ec2..f1c8deb 100755
--- a/test/testRunner
+++ b/test/testRunner
@@ -106,7 +106,8 @@ def main():
# create output directory if necessary
if not os.path.exists(outDir):
- os.makedirs(outDir)
+ error("Output directory does not exist, it must be created.", outDir)
+ sys.exit(1)
elif not os.path.isdir(outDir):
error("Output directory exists but is not a directory, it must be deleted.", outDir)
sys.exit(1)

View File

@ -0,0 +1,55 @@
{ stdenv
, lib
, buildPythonPackage
, fetchFromGitHub
, fetchurl
, cython
, enum34
, gfortran
, isPy3k
, numpy
, pytest
, python
, scipy
, sundials_3
}:
buildPythonPackage rec {
pname = "scikits.odes";
version = "2.4.0-9-g93075ae";
# we fetch github instead of Pypi, as we want #104 and #105, which don't apply cleanly on 2.4.0
src = fetchFromGitHub {
owner = "bmcage";
repo = "odes";
rev = "93075ae25c409f572f13ca7207fada5706f73c73";
sha256 = "161rab7hy6r1a9xw1zby9xhnnmxi0zwdpzxfpjkw9651xn2k5xyw";
};
nativeBuildInputs = [
gfortran
cython
];
propagatedBuildInputs = [
numpy
sundials_3
scipy
] ++ lib.optionals (!isPy3k) [ enum34 ];
doCheck = true;
checkInputs = [ pytest ];
checkPhase = ''
cd $out/${python.sitePackages}/scikits/odes/tests
pytest
'';
meta = with stdenv.lib; {
description = "A scikit offering extra ode/dae solvers, as an extension to what is available in scipy";
homepage = https://github.com/bmcage/odes;
license = licenses.bsd3;
maintainers = with maintainers; [ flokli idontgetoutmuch ];
platforms = [ "aarch64-linux" "x86_64-linux" "x86_64-darwin" ];
};
}

View File

@ -13746,6 +13746,8 @@ in
sundials = callPackage ../development/libraries/sundials { };
sundials_3 = callPackage ../development/libraries/sundials/3.x.nix { };
sutils = callPackage ../tools/misc/sutils { };
svrcore = callPackage ../development/libraries/svrcore { };

View File

@ -4846,6 +4846,8 @@ in {
scikit-build = callPackage ../development/python-modules/scikit-build { };
scikits-odes = callPackage ../development/python-modules/scikits-odes { };
scikit-optimize = callPackage ../development/python-modules/scikit-optimize { };
scikit-tda = callPackage ../development/python-modules/scikit-tda { };