From aab1fee85ce04cc3ad77b440592256f4c2b14c40 Mon Sep 17 00:00:00 2001 From: Georgios Kafanas Date: Tue, 6 Jan 2026 23:32:34 +0100 Subject: [PATCH] {tools}[foss/2023b] FEniCS-DOLFINx v0.10.0 This commit contains all the easyconfigs required for building FEniCS-DOPHINx. --- .../FEniCS-Basix-Python-0.10.0-gfbf-2024a.eb | 39 ++++++++++++++ .../FEniCS-Basix-0.10.0-GCC-13.3.0.eb | 31 +++++++++++ ...FEniCS-DOLFINx-Python-0.10.0-foss-2024a.eb | 53 +++++++++++++++++++ .../FEniCS-DOLFINx-0.10.0-foss-2024a.eb | 53 +++++++++++++++++++ .../FEniCS-FFCx-0.10.1-gfbf-2024a.eb | 36 +++++++++++++ .../FEniCS-UFL-2025.2.0-gfbf-2024a.eb | 34 ++++++++++++ .../FEniCS-ufcx-0.10.0-GCCcore-13.3.0.eb | 28 ++++++++++ 7 files changed, 274 insertions(+) create mode 100644 easybuild/easyconfigs/f/FEniCS-Basix-Python/FEniCS-Basix-Python-0.10.0-gfbf-2024a.eb create mode 100644 easybuild/easyconfigs/f/FEniCS-Basix/FEniCS-Basix-0.10.0-GCC-13.3.0.eb create mode 100644 easybuild/easyconfigs/f/FEniCS-DOLFINx-Python/FEniCS-DOLFINx-Python-0.10.0-foss-2024a.eb create mode 100644 easybuild/easyconfigs/f/FEniCS-DOLFINx/FEniCS-DOLFINx-0.10.0-foss-2024a.eb create mode 100644 easybuild/easyconfigs/f/FEniCS-FFCx/FEniCS-FFCx-0.10.1-gfbf-2024a.eb create mode 100644 easybuild/easyconfigs/f/FEniCS-UFL/FEniCS-UFL-2025.2.0-gfbf-2024a.eb create mode 100644 easybuild/easyconfigs/f/FEniCS-ufcx/FEniCS-ufcx-0.10.0-GCCcore-13.3.0.eb diff --git a/easybuild/easyconfigs/f/FEniCS-Basix-Python/FEniCS-Basix-Python-0.10.0-gfbf-2024a.eb b/easybuild/easyconfigs/f/FEniCS-Basix-Python/FEniCS-Basix-Python-0.10.0-gfbf-2024a.eb new file mode 100644 index 000000000000..66f7476d64f5 --- /dev/null +++ b/easybuild/easyconfigs/f/FEniCS-Basix-Python/FEniCS-Basix-Python-0.10.0-gfbf-2024a.eb @@ -0,0 +1,39 @@ +easyblock = 'PythonPackage' + +name = 'FEniCS-Basix-Python' +version = '0.10.0' + +homepage = 'https://github.com/FEniCS/basix' +description = "Basix is a finite element definition and tabulation runtime library - Python binding" + +source_urls = ['https://github.com/FEniCS/basix/archive'] +sources = ['v%(version)s.tar.gz'] +checksums = ['b93221dac7d3fea8c10e77617f6201036de35d0c5437440b718de69a28c3773f'] + +toolchain = {'name': 'gfbf', 'version': '2024a'} + +builddependencies = [ + ('make', '4.4.1'), + ('CMake', '3.29.3'), + ('scikit-build-core', '0.11.1'), + ('nanobind', '2.5.0'), +] + +dependencies = [ + ('Python', '3.12.3'), + ('SciPy-bundle', '2024.05'), + ('FEniCS-Basix', '%(version)s') +] + +install_src = './python' + +# Provide custom name for the module extension built-in sanity check: the EB module name is different from the Python +# module name. +options = {'modulename': 'basix'} + +sanity_check_paths = { + 'files': ['lib/python%(pyshortver)s/site-packages/basix/__init__.py'], + 'dirs': [], +} + +moduleclass = 'cae' diff --git a/easybuild/easyconfigs/f/FEniCS-Basix/FEniCS-Basix-0.10.0-GCC-13.3.0.eb b/easybuild/easyconfigs/f/FEniCS-Basix/FEniCS-Basix-0.10.0-GCC-13.3.0.eb new file mode 100644 index 000000000000..aad8c83c4722 --- /dev/null +++ b/easybuild/easyconfigs/f/FEniCS-Basix/FEniCS-Basix-0.10.0-GCC-13.3.0.eb @@ -0,0 +1,31 @@ +easyblock = 'CMakeMake' + +name = 'FEniCS-Basix' +version = '0.10.0' + +homepage = 'https://github.com/FEniCS/basix' +description = "Basix is a finite element definition and tabulation runtime library - C++ library" + +toolchain = {'name': 'GCC', 'version': '13.3.0'} + +source_urls = ['https://github.com/FEniCS/basix/archive'] +sources = ['v%(version)s.tar.gz'] +checksums = ['b93221dac7d3fea8c10e77617f6201036de35d0c5437440b718de69a28c3773f'] + +builddependencies = [ + ('make', '4.4.1'), + ('CMake', '3.29.3'), +] + +dependencies = [ + ('FlexiBLAS', '3.4.4'), +] + +srcdir = "cpp" + +sanity_check_paths = { + 'files': [f'lib/libbasix.{SHLIB_EXT}'], + 'dirs': ['include'], +} + +moduleclass = 'cae' diff --git a/easybuild/easyconfigs/f/FEniCS-DOLFINx-Python/FEniCS-DOLFINx-Python-0.10.0-foss-2024a.eb b/easybuild/easyconfigs/f/FEniCS-DOLFINx-Python/FEniCS-DOLFINx-Python-0.10.0-foss-2024a.eb new file mode 100644 index 000000000000..f0b844627835 --- /dev/null +++ b/easybuild/easyconfigs/f/FEniCS-DOLFINx-Python/FEniCS-DOLFINx-Python-0.10.0-foss-2024a.eb @@ -0,0 +1,53 @@ +easyblock = 'PythonPackage' + +name = 'FEniCS-DOLFINx-Python' +version = '0.10.0' + +homepage = 'https://github.com/FEniCS/dolfinx' +description = "DOLFINx is the computational environment of FEniCSx - Python binding " + +toolchain = {'name': 'foss', 'version': '2024a'} + +source_urls = ['https://github.com/FEniCS/dolfinx/archive'] +sources = ['v%(version)s.tar.gz'] +checksums = ['24cbad2f604b38248e7655280e5f894eed19b409de4618cd6148a362a70105fd'] + +builddependencies = [ + ('make', '4.4.1'), + ('CMake', '3.29.3'), + ('nanobind', '2.5.0'), + ('pkgconfig', '1.5.5', '-python'), + ('scikit-build-core', '0.11.1'), + ('setuptools', '80.9.0'), +] + +dependencies = [ + ('Python', '3.12.3'), + ('SciPy-bundle', '2024.05'), + ('FEniCS-Basix-Python', '0.10.0'), + ('FEniCS-FFCx', '0.10.1'), + ('FEniCS-UFL', '2025.2.0'), + ('mpi4py', '4.0.1'), + ('petsc4py', '3.23.5'), + ('slepc4py', '3.23.2'), + ('FEniCS-DOLFINx', '%(version)s'), +] + +install_src = './python' + +# Disable built-in check for module extension: need to initialize MPI from mpi4py first +options = {'modulename': False} + +sanity_check_paths = { + 'files': ['lib/python%(pyshortver)s/site-packages/dolfinx/__init__.py'], + 'dirs': [], +} + +sanity_check_commands = [ + 'mpiexec -N 1 python -c "from mpi4py import MPI; import dolfinx"', +] + +testinstall = True +runtest = 'mpiexec -n 1 python -m pytest -n auto -m "not adios2" python/test/unit' + +moduleclass = 'cae' diff --git a/easybuild/easyconfigs/f/FEniCS-DOLFINx/FEniCS-DOLFINx-0.10.0-foss-2024a.eb b/easybuild/easyconfigs/f/FEniCS-DOLFINx/FEniCS-DOLFINx-0.10.0-foss-2024a.eb new file mode 100644 index 000000000000..0754afed890d --- /dev/null +++ b/easybuild/easyconfigs/f/FEniCS-DOLFINx/FEniCS-DOLFINx-0.10.0-foss-2024a.eb @@ -0,0 +1,53 @@ +easyblock = 'CMakeMake' + +name = 'FEniCS-DOLFINx' +version = '0.10.0' + +homepage = 'https://github.com/FEniCS/dolfinx' +description = "DOLFINx is the computational environment of FEniCSx - C++ library" + +toolchain = {'name': 'foss', 'version': '2024a'} + +source_urls = ['https://github.com/FEniCS/dolfinx/archive'] +sources = ['v%(version)s.tar.gz'] +checksums = ['24cbad2f604b38248e7655280e5f894eed19b409de4618cd6148a362a70105fd'] + +builddependencies = [ + ('make', '4.4.1'), + ('CMake', '3.29.3'), + ('pkgconf', '2.2.0'), +] + +dependencies = [ + ('Boost', '1.85.0'), + ('ParMETIS', '4.0.3'), + ('PETSc', '3.23.5'), + ('SLEPc', '3.23.2'), + ('HDF5', '1.14.5'), + ('FEniCS-Basix', '0.10.0'), + ('FEniCS-ufcx', '0.10.0'), + ('pugixml', '1.15'), + ('spdlog', '1.12.0'), + ('KaHIP', '3.19'), + ('SCOTCH', '7.0.6'), +] + +srcdir = "cpp" + +configopts = ( + ' -DDOLFINX_UFCX_PYTHON:Bool=OFF ' + ' -DDOLFINX_BASIX_PYTHON:Bool=OFF ' +# Ensure dependencies are used (fail if not present) + ' -DDOLFINX_ENABLE_KAHIP:Bool=ON ' + ' -DDOLFINX_ENABLE_SCOTCH:Bool=ON ' + ' -DDOLFINX_ENABLE_PARMETIS:Bool=ON ' + ' -DDOLFINX_ENABLE_PETSC:Bool=ON ' + ' -DDOLFINX_ENABLE_SLEPC:Bool=ON ' +) + +sanity_check_paths = { + 'files': ['include/dolfinx.h', f'lib/libdolfinx.{SHLIB_EXT}'], + 'dirs': ['include/dolfinx', 'lib/cmake/dolfinx'], +} + +moduleclass = 'cae' diff --git a/easybuild/easyconfigs/f/FEniCS-FFCx/FEniCS-FFCx-0.10.1-gfbf-2024a.eb b/easybuild/easyconfigs/f/FEniCS-FFCx/FEniCS-FFCx-0.10.1-gfbf-2024a.eb new file mode 100644 index 000000000000..e73216406e75 --- /dev/null +++ b/easybuild/easyconfigs/f/FEniCS-FFCx/FEniCS-FFCx-0.10.1-gfbf-2024a.eb @@ -0,0 +1,36 @@ +easyblock = 'PythonPackage' + +name = 'FEniCS-FFCx' +version = '0.10.1' + +homepage = 'https://github.com/FEniCS/ffcx' +description = "FFCx is a compiler for finite element variational forms" + +toolchain = {'name': 'gfbf', 'version': '2024a'} + +source_urls = ['https://github.com/FEniCS/ffcx/archive'] +sources = ['v%(version)s.tar.gz'] +checksums = ['316a6356125b8fae1bf6ffb62c6690381df94e1723bc1aa73bcba0a7b062d0ed'] + +builddependencies = [ + ('setuptools', '80.9.0'), +] + +dependencies = [ + ('Python', '3.12.3'), + ('SciPy-bundle', '2024.05'), + ('FEniCS-Basix-Python', '0.10.0'), + ('FEniCS-UFL', '2025.2.0'), + ('setuptools', '80.9.0'), +] + +# Provide custom name for the module extension built-in sanity check: the EB module name is different from the Python +# module name. +options = {'modulename': 'ffcx'} + +sanity_check_paths = { + 'files': ['lib/python%(pyshortver)s/site-packages/ffcx/__init__.py'], + 'dirs': [], +} + +moduleclass = 'cae' diff --git a/easybuild/easyconfigs/f/FEniCS-UFL/FEniCS-UFL-2025.2.0-gfbf-2024a.eb b/easybuild/easyconfigs/f/FEniCS-UFL/FEniCS-UFL-2025.2.0-gfbf-2024a.eb new file mode 100644 index 000000000000..0d40547d09eb --- /dev/null +++ b/easybuild/easyconfigs/f/FEniCS-UFL/FEniCS-UFL-2025.2.0-gfbf-2024a.eb @@ -0,0 +1,34 @@ +easyblock = 'PythonPackage' + +name = 'FEniCS-UFL' +version = '2025.2.0' + +homepage = "https://github.com/FEniCS/ufl" +description = "The Unified Form Language (UFL) is a domain-specific language for defining variational forms" + +toolchain = {'name': 'gfbf', 'version': '2024a'} + +source_urls = ['https://github.com/FEniCS/ufl/archive'] +sources = ['%(version)s.tar.gz'] + +builddependencies = [ + ('setuptools', '80.9.0'), +] + +dependencies = [ + ('Python', '3.12.3'), + ('SciPy-bundle', '2024.05'), + ('setuptools', '80.9.0'), +] + +sanity_check_paths = { + 'files': ['lib/python%(pyshortver)s/site-packages/ufl/__init__.py'], + 'dirs': [], +} + +testinstall = True +runtest = 'python -m pytest -n auto test/' + +options = {'modulename': 'ufl'} + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/f/FEniCS-ufcx/FEniCS-ufcx-0.10.0-GCCcore-13.3.0.eb b/easybuild/easyconfigs/f/FEniCS-ufcx/FEniCS-ufcx-0.10.0-GCCcore-13.3.0.eb new file mode 100644 index 000000000000..a5f005eea2dd --- /dev/null +++ b/easybuild/easyconfigs/f/FEniCS-ufcx/FEniCS-ufcx-0.10.0-GCCcore-13.3.0.eb @@ -0,0 +1,28 @@ +easyblock = 'CMakeMake' + +name = 'FEniCS-ufcx' +version = '0.10.0' + +homepage = 'https://github.com/FEniCS/ffcx' +description = "FFCx provides the ufcx.h interface header for generated finite element kernels, used by DOLFINx." + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = ['https://github.com/FEniCS/ffcx/archive/'] +sources = ['v%(version)s.tar.gz'] +checksums = ['fa27e2dc68988cbf9aca537eb5a58483f75cc719c1a383713b7f8cca49844ff9'] + +builddependencies = [ + ('make', '4.4.1'), + ('CMake', '3.29.3'), + ('binutils', '2.42'), +] + +srcdir = 'cmake' + +sanity_check_paths = { + 'files': ['include/ufcx.h', 'share/ufcx/cmake/ufcxConfig.cmake'], + 'dirs': [], +} + +moduleclass = 'cae'