diff --git a/var/spack/repos/builtin/packages/feelpp/package.py b/var/spack/repos/builtin/packages/feelpp/package.py index 270175a816c30a..58edb69255b7f4 100644 --- a/var/spack/repos/builtin/packages/feelpp/package.py +++ b/var/spack/repos/builtin/packages/feelpp/package.py @@ -26,30 +26,26 @@ class Feelpp(CMakePackage): version("preset", branch="2284-add-spack-environment-to-the-main-ci") # Define variants - variant("toolboxes", default=False, description="Enable the Feel++ toolboxes") - variant("mor", default=False, description="Enable Model Order Reduction (MOR)") - variant("python", default=False, description="Enable Python wrappers") - variant("quickstart", default=False, description="Enable the quickstart examples") + variant("toolboxes", default=True, description="Enable the Feel++ toolboxes") + variant("mor", default=True, description="Enable Model Order Reduction (MOR)") + variant("python", default=True, description="Enable Python wrappers") + variant("quickstart", default=True, description="Enable the quickstart examples") variant("tests", default=False, description="Enable the tests") - # MPI Variants - variant("mpi", default="openmpi4", description="Choose MPI version", values=("openmpi4", "openmpi5", "cray-mpich8", "mpich3", "mpich4"), multi=False) - # Add variants for C++ standards - variant("cpp17", default=False, description="Use C++17 standard") - variant("cpp20", default=True, description="Use C++20 standard") - variant("cpp23", default=False, description="Use C++23 standard") - - # Conflicts between C++ standard variants - conflicts("+cpp17", when="+cpp20", msg="Cannot enable both C++17 and C++20") - conflicts("+cpp17", when="+cpp23", msg="Cannot enable both C++17 and C++23") - conflicts("+cpp20", when="+cpp23", msg="Cannot enable both C++20 and C++23") + variant( + "cxxstd", default="20", description="C++ standard", values=["17", "20", "23"], multi=False + ) # Specify dependencies with required versions + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("fortran", type="build") depends_on("cmake@3.21:", type="build") + depends_on("llvm@14.0.0:") + depends_on("mpi") depends_on("boost@1.74: +filesystem+iostreams+mpi+multithreaded+shared") depends_on("petsc@3.20 +mumps+hwloc+ptscotch +suite-sparse+hdf5 +hypre+kokkos") - depends_on("llvm@18:", type="build") depends_on("slepc") depends_on("cln@1.3.6") depends_on("fftw") @@ -64,13 +60,6 @@ class Feelpp(CMakePackage): depends_on("ruby") depends_on("gmsh +opencascade+mmg+fltk") depends_on("curl") - - # MPI dependencies - depends_on("openmpi@4.0.0:4.999", when="mpi=openmpi4") - depends_on("openmpi@5.0.0:5.999", when="mpi=openmpi5") - depends_on("cray-mpich@8.0.0:8.999", when="mpi=cray-mpich8") - depends_on("mpich@3.0.0:3.999", when="mpi=mpich3") - depends_on("mpich@4.0.0:4.999", when="mpi=mpich4") # Python dependencies if +python variant is enabled depends_on("py-pytest", when="+python") @@ -85,22 +74,13 @@ class Feelpp(CMakePackage): depends_on("py-tabulate", when="+python") depends_on("py-ipykernel", when="+python") depends_on("py-mpi4py", when="+python") + depends_on("py-tqdm", when="+python") depends_on("python@3.7:", when="+python", type=("build", "run")) - def get_cpp_version(self): - """Helper function to determine the C++ standard preset.""" - if "+cpp17" in self.spec: - return "cpp17" - elif "+cpp20" in self.spec: - return "cpp20" - elif "+cpp23" in self.spec: - return "cpp23" - else: - return "cpp20" # default - def get_preset_name(self): - cpp_version = self.get_cpp_version() - preset_name = f"feelpp-clang-{cpp_version}-default-release" + spec = self.spec + cpp_version = spec.variants["cxxstd"].value + preset_name = f"feelpp-clang-cpp{cpp_version}-default-release" return preset_name def cmake_args(self):