diff options
author | Matthew Archer <36638242+ma595@users.noreply.github.com> | 2022-05-19 19:22:09 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-19 18:22:09 +0000 |
commit | 3f4398dd6707bdd6090c2e733f8bad85bb978120 (patch) | |
tree | 3ce2834c73c5037a00ce1a37d888c7dfe06e4cd7 | |
parent | a225a5b27662fdfcd82aeb479034f7abda5496ce (diff) | |
download | spack-3f4398dd6707bdd6090c2e733f8bad85bb978120.tar.gz spack-3f4398dd6707bdd6090c2e733f8bad85bb978120.tar.bz2 spack-3f4398dd6707bdd6090c2e733f8bad85bb978120.tar.xz spack-3f4398dd6707bdd6090c2e733f8bad85bb978120.zip |
fenicsx: update to v0.4 (#30661)
* Fix for xtensor-xsimd
* Add sha256 for all new releases
* renamed ufcx package
* Update sha for ffcx
* fixed hashes and modified fenics-dolfinx to depend on ufcx
* cleaned and fixed dependency types
* use spec.satisfies in cmake_args
* bumped to ufcx@0.4.1
* address PR comments
* fix hashes
* update parmetis in cmake_args to reflect default setting
* update versions
* renamed ufcx package
* fixed hashes and modified fenics-dolfinx to depend on ufcx
* cleaned and fixed dependency types
* use spec.satisfies in cmake_args
* bumped to ufcx@0.4.1
* address PR comments
* fix hashes
* update parmetis in cmake_args to reflect default setting
* update versions
* Add dependency fix
* bump basix to 0.4.2 and address PR comments
* Versioning fixes
* Use xtensor-0.24: and loosen pybind11
* Add conflicts for partitioners
* Updates on partitioners
* use define_from_variant
* Tidy up some dependencies
* Work on multi-variants for graph partitioners
* Fix KaHIP issue.
KaHIP changed the name of its library from 'interface' to 'kahip'. Pin earlier versions of DOLFINx to earlier verisons of KaHIP for proper detection.
Co-authored-by: Chris Richardson <chris@bpi.cam.ac.uk>
Co-authored-by: Garth N. Wells <gnw20@cam.ac.uk>
-rw-r--r-- | var/spack/repos/builtin/packages/fenics-basix/package.py | 3 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/fenics-dolfinx/package.py | 80 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/fenics-ufcx/package.py (renamed from var/spack/repos/builtin/packages/ufcx/package.py) | 5 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/py-fenics-basix/package.py | 2 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/py-fenics-dolfinx/package.py | 17 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/py-fenics-ffcx/package.py | 3 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/py-fenics-ufl/package.py | 3 |
7 files changed, 78 insertions, 35 deletions
diff --git a/var/spack/repos/builtin/packages/fenics-basix/package.py b/var/spack/repos/builtin/packages/fenics-basix/package.py index fc323ee188..78ca708655 100644 --- a/var/spack/repos/builtin/packages/fenics-basix/package.py +++ b/var/spack/repos/builtin/packages/fenics-basix/package.py @@ -15,6 +15,7 @@ class FenicsBasix(CMakePackage): maintainers = ["mscroggs", "chrisrichardson", "garth-wells"] version("main", branch="main") + version("0.4.2", sha256="a54f5e442b7cbf3dbb6319c682f9161272557bd7f42e2b8b8ccef88bc1b7a22f") version("0.3.0", sha256="9b148fd2a5485c94011fc6ca977ebdef0e51782a62b3654fc044f35b60e2bd07") version("0.2.0", sha256="e1ec537737adb283717060221635092474e3f2b5b5ba79dfac74aa496bec2fcb") version("0.1.0", sha256="2ab41fe6ad4f6c42f01b17a6e7c39debb4e0ae61c334d1caebee78b741bca4e7") @@ -27,6 +28,6 @@ class FenicsBasix(CMakePackage): @property def root_cmakelists_dir(self): - if self.spec.satisfies("@main"): + if self.spec.satisfies("@0.4.0:"): return "cpp" return self.stage.source_path diff --git a/var/spack/repos/builtin/packages/fenics-dolfinx/package.py b/var/spack/repos/builtin/packages/fenics-dolfinx/package.py index 5e3deb6780..6987e0a689 100644 --- a/var/spack/repos/builtin/packages/fenics-dolfinx/package.py +++ b/var/spack/repos/builtin/packages/fenics-dolfinx/package.py @@ -15,13 +15,34 @@ class FenicsDolfinx(CMakePackage): maintainers = ["chrisrichardson", "garth-wells", "nate-sime"] version("main", branch="main") + version("0.4.1", sha256="68dcf29a26c750fcea5e02d8d58411e3b054313c3bf6fcbc1d0f08dd2851117f") version("0.3.0", sha256="4857d0fcb44a4e9bf9eb298ba5377abdee17a7ad0327448bdd06cce73d109bed") version("0.2.0", sha256="4c9b5a5c7ef33882c99299c9b4d98469fb7aa470a37a91bc5be3bb2fc5b863a4") version("0.1.0", sha256="0269379769b5b6d4d1864ded64402ecaea08054c2a5793c8685ea15a59af5e33") - variant("kahip", default=False, description="kahip support") - variant("parmetis", default=False, description="parmetis support") - variant("slepc", default=False, description="slepc support") + # Graph partitioner variants + variant('partitioners', + description='Graph partioning', + default=('parmetis',), + values=('kahip', 'parmetis', 'scotch'), + multi=True, + when='@0.4.0:') + variant("kahip", default=False, when="@0.1.0:0.3.0", description="kahip support") + variant("parmetis", default=False, when="@0.1.0:0.3.0", + description="parmetis support") + + # Graph partitioner dependencies for @0.4.0: + depends_on('kahip@3.12:', when="partitioners=kahip @main") + depends_on('kahip@3.11', when="partitioners=kahip @:0.4.1") + depends_on('parmetis', when="partitioners=parmetis") + depends_on('scotch+mpi', when="partitioners=scotch") + + # Graph partitioner dependencies for "@0.1.0:0.3.0" + depends_on('kahip', when="+kahip") + depends_on('parmetis', when="+parmetis") + depends_on('scotch+mpi', when="@0.1.0:0.3.0") + + variant("slepc", default=True, description="slepc support") variant("adios2", default=False, description="adios2 support") depends_on("cmake@3.18:", type="build") @@ -32,25 +53,25 @@ class FenicsDolfinx(CMakePackage): depends_on("petsc+mpi+shared") depends_on("petsc+mpi+shared@3.15.0:", when="@0.1.0") - depends_on("scotch+mpi") - depends_on("xtensor@0.23.10:", type=("build", "link")) - depends_on("kahip", when="+kahip") - depends_on("parmetis", when="+parmetis") + depends_on("xtl@0.7.2:") + depends_on("xtensor@0.23.10:") + depends_on("slepc", when="+slepc") - depends_on("adios2", when="+adios2") + depends_on("adios2+mpi", when="+adios2") - depends_on("py-fenics-ffcx", type=("build", "run")) - depends_on("py-fenics-ffcx@main", type=("build", "run"), when="@main") + depends_on("fenics-ufcx@main", when="@main") + depends_on("fenics-ufcx@0.4.2", when="@0.4.1") depends_on("py-fenics-ffcx@0.3.0", type=("build", "run"), when="@0.3.0") depends_on("py-fenics-ffcx@0.2.0", type=("build", "run"), when="@0.2.0") depends_on("py-fenics-ffcx@0.1.0", type=("build", "run"), when="@0.1.0") - depends_on("fenics-basix", type=("build", "link")) - depends_on("fenics-basix@main", type=("build", "link"), when="@main") - depends_on("fenics-basix@0.3.0", type=("build", "link"), when="@0.3.0") - depends_on("fenics-basix@0.2.0", type=("build", "link"), when="@0.2.0") - depends_on("fenics-basix@0.1.0", type=("build", "link"), when="@0.1.0") + depends_on("fenics-basix") + depends_on("fenics-basix@main", when="@main") + depends_on("fenics-basix@0.4.2", when="@0.4.1") + depends_on("fenics-basix@0.3.0", when="@0.3.0") + depends_on("fenics-basix@0.2.0", when="@0.2.0") + depends_on("fenics-basix@0.1.0", when="@0.1.0") conflicts('%gcc@:8', msg='Improved C++17 support required') @@ -58,16 +79,23 @@ class FenicsDolfinx(CMakePackage): def cmake_args(self): args = [ - "-DDOLFINX_SKIP_BUILD_TESTS=True", - "-DDOLFINX_ENABLE_KAHIP=%s" % ( - 'ON' if "+kahip" in self.spec else 'OFF'), - "-DDOLFINX_ENABLE_PARMETIS=%s" % ( - 'ON' if "+parmetis" in self.spec else 'OFF'), - "-DDOLFINX_ENABLE_SLEPC=%s" % ( - 'ON' if "+slepc" in self.spec else 'OFF'), - "-DDOLFINX_ENABLE_ADIOS2=%s" % ( - 'ON' if "+adios2" in self.spec else 'OFF'), - "-DPython3_ROOT_DIR=%s" % self.spec['python'].home, - "-DPython3_FIND_STRATEGY=LOCATION", + self.define('DOLFINX_SKIP_BUILD_TESTS', True), + self.define_from_variant('DOLFINX_ENABLE_SLEPC', 'slepc'), + self.define_from_variant('DOLFINX_ENABLE_ADIOS2', 'adios2'), ] + + if self.spec.satisfies('@0.4.0:'): + args += [ + self.define('DOLFINX_ENABLE_KAHIP', 'partitioners=kahip' in self.spec), + self.define('DOLFINX_ENABLE_PARMETIS', + 'partitioners=parmetis' in self.spec), + self.define('DOLFINX_ENABLE_SCOTCH', 'partitioners=scotch' in self.spec) + ] + + if self.spec.satisfies('@:0.3.0'): + args.append(self.define_from_variant('DOLFINX_ENABLE_KAHIP', 'kahip')) + args.append(self.define_from_variant('DOLFINX_ENABLE_PARMETIS', 'parmetis')) + args.append(self.define('Python3_ROOT_DIR', self.spec['python'].home)) + args.append(self.define('Python3_FIND_STRATEGY', 'LOCATION')) + return args diff --git a/var/spack/repos/builtin/packages/ufcx/package.py b/var/spack/repos/builtin/packages/fenics-ufcx/package.py index fa1b0e487f..c426ec5c39 100644 --- a/var/spack/repos/builtin/packages/ufcx/package.py +++ b/var/spack/repos/builtin/packages/fenics-ufcx/package.py @@ -6,7 +6,7 @@ from spack import * -class Ufcx(CMakePackage): +class FenicsUfcx(CMakePackage): """FFCx provides the ufcx.h interface header for finite element kernels, used by DOLFINx. ufcx.h can be installed from the FFCx repo without making it dependent on Python. @@ -14,9 +14,10 @@ class Ufcx(CMakePackage): homepage = 'https://github.com/FEniCS/ffcx' git = 'https://github.com/FEniCS/ffcx.git' - url = 'https://github.com/FEniCS/ffcx/archive/refs/heads/main.zip' + url = 'https://github.com/FEniCS/ffcx/archive/v0.4.2.tar.gz' maintainers = ['ma595'] version('main', branch='main') + version('0.4.2', sha256='3be6eef064d6ef907245db5b6cc15d4e603762e68b76e53e099935ca91ef1ee4') root_cmakelists_dir = 'cmake' diff --git a/var/spack/repos/builtin/packages/py-fenics-basix/package.py b/var/spack/repos/builtin/packages/py-fenics-basix/package.py index 8d1f178e3f..c58d8ae357 100644 --- a/var/spack/repos/builtin/packages/py-fenics-basix/package.py +++ b/var/spack/repos/builtin/packages/py-fenics-basix/package.py @@ -16,11 +16,13 @@ class PyFenicsBasix(PythonPackage): maintainers = ["chrisrichardson", "mscroggs", "garth-wells"] version("main", branch="main") + version("0.4.2", sha256="a54f5e442b7cbf3dbb6319c682f9161272557bd7f42e2b8b8ccef88bc1b7a22f") version("0.3.0", sha256="9b148fd2a5485c94011fc6ca977ebdef0e51782a62b3654fc044f35b60e2bd07") version("0.2.0", sha256="e1ec537737adb283717060221635092474e3f2b5b5ba79dfac74aa496bec2fcb") version("0.1.0", sha256="2ab41fe6ad4f6c42f01b17a6e7c39debb4e0ae61c334d1caebee78b741bca4e7") depends_on("fenics-basix@main", type=("build", "run"), when="@main") + depends_on("fenics-basix@0.4.2", type=("build", "run"), when="@0.4.2") depends_on("fenics-basix@0.3.0", type=("build", "run"), when="@0.3.0") depends_on("fenics-basix@0.2.0", type=("build", "run"), when="@0.2.0") depends_on("fenics-basix@0.1.0", type=("build", "run"), when="@0.1.0") diff --git a/var/spack/repos/builtin/packages/py-fenics-dolfinx/package.py b/var/spack/repos/builtin/packages/py-fenics-dolfinx/package.py index 62ab266244..b0b26a5b24 100644 --- a/var/spack/repos/builtin/packages/py-fenics-dolfinx/package.py +++ b/var/spack/repos/builtin/packages/py-fenics-dolfinx/package.py @@ -16,6 +16,7 @@ class PyFenicsDolfinx(PythonPackage): maintainers = ["chrisrichardson", "garth-wells", "nate-sime"] version("main", branch="main") + version("0.4.1", sha256="68dcf29a26c750fcea5e02d8d58411e3b054313c3bf6fcbc1d0f08dd2851117f") version("0.3.0", sha256="4857d0fcb44a4e9bf9eb298ba5377abdee17a7ad0327448bdd06cce73d109bed") version("0.2.0", sha256="4c9b5a5c7ef33882c99299c9b4d98469fb7aa470a37a91bc5be3bb2fc5b863a4") version("0.1.0", sha256="0269379769b5b6d4d1864ded64402ecaea08054c2a5793c8685ea15a59af5e33") @@ -25,27 +26,33 @@ class PyFenicsDolfinx(PythonPackage): depends_on("pkgconfig", type=("build", "run")) depends_on('python@3.7:', type=('build', 'run')) depends_on("py-setuptools", type="build") + depends_on("fenics-dolfinx@main", when="@main") + depends_on("fenics-dolfinx@0.4.1", when="@0.4.1") depends_on("fenics-dolfinx@0.3.0", when="@0.3.0") depends_on("fenics-dolfinx@0.2.0", when="@0.2.0") depends_on("fenics-dolfinx@0.1.0", when="@0.1.0") depends_on("fenics-basix@main", type=("build", "link"), when="@main") + depends_on("fenics-basix@0.4.2", type=("build", "link"), when="@0.4.1") depends_on("fenics-basix@0.3.0", type=("build", "link"), when="@0.3.0") depends_on("fenics-basix@0.2.0", type=("build", "link"), when="@0.2.0") depends_on("fenics-basix@0.1.0", type=("build", "link"), when="@0.1.0") - depends_on("py-numpy@:1.20.3", type=("build", "run")) - depends_on("py-mpi4py", type=("build", "run")) - depends_on("py-petsc4py", type=("build", "run")) - depends_on("py-pybind11@2.6.2:2.7", type=("build", "run")) - depends_on("xtensor@0.23.10:", type="build") depends_on("py-fenics-ffcx@main", type="run", when="@main") + depends_on("py-fenics-ffcx@0.4.2", type="run", when="@0.4.1") depends_on("py-fenics-ffcx@0.3.0", type="run", when="@0.3.0") depends_on("py-fenics-ffcx@0.2.0", type="run", when="@0.2.0") depends_on("py-fenics-ffcx@0.1.0", type="run", when="@0.1.0") depends_on("py-fenics-ufl@main", type="run", when="@main") + depends_on("py-fenics-ufl@2022.1.0", type="run", when="@0.4.1") depends_on("py-fenics-ufl@2021.1.0", type="run", when="@0.1:0.3.99") + depends_on("py-numpy@:1.20.3", type=("build", "run")) + depends_on("py-mpi4py", type=("build", "run")) + depends_on("py-petsc4py", type=("build", "run")) + depends_on("py-pybind11@2.6.2:", type=("build", "run")) + depends_on("xtensor@0.23.10:", type="build") + depends_on("py-cffi", type="run") depends_on("py-numpy", type="run") diff --git a/var/spack/repos/builtin/packages/py-fenics-ffcx/package.py b/var/spack/repos/builtin/packages/py-fenics-ffcx/package.py index 03d0c4311e..8f4cf3150c 100644 --- a/var/spack/repos/builtin/packages/py-fenics-ffcx/package.py +++ b/var/spack/repos/builtin/packages/py-fenics-ffcx/package.py @@ -15,6 +15,7 @@ class PyFenicsFfcx(PythonPackage): maintainers = ["chrisrichardson", "garth-wells"] version('main', branch='main') + version('0.4.2', sha256='3be6eef064d6ef907245db5b6cc15d4e603762e68b76e53e099935ca91ef1ee4') version('0.3.0', sha256='33fa1a0cc5762f360033c25a99ec9462be933f8ba413279e35cd2c3b5c3e6096') version('0.2.0', sha256='562a704163a6427e0341d267e69b8bf55d8f53d673829170b443191577e8d9b6') version('0.1.0', sha256='98a47906146ac892fb4a358e04cbfd04066f12d0a4cdb505a6b08ff0b1a17e89') @@ -27,9 +28,11 @@ class PyFenicsFfcx(PythonPackage): depends_on('py-cffi', type='run') depends_on('py-fenics-ufl@main', type='run', when='@main') + depends_on('py-fenics-ufl@2022.1.0', type='run', when='@0.4.2') depends_on('py-fenics-ufl@2021.1.0', type='run', when='@0.1.0:0.3') depends_on('py-fenics-basix@main', type='run', when='@main') + depends_on('py-fenics-basix@0.4.2', type='run', when='@0.4.2') depends_on('py-fenics-basix@0.3.0', type='run', when='@0.3.0') depends_on('py-fenics-basix@0.2.0', type='run', when='@0.2.0') depends_on('py-fenics-basix@0.1.0', type='run', when='@0.1.0') diff --git a/var/spack/repos/builtin/packages/py-fenics-ufl/package.py b/var/spack/repos/builtin/packages/py-fenics-ufl/package.py index 190d41bc47..fa86887ee9 100644 --- a/var/spack/repos/builtin/packages/py-fenics-ufl/package.py +++ b/var/spack/repos/builtin/packages/py-fenics-ufl/package.py @@ -16,9 +16,10 @@ class PyFenicsUfl(PythonPackage): homepage = "https://fenicsproject.org/" url = "https://github.com/FEniCS/ufl/archive/2019.1.0.tar.gz" git = "https://github.com/FEniCS/ufl.git" - maintainers = ["js947", "chrisrichardson", "garth-wells"] + maintainers = ["chrisrichardson", "garth-wells"] version("main", branch="main") + version('2022.1.0', sha256='48359903d47fb397900d105fe4a60b459c50bbf9d9da78beb9accb54e4e4acaf') version('2021.1.0', sha256='130fdc09bb7fcd39dcd2618426912b8a25a03431d94575711068b38c666b4337') version('2019.1.0', sha256='46ac0df4e96327be10b9576d2b8fa8b2c4ca62d3c681d407f5718b162d3ca22d') version('2018.1.0', sha256='b0d4c2f43f396fd5609317b70d55b53b89c649962fc8a593f4e0e21607da211d') |