From 9010e6f55692129e267498419fa1b216fa7ed05c Mon Sep 17 00:00:00 2001 From: Chris Richardson Date: Tue, 22 Apr 2025 18:08:27 +0100 Subject: [PATCH] Make PETSc an optional dependency of `fenics-dolfinx` (#49837) * Make petsc optional * Add C dependency * Add to cmake args * Make petsc optional * Add C dependency * Add to cmake args * Update var/spack/repos/builtin/packages/fenics-dolfinx/package.py Co-authored-by: Alec Scott * Fix duplicate line --------- Co-authored-by: Alec Scott --- var/spack/repos/builtin/packages/fenics-dolfinx/package.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/fenics-dolfinx/package.py b/var/spack/repos/builtin/packages/fenics-dolfinx/package.py index 25e1e2b3676..519198c6d82 100644 --- a/var/spack/repos/builtin/packages/fenics-dolfinx/package.py +++ b/var/spack/repos/builtin/packages/fenics-dolfinx/package.py @@ -30,6 +30,7 @@ class FenicsDolfinx(CMakePackage): multi=True, ) + # HDF5 dependency requires C in CMake depends_on("c", type="build") depends_on("cxx", type="build") # generated @@ -40,7 +41,9 @@ class FenicsDolfinx(CMakePackage): variant("slepc", default=False, description="slepc support") variant("adios2", default=False, description="adios2 support") + variant("petsc", default=False, description="PETSc support") + depends_on("petsc", when="+slepc") depends_on("cmake@3.21:", when="@0.9:", type="build") depends_on("cmake@3.19:", when="@:0.8", type="build") depends_on("pkgconfig", type="build") @@ -50,7 +53,7 @@ class FenicsDolfinx(CMakePackage): depends_on("pugixml") depends_on("spdlog", when="@0.9:") - depends_on("petsc+mpi+shared") + depends_on("petsc+mpi+shared", when="+petsc") depends_on("slepc", when="+slepc") depends_on("adios2@2.8.1:+mpi", when="@0.9: +adios2") @@ -76,6 +79,7 @@ class FenicsDolfinx(CMakePackage): def cmake_args(self): return [ self.define("DOLFINX_SKIP_BUILD_TESTS", True), + self.define_from_variant("DOLFINX_ENABLE_PETSC", "petsc"), self.define_from_variant("DOLFINX_ENABLE_SLEPC", "slepc"), self.define_from_variant("DOLFINX_ENABLE_ADIOS2", "adios2"), self.define("DOLFINX_UFCX_PYTHON", False),