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:
		| @@ -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 | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
| @@ -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' | ||||
| @@ -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") | ||||
|   | ||||
| @@ -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") | ||||
| 
 | ||||
|   | ||||
| @@ -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') | ||||
|   | ||||
| @@ -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') | ||||
|   | ||||
		Reference in New Issue
	
	Block a user