diff --git a/repos/spack_repo/builtin/packages/cp2k/package.py b/repos/spack_repo/builtin/packages/cp2k/package.py index 9ff9a5257e7..c914d24c0ec 100644 --- a/repos/spack_repo/builtin/packages/cp2k/package.py +++ b/repos/spack_repo/builtin/packages/cp2k/package.py @@ -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") @@ -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( @@ -132,14 +164,25 @@ 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", @@ -147,6 +190,9 @@ class Cp2k(MakefilePackage, CMakePackage, CudaPackage, ROCmPackage): 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, @@ -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") @@ -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", @@ -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") @@ -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", @@ -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"): @@ -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): @@ -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: @@ -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], @@ -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"): @@ -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: @@ -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(";"), ), ] ) diff --git a/repos/spack_repo/builtin/packages/libxs/package.py b/repos/spack_repo/builtin/packages/libxs/package.py new file mode 100644 index 00000000000..c3ba9f1dd2b --- /dev/null +++ b/repos/spack_repo/builtin/packages/libxs/package.py @@ -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