diff options
Diffstat (limited to 'pkgs/development/python-modules/lammps/default.nix')
-rw-r--r-- | pkgs/development/python-modules/lammps/default.nix | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/pkgs/development/python-modules/lammps/default.nix b/pkgs/development/python-modules/lammps/default.nix new file mode 100644 index 000000000000..1267792855b0 --- /dev/null +++ b/pkgs/development/python-modules/lammps/default.nix @@ -0,0 +1,49 @@ +{ + lib, + lammps, + stdenv, + buildPythonPackage, +}: + +let + LAMMPS_SHARED_LIB = "${lib.getLib lammps}/lib/liblammps${stdenv.hostPlatform.extensions.library}"; +in +buildPythonPackage { + inherit (lammps) pname version src; + + env = { + # Needed for tests + inherit LAMMPS_SHARED_LIB; + }; + # Don't perform checks if GPU is enabled - because libcuda.so cannot be opened in the sandbox + doCheck = if lammps.passthru.packages ? GPU then !lammps.passthru.packages.GPU else true; + preConfigure = '' + cd python + # Upstream assumes that the shared library is located in the same directory + # as the core.py file. We want to separate the shared library (built by + # cmake) and the Python library, so we perform this substitution: + substituteInPlace lammps/core.py \ + --replace-fail \ + "from inspect import getsourcefile" \ + "getsourcefile = lambda f: \"${LAMMPS_SHARED_LIB}\"" + ''; + + pythonImportsCheck = [ + "lammps" + "lammps.pylammps" + ]; + + # We could potentially run other examples, but some of them are so old that + # they don't run with nowadays' LAMMPS. This one is simple enough and recent + # enough and it works. + checkPhase = '' + python examples/mc.py examples/in.mc + ''; + + meta = { + description = "Python Bindings for LAMMPS"; + homepage = "https://docs.lammps.org/Python_head.html"; + inherit (lammps.meta) license; + maintainers = with lib.maintainers; [ doronbehar ]; + }; +} |