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>
This commit is contained in:
Matthew Archer 2022-05-19 19:22:09 +01:00 committed by GitHub
parent a225a5b276
commit 3f4398dd67
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 78 additions and 35 deletions

View File

@ -15,6 +15,7 @@ class FenicsBasix(CMakePackage):
maintainers = ["mscroggs", "chrisrichardson", "garth-wells"] maintainers = ["mscroggs", "chrisrichardson", "garth-wells"]
version("main", branch="main") version("main", branch="main")
version("0.4.2", sha256="a54f5e442b7cbf3dbb6319c682f9161272557bd7f42e2b8b8ccef88bc1b7a22f")
version("0.3.0", sha256="9b148fd2a5485c94011fc6ca977ebdef0e51782a62b3654fc044f35b60e2bd07") version("0.3.0", sha256="9b148fd2a5485c94011fc6ca977ebdef0e51782a62b3654fc044f35b60e2bd07")
version("0.2.0", sha256="e1ec537737adb283717060221635092474e3f2b5b5ba79dfac74aa496bec2fcb") version("0.2.0", sha256="e1ec537737adb283717060221635092474e3f2b5b5ba79dfac74aa496bec2fcb")
version("0.1.0", sha256="2ab41fe6ad4f6c42f01b17a6e7c39debb4e0ae61c334d1caebee78b741bca4e7") version("0.1.0", sha256="2ab41fe6ad4f6c42f01b17a6e7c39debb4e0ae61c334d1caebee78b741bca4e7")
@ -27,6 +28,6 @@ class FenicsBasix(CMakePackage):
@property @property
def root_cmakelists_dir(self): def root_cmakelists_dir(self):
if self.spec.satisfies("@main"): if self.spec.satisfies("@0.4.0:"):
return "cpp" return "cpp"
return self.stage.source_path return self.stage.source_path

View File

@ -15,13 +15,34 @@ class FenicsDolfinx(CMakePackage):
maintainers = ["chrisrichardson", "garth-wells", "nate-sime"] maintainers = ["chrisrichardson", "garth-wells", "nate-sime"]
version("main", branch="main") version("main", branch="main")
version("0.4.1", sha256="68dcf29a26c750fcea5e02d8d58411e3b054313c3bf6fcbc1d0f08dd2851117f")
version("0.3.0", sha256="4857d0fcb44a4e9bf9eb298ba5377abdee17a7ad0327448bdd06cce73d109bed") version("0.3.0", sha256="4857d0fcb44a4e9bf9eb298ba5377abdee17a7ad0327448bdd06cce73d109bed")
version("0.2.0", sha256="4c9b5a5c7ef33882c99299c9b4d98469fb7aa470a37a91bc5be3bb2fc5b863a4") version("0.2.0", sha256="4c9b5a5c7ef33882c99299c9b4d98469fb7aa470a37a91bc5be3bb2fc5b863a4")
version("0.1.0", sha256="0269379769b5b6d4d1864ded64402ecaea08054c2a5793c8685ea15a59af5e33") version("0.1.0", sha256="0269379769b5b6d4d1864ded64402ecaea08054c2a5793c8685ea15a59af5e33")
variant("kahip", default=False, description="kahip support") # Graph partitioner variants
variant("parmetis", default=False, description="parmetis support") variant('partitioners',
variant("slepc", default=False, description="slepc support") 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") variant("adios2", default=False, description="adios2 support")
depends_on("cmake@3.18:", type="build") depends_on("cmake@3.18:", type="build")
@ -32,25 +53,25 @@ class FenicsDolfinx(CMakePackage):
depends_on("petsc+mpi+shared") depends_on("petsc+mpi+shared")
depends_on("petsc+mpi+shared@3.15.0:", when="@0.1.0") 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("xtl@0.7.2:")
depends_on("parmetis", when="+parmetis") depends_on("xtensor@0.23.10:")
depends_on("slepc", when="+slepc") 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("fenics-ufcx@main", when="@main")
depends_on("py-fenics-ffcx@main", type=("build", "run"), 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.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.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("py-fenics-ffcx@0.1.0", type=("build", "run"), when="@0.1.0")
depends_on("fenics-basix", type=("build", "link")) depends_on("fenics-basix")
depends_on("fenics-basix@main", type=("build", "link"), when="@main") depends_on("fenics-basix@main", when="@main")
depends_on("fenics-basix@0.3.0", type=("build", "link"), when="@0.3.0") depends_on("fenics-basix@0.4.2", when="@0.4.1")
depends_on("fenics-basix@0.2.0", type=("build", "link"), when="@0.2.0") depends_on("fenics-basix@0.3.0", when="@0.3.0")
depends_on("fenics-basix@0.1.0", type=("build", "link"), when="@0.1.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') conflicts('%gcc@:8', msg='Improved C++17 support required')
@ -58,16 +79,23 @@ class FenicsDolfinx(CMakePackage):
def cmake_args(self): def cmake_args(self):
args = [ args = [
"-DDOLFINX_SKIP_BUILD_TESTS=True", self.define('DOLFINX_SKIP_BUILD_TESTS', True),
"-DDOLFINX_ENABLE_KAHIP=%s" % ( self.define_from_variant('DOLFINX_ENABLE_SLEPC', 'slepc'),
'ON' if "+kahip" in self.spec else 'OFF'), self.define_from_variant('DOLFINX_ENABLE_ADIOS2', 'adios2'),
"-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",
] ]
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 return args

View File

@ -6,7 +6,7 @@
from spack import * from spack import *
class Ufcx(CMakePackage): class FenicsUfcx(CMakePackage):
"""FFCx provides the ufcx.h interface header for finite element kernels, """FFCx provides the ufcx.h interface header for finite element kernels,
used by DOLFINx. ufcx.h can be installed from the FFCx repo without used by DOLFINx. ufcx.h can be installed from the FFCx repo without
making it dependent on Python. making it dependent on Python.
@ -14,9 +14,10 @@ class Ufcx(CMakePackage):
homepage = 'https://github.com/FEniCS/ffcx' homepage = 'https://github.com/FEniCS/ffcx'
git = 'https://github.com/FEniCS/ffcx.git' 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'] maintainers = ['ma595']
version('main', branch='main') version('main', branch='main')
version('0.4.2', sha256='3be6eef064d6ef907245db5b6cc15d4e603762e68b76e53e099935ca91ef1ee4')
root_cmakelists_dir = 'cmake' root_cmakelists_dir = 'cmake'

View File

@ -16,11 +16,13 @@ class PyFenicsBasix(PythonPackage):
maintainers = ["chrisrichardson", "mscroggs", "garth-wells"] maintainers = ["chrisrichardson", "mscroggs", "garth-wells"]
version("main", branch="main") version("main", branch="main")
version("0.4.2", sha256="a54f5e442b7cbf3dbb6319c682f9161272557bd7f42e2b8b8ccef88bc1b7a22f")
version("0.3.0", sha256="9b148fd2a5485c94011fc6ca977ebdef0e51782a62b3654fc044f35b60e2bd07") version("0.3.0", sha256="9b148fd2a5485c94011fc6ca977ebdef0e51782a62b3654fc044f35b60e2bd07")
version("0.2.0", sha256="e1ec537737adb283717060221635092474e3f2b5b5ba79dfac74aa496bec2fcb") version("0.2.0", sha256="e1ec537737adb283717060221635092474e3f2b5b5ba79dfac74aa496bec2fcb")
version("0.1.0", sha256="2ab41fe6ad4f6c42f01b17a6e7c39debb4e0ae61c334d1caebee78b741bca4e7") version("0.1.0", sha256="2ab41fe6ad4f6c42f01b17a6e7c39debb4e0ae61c334d1caebee78b741bca4e7")
depends_on("fenics-basix@main", type=("build", "run"), when="@main") 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.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.2.0", type=("build", "run"), when="@0.2.0")
depends_on("fenics-basix@0.1.0", type=("build", "run"), when="@0.1.0") depends_on("fenics-basix@0.1.0", type=("build", "run"), when="@0.1.0")

View File

@ -16,6 +16,7 @@ class PyFenicsDolfinx(PythonPackage):
maintainers = ["chrisrichardson", "garth-wells", "nate-sime"] maintainers = ["chrisrichardson", "garth-wells", "nate-sime"]
version("main", branch="main") version("main", branch="main")
version("0.4.1", sha256="68dcf29a26c750fcea5e02d8d58411e3b054313c3bf6fcbc1d0f08dd2851117f")
version("0.3.0", sha256="4857d0fcb44a4e9bf9eb298ba5377abdee17a7ad0327448bdd06cce73d109bed") version("0.3.0", sha256="4857d0fcb44a4e9bf9eb298ba5377abdee17a7ad0327448bdd06cce73d109bed")
version("0.2.0", sha256="4c9b5a5c7ef33882c99299c9b4d98469fb7aa470a37a91bc5be3bb2fc5b863a4") version("0.2.0", sha256="4c9b5a5c7ef33882c99299c9b4d98469fb7aa470a37a91bc5be3bb2fc5b863a4")
version("0.1.0", sha256="0269379769b5b6d4d1864ded64402ecaea08054c2a5793c8685ea15a59af5e33") version("0.1.0", sha256="0269379769b5b6d4d1864ded64402ecaea08054c2a5793c8685ea15a59af5e33")
@ -25,27 +26,33 @@ class PyFenicsDolfinx(PythonPackage):
depends_on("pkgconfig", type=("build", "run")) depends_on("pkgconfig", type=("build", "run"))
depends_on('python@3.7:', type=('build', 'run')) depends_on('python@3.7:', type=('build', 'run'))
depends_on("py-setuptools", type="build") depends_on("py-setuptools", type="build")
depends_on("fenics-dolfinx@main", when="@main") 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.3.0", when="@0.3.0")
depends_on("fenics-dolfinx@0.2.0", when="@0.2.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-dolfinx@0.1.0", when="@0.1.0")
depends_on("fenics-basix@main", type=("build", "link"), when="@main") 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.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.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@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@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.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.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-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@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-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-cffi", type="run")
depends_on("py-numpy", type="run") depends_on("py-numpy", type="run")

View File

@ -15,6 +15,7 @@ class PyFenicsFfcx(PythonPackage):
maintainers = ["chrisrichardson", "garth-wells"] maintainers = ["chrisrichardson", "garth-wells"]
version('main', branch='main') version('main', branch='main')
version('0.4.2', sha256='3be6eef064d6ef907245db5b6cc15d4e603762e68b76e53e099935ca91ef1ee4')
version('0.3.0', sha256='33fa1a0cc5762f360033c25a99ec9462be933f8ba413279e35cd2c3b5c3e6096') version('0.3.0', sha256='33fa1a0cc5762f360033c25a99ec9462be933f8ba413279e35cd2c3b5c3e6096')
version('0.2.0', sha256='562a704163a6427e0341d267e69b8bf55d8f53d673829170b443191577e8d9b6') version('0.2.0', sha256='562a704163a6427e0341d267e69b8bf55d8f53d673829170b443191577e8d9b6')
version('0.1.0', sha256='98a47906146ac892fb4a358e04cbfd04066f12d0a4cdb505a6b08ff0b1a17e89') version('0.1.0', sha256='98a47906146ac892fb4a358e04cbfd04066f12d0a4cdb505a6b08ff0b1a17e89')
@ -27,9 +28,11 @@ class PyFenicsFfcx(PythonPackage):
depends_on('py-cffi', type='run') depends_on('py-cffi', type='run')
depends_on('py-fenics-ufl@main', type='run', when='@main') 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-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@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.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.2.0', type='run', when='@0.2.0')
depends_on('py-fenics-basix@0.1.0', type='run', when='@0.1.0') depends_on('py-fenics-basix@0.1.0', type='run', when='@0.1.0')

View File

@ -16,9 +16,10 @@ class PyFenicsUfl(PythonPackage):
homepage = "https://fenicsproject.org/" homepage = "https://fenicsproject.org/"
url = "https://github.com/FEniCS/ufl/archive/2019.1.0.tar.gz" url = "https://github.com/FEniCS/ufl/archive/2019.1.0.tar.gz"
git = "https://github.com/FEniCS/ufl.git" git = "https://github.com/FEniCS/ufl.git"
maintainers = ["js947", "chrisrichardson", "garth-wells"] maintainers = ["chrisrichardson", "garth-wells"]
version("main", branch="main") version("main", branch="main")
version('2022.1.0', sha256='48359903d47fb397900d105fe4a60b459c50bbf9d9da78beb9accb54e4e4acaf')
version('2021.1.0', sha256='130fdc09bb7fcd39dcd2618426912b8a25a03431d94575711068b38c666b4337') version('2021.1.0', sha256='130fdc09bb7fcd39dcd2618426912b8a25a03431d94575711068b38c666b4337')
version('2019.1.0', sha256='46ac0df4e96327be10b9576d2b8fa8b2c4ca62d3c681d407f5718b162d3ca22d') version('2019.1.0', sha256='46ac0df4e96327be10b9576d2b8fa8b2c4ca62d3c681d407f5718b162d3ca22d')
version('2018.1.0', sha256='b0d4c2f43f396fd5609317b70d55b53b89c649962fc8a593f4e0e21607da211d') version('2018.1.0', sha256='b0d4c2f43f396fd5609317b70d55b53b89c649962fc8a593f4e0e21607da211d')