summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin/packages/serenity-libint/package.py3
-rw-r--r--var/spack/repos/builtin/packages/serenity/package.py153
2 files changed, 99 insertions, 57 deletions
diff --git a/var/spack/repos/builtin/packages/serenity-libint/package.py b/var/spack/repos/builtin/packages/serenity-libint/package.py
index 3447d11845..4f761d4b9b 100644
--- a/var/spack/repos/builtin/packages/serenity-libint/package.py
+++ b/var/spack/repos/builtin/packages/serenity-libint/package.py
@@ -9,8 +9,7 @@ from spack.package import *
class SerenityLibint(CMakePackage):
"""Serenity fork of libint, which is difficult to reproduce from libint itself"""
- homepage = "https://thclab.uni-muenster.de/serenity/libint"
- url = "https://thclab.uni-muenster.de/serenity/libint/-/raw/e3eb756c/libint-2.7.0-beta.6.tgz"
+ url = "https://www.uni-muenster.de/Chemie.oc/THCLAB/libint/libint-2.7.0-beta.6.tgz"
license("LGPL-3.0-or-later")
diff --git a/var/spack/repos/builtin/packages/serenity/package.py b/var/spack/repos/builtin/packages/serenity/package.py
index 12c05b147a..4277322a45 100644
--- a/var/spack/repos/builtin/packages/serenity/package.py
+++ b/var/spack/repos/builtin/packages/serenity/package.py
@@ -16,21 +16,31 @@ class Serenity(CMakePackage):
license("LGPL-3.0-only")
version("master", branch="master")
+ version("1.6.1", sha256="cc04b13c2e8a010d07389b2fed98981deacf085778d5375b3b6e89b967c3a5e6")
version("1.4.0", sha256="c7a87fc8e6f8ca21685a27e08d09d49824d9a1e9947fc6abb40d20fbba0cc6e8")
variant("blas", default=True, description="Use BLAS library with Eigen")
variant("lapack", default=True, description="Use Lapack library with Eigen")
variant("python", default=False, description="Build Python bindings")
+ variant("prefer_xcfun", default=True, description="Prefer XCFun instead of LibXC")
+ variant(
+ "laplace_minimax",
+ default=False,
+ description="Download and use Laplace-Minimax",
+ when="@1.6.1:",
+ )
depends_on("blas", when="+blas")
depends_on("cmake@3.12:", type="build")
- depends_on("boost")
+ depends_on("boost+system+filesystem+program_options cxxstd=17 @1.65.0:")
depends_on("eigen@3:")
- depends_on("googletest@1.8.1:", type="test")
- depends_on("hdf5@1.10.1:")
+ depends_on("googletest@1.8.1:", type="test", when="@1.4.0")
+ depends_on("googletest@1.13.0:", type="test", when="@1.6.1:")
+ depends_on("hdf5@1.10.1:+hl+cxx")
depends_on("lapack", when="+lapack")
depends_on("libecpint")
- depends_on("libxc@5.0.0")
+ depends_on("libxc@6.1.0", when="@1.6.1:")
+ depends_on("libxc@5.0.0", when="@1.4.0")
depends_on("pkgconfig", type="build")
depends_on("python@3.6:", when="+python", type=("build", "run"))
depends_on("py-pip", when="+python", type="build")
@@ -40,6 +50,12 @@ class Serenity(CMakePackage):
extends("python", when="+python")
+ patch(
+ "https://github.com/qcserenity/serenity/commit/af9f76d013e240d971337a467a03640cb9aabfb7.patch?full_index=1",
+ sha256="45cce5e4d47b681891e78725b2cf5031d306337a5c7b8e62cd4891beb4a7b8b6",
+ when="@1.6.1:",
+ )
+
def patch(self):
filter_file(
"include(CMakeParseArguments)",
@@ -48,7 +64,7 @@ class Serenity(CMakePackage):
string=True,
)
- if self.run_tests:
+ if self.spec.satisfies(":@1.4"):
filter_file(
"find_package(GTest 1.8.1 QUIET)",
"find_package(GTest REQUIRED)",
@@ -63,63 +79,75 @@ class Serenity(CMakePackage):
string=True,
)
- filter_file(
- "function(import_libecpint)",
- "function(import_libecpint)\n"
- "find_package(ecpint CONFIG REQUIRED)\n"
- "add_library(ecpint INTERFACE IMPORTED)\n"
- "target_link_libraries(ecpint INTERFACE ECPINT::ecpint)\n",
- "cmake/ImportLibecpint.cmake",
- string=True,
- )
+ filter_file(
+ "function(import_libecpint)",
+ "function(import_libecpint)\n"
+ "find_package(ecpint CONFIG REQUIRED)\n"
+ "add_library(ecpint INTERFACE IMPORTED)\n"
+ "target_link_libraries(ecpint INTERFACE ECPINT::ecpint)\n",
+ "cmake/ImportLibecpint.cmake",
+ string=True,
+ )
- filter_file(
- "function(import_libint)",
- "function(import_libint)\n"
- "find_package(Libint2 CONFIG REQUIRED)\n"
- "add_library(libint2-static INTERFACE IMPORTED)\n"
- "target_link_libraries(libint2-static INTERFACE Libint2::libint2)\n",
- "cmake/ImportLibint.cmake",
- string=True,
- )
+ filter_file(
+ "function(import_libint)",
+ "function(import_libint)\n"
+ "find_package(Libint2 CONFIG REQUIRED)\n"
+ "add_library(libint2-static INTERFACE IMPORTED)\n"
+ "target_link_libraries(libint2-static INTERFACE Libint2::libint2)\n",
+ "cmake/ImportLibint.cmake",
+ string=True,
+ )
- filter_file(
- "function(import_libxc)",
- "function(import_libxc)\n"
- "find_package(PkgConfig QUIET)\n"
- "pkg_check_modules(pc_libxc libxc)\n"
- "if(pc_libxc_FOUND)\n"
- "add_library(xc INTERFACE IMPORTED)\n"
- "target_link_libraries(xc INTERFACE ${pc_libxc_LINK_LIBRARIES})\n"
- "target_include_directories(xc INTERFACE ${pc_libxc_INCLUDE_DIRS})\n"
- "endif()",
- "cmake/ImportLibxc.cmake",
- string=True,
- )
+ filter_file(
+ "function(import_libxc)",
+ "function(import_libxc)\n"
+ "find_package(PkgConfig QUIET)\n"
+ "pkg_check_modules(pc_libxc libxc)\n"
+ "if(pc_libxc_FOUND)\n"
+ "add_library(xc INTERFACE IMPORTED)\n"
+ "target_link_libraries(xc INTERFACE ${pc_libxc_LINK_LIBRARIES})\n"
+ "target_include_directories(xc INTERFACE ${pc_libxc_INCLUDE_DIRS})\n"
+ 'message("XC: included ${pc_libxc_LINK_LIBRARIES} ${pc_libxc_INCLUDE_DIRS}")\n'
+ "endif()",
+ "cmake/ImportLibxc.cmake",
+ string=True,
+ )
- filter_file(
- "function(import_pybind11)",
- "function(import_pybind11)\nfind_package(pybind11 REQUIRED)",
- "cmake/ImportPybind11.cmake",
- string=True,
- )
+ filter_file(
+ "function(import_pybind11)",
+ "function(import_pybind11)\nfind_package(pybind11 REQUIRED)",
+ "cmake/ImportPybind11.cmake",
+ string=True,
+ )
- filter_file(
- "function(import_xcfun)",
- "function(import_xcfun)\n"
- "find_package(XCFun CONFIG REQUIRED)\n"
- "add_library(xcfun INTERFACE IMPORTED)\n"
- "target_link_libraries(xcfun INTERFACE XCFun::xcfun)\n",
- "cmake/ImportXCFun.cmake",
- string=True,
- )
+ filter_file(
+ "function(import_xcfun)",
+ "function(import_xcfun)\n"
+ "find_package(XCFun CONFIG REQUIRED)\n"
+ "add_library(xcfun INTERFACE IMPORTED)\n"
+ "target_link_libraries(xcfun INTERFACE XCFun::xcfun)\n",
+ "cmake/ImportXCFun.cmake",
+ string=True,
+ )
+ else:
+ filter_file(
+ "find_package(GTest QUIET)",
+ "find_package(GTest REQUIRED)",
+ "cmake/ImportGTest.cmake",
+ string=True,
+ )
+
+ filter_file(
+ "find_package(GMock QUIET)", "return()", "cmake/ImportGTest.cmake", string=True
+ )
def cmake_args(self):
- return [
- self.define("SERENITY_BUILD_TESTS", self.run_tests),
- self.define_from_variant("SERENITY_BUILD_PYTHON_BINDINGS", "python"),
+ args = [
+ self.define("SERENITY_ENABLE_TESTS", self.run_tests),
+ self.define_from_variant("SERENITY_PYTHON_BINDINGS", "python"),
self.define("SERENITY_MARCH", ""),
- self.define("SERENITY_PREFER_XCFUN", False),
+ self.define_from_variant("SERENITY_PREFER_XCFUN", "prefer_xcfun"),
self.define("SERENITY_USE_XCFUN", True),
self.define("SERENITY_USE_LIBXC", True),
self.define(
@@ -137,3 +165,18 @@ class Serenity(CMakePackage):
self.define("BOOST_NO_SYSTEM_PATHS", True),
self.define("Boost_NO_BOOST_CMAKE", True),
]
+ if self.spec.satisfies("@1.6.1:"):
+ args += [
+ self.define("SERENITY_DOWNLOAD_DEPENDENCIES", False),
+ self.define_from_variant("SERENITY_USE_LAPLACE_MINIMAX", "laplace_minimax"),
+ ]
+ if "+python" in self.spec:
+ args.append(self.define("PYTHON_EXECUTABLE", self.spec["python"].command.path))
+ return args
+
+ def setup_run_environment(self, env):
+ # set up environment like if we sourced dev/templates/serenity.sh
+ env.set("SERENITY_HOME", self.prefix)
+ env.set("SERENITY_BIN", self.prefix.bin)
+ env.set("SERENITY_RESOURCES", join_path(self.prefix.share, "serenity/data/"))
+ env.prepend_path("PYTHONPATH", self.prefix.lib)