Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
134 changes: 107 additions & 27 deletions repos/spack_repo/builtin/packages/cp2k/package.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,16 +51,46 @@ class Cp2k(MakefilePackage, CMakePackage, CudaPackage, ROCmPackage):

license("GPL-2.0-or-later")

version("2026.1", sha256="4364c74bcffaa474bc234e11686b09550e4d06932acf2147a341e4f7679dd88e")
version("2025.2", sha256="c8392a4e123304644ec8d241443796277c6ed7ae977452317e779f3c387c2e19")
version("2025.1", sha256="65c8ad5488897b0f995919b9fa77f2aba4b61677ba1e3c19bb093d5c08a8ce1d")
version("2024.3", sha256="a6eeee773b6b1fb417def576e4049a89a08a0ed5feffcd7f0b33c7d7b48f19ba")
version("2024.2", sha256="cc3e56c971dee9e89b705a1103765aba57bf41ad39a11c89d3de04c8b8cdf473")
version("2024.1", sha256="a7abf149a278dfd5283dc592a2c4ae803b37d040df25d62a5e35af5c4557668f")
version("2023.2", sha256="adbcc903c1a78cba98f49fe6905a62b49f12e3dfd7cedea00616d1a5f50550db")
version("2023.1", sha256="dff343b4a80c3a79363b805429bdb3320d3e1db48e0ff7d20a3dfd1c946a51ce")
version("2022.2", sha256="1a473dea512fe264bb45419f83de432d441f90404f829d89cbc3a03f723b8354")
version("2022.1", sha256="2c34f1a7972973c62d471cd35856f444f11ab22f2ff930f6ead20f3454fd228b")
version(
"2026.1",
sha256="4364c74bcffaa474bc234e11686b09550e4d06932acf2147a341e4f7679dd88e",
)
version(
"2025.2",
sha256="c8392a4e123304644ec8d241443796277c6ed7ae977452317e779f3c387c2e19",
)
version(
"2025.1",
sha256="65c8ad5488897b0f995919b9fa77f2aba4b61677ba1e3c19bb093d5c08a8ce1d",
)
version(
"2024.3",
sha256="a6eeee773b6b1fb417def576e4049a89a08a0ed5feffcd7f0b33c7d7b48f19ba",
)
version(
"2024.2",
sha256="cc3e56c971dee9e89b705a1103765aba57bf41ad39a11c89d3de04c8b8cdf473",
)
version(
"2024.1",
sha256="a7abf149a278dfd5283dc592a2c4ae803b37d040df25d62a5e35af5c4557668f",
)
version(
"2023.2",
sha256="adbcc903c1a78cba98f49fe6905a62b49f12e3dfd7cedea00616d1a5f50550db",
)
version(
"2023.1",
sha256="dff343b4a80c3a79363b805429bdb3320d3e1db48e0ff7d20a3dfd1c946a51ce",
)
version(
"2022.2",
sha256="1a473dea512fe264bb45419f83de432d441f90404f829d89cbc3a03f723b8354",
)
version(
"2022.1",
sha256="2c34f1a7972973c62d471cd35856f444f11ab22f2ff930f6ead20f3454fd228b",
)
version("9.1", sha256="fedb4c684a98ad857cd49b69a3ae51a73f85a9c36e9cb63e3b02320c74454ce6")
version("8.2", sha256="2e24768720efed1a5a4a58e83e2aca502cd8b95544c21695eb0de71ed652f20a")
version("8.1", sha256="7f37aead120730234a60b2989d0547ae5e5498d93b1e9b5eb548c041ee8e7772")
Expand All @@ -80,7 +110,9 @@ class Cp2k(MakefilePackage, CMakePackage, CudaPackage, ROCmPackage):
variant("opencl", default=False, description="Enable OpenCL backend")
variant("plumed", default=False, description="Enable PLUMED support")
variant(
"libint", default=True, description="Use libint, required for HFX (and possibly others)"
"libint",
default=True,
description="Use libint, required for HFX (and possibly others)",
)
variant("libxc", default=True, description="Support additional functionals via libxc")
variant(
Expand Down Expand Up @@ -132,21 +164,35 @@ class Cp2k(MakefilePackage, CMakePackage, CudaPackage, ROCmPackage):
variant("quip", default=False, when="@:2025.2", description="Enable quip support")
variant("dftd4", when="@2024.2:", default=False, description="Enable DFT-D4 support")
variant("mpi_f08", default=False, description="Use MPI F08 module", when="+mpi")
variant("smeagol", default=False, description="Enable libsmeagol support", when="@2025.2:")
variant(
"smeagol",
default=False,
description="Enable libsmeagol support",
when="@2025.2:",
)
variant("dbm_gpu", default=True, description="Enable DBM GPU backend", when="@2025.2:")
variant("grid_gpu", default=True, description="Enable grid GPU backend", when="@2025.2:")
variant(
"grid_gpu", default=False, description="Enable grid GPU backend", when="@2025.2: +opencl"
"grid_gpu",
default=False,
description="Enable grid GPU backend",
when="@2025.2: +opencl",
)
variant(
"pw_gpu", default=True, description="Enable FFT calculations on GPU", when="@2025.2: +cuda"
"pw_gpu",
default=True,
description="Enable FFT calculations on GPU",
when="@2025.2: +cuda",
)
variant(
"pw_gpu",
default=False,
description="Enable FFT calculations on GPU",
when="@2025.2: +rocm",
)

variant("libxs", default=False, description="Enable libxs support", when="@master")

variant(
"pw_gpu",
default=False,
Expand Down Expand Up @@ -191,11 +237,26 @@ class Cp2k(MakefilePackage, CMakePackage, CudaPackage, ROCmPackage):
when="@2025.2: build_system=cmake",
)

variant("vdwxc", default=False, description="Enable VDW support in SIRIUS.", when="+sirius")
variant(
"vdwxc",
default=False,
description="Enable VDW support in SIRIUS.",
when="+sirius",
)
variant("deepmd", default=False, description="Enable DeepMD-kit support")
variant("tblite", default=False, description="Enable tblite support", when="@2025.2:")
variant("nlcg", default=False, description="Enable nlcg support in sirius", when="+sirius")
variant("vcsqnm", default=False, description="Enable VCSQNM support in sirius", when="+sirius")
variant(
"nlcg",
default=False,
description="Enable nlcg support in sirius",
when="+sirius",
)
variant(
"vcsqnm",
default=False,
description="Enable VCSQNM support in sirius",
when="+sirius",
)

conflicts("+deepmd", msg="DeepMD-kit is not yet available in Spack")

Expand All @@ -210,7 +271,9 @@ class Cp2k(MakefilePackage, CMakePackage, CudaPackage, ROCmPackage):
),
)
variant(
"cuda_fft", default=False, description="Use CUDA also for FFTs in the PW part of CP2K"
"cuda_fft",
default=False,
description="Use CUDA also for FFTs in the PW part of CP2K",
)
variant(
"cuda_blas",
Expand Down Expand Up @@ -244,6 +307,7 @@ class Cp2k(MakefilePackage, CMakePackage, CudaPackage, ROCmPackage):

depends_on("blas")
depends_on("lapack")
depends_on("libxs", when="+libxs")
depends_on("fftw-api@3")
depends_on("greenx", when="+greenx")
depends_on("hdf5+hl+fortran", when="+hdf5")
Expand All @@ -257,7 +321,10 @@ class Cp2k(MakefilePackage, CMakePackage, CudaPackage, ROCmPackage):
depends_on("cray-fftw+openmp", when="^[virtuals=fftw-api] cray-fftw")
depends_on("armpl-gcc threads=openmp", when="^[virtuals=blas] armpl-gcc")
depends_on("openblas threads=openmp", when="^[virtuals=blas] openblas")
depends_on("intel-oneapi-mkl threads=openmp", when="^[virtuals=fftw-api] intel-oneapi-mkl")
depends_on(
"intel-oneapi-mkl threads=openmp",
when="^[virtuals=fftw-api] intel-oneapi-mkl",
)
depends_on(
"intel-oneapi-mkl+gfortran threads=openmp",
when="^[virtuals=blas] intel-oneapi-mkl %gcc",
Expand Down Expand Up @@ -287,10 +354,14 @@ class Cp2k(MakefilePackage, CMakePackage, CudaPackage, ROCmPackage):
with when("+libint"):
depends_on("pkgconfig", type="build", when="@7.0:")
for lmax in HFX_LMAX_RANGE:
depends_on(f"libint@2.6.0:+fortran tune=cp2k-lmax-{lmax}", when=f"@7.0: lmax={lmax}")
depends_on(
f"libint@2.6.0:+fortran tune=cp2k-lmax-{lmax}",
when=f"@7.0: lmax={lmax}",
)
# AOCC only works with libint@2.6.0
depends_on(
f"libint@=2.6.0+fortran tune=cp2k-lmax-{lmax}", when=f"@7.0: lmax={lmax} %aocc"
f"libint@=2.6.0+fortran tune=cp2k-lmax-{lmax}",
when=f"@7.0: lmax={lmax} %aocc",
)

with when("+libxc"):
Expand Down Expand Up @@ -547,13 +618,17 @@ def patch(self):
file_path = os.path.join(directory, i)
filter_file("USE ISO_C_BINDING", "USE,INTRINSIC :: ISO_C_BINDING", file_path)
filter_file(
"USE ISO_FORTRAN_ENV", "USE,INTRINSIC :: ISO_FORTRAN_ENV", file_path
"USE ISO_FORTRAN_ENV",
"USE,INTRINSIC :: ISO_FORTRAN_ENV",
file_path,
)
filter_file("USE omp_lib", "USE,INTRINSIC :: omp_lib", file_path)
filter_file("USE OMP_LIB", "USE,INTRINSIC :: OMP_LIB", file_path)
filter_file("USE iso_c_binding", "USE,INTRINSIC :: iso_c_binding", file_path)
filter_file(
"USE iso_fortran_env", "USE,INTRINSIC :: iso_fortran_env", file_path
"USE iso_fortran_env",
"USE,INTRINSIC :: iso_fortran_env",
file_path,
)

def url_for_version(self, version):
Expand Down Expand Up @@ -717,7 +792,8 @@ def edit(self, pkg, spec, prefix):
if spec.satisfies("%aocc"):
libs.append(
join_path(
elpa.prefix.lib, ("libelpa{elpa_suffix}.a".format(elpa_suffix=elpa_suffix))
elpa.prefix.lib,
("libelpa{elpa_suffix}.a".format(elpa_suffix=elpa_suffix)),
)
)
else:
Expand Down Expand Up @@ -823,7 +899,8 @@ def edit(self, pkg, spec, prefix):
mpi_impl = "openmpi" if spec["mpi"].name in ["openmpi", "hpcx-mpi"] else "intelmpi"
scalapack = [
join_path(
spec["intel-oneapi-mkl"].libs.directories[0], "libmkl_scalapack_lp64.so"
spec["intel-oneapi-mkl"].libs.directories[0],
"libmkl_scalapack_lp64.so",
),
join_path(
spec["intel-oneapi-mkl"].libs.directories[0],
Expand Down Expand Up @@ -1173,6 +1250,7 @@ def cmake_args(self):
self.define_from_variant("CP2K_USE_GREENX", "greenx"),
self.define_from_variant("CP2K_USE_LIBVDWXC", "vdwxc"),
self.define_from_variant("CP2K_USE_TBLITE", "tblite"),
self.define_from_variant("CP2K_USE_LIBXS", "libxs"),
]

if spec.satisfies("+sirius"):
Expand Down Expand Up @@ -1217,7 +1295,8 @@ def cmake_args(self):
self.define("CP2K_BLAS_VENDOR", "CUSTOM"),
self.define("CP2K_SCALAPACK_VENDOR", "GENERIC"),
self.define(
"CP2K_SCALAPACK_LINK_LIBRARIES", spec["scalapack"].libs.joined(";")
"CP2K_SCALAPACK_LINK_LIBRARIES",
spec["scalapack"].libs.joined(";"),
),
]
else:
Expand All @@ -1234,7 +1313,8 @@ def cmake_args(self):
self.define("CP2K_BLAS_VENDOR", "CUSTOM"),
self.define("CP2K_SCALAPACK_VENDOR", "GENERIC"),
self.define(
"CP2K_SCALAPACK_LINK_LIBRARIES", spec["scalapack"].libs.joined(";")
"CP2K_SCALAPACK_LINK_LIBRARIES",
spec["scalapack"].libs.joined(";"),
),
]
)
Expand Down
47 changes: 47 additions & 0 deletions repos/spack_repo/builtin/packages/libxs/package.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Copyright Spack Project Developers. See COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)

