summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Berger <rberger@lanl.gov>2024-07-01 12:57:26 -0600
committerGitHub <noreply@github.com>2024-07-01 11:57:26 -0700
commitd8fe628a95fbe8929c81ac6327f95de8e415767d (patch)
tree58baaebbf3f8a6aa9fa1cd8abc7c01839c1604e9
parent4c378840e3b768e8b9ce7a615242f1e3be3aaa0d (diff)
downloadspack-d8fe628a95fbe8929c81ac6327f95de8e415767d.tar.gz
spack-d8fe628a95fbe8929c81ac6327f95de8e415767d.tar.bz2
spack-d8fe628a95fbe8929c81ac6327f95de8e415767d.tar.xz
spack-d8fe628a95fbe8929c81ac6327f95de8e415767d.zip
LAMMPS updates (#44977)
* lammps: add new versions * lammps: add directories for plugins * lammps-example-plugin: new package Example illustrating how to install a LAMMPS plugin, based on the example part of the LAMMPS distribution.
-rw-r--r--var/spack/repos/builtin/packages/lammps-example-plugin/package.py71
-rw-r--r--var/spack/repos/builtin/packages/lammps/package.py13
2 files changed, 84 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/lammps-example-plugin/package.py b/var/spack/repos/builtin/packages/lammps-example-plugin/package.py
new file mode 100644
index 0000000000..e9145353d3
--- /dev/null
+++ b/var/spack/repos/builtin/packages/lammps-example-plugin/package.py
@@ -0,0 +1,71 @@
+# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+
+import datetime as dt
+
+from spack.package import *
+from spack.pkg.builtin.lammps import Lammps
+
+
+class LammpsExamplePlugin(CMakePackage):
+ """LAMMPS Example Plugin"""
+
+ homepage = "https://www.lammps.org/"
+ url = "https://github.com/lammps/lammps/archive/patch_1Sep2017.tar.gz"
+ git = "https://github.com/lammps/lammps.git"
+
+ maintainers("rbberger")
+
+ license("GPL-2.0-only")
+
+ # rules for new versions and deprecation
+ # * new stable versions should be added to stable_versions set
+ # * a stable version that has updates and any of its outdated update releases should be
+ # marked deprecated=True
+ # * patch releases older than a stable release should be marked deprecated=True
+ version("develop", branch="develop")
+ version("20240627", sha256="2174a99d266279823a8c57629ee1c21ec357816aefd85f964d9f859fe9222aa5")
+ version("20240417", sha256="158b288725c251fd8b30dbcf61749e0d6a042807da92af865a7d3c413efdd8ea")
+ version(
+ "20240207.1", sha256="3ba62c2a1ed463fceedf313a1c3ea2997994aa102379a8d35b525ea424f56776"
+ )
+ version(
+ "20240207",
+ sha256="d518f32de4eb2681f2543be63926411e72072dd7d67c1670c090b5baabed98ac",
+ deprecated=True,
+ )
+ version("20231121", sha256="704d8a990874a425bcdfe0245faf13d712231ba23f014a3ebc27bc14398856f1")
+ version(
+ "20230802.3",
+ sha256="6666e28cb90d3ff01cbbda6c81bdb85cf436bbb41604a87f2ab2fa559caa8510",
+ preferred=True,
+ )
+
+ def url_for_version(self, version):
+ split_ver = str(version).split(".")
+ vdate = dt.datetime.strptime(split_ver[0], "%Y%m%d")
+ if len(split_ver) < 2:
+ update = ""
+ else:
+ update = "_update{0}".format(split_ver[1])
+
+ return "https://github.com/lammps/lammps/archive/{0}_{1}{2}.tar.gz".format(
+ "stable" if str(version) in Lammps.stable_versions else "patch",
+ vdate.strftime("%d%b%Y").lstrip("0"),
+ update,
+ )
+
+ depends_on("lammps+plugin+lib")
+
+ root_cmakelists_dir = "examples/plugins"
+
+ def patch(self):
+ with open("examples/plugins/CMakeLists.txt", "a") as f:
+ print("include(GNUInstallDirs)", file=f)
+ print(
+ "install(TARGETS morse2plugin nve2plugin helloplugin zero2plugin morse2plugin"
+ "LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/lammps/plugins)",
+ file=f,
+ )
diff --git a/var/spack/repos/builtin/packages/lammps/package.py b/var/spack/repos/builtin/packages/lammps/package.py
index 7d007d559f..aac7e423b9 100644
--- a/var/spack/repos/builtin/packages/lammps/package.py
+++ b/var/spack/repos/builtin/packages/lammps/package.py
@@ -29,6 +29,8 @@ class Lammps(CMakePackage, CudaPackage, ROCmPackage, PythonExtension):
# marked deprecated=True
# * patch releases older than a stable release should be marked deprecated=True
version("develop", branch="develop")
+ version("20240627", sha256="2174a99d266279823a8c57629ee1c21ec357816aefd85f964d9f859fe9222aa5")
+ version("20240417", sha256="158b288725c251fd8b30dbcf61749e0d6a042807da92af865a7d3c413efdd8ea")
version(
"20240207.1", sha256="3ba62c2a1ed463fceedf313a1c3ea2997994aa102379a8d35b525ea424f56776"
)
@@ -461,6 +463,7 @@ class Lammps(CMakePackage, CudaPackage, ROCmPackage, PythonExtension):
"ml-pod": {"when": "@20221222:"},
"ml-rann": {"when": "@20210702:"},
"ml-snap": {"when": "@20210702:"},
+ "ml-uf3": {"when": "@20240627:"},
"mliap": {"when": "@20200630:20210527"},
"mofff": {"when": "@20210702:"},
"molecule": {"default": True},
@@ -630,6 +633,8 @@ class Lammps(CMakePackage, CudaPackage, ROCmPackage, PythonExtension):
depends_on("kokkos+deprecated_code+shared@3.0.00", when="@20200303+kokkos")
depends_on("kokkos+shared@3.1:", when="@20200505:+kokkos")
depends_on("kokkos@3.7.01:", when="@20230208: +kokkos")
+ depends_on("kokkos@4.3.00:", when="@20240417: +kokkos")
+ depends_on("kokkos@4.3.01:", when="@20240627: +kokkos")
depends_on("adios2", when="+user-adios")
depends_on("adios2", when="+adios")
depends_on("plumed", when="+user-plumed")
@@ -892,6 +897,14 @@ class Lammps(CMakePackage, CudaPackage, ROCmPackage, PythonExtension):
else:
env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib)
env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib64)
+ if "+plugin" in self.spec:
+ env.prepend_path("LAMMPS_PLUGIN_PATH", self.prefix.lib.lammps.plugins)
+ env.prepend_path("LAMMPS_PLUGIN_PATH", self.prefix.lib64.lammps.plugins)
+
+ @run_after("install")
+ def make_plugins_directories(self):
+ os.makedirs(self.prefix.lib.lammps.plugins, exist_ok=True)
+ os.makedirs(self.prefix.lib64.lammps.plugins, exist_ok=True)
@run_after("install")
def install_python(self):