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.
This commit is contained in:
		| @@ -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, | ||||||
|  |             ) | ||||||
| @@ -29,6 +29,8 @@ class Lammps(CMakePackage, CudaPackage, ROCmPackage, PythonExtension): | |||||||
|     #   marked deprecated=True |     #   marked deprecated=True | ||||||
|     # * patch releases older than a stable release should be marked deprecated=True |     # * patch releases older than a stable release should be marked deprecated=True | ||||||
|     version("develop", branch="develop") |     version("develop", branch="develop") | ||||||
|  |     version("20240627", sha256="2174a99d266279823a8c57629ee1c21ec357816aefd85f964d9f859fe9222aa5") | ||||||
|  |     version("20240417", sha256="158b288725c251fd8b30dbcf61749e0d6a042807da92af865a7d3c413efdd8ea") | ||||||
|     version( |     version( | ||||||
|         "20240207.1", sha256="3ba62c2a1ed463fceedf313a1c3ea2997994aa102379a8d35b525ea424f56776" |         "20240207.1", sha256="3ba62c2a1ed463fceedf313a1c3ea2997994aa102379a8d35b525ea424f56776" | ||||||
|     ) |     ) | ||||||
| @@ -461,6 +463,7 @@ def url_for_version(self, version): | |||||||
|         "ml-pod": {"when": "@20221222:"}, |         "ml-pod": {"when": "@20221222:"}, | ||||||
|         "ml-rann": {"when": "@20210702:"}, |         "ml-rann": {"when": "@20210702:"}, | ||||||
|         "ml-snap": {"when": "@20210702:"}, |         "ml-snap": {"when": "@20210702:"}, | ||||||
|  |         "ml-uf3": {"when": "@20240627:"}, | ||||||
|         "mliap": {"when": "@20200630:20210527"}, |         "mliap": {"when": "@20200630:20210527"}, | ||||||
|         "mofff": {"when": "@20210702:"}, |         "mofff": {"when": "@20210702:"}, | ||||||
|         "molecule": {"default": True}, |         "molecule": {"default": True}, | ||||||
| @@ -630,6 +633,8 @@ def url_for_version(self, version): | |||||||
|     depends_on("kokkos+deprecated_code+shared@3.0.00", when="@20200303+kokkos") |     depends_on("kokkos+deprecated_code+shared@3.0.00", when="@20200303+kokkos") | ||||||
|     depends_on("kokkos+shared@3.1:", when="@20200505:+kokkos") |     depends_on("kokkos+shared@3.1:", when="@20200505:+kokkos") | ||||||
|     depends_on("kokkos@3.7.01:", when="@20230208: +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="+user-adios") | ||||||
|     depends_on("adios2", when="+adios") |     depends_on("adios2", when="+adios") | ||||||
|     depends_on("plumed", when="+user-plumed") |     depends_on("plumed", when="+user-plumed") | ||||||
| @@ -892,6 +897,14 @@ def setup_run_environment(self, env): | |||||||
|             else: |             else: | ||||||
|                 env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib) |                 env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib) | ||||||
|                 env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib64) |                 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") |     @run_after("install") | ||||||
|     def install_python(self): |     def install_python(self): | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Richard Berger
					Richard Berger