from spack_repo.builtin.build_systems.cmake import CMakePackage

from spack.package import *


class Libxs(CMakePackage):
"""LIBXS is a portable C library providing building blocks for memory
operations, numerics, synchronization, and more -- with a focus on
performance and minimal dependencies. Targets x86-64, AArch64, and RISC-V;
requires only a C89 compiler. Originally developed as part of LIBXSMM.
"""

maintainers("hfp", "mkrack", "mtaillefumier")

homepage = "hhttps://libxs.readthedocs.io/en/latest"
url = (
"https://github.com/hfp/libxs/archiv/libxs-ab416130f8c9f7edb8c1bf3d3abaf402f61d0fe0.tar.gz"
)
git = "https://github.com/hfp/libxs.git"

license("BSD-3-Clause", checked_by="mkrack")

version("main", branch="main")
version("20260605", commit="ab416130f8c9f7edb8c1bf3d3abaf402f61d0fe0")

variant("fortran", default=False, description="Build Fortran module interface")
variant("pic", default=True, description="Build position independent code")
variant("shared", default=False, description="Build shared libraries (otherwise static)")

depends_on("cmake@3.13:", type="build")
depends_on("c", type="build")
depends_on("cxx", type="build")
depends_on("fortran", type="build", when="+fortran")

depends_on("libxsmm")

def cmake_args(self):
args = [
self.define_from_variant("LIBXS_FORTRAN", "fortran"),
self.define_from_variant("CMAKE_POSITION_INDEPENDENT_CODE", "pic"),
self.define_from_variant("LIBXS_SHARED", "shared"),
]
return args
Loading