summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/palace/package.py
diff options
context:
space:
mode:
authorSebastian Grimberg <sjg@amazon.com>2023-07-18 15:29:35 -0700
committerGitHub <noreply@github.com>2023-07-18 22:29:35 +0000
commit9beb02ea8354830c259bf8d5ec9dae3eae0b17cc (patch)
treea7233570eeae4ca08afaa724874fbcfbdbe1136a /var/spack/repos/builtin/packages/palace/package.py
parentce4162e28b8d1b31534d6a4db03358e8bbcaf308 (diff)
downloadspack-9beb02ea8354830c259bf8d5ec9dae3eae0b17cc.tar.gz
spack-9beb02ea8354830c259bf8d5ec9dae3eae0b17cc.tar.bz2
spack-9beb02ea8354830c259bf8d5ec9dae3eae0b17cc.tar.xz
spack-9beb02ea8354830c259bf8d5ec9dae3eae0b17cc.zip
palace: add v0.11.2 (#38910)
Diffstat (limited to 'var/spack/repos/builtin/packages/palace/package.py')
-rw-r--r--var/spack/repos/builtin/packages/palace/package.py85
1 files changed, 49 insertions, 36 deletions
diff --git a/var/spack/repos/builtin/packages/palace/package.py b/var/spack/repos/builtin/packages/palace/package.py
index 9424e0d66c..a13ab27ab6 100644
--- a/var/spack/repos/builtin/packages/palace/package.py
+++ b/var/spack/repos/builtin/packages/palace/package.py
@@ -14,14 +14,12 @@ class Palace(CMakePackage):
homepage = "https://github.com/awslabs/palace"
git = "https://github.com/awslabs/palace.git"
- root_cmakelists_dir = "palace"
-
maintainers("sebastiangrimberg")
version("develop", branch="main")
- version("0.11.1", tag="v0.11.1")
- version("0.11.0", tag="v0.11.0")
+ version("0.11.2", tag="v0.11.2")
+ variant("shared", default=True, description="Enables the build of shared libraries")
variant("int64", default=False, description="Use 64 bit integers")
variant("openmp", default=False, description="Use OpenMP")
variant(
@@ -44,27 +42,25 @@ class Palace(CMakePackage):
depends_on("zlib")
depends_on("nlohmann-json")
depends_on("fmt")
+ depends_on("eigen")
- depends_on("metis@5:+int64", when="+int64")
- depends_on("metis@5:~int64", when="~int64")
+ depends_on("metis@5:")
+ depends_on("metis+shared", when="+shared")
+ depends_on("metis~shared", when="~shared")
+ depends_on("metis+int64", when="+int64")
+ depends_on("metis~int64", when="~int64")
- depends_on("hypre+shared")
+ depends_on("hypre~complex")
+ depends_on("hypre+shared", when="+shared")
+ depends_on("hypre~shared", when="~shared")
depends_on("hypre+mixedint", when="+int64")
depends_on("hypre~mixedint", when="~int64")
depends_on("hypre+openmp", when="+openmp")
depends_on("hypre~openmp", when="~openmp")
- depends_on("petsc+double+complex")
- depends_on("petsc+int64", when="+int64")
- depends_on("petsc~int64", when="~int64")
- depends_on("petsc+openmp", when="+openmp")
- depends_on("petsc~openmp", when="~openmp")
-
- depends_on("slepc", when="+slepc")
- depends_on("arpack-ng+icb@develop", when="+arpack")
- depends_on("gslib", when="+gslib")
-
with when("+superlu-dist"):
+ depends_on("superlu-dist+shared", when="+shared")
+ depends_on("superlu-dist~shared", when="~shared")
depends_on("superlu-dist+int64", when="+int64")
depends_on("superlu-dist~int64", when="~int64")
depends_on("superlu-dist+openmp", when="+openmp")
@@ -72,29 +68,45 @@ class Palace(CMakePackage):
with when("+strumpack"):
depends_on("strumpack+butterflypack+zfp+parmetis")
+ depends_on("strumpack+shared", when="+shared")
+ depends_on("strumpack~shared", when="~shared")
depends_on("strumpack+openmp", when="+openmp")
depends_on("strumpack~openmp", when="~openmp")
with when("+mumps"):
depends_on("mumps+metis+parmetis")
+ depends_on("mumps+shared", when="+shared")
+ depends_on("mumps~shared", when="~shared")
depends_on("mumps+openmp", when="+openmp")
depends_on("mumps~openmp", when="~openmp")
- # Conflicts: Palace always builds its own internal MFEM
+ with when("+slepc"):
+ depends_on("slepc ^petsc+mpi+double+complex")
+ depends_on("petsc+shared", when="+shared")
+ depends_on("petsc~shared", when="~shared")
+ depends_on("petsc+int64", when="+int64")
+ depends_on("petsc~int64", when="~int64")
+ depends_on("petsc+openmp", when="+openmp")
+ depends_on("petsc~openmp", when="~openmp")
+
+ with when("+arpack"):
+ depends_on("arpack-ng+mpi+icb@develop")
+ depends_on("arpack-ng+shared", when="+shared")
+ depends_on("arpack-ng~shared", when="~shared")
+
+ # Conflicts: Palace always builds its own internal MFEM, GSLIB
conflicts("^mfem", msg="Palace builds its own internal MFEM")
+ conflicts("^gslib", msg="Palace builds its own internal GSLIB")
# More dependency variant conflicts
conflicts("^hypre+int64", msg="Palace uses HYPRE's mixedint option for 64 bit integers")
- conflicts("^petsc~double", msg="Palace requires PETSc with double precision")
- conflicts("^petsc~complex", msg="Palace requires PETSc with complex numbers")
- conflicts("^petsc+metis", msg="Palace requires PETSc without METIS")
- conflicts("^petsc+hypre", msg="Palace requires PETSc without HYPRE")
- conflicts("^petsc+superlu-dist", msg="Palace requires PETSc without SuperLU_DIST")
- conflicts("^slepc+arpack", msg="Palace requires SLEPc without ARPACK")
conflicts("^mumps+int64", msg="Palace requires MUMPS without 64 bit integers")
+ conflicts("^slepc+arpack", msg="Palace requires SLEPc without ARPACK")
def cmake_args(self):
args = [
+ self.define_from_variant("BUILD_SHARED_LIBS", "shared"),
+ self.define_from_variant("PALACE_WITH_64BIT_INT", "int64"),
self.define_from_variant("PALACE_WITH_OPENMP", "openmp"),
self.define_from_variant("PALACE_WITH_GSLIB", "gslib"),
self.define_from_variant("PALACE_WITH_SUPERLU", "superlu-dist"),
@@ -102,26 +114,27 @@ class Palace(CMakePackage):
self.define_from_variant("PALACE_WITH_MUMPS", "mumps"),
self.define_from_variant("PALACE_WITH_SLEPC", "slepc"),
self.define_from_variant("PALACE_WITH_ARPACK", "arpack"),
- "-DPALACE_WITH_INTERNAL_JSON=OFF",
- "-DPALACE_WITH_INTERNAL_FMT=OFF",
+ self.define("PALACE_BUILD_EXTERNAL_DEPS", False),
]
+ # HYPRE is always built with external BLAS/LAPACK
+ args += self.define("HYPRE_REQUIRED_PACKAGES", "LAPACK;BLAS")
+
# MPI compiler wrappers are not required, but MFEM test builds need to know to link
# against MPI libraries
if "+superlu-dist" in self.spec:
- args += ["-DSuperLUDist_REQUIRED_PACKAGES=MPI"]
+ args += self.define("SuperLUDist_REQUIRED_PACKAGES", "LAPACK;BLAS;MPI")
if "+strumpack" in self.spec:
- args += ["-DSTRUMPACK_REQUIRED_PACKAGES=MPI;MPI_Fortran"]
+ args += self.define("STRUMPACK_REQUIRED_PACKAGES", "LAPACK;BLAS;MPI;MPI_Fortran")
if "+mumps" in self.spec:
- args += ["-DMUMPS_REQUIRED_PACKAGES=MPI;MPI_Fortran"]
+ args += self.define("MUMPS_REQUIRED_PACKAGES", "LAPACK;BLAS;MPI;MPI_Fortran")
# BLAS/LAPACK linkage
- args += [
- "-DBLAS_LIBRARIES={0}".format(self.spec["blas"].libs.joined(";")),
- "-DLAPACK_LIBRARIES={0}".format(self.spec["lapack"].libs.joined(";")),
- ]
-
- # HYPRE is always built with external BLAS/LAPACK
- args += ["-DHYPRE_REQUIRED_PACKAGES=LAPACK;BLAS"]
+ args += self.define("BLAS_LIBRARIES", "{0}".format(self.spec["blas"].libs.joined(";")))
+ args += self.define("LAPACK_LIBRARIES", "{0}".format(self.spec["lapack"].libs.joined(";")))
return args
+
+ def install(self, pkg, spec, prefix):
+ # No install phase for Palace (always performed during build)
+ pass