From c7eb0ed0b56b3bba1cdc00d7e2ab86072c5d7250 Mon Sep 17 00:00:00 2001
From: Dominic Kempf <dominic.kempf@iwr.uni-heidelberg.de>
Date: Tue, 19 May 2020 14:45:48 +0200
Subject: [PATCH] Add dune-fem to the Spack package

---
 packages/dune/package.py | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/packages/dune/package.py b/packages/dune/package.py
index c4b5ced..83b766a 100644
--- a/packages/dune/package.py
+++ b/packages/dune/package.py
@@ -53,6 +53,7 @@ class Dune(CMakePackage):
     variant('lapack', default=True, description='Build with LAPACK support')
     variant('metis', default=True, description='Build with METIS library support')
     variant('parmetis', default=False, description='Build with ParMETIS support')
+    variant('petsc', default=False, description='Build with PetSc support')
     variant('ptscotch', default=True, description='Build with PT-Scotch support')
     variant('sionlib', default=False, description='Build with SIONlib support')
     variant('suitesparse', default=True, description='Build SuiteSparse library support')
@@ -69,6 +70,7 @@ class Dune(CMakePackage):
     # are activated by default.
     variant('alugrid', default=False, description='Build with dune-alugrid module')
     variant('codegen', default=False, description='Build with dune-codegen module')
+    variant('fem', default=False, description='Build with dune-fem(py) module')
     variant('foamgrid', default=False, description='Build with dune-foamgrid module')
     variant('functions', default=False, description='Build with dune-functions module')
     variant('geometry', default=True, description='Build with dune-geometry module')
@@ -181,6 +183,20 @@ class Dune(CMakePackage):
             when='@%s+multidomaingrid' % vers,
         )
 
+        resource(
+            name='dune-fem',
+            git='https://gitlab.dune-project.org/dune-fem/dune-fem.git',
+            branch=branch,
+            when='@%s+fem' % vers,
+        )
+
+        resource(
+            name='dune-fempy',
+            git='https://gitlab.dune-project.org/dune-fem/dune-fempy.git',
+            branch=branch,
+            when='@%s+fem+python' % vers,
+        )
+
     # The dune-grid-glue package does not yet have a 2.7-compatible release
     resource(
         name='dune-grid-glue',
@@ -220,6 +236,8 @@ class Dune(CMakePackage):
     module_dependencies["dune-alugrid"] = ["dune-grid", "dune-geometry", "dune-common"]
     module_dependencies["dune-codegen"] = ["dune-pdelab", "dune-testtools", "dune-alugrid"]
     module_dependencies["dune-common"] = []
+    module_dependencies["dune-fem"] = ["dune-grid"]
+    module_dependencies["fune-fempy"] = ["dune-fem"]
     module_dependencies["dune-foamgrid"] = ["dune-grid"]
     module_dependencies["dune-functions"] = ["dune-grid", "dune-typetree", "dune-localfunctions", "dune-istl"]
     module_dependencies["dune-geometry"] = ["dune-common"]
@@ -243,7 +261,9 @@ class Dune(CMakePackage):
     depends_on('benchmark', when='+codegen')
     depends_on('blas', when='+blas')
     depends_on('cmake@3.1:', type='build')
+    depends_on('eigen', when='+fem')
     depends_on('eigen', when='+pdelab')
+    depends_on('papi', when='+fem')
     depends_on('doxygen', type='build', when='+doc')
     depends_on('gawk')
     depends_on('gmp', when='+gmp')
@@ -253,6 +273,7 @@ class Dune(CMakePackage):
     depends_on('metis', when='+metis')
     depends_on('mpi')
     depends_on('parmetis', when='+parmetis')
+    depends_on('petsc', when='+petsc')
     depends_on('pkg-config', type='build')
     depends_on('python@3.0:', type=('build', 'run'))
     depends_on('py-setuptools', type='build', when='+python')