summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
authorRichard Berger <richard.berger@outlook.com>2023-02-16 08:43:36 -0700
committerGitHub <noreply@github.com>2023-02-16 16:43:36 +0100
commit1734127b7aaa3699b2fd6d0cee7d71d5f415facb (patch)
tree6cd15be50092f7d8a72baecfd946ff2d92539044 /var
parent44ed0de8c077630148c213d3c7f40a8965eb6f94 (diff)
downloadspack-1734127b7aaa3699b2fd6d0cee7d71d5f415facb.tar.gz
spack-1734127b7aaa3699b2fd6d0cee7d71d5f415facb.tar.bz2
spack-1734127b7aaa3699b2fd6d0cee7d71d5f415facb.tar.xz
spack-1734127b7aaa3699b2fd6d0cee7d71d5f415facb.zip
lammps: refactor variants, add new versions (#34011)
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin/packages/lammps/package.py964
1 files changed, 359 insertions, 605 deletions
diff --git a/var/spack/repos/builtin/packages/lammps/package.py b/var/spack/repos/builtin/packages/lammps/package.py
index e2e73404f8..8e2b991678 100644
--- a/var/spack/repos/builtin/packages/lammps/package.py
+++ b/var/spack/repos/builtin/packages/lammps/package.py
@@ -11,10 +11,7 @@ from spack.package import *
class Lammps(CMakePackage, CudaPackage):
"""LAMMPS stands for Large-scale Atomic/Molecular Massively
- Parallel Simulator. This package uses patch releases, not
- stable release.
- See https://github.com/spack/spack/pull/5342 for a detailed
- discussion.
+ Parallel Simulator.
"""
homepage = "https://www.lammps.org/"
@@ -25,47 +22,166 @@ class Lammps(CMakePackage, CudaPackage):
maintainers("rbberger")
+ # rules for new versions and deprecation
+ # * new stable versions should be marked as preferred=True
+ # * 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("20221222", sha256="75372ee7ef982767fc4ed4dc95e20ddca8247419adeb0c1276c40e43d1eab955")
version("20221103", sha256="d28517b84b157d4e46a1a64ed787b4662d8f2f5ade3f5a04bb0caed068f32f7e")
version("20220915", sha256="392b8d35fc7919b0efaf8b389259a9b795a817e58e75e380467c63d03a0dab75")
version("20220803", sha256="f37cb0b35c1682ffceae5826aadce47278aa7003099a1655fcea43acd7d37926")
version(
- "20220623.2", sha256="fdb5474135b17005030cd78ac85762fecf0944bdd27a81fbbe79b2b4522ccae7"
+ "20220623.2",
+ sha256="8a560213e83919623525c4a7c4b5f0eda35cdf3b0c0e6548fd891379e04ca9e6",
+ preferred=True,
)
version(
- "20220623.1", sha256="1d4fb06a4621b271e8b54f31fef241d0569717a69c1b7646a2b76fe5ce47c966"
+ "20220623.1",
+ sha256="58e3b2b984f8935bb0db5631e143be2826c45ffd48844f7c394f36624a3e17a2",
+ preferred=True,
+ deprecated=True,
+ )
+ version(
+ "20220623",
+ sha256="d27ede095c9f00cd13a26f967a723d07cf8f4df65c700ed73573577bc173d5ce",
+ preferred=True,
+ deprecated=True,
+ )
+ version(
+ "20220602",
+ sha256="3e8f54453e53b3b387a68317277f832b8cf64a981e64b21e98bb37ea36ac4a60",
+ deprecated=True,
+ )
+ version(
+ "20220504",
+ sha256="fe05bae8090fd0177b3c1b987cd32a9cb7cd05d790828ba954c764eb52e10b52",
+ deprecated=True,
+ )
+ version(
+ "20220324",
+ sha256="d791cc93eedfc345fdf87bfa5b6f7e17e461f86ba197f9e9c3d477ce8657a7ef",
+ deprecated=True,
+ )
+ version(
+ "20220217",
+ sha256="e5bd2bf325835fa98d1b95f0667c83076580916027df5b8109d5470d1b97da98",
+ deprecated=True,
+ )
+ version(
+ "20220107",
+ sha256="fbf6c6814968ae0d772d7b6783079ff4f249a8faeceb39992c344969e9f1edbb",
+ deprecated=True,
+ )
+ version(
+ "20211214",
+ sha256="9f7b1ee2394678c1a6baa2c158a62345680a952eee251783e3c246b3f12db4c9",
+ deprecated=True,
+ )
+ version(
+ "20211027",
+ sha256="c06f682fcf9d5921ca90c857a104e90fba0fe65decaac9732745e4da49281938",
+ deprecated=True,
+ )
+ version(
+ "20210929.3",
+ sha256="e4c274f0dc5fdedc43f2b365156653d1105197a116ff2bafe893523cdb22532e",
+ preferred=True,
+ )
+ version(
+ "20210929.2",
+ sha256="9318ca816cde16a9a4174bf22a1966f5f2155cb32c0ad5a6757633276411fb36",
+ preferred=True,
+ deprecated=True,
+ )
+ version(
+ "20210929.1",
+ sha256="5000b422c9c245b92df63507de5aa2ea4af345ea1f00180167aaa084b711c27c",
+ preferred=True,
+ deprecated=True,
+ )
+ version(
+ "20210929",
+ sha256="2dff656cb21fd9a6d46c818741c99d400cfb1b12102604844663b655fb2f893d",
+ preferred=True,
+ deprecated=True,
+ )
+ version(
+ "20210920",
+ sha256="e3eba96933c1dd3177143c7ac837cae69faceba196948fbad2970425db414d8c",
+ deprecated=True,
+ )
+ version(
+ "20210831",
+ sha256="532c42576a79d72682deaf43225ca773ed9f9e35deb484a82f91905b6cba23ec",
+ deprecated=True,
+ )
+ version(
+ "20210730",
+ sha256="c5e998c8282a835d2bcba4fceffe3cecdf9aed9bdf79fa9c945af573e632f6e7",
+ deprecated=True,
+ )
+ version(
+ "20210728",
+ sha256="6b844d2c3f7170a59d36fbf761483aa0c63d95eda254d00fe4d10542403abe36",
+ deprecated=True,
)
- version("20220623", sha256="21533ce6f174c80815a48c99e5f3dd109e69d55c4cad47312d88a7190a35927f")
- version("20220602", sha256="3e8f54453e53b3b387a68317277f832b8cf64a981e64b21e98bb37ea36ac4a60")
- version("20220504", sha256="fe05bae8090fd0177b3c1b987cd32a9cb7cd05d790828ba954c764eb52e10b52")
- version("20220324", sha256="d791cc93eedfc345fdf87bfa5b6f7e17e461f86ba197f9e9c3d477ce8657a7ef")
- version("20220217", sha256="e5bd2bf325835fa98d1b95f0667c83076580916027df5b8109d5470d1b97da98")
- version("20220107", sha256="fbf6c6814968ae0d772d7b6783079ff4f249a8faeceb39992c344969e9f1edbb")
- version("20211214", sha256="9f7b1ee2394678c1a6baa2c158a62345680a952eee251783e3c246b3f12db4c9")
- version("20211027", sha256="c06f682fcf9d5921ca90c857a104e90fba0fe65decaac9732745e4da49281938")
version(
- "20210929.3", sha256="d7df30f7ce0bd8b7c21949cf5bdf1877858815379cddb8a264da7a8cbf699639"
+ "20210702",
+ sha256="4fdd8ca2dbde8809c0048716650b73ae1f840e22ebe24b25f6f7a499377fea57",
+ deprecated=True,
+ )
+ version(
+ "20210527",
+ sha256="f9f29970941f406d5c250de52a4cd07e5a4e44ae3b5ffed46edd019d998b8c33",
+ deprecated=True,
+ )
+ version(
+ "20210514",
+ sha256="74d9c4386f2181b15a024314c42b7a0b0aaefd3b4b947aeca00fe07e5b2f3317",
+ deprecated=True,
+ )
+ version(
+ "20210408",
+ sha256="1645147b7777de4f616b8232edf0b597868084f969c777fa0a757949c3f71f56",
+ deprecated=True,
+ )
+ version(
+ "20210310",
+ sha256="25708378dbeccf794bc5045aceb84380bf4a3ca03fc8e5d150a26ca88d371474",
+ deprecated=True,
)
version(
- "20210929.2", sha256="26586c1e82356b60e40359ee474818003c7788214bfe2bfe9128a3dbe5200b4d"
+ "20210210",
+ sha256="2c5ba2c7935ad559ca94ee826e8727e65b49ef4582eb856534fffba70e44101a",
+ deprecated=True,
)
version(
- "20210929.1", sha256="3b792e20864bf88b855332486996f2c540deabb4e3507e48fa4ee96ad79615ec"
+ "20201029",
+ sha256="759705e16c1fedd6aa6e07d028cc0c78d73c76b76736668420946a74050c3726",
+ preferred=True,
+ )
+ version(
+ "20200721",
+ sha256="845bfeddb7b667799a1a5dbc166b397d714c3d2720316604a979d3465b4190a9",
+ deprecated=True,
+ )
+ version(
+ "20200630",
+ sha256="413cbfabcc1541a339c7a4ab5693fbeb768f46bb1250640ba94686c6e90922fc",
+ deprecated=True,
+ )
+ version(
+ "20200505",
+ sha256="c49d77fd602d28ebd8cf10f7359b9fc4d14668c72039028ed7792453d416de73",
+ deprecated=True,
+ )
+ version(
+ "20200303",
+ sha256="a1a2e3e763ef5baecea258732518d75775639db26e60af1634ab385ed89224d1",
+ preferred=True,
)
- version("20210929", sha256="5132f332b582be3006510562ef10bac9ef76d760f34fc08a2af556416c57cf4c")
- version("20210920", sha256="e3eba96933c1dd3177143c7ac837cae69faceba196948fbad2970425db414d8c")
- version("20210831", sha256="532c42576a79d72682deaf43225ca773ed9f9e35deb484a82f91905b6cba23ec")
- version("20210730", sha256="c5e998c8282a835d2bcba4fceffe3cecdf9aed9bdf79fa9c945af573e632f6e7")
- version("20210728", sha256="6b844d2c3f7170a59d36fbf761483aa0c63d95eda254d00fe4d10542403abe36")
- version("20210702", sha256="4fdd8ca2dbde8809c0048716650b73ae1f840e22ebe24b25f6f7a499377fea57")
- version("20210514", sha256="74d9c4386f2181b15a024314c42b7a0b0aaefd3b4b947aeca00fe07e5b2f3317")
- version("20210408", sha256="1645147b7777de4f616b8232edf0b597868084f969c777fa0a757949c3f71f56")
- version("20210310", sha256="25708378dbeccf794bc5045aceb84380bf4a3ca03fc8e5d150a26ca88d371474")
- version("20201029", sha256="3d347f6b512bc360505019d1c6183c969a2e1da402e31a1e26577daf5e419d95")
- version("20200721", sha256="845bfeddb7b667799a1a5dbc166b397d714c3d2720316604a979d3465b4190a9")
- version("20200630", sha256="413cbfabcc1541a339c7a4ab5693fbeb768f46bb1250640ba94686c6e90922fc")
- version("20200505", sha256="c49d77fd602d28ebd8cf10f7359b9fc4d14668c72039028ed7792453d416de73")
- version("20200303", sha256="9aa56dfb8673a06e6c88588505ec1dfc01dd94f9d60e719ed0c605e48cc06c58")
version(
"20200227",
sha256="1aabcf38bc72285797c710b648e906151a912c36b634a9c88ac383aacf85516e",
@@ -204,148 +320,173 @@ class Lammps(CMakePackage, CudaPackage):
update = ""
else:
update = "_update{0}".format(split_ver[1])
- return "https://github.com/lammps/lammps/archive/patch_{0}{1}.tar.gz".format(
- vdate.strftime("%d%b%Y").lstrip("0"), update
+
+ is_stable = (
+ version in self.versions
+ and "preferred" in self.versions[version]
+ and self.versions[version]["preferred"]
+ )
+
+ return "https://github.com/lammps/lammps/archive/{0}_{1}{2}.tar.gz".format(
+ "stable" if is_stable else "patch", vdate.strftime("%d%b%Y").lstrip("0"), update
)
# List of supported optional packages
# Note: package `openmp` in this recipe is called `openmp-package`, to avoid clash
# with the pre-existing `openmp` variant
- supported_packages = [
- "asphere",
- "body",
- "bpm",
- "class2",
- "colloid",
- "compress",
- "coreshell",
- "dielectric",
- "dipole",
- "electrode",
- "granular",
- "intel",
- "kspace",
- "kokkos",
- "latte",
- "manybody",
- "mc",
- "meam",
- "misc",
- "mliap",
- "ml-hdnnp",
- "ml-iap",
- "ml-snap",
- "molecule",
- "mpiio",
- "opt",
- "peri",
- "plugin",
- "poems",
- "python",
- "qeq",
- "replica",
- "rigid",
- "shock",
- "snap",
- "spin",
- "srd",
- "voronoi",
- "user-atc",
- "user-adios",
- "user-awpmd",
- "user-bocs",
- "user-brownian",
- "user-cgsdk",
- "user-colvars",
- "user-diffraction",
- "user-dpd",
- "user-drude",
- "user-eff",
- "user-fep",
- "user-h5md",
- "user-hdnnp",
- "user-intel",
- "user-lb",
- "user-manifold",
- "user-meamc",
- "user-mesodpd",
- "user-mesont",
- "user-mgpt",
- "user-misc",
- "user-mofff",
- "user-molfile",
- "user-netcdf",
- "user-omp",
- "user-phonon",
- "user-plumed",
- "user-ptm",
- "user-qtb",
- "user-reaction",
- "user-reaxc",
- "user-sdpd",
- "user-smd",
- "user-smtbq",
- "user-sph",
- "user-tally",
- "user-uef",
- "user-yaff",
- "atc",
- "adios",
- "awpmd",
- "bocs",
- "brownian",
- "cg-sdk",
- "colvars",
- "diffraction",
- "dpd-basic",
- "dpd-meso",
- "dpd-react",
- "dpd-smooth",
- "drude",
- "eff",
- "extra-compute",
- "extra-dump",
- "extra-fix",
- "extra-molecule",
- "extra-pair",
- "fep",
- "h5md",
- "interlayer",
- "latboltz",
- "machdyn",
- "manifold",
- "mesont",
- "mgpt",
- "mofff",
- "molfile",
- "netcdf",
- "openmp-package",
- "orient",
- "phonon",
- "plumed",
- "ptm",
- "qtb",
- "reaction",
- "reaxff",
- "smtbq",
- "sph",
- "tally",
- "uef",
- "yaff",
- ]
-
- for pkg in supported_packages:
+ # version ranges generates using utility script:
+ # https://gist.github.com/rbberger/fdaa38ff08e5961c4741624a4719cdb6
+ supported_packages = {
+ "adios": {"when": "@20210702:"},
+ "amoeba": {"when": "@20220803:"},
+ "asphere": {},
+ "atc": {"when": "@20210702:"},
+ "awpmd": {"when": "@20210702:"},
+ "bocs": {"when": "@20210702:"},
+ "body": {},
+ "bpm": {"when": "@20220504:"},
+ "brownian": {"when": "@20210702:"},
+ "cg-dna": {"when": "@20210702:"},
+ "cg-sdk": {"when": "@20210702:20220623"},
+ "cg-spica": {"when": "@20220803:"},
+ "class2": {},
+ "colloid": {},
+ "colvars": {"when": "@20210702:"},
+ "compress": {},
+ "coreshell": {},
+ "dielectric": {"when": "@20210702:"},
+ "diffraction": {"when": "@20210702:"},
+ "dipole": {},
+ "dpd-basic": {"when": "@20210702:"},
+ "dpd-meso": {"when": "@20210702:"},
+ "dpd-react": {"when": "@20210702:"},
+ "dpd-smooth": {"when": "@20210702:"},
+ "drude": {"when": "@20210702:"},
+ "eff": {"when": "@20210702:"},
+ "electrode": {"when": "@20220504:"},
+ "extra-compute": {"when": "@20210728:"},
+ "extra-dump": {"when": "@20210728:"},
+ "extra-fix": {"when": "@20210728:"},
+ "extra-molecule": {"when": "@20210728:"},
+ "extra-pair": {"when": "@20210728:"},
+ "fep": {"when": "@20210702:"},
+ "granular": {},
+ "h5md": {"when": "@20210702:"},
+ "intel": {"when": "@20210702:"},
+ "interlayer": {"when": "@20210728:"},
+ "kim": {},
+ "kokkos": {},
+ "kspace": {"default": True},
+ "latboltz": {"when": "@20210702:"},
+ "latte": {"when": "@20170922:"},
+ "machdyn": {"when": "@20210702:"},
+ "manifold": {"when": "@20210702:"},
+ "manybody": {"default": True},
+ "mc": {},
+ "meam": {"when": "@:20181212,20210702:"},
+ "mesont": {"when": "@20210702:"},
+ "mgpt": {"when": "@20210702:"},
+ "misc": {},
+ "ml-hdnnp": {"when": "@20210702:"},
+ "ml-iap": {"when": "@20210702:"},
+ "ml-pod": {"when": "@20221222:"},
+ "ml-rann": {"when": "@20210702:"},
+ "ml-snap": {"when": "@20210702:"},
+ "mliap": {"when": "@20200630:20210527"},
+ "mofff": {"when": "@20210702:"},
+ "molecule": {"default": True},
+ "molfile": {"when": "@20210702:"},
+ "mpiio": {},
+ "netcdf": {"when": "@20210702:"},
+ "openmp-package": {},
+ "opt": {},
+ "orient": {"when": "@20210728:"},
+ "peri": {},
+ "phonon": {"when": "@20210702:"},
+ "plugin": {"when": "@20210408:"},
+ "plumed": {"when": "@20210702:"},
+ "poems": {},
+ "ptm": {"when": "@20210702:"},
+ "python": {},
+ "qeq": {},
+ "qtb": {"when": "@20210702:"},
+ "reaction": {"when": "@20210702:"},
+ "reax": {"when": "@:20181212"},
+ "reaxff": {"when": "@20210702:"},
+ "replica": {},
+ "rigid": {"default": True},
+ "shock": {},
+ "smtbq": {"when": "@20210702:"},
+ "snap": {"when": "@:20210527"},
+ "sph": {"when": "@20210702:"},
+ "spin": {"when": "@20180629:"},
+ "srd": {},
+ "tally": {"when": "@20210702:"},
+ "uef": {"when": "@20210702:"},
+ "user-adios": {"when": "@20190228:20210527"},
+ "user-atc": {"when": "@:20210527"},
+ "user-awpmd": {"when": "@:20210527"},
+ "user-bocs": {"when": "@20180511:20210527"},
+ "user-brownian": {"when": "@20210514:20210527"},
+ "user-cgsdk": {"when": "@20170504:20210527"},
+ "user-colvars": {"when": "@:20210527"},
+ "user-diffraction": {"when": "@:20210527"},
+ "user-dpd": {"when": "@:20210527"},
+ "user-drude": {"when": "@:20210527"},
+ "user-eff": {"when": "@:20210527"},
+ "user-fep": {"when": "@:20210527"},
+ "user-h5md": {"when": "@:20210527"},
+ "user-hdnnp": {"when": "@20210527"},
+ "user-intel": {"when": "@:20210527"},
+ "user-lb": {"when": "@:20210527"},
+ "user-manifold": {"when": "@:20210527"},
+ "user-meamc": {"when": "@20170706:20210527"},
+ "user-mesodpd": {"when": "@20200319:20210527"},
+ "user-mesont": {"when": "@20200615:20210527"},
+ "user-mgpt": {"when": "@:20210527"},
+ "user-misc": {"when": "@:20210702"},
+ "user-mofff": {"when": "@20180205:20210527"},
+ "user-molfile": {"when": "@:20210527"},
+ "user-netcdf": {"when": "@20170504:20210527"},
+ "user-omp": {"when": "@:20210527"},
+ "user-phonon": {"when": "@:20210527"},
+ "user-plumed": {"when": "@20181109:20210527"},
+ "user-ptm": {"when": "@20181010:20210527"},
+ "user-qtb": {"when": "@:20210527"},
+ "user-rann": {"when": "@20210527"},
+ "user-reaction": {"when": "@20200319:20210527"},
+ "user-reaxc": {"when": "@:20210527"},
+ "user-sdpd": {"when": "@20181109:20210527"},
+ "user-smd": {"when": "@:20210527"},
+ "user-smtbq": {"when": "@:20210527"},
+ "user-sph": {"when": "@:20210527"},
+ "user-tally": {"when": "@:20210527"},
+ "user-uef": {"when": "@20171023:20210527"},
+ "user-vtk": {"when": "@20210527"},
+ "user-yaff": {"when": "@20190201:20210527"},
+ "voronoi": {},
+ "vtk": {"when": "@20210702:"},
+ "yaff": {"when": "@20210702:"},
+ # "mdi": {"when": "@20210702:"}, no mdi package
+ # "ml-pace": {"when": "@20210702:"}, no pace package
+ # "ml-quip": {"when": "@20210702:"}, no quip package
+ # "scafacos": {"when": "@20210702:"}, no scafacos package
+ # "user-quip": {"when": "@20190201:20210527"}, no quip package
+ # "user-scafacos": {"when": "@20180905:20210527"}, no scafacos package
+ }
+
+ for pkg_name, pkg_options in supported_packages.items():
variant(
- pkg,
- default=False,
- description="Activate the {0} package".format(pkg.replace("-package", "")),
+ pkg_name,
+ default=pkg_options.get("default", False),
+ description="Activate the {} package".format(pkg_name.replace("-package", "")),
+ when=pkg_options.get("when", None),
)
variant("lib", default=True, description="Build the liblammps in addition to the executable")
variant("mpi", default=True, description="Build with mpi")
- variant("jpeg", default=True, description="Build with jpeg support")
- variant("png", default=True, description="Build with png support")
- variant("ffmpeg", default=True, description="Build with ffmpeg support")
- variant("kim", default=True, description="Build with KIM support")
+ variant("jpeg", default=False, description="Build with jpeg support")
+ variant("png", default=False, description="Build with png support")
+ variant("ffmpeg", default=False, description="Build with ffmpeg support")
variant("openmp", default=True, description="Build with OpenMP")
variant("opencl", default=False, description="Build with OpenCL")
variant("exceptions", default=False, description="Build with lammps exceptions")
@@ -412,12 +553,19 @@ class Lammps(CMakePackage, CudaPackage):
depends_on("eigen@3:", when="+machdyn")
depends_on("py-cython", when="+mliap+python")
depends_on("py-cython", when="+ml-iap+python")
- depends_on("py-numpy", when="+mliap+python")
- depends_on("py-numpy", when="+ml-iap+python")
+ depends_on("py-numpy", when="+python")
+ depends_on("py-mpi4py", when="+python+mpi")
depends_on("py-setuptools", when="@20220217:+python", type="build")
depends_on("n2p2@2.1.4:", when="+user-hdnnp")
depends_on("n2p2@2.1.4:", when="+ml-hdnnp")
depends_on("n2p2+shared", when="+lib ^n2p2")
+ depends_on("vtk", when="+user-vtk")
+ depends_on("vtk", when="+vtk")
+
+ depends_on("googletest", type="test")
+ depends_on("libyaml", type="test")
+
+ extends("python", when="+python")
conflicts("+cuda", when="+opencl")
conflicts("+body", when="+poems@:20180628")
@@ -434,43 +582,6 @@ class Lammps(CMakePackage, CudaPackage):
conflicts("+dielectric", when="~kspace")
conflicts("+dielectric", when="@:20210702~user-misc")
conflicts("+dielectric", when="@20210728:~extra-pair")
- conflicts(
- "+meam",
- when="@20181212:20210527",
- msg="+meam is removed between @20181212 and @20210527, use +user-meamc instead",
- )
- conflicts(
- "+user-meamc", when="@:20181212", msg="+user-meamc only added @20181212, use +meam instead"
- )
- conflicts(
- "+user-reaction",
- when="@:20200303",
- msg="+user-reaction only supported for version 20200505 and later",
- )
- conflicts(
- "+plugin", when="@:20210310", msg="+plugin only supported for version 20210408 and later"
- )
- conflicts(
- "+user-brownian",
- when="@:20210408",
- msg="+user-brownian only supported for version 20210514 and later",
- )
- conflicts(
- "+dielectric",
- when="@:20210527",
- msg="+dielectric only supported for version 20210702 and later",
- )
- conflicts(
- "+dpd-basic",
- when="@:20210527",
- msg="+dpd-basic only supported for version 20210702 and later",
- )
- conflicts("+bpm", when="@:20220324", msg="+bpm only supported for version 20220504 and later")
- conflicts(
- "+electrode",
- when="@:20220324",
- msg="+electrode only supported for version 20220504 and later",
- )
conflicts("+electrode", when="~kspace")
conflicts("+mliap", when="~snap")
conflicts("+ml-iap", when="~ml-snap")
@@ -495,362 +606,6 @@ class Lammps(CMakePackage, CudaPackage):
msg="With +adios, mpi setting for adios2 and lammps must be the same",
)
- # In the following, package refactoring at 2 July 2021
- conflicts(
- "+mliap", when="@20210702:", msg="+mliap was removed after @20210527, use +ml-iap instead"
- )
- conflicts("+ml-iap", when="@:20210527", msg="+ml-iap only added @20210702, use +mliap instead")
- conflicts(
- "+snap", when="@20210702:", msg="+snap was removed after @20210527, use +ml-snap instead"
- )
- conflicts(
- "+ml-snap", when="@:20210527", msg="+ml-snap only added @20210702, use +snap instead"
- )
- #
- conflicts(
- "+user-atc",
- when="@20210702:",
- msg="+user-atc was removed after @20210527, use +atc instead",
- )
- conflicts("+atc", when="@:20210527", msg="+atc only added @20210702, use +user-atc instead")
- conflicts(
- "+user-adios",
- when="@20210702:",
- msg="+user-adios was removed after @20210527, use +adios instead",
- )
- conflicts(
- "+adios", when="@:20210527", msg="+adios only added @20210702, use +user-adios instead"
- )
- conflicts(
- "+user-awpmd",
- when="@20210702:",
- msg="+user-awpmd was removed after @20210527, use +awpmd instead",
- )
- conflicts(
- "+awpmd", when="@:20210527", msg="+awpmd only added @20210702, use +user-awpmd instead"
- )
- conflicts(
- "+user-bocs",
- when="@20210702:",
- msg="+user-bocs was removed after @20210527, use +bocs instead",
- )
- conflicts("+bocs", when="@:20210527", msg="+bocs only added @20210702, use +user-bocs instead")
- conflicts(
- "+user-brownian",
- when="@20210702:",
- msg="+user-brownian was removed after @20210527, use +brownian instead",
- )
- conflicts(
- "+brownian",
- when="@:20210527",
- msg="+brownian only added @20210702, use +user-brownian instead",
- )
- conflicts(
- "+user-cgsdk",
- when="@20210702:",
- msg="+user-cgsdk was removed after @20210527, use +cg-sdk instead",
- )
- conflicts(
- "+cg-sdk", when="@:20210527", msg="+cg-sdk only added @20210702, use +user-cgsdk instead"
- )
- conflicts(
- "+user-colvars",
- when="@20210702:",
- msg="+user-colvars was removed after @20210527, use +colvars instead",
- )
- conflicts(
- "+colvars",
- when="@:20210527",
- msg="+colvars only added @20210702, use +user-colvars instead",
- )
- conflicts(
- "+user-diffraction",
- when="@20210702:",
- msg="+user-diffraction was removed after @20210527, use +diffraction instead",
- )
- conflicts(
- "+diffraction",
- when="@:20210527",
- msg="+diffraction only added @20210702, use +user-diffraction instead",
- )
- conflicts(
- "+user-dpd",
- when="@20210702:",
- msg="+user-dpd was removed after @20210527, use +dpd-react instead",
- )
- conflicts(
- "+dpd-react",
- when="@:20210527",
- msg="+dpd-react only added @20210702, use +user-dpd instead",
- )
- conflicts(
- "+user-drude",
- when="@20210702:",
- msg="+user-drude was removed after @20210527, use +drude instead",
- )
- conflicts(
- "+drude", when="@:20210527", msg="+drude only added @20210702, use +user-drude instead"
- )
- conflicts(
- "+user-eff",
- when="@20210702:",
- msg="+user-eff was removed after @20210527, use +eff instead",
- )
- conflicts("+eff", when="@:20210527", msg="+eff only added @20210702, use +user-eff instead")
- conflicts(
- "+user-fep",
- when="@20210702:",
- msg="+user-fep was removed after @20210527, use +fep instead",
- )
- conflicts("+fep", when="@:20210527", msg="+fep only added @20210702, use +user-fep instead")
- conflicts(
- "+user-h5md",
- when="@20210702:",
- msg="+user-h5md was removed after @20210527, use +h5md instead",
- )
- conflicts("+h5md", when="@:20210527", msg="+h5md only added @20210702, use +user-h5md instead")
- conflicts(
- "+user-hdnnp", when="@:20210514", msg="+user-hdnnp was introduced in version @20210527"
- )
- conflicts(
- "+user-hdnnp",
- when="@20210702:",
- msg="+user-hdnnp was removed after @20210527, use +ml-hdnnp instead",
- )
- conflicts(
- "+ml-hdnnp",
- when="@:20210527",
- msg="+ml-hdnnp only added @20210702, use +user-hdnnp instead",
- )
- conflicts(
- "+user-intel",
- when="@20210702:",
- msg="+user-intel was removed after @20210527, use +intel instead",
- )
- conflicts(
- "+intel", when="@:20210527", msg="+intel only added @20210702, use +user-intel instead"
- )
- conflicts(
- "+user-lb",
- when="@20210702:",
- msg="+user-lb was removed after @20210527, use +latboltz instead",
- )
- conflicts(
- "+latboltz", when="@:20210527", msg="+latboltz only added @20210702, use +user-lb instead"
- )
- conflicts(
- "+user-manifold",
- when="@20210702:",
- msg="+user-manifold was removed after @20210527, use +manifold instead",
- )
- conflicts(
- "+manifold",
- when="@:20210527",
- msg="+manifold only added @20210702, use +user-manifold instead",
- )
- conflicts(
- "+user-meamc",
- when="@20210702:",
- msg="+user-meamc was removed after @20210527, use +meam instead",
- )
- conflicts(
- "+user-mesodpd",
- when="@20210702:",
- msg="+user-mesodpd was removed after @20210527, use +dpd-meso instead",
- )
- conflicts(
- "+dpd-meso",
- when="@:20210527",
- msg="+dpd-meso only added @20210702, use +user-mesodpd instead",
- )
- conflicts(
- "+user-mesont",
- when="@20210702:",
- msg="+user-mesont was removed after @20210527, use +mesont instead",
- )
- conflicts(
- "+mesont", when="@:20210527", msg="+mesont only added @20210702, use +user-mesont instead"
- )
- conflicts(
- "+user-mgpt",
- when="@20210702:",
- msg="+user-mgpt was removed after @20210527, use +mgpt instead",
- )
- conflicts("+mgpt", when="@:20210527", msg="+mgpt only added @20210702, use +user-mgpt instead")
- conflicts(
- "+user-mofff",
- when="@20210702:",
- msg="+user-mofff was removed after @20210527, use +mofff instead",
- )
- conflicts(
- "+mofff", when="@:20210527", msg="+mofff only added @20210702, use +user-mofff instead"
- )
- conflicts(
- "+user-molfile",
- when="@20210702:",
- msg="+user-molfile was removed after @20210527, use +molfile instead",
- )
- conflicts(
- "+molfile",
- when="@:20210527",
- msg="+molfile only added @20210702, use +user-molfile instead",
- )
- conflicts(
- "+user-netcdf",
- when="@20210702:",
- msg="+user-netcdf was removed after @20210527, use +netcdf instead",
- )
- conflicts(
- "+netcdf", when="@:20210527", msg="+netcdf only added @20210702, use +user-netcdf instead"
- )
- conflicts(
- "+user-omp",
- when="@20210702:",
- msg="+user-omp was removed after @20210527, use +openmp-package instead",
- )
- conflicts(
- "+openmp-package",
- when="@:20210527",
- msg="+openmp-package only added @20210702, use +user-omp instead",
- )
- conflicts(
- "+user-phonon",
- when="@20210702:",
- msg="+user-phonon was removed after @20210527, use +phonon instead",
- )
- conflicts(
- "+phonon", when="@:20210527", msg="+phonon only added @20210702, use +user-phonon instead"
- )
- conflicts(
- "+user-plumed",
- when="@20210702:",
- msg="+user-plumed was removed after @20210527, use +plumed instead",
- )
- conflicts(
- "+plumed", when="@:20210527", msg="+plumed only added @20210702, use +user-plumed instead"
- )
- conflicts(
- "+user-ptm",
- when="@20210702:",
- msg="+user-ptm was removed after @20210527, use +ptm instead",
- )
- conflicts("+ptm", when="@:20210527", msg="+ptm only added @20210702, use +user-ptm instead")
- conflicts(
- "+user-qtb",
- when="@20210702:",
- msg="+user-qtb was removed after @20210527, use +qtb instead",
- )
- conflicts("+qtb", when="@:20210527", msg="+qtb only added @20210702, use +user-qtb instead")
- conflicts(
- "+user-reaction",
- when="@20210702:",
- msg="+user-reaction was removed after @20210527, use +reaction instead",
- )
- conflicts(
- "+reaction",
- when="@:20210527",
- msg="+reaction only added @20210702, use +user-reaction instead",
- )
- conflicts(
- "+user-reaxc",
- when="@20210702:",
- msg="+user-reaxc was removed after @20210527, use +reaxff instead",
- )
- conflicts(
- "+reaxff", when="@:20210527", msg="+reaxff only added @20210702, use +user-reaxc instead"
- )
- conflicts(
- "+user-sdpd",
- when="@20210702:",
- msg="+user-sdpd was removed after @20210527, use +dpd-smooth instead",
- )
- conflicts(
- "+dpd-smooth",
- when="@:20210527",
- msg="+dpd-smooth only added @20210702, use +user-sdpd instead",
- )
- conflicts(
- "+user-smd",
- when="@20210702:",
- msg="+user-smd was removed after @20210527, use +machdyn instead",
- )
- conflicts(
- "+machdyn", when="@:20210527", msg="+machdyn only added @20210702, use +user-smd instead"
- )
- conflicts(
- "+user-smtbq",
- when="@20210702:",
- msg="+user-smtbq was removed after @20210527, use +smtbq instead",
- )
- conflicts(
- "+smtbq", when="@:20210527", msg="+smtbq only added @20210702, use +user-smtbq instead"
- )
- conflicts(
- "+user-sph",
- when="@20210702:",
- msg="+user-sph was removed after @20210527, use +sph instead",
- )
- conflicts("+sph", when="@:20210527", msg="+sph only added @20210702, use +user-sph instead")
- conflicts(
- "+user-tally",
- when="@20210702:",
- msg="+user-tally was removed after @20210527, use +tally instead",
- )
- conflicts(
- "+tally", when="@:20210527", msg="+tally only added @20210702, use +user-tally instead"
- )
- conflicts(
- "+user-uef",
- when="@20210702:",
- msg="+user-uef was removed after @20210527, use +uef instead",
- )
- conflicts("+uef", when="@:20210527", msg="+uef only added @20210702, use +user-uef instead")
- conflicts(
- "+user-yaff",
- when="@20210702:",
- msg="+user-yaff was removed after @20210527, use +yaff instead",
- )
- conflicts("+yaff", when="@:20210527", msg="+yaff only added @20210702, use +user-yaff instead")
- # In the following, package refactoring at 28 July 2021
- conflicts(
- "+user-misc",
- when="@20210728:",
- msg="+user-misc was removed after @20210702, and split over multiple packages",
- )
- conflicts(
- "+extra-compute",
- when="@:20210702",
- msg="+extra-compute only added @20210728, use +user-misc instead",
- )
- conflicts(
- "+extra-dump",
- when="@:20210702",
- msg="+extra-dump only added @20210728, use +user-misc instead",
- )
- conflicts(
- "+extra-fix",
- when="@:20210702",
- msg="+extra-fix only added @20210728, use +user-misc instead",
- )
- conflicts(
- "+extra-molecule",
- when="@:20210702",
- msg="+extra-molecule only added @20210728, use +user-misc instead",
- )
- conflicts(
- "+extra-pair",
- when="@:20210702",
- msg="+extra-pair only added @20210728, use +user-misc instead",
- )
- conflicts(
- "+interlayer",
- when="@:20210702",
- msg="+interlayer only added @20210728, use +user-misc instead",
- )
- conflicts(
- "+orient", when="@:20210702", msg="+orient only added @20210728, use +user-misc instead"
- )
-
patch("lib.patch", when="@20170901")
patch("660.patch", when="@20170922")
patch("gtest_fix.patch", when="@:20210310 %aocc@3.2.0")
@@ -874,25 +629,32 @@ class Lammps(CMakePackage, CudaPackage):
args = [
self.define_from_variant("BUILD_SHARED_LIBS", "lib"),
self.define_from_variant("LAMMPS_EXCEPTIONS", "exceptions"),
- "-D{0}_MPI={1}".format(mpi_prefix, "ON" if "+mpi" in spec else "OFF"),
+ self.define_from_variant("{}_MPI".format(mpi_prefix), "mpi"),
self.define_from_variant("BUILD_OMP", "openmp"),
- "-DENABLE_TESTING=ON",
+ self.define("ENABLE_TESTING", self.run_tests),
]
- if spec.satisfies("+cuda"):
- args.append("-DPKG_GPU=ON")
- args.append("-DGPU_API=cuda")
- cuda_arch = spec.variants["cuda_arch"].value
- if cuda_arch != "none":
- args.append("-DGPU_ARCH=sm_{0}".format(cuda_arch[0]))
- args.append(self.define_from_variant("CUDA_MPS_SUPPORT", "cuda_mps"))
- elif spec.satisfies("+opencl"):
- args.append("-DPKG_GPU=ON")
- args.append("-DGPU_API=opencl")
- else:
- args.append("-DPKG_GPU=OFF")
+ if "~kokkos" in spec:
+ # LAMMPS can be build with the GPU package OR the KOKKOS package
+ # Using both in a single build is discouraged.
+ # +cuda only implies that one of the two is used
+ # by default it will use the GPU package if kokkos wasn't enabled
+ if "+cuda" in spec:
+ args.append(self.define("PKG_GPU", True))
+ args.append(self.define("GPU_API", "cuda"))
+ cuda_arch = spec.variants["cuda_arch"].value
+ if cuda_arch != "none":
+ args.append(self.define("GPU_ARCH", "sm_{0}".format(cuda_arch[0])))
+ args.append(self.define_from_variant("CUDA_MPS_SUPPORT", "cuda_mps"))
+ elif "+opencl" in spec:
+ # LAMMPS downloads and bundles its own OpenCL ICD Loader by default
+ args.append(self.define("USE_STATIC_OPENCL_LOADER", False))
+ args.append(self.define("PKG_GPU", True))
+ args.append(self.define("GPU_API", "opencl"))
+ else:
+ args.append(self.define("PKG_GPU", False))
if spec.satisfies("@20180629:+lib"):
- args.append("-DBUILD_LIB=ON")
+ args.append(self.define("BUILD_LIB", True))
if spec.satisfies("%aocc"):
cxx_flags = "-Ofast -mfma -fvectorize -funroll-loops"
@@ -904,64 +666,56 @@ class Lammps(CMakePackage, CudaPackage):
)
args.append(self.define("CMAKE_TUNE_FLAGS", cmake_tune_flags))
- lammps_sizes = self.spec.variants["lammps_sizes"].value
- args.append(self.define("LAMMPS_SIZES", lammps_sizes))
+ args.append(self.define_from_variant("LAMMPS_SIZES", "lammps_sizes"))
args.append(self.define_from_variant("WITH_JPEG", "jpeg"))
args.append(self.define_from_variant("WITH_PNG", "png"))
args.append(self.define_from_variant("WITH_FFMPEG", "ffmpeg"))
- for pkg in self.supported_packages:
- opt = "-D{0}_{1}".format(pkg_prefix, pkg.replace("-package", "").upper())
- if "+{0}".format(pkg) in spec:
- args.append("{0}=ON".format(opt))
- else:
- args.append("{0}=OFF".format(opt))
- if "+kim" in spec:
- args.append("-DPKG_KIM=ON")
+ for pkg, params in self.supported_packages.items():
+ if "when" not in params or spec.satisfies(params["when"]):
+ opt = "{0}_{1}".format(pkg_prefix, pkg.replace("-package", "").upper())
+ args.append(self.define(opt, "+{0}".format(pkg) in spec))
+
if "+kspace" in spec:
# If FFTW3 is selected, then CMake will try to detect, if threaded
# FFTW libraries are available and enable them by default.
- if "^fftw" in spec:
- args.append("-DFFT=FFTW3")
- if "^mkl" in spec:
- args.append("-DFFT=MKL")
- if "^amdfftw" in spec:
+ if "^fftw" in spec or "^cray-fftw" in spec or "^amdfftw" in spec:
args.append(self.define("FFT", "FFTW3"))
- if "^armpl-gcc" in spec:
+ elif "^mkl" in spec:
+ args.append(self.define("FFT", "MKL"))
+ elif "^armpl-gcc" in spec:
args.append(self.define("FFT", "FFTW3"))
args.append(self.define("FFTW3_LIBRARY", self.spec["fftw-api"].libs[0]))
args.append(
self.define("FFTW3_INCLUDE_DIR", self.spec["fftw-api"].headers.directories[0])
)
- if "^cray-fftw" in spec:
- args.append("-DFFT=FFTW3")
# Using the -DFFT_SINGLE setting trades off a little accuracy
# for reduced memory use and parallel communication costs
# for transposing 3d FFT data.
- if spec.satisfies("fftw_precision=single"):
- args.append("-DFFT_SINGLE=True")
- else:
- args.append("-DFFT_SINGLE=False")
+ args.append(self.define("FFT_SINGLE", spec.satisfies("fftw_precision=single")))
if "+kokkos" in spec:
- args.append("-DEXTERNAL_KOKKOS=ON")
+ args.append(self.define("EXTERNAL_KOKKOS", True))
if "+user-adios" in spec or "+adios" in spec:
- args.append("-DADIOS2_DIR={0}".format(self.spec["adios2"].prefix))
+ args.append(self.define("ADIOS2_DIR", self.spec["adios2"].prefix))
if "+user-plumed" in spec or "+plumed" in spec:
- args.append("-DDOWNLOAD_PLUMED=no")
+ args.append(self.define("DOWNLOAD_PLUMED", False))
if "+shared" in self.spec["plumed"]:
- args.append("-DPLUMED_MODE=shared")
+ args.append(self.define("PLUMED_MODE", "shared"))
else:
- args.append("-DPLUMED_MODE=static")
+ args.append(self.define("PLUMED_MODE", "static"))
if "+user-smd" in spec or "+machdyn" in spec:
- args.append("-DDOWNLOAD_EIGEN3=no")
- args.append("-DEIGEN3_INCLUDE_DIR={0}".format(self.spec["eigen"].prefix.include))
+ args.append(self.define("DOWNLOAD_EIGEN3", False))
+ args.append(self.define("EIGEN3_INCLUDE_DIR", self.spec["eigen"].prefix.include))
if "+user-hdnnp" in spec or "+ml-hdnnp" in spec:
- args.append("-DDOWNLOAD_N2P2=no")
- args.append("-DN2P2_DIR={0}".format(self.spec["n2p2"].prefix))
+ args.append(self.define("DOWNLOAD_N2P2", False))
+ args.append(self.define("N2P2_DIR", self.spec["n2p2"].prefix))
return args
def setup_run_environment(self, env):
env.set("LAMMPS_POTENTIALS", self.prefix.share.lammps.potentials)
+ if "+python" in self.spec:
+ env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib)
+ env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib64)