From 334f2a858424172756222e0270c5a3e88a787792 Mon Sep 17 00:00:00 2001 From: Phillip Seeber Date: Wed, 12 Oct 2022 10:40:40 +0200 Subject: [PATCH] openmm: init at 7.7.0 openmm formatting and inputs openmm: clang optional openmm: formatting openmm: formatting openmm: formatting openmm: formatting openmm: fix openmm: disable more tests openmm: disable more tests openmm: disable more stochastic tests --- .../science/chemistry/openmm/default.nix | 91 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 + pkgs/top-level/python-packages.nix | 5 + 3 files changed, 98 insertions(+) create mode 100644 pkgs/development/libraries/science/chemistry/openmm/default.nix diff --git a/pkgs/development/libraries/science/chemistry/openmm/default.nix b/pkgs/development/libraries/science/chemistry/openmm/default.nix new file mode 100644 index 000000000000..16bb94246e42 --- /dev/null +++ b/pkgs/development/libraries/science/chemistry/openmm/default.nix @@ -0,0 +1,91 @@ +{ stdenv +, lib +, fetchFromGitHub +, cmake +, gfortran +, fftwSinglePrec +, doxygen +, swig +, python3Packages, enablePython ? false +, opencl-headers, ocl-icd, enableOpencl ? false +, clang, enableClang ? true +, cudatoolkit, enableCuda ? false +}: + +stdenv.mkDerivation rec { + pname = "openmm"; + version = "7.7.0"; + + src = fetchFromGitHub { + owner = "openmm"; + repo = pname; + rev = version; + hash = "sha256-2PYUGTMVQ5qVDeeABrwR45U3JIgo2xMXKlD6da7y3Dw="; + }; + + # "This test is stochastic and may occassionally fail". It does. + postPatch = '' + rm \ + platforms/*/tests/Test*BrownianIntegrator.* \ + platforms/*/tests/Test*LangevinIntegrator.* \ + serialization/tests/TestSerializeIntegrator.cpp + ''; + + nativeBuildInputs = [ cmake gfortran swig doxygen python3Packages.python ]; + + buildInputs = [ fftwSinglePrec ] + ++ lib.optionals enableOpencl [ ocl-icd opencl-headers ] + ++ lib.optional enableCuda cudatoolkit; + + propagatedBuildInputs = lib.optionals enablePython (with python3Packages; [ + python + numpy + cython + ]); + + cmakeFlags = [ + "-DBUILD_TESTING=ON" + "-DOPENMM_BUILD_AMOEBA_PLUGIN=ON" + "-DOPENMM_BUILD_CPU_LIB=ON" + "-DOPENMM_BUILD_C_AND_FORTRAN_WRAPPERS=ON" + "-DOPENMM_BUILD_DRUDE_PLUGIN=ON" + "-DOPENMM_BUILD_PME_PLUGIN=ON" + "-DOPENMM_BUILD_RPMD_PLUGIN=ON" + "-DOPENMM_BUILD_SHARED_LIB=ON" + ] ++ lib.optionals enablePython [ + "-DOPENMM_BUILD_PYTHON_WRAPPERS=ON" + ] ++ lib.optionals enableClang [ + "-DCMAKE_C_COMPILER=${clang}/bin/clang" + "-DCMAKE_CXX_COMPILER=${clang}/bin/clang++" + ] ++ lib.optionals enableOpencl [ + "-DOPENMM_BUILD_OPENCL_LIB=ON" + "-DOPENMM_BUILD_AMOEBA_OPENCL_LIB=ON" + "-DOPENMM_BUILD_DRUDE_OPENCL_LIB=ON" + "-DOPENMM_BUILD_RPMD_OPENCL_LIB=ON" + ] ++ lib.optionals enableCuda [ + "-DCUDA_SDK_ROOT_DIR=${cudatoolkit}" + "-DOPENMM_BUILD_AMOEBA_CUDA_LIB=ON" + "-DOPENMM_BUILD_CUDA_LIB=ON" + "-DOPENMM_BUILD_DRUDE_CUDA_LIB=ON" + "-DOPENMM_BUILD_RPMD_CUDA_LIB=ON" + "-DCMAKE_LIBRARY_PATH=${cudatoolkit}/lib64/stubs" + ]; + + postInstall = lib.strings.optionalString enablePython '' + export OPENMM_LIB_PATH=$out/lib + export OPENMM_INCLUDE_PATH=$out/include + cd python + ${python3Packages.python.interpreter} setup.py build + ${python3Packages.python.interpreter} setup.py install --prefix=$out + ''; + + doCheck = true; + + meta = with lib; { + description = "Toolkit for molecular simulation using high performance GPU code"; + homepage = "https://openmm.org/"; + license = with licenses; [ gpl3Plus lgpl3Plus mit ]; + platforms = platforms.linux; + maintainers = [ maintainers.sheepforce ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 673f42bd5df8..a4d35d798728 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -30278,6 +30278,8 @@ with pkgs; open-policy-agent = callPackage ../development/tools/open-policy-agent { }; + openmm = callPackage ../development/libraries/science/chemistry/openmm { }; + openshift = callPackage ../applications/networking/cluster/openshift { }; opsdroid = callPackage ../applications/networking/opsdroid { }; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 077d3fda6796..e2355c767989 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -6533,6 +6533,11 @@ in { openidc-client = callPackage ../development/python-modules/openidc-client { }; + openmm = toPythonModule (pkgs.openmm.override { + python3Packages = self; + enablePython = true; + }); + openpyxl = callPackage ../development/python-modules/openpyxl { }; openrazer = callPackage ../development/python-modules/openrazer/pylib.nix { };