From 6808426fd125daf8b725f995533b8341945439e3 Mon Sep 17 00:00:00 2001 From: Loris Ercole Date: Tue, 12 Aug 2025 19:17:03 +0200 Subject: [PATCH 01/10] adding easyconfigs: LAMMPS-29Aug2024_update2-iomkl-2023b-kokkos.eb, HDF5-1.14.3-iompi-2023b.eb, kim-api-2.3.0-intel-compilers-2023.2.1.eb, MDI-1.4.29-iompi-2023b.eb, netCDF-4.9.2-iompi-2023b.eb, PLUMED-2.9.2-iomkl-2023b.eb, VTK-9.3.0-iomkl-2023b.eb --- .../h/HDF5/HDF5-1.14.3-iompi-2023b.eb | 31 +++ .../kim-api-2.3.0-intel-compilers-2023.2.1.eb | 43 ++++ ...PS-29Aug2024_update2-iomkl-2023b-kokkos.eb | 191 ++++++++++++++++++ .../m/MDI/MDI-1.4.29-iompi-2023b.eb | 54 +++++ .../n/netCDF/netCDF-4.9.2-iompi-2023b.eb | 50 +++++ .../p/PLUMED/PLUMED-2.9.2-iomkl-2023b.eb | 54 +++++ .../v/VTK/VTK-9.3.0-iomkl-2023b.eb | 94 +++++++++ 7 files changed, 517 insertions(+) create mode 100644 easybuild/easyconfigs/h/HDF5/HDF5-1.14.3-iompi-2023b.eb create mode 100644 easybuild/easyconfigs/k/kim-api/kim-api-2.3.0-intel-compilers-2023.2.1.eb create mode 100644 easybuild/easyconfigs/l/LAMMPS/LAMMPS-29Aug2024_update2-iomkl-2023b-kokkos.eb create mode 100644 easybuild/easyconfigs/m/MDI/MDI-1.4.29-iompi-2023b.eb create mode 100644 easybuild/easyconfigs/n/netCDF/netCDF-4.9.2-iompi-2023b.eb create mode 100644 easybuild/easyconfigs/p/PLUMED/PLUMED-2.9.2-iomkl-2023b.eb create mode 100644 easybuild/easyconfigs/v/VTK/VTK-9.3.0-iomkl-2023b.eb diff --git a/easybuild/easyconfigs/h/HDF5/HDF5-1.14.3-iompi-2023b.eb b/easybuild/easyconfigs/h/HDF5/HDF5-1.14.3-iompi-2023b.eb new file mode 100644 index 000000000000..c8052585a03a --- /dev/null +++ b/easybuild/easyconfigs/h/HDF5/HDF5-1.14.3-iompi-2023b.eb @@ -0,0 +1,31 @@ +name = 'HDF5' +# Note: Odd minor releases are only RCs and should not be used. +version = '1.14.3' + +homepage = 'https://portal.hdfgroup.org/display/support' +description = """HDF5 is a data model, library, and file format for storing and managing data. + It supports an unlimited variety of datatypes, and is designed for flexible + and efficient I/O and for high volume and complex data.""" + +toolchain = {'name': 'iompi', 'version': '2023b'} +toolchainopts = {'pic': True, 'usempi': True} + +source_urls = ['https://support.hdfgroup.org/ftp/%(name)s/releases/%(namelower)s-%(version_major_minor)s/%(namelower)s-%(version)s/src'] +sources = [SOURCELOWER_TAR_GZ] +patches = ['%(name)s-%(version_major_minor)s.3_suppress_fp_exceptions.patch'] +checksums = [ + {SOURCELOWER_TAR_GZ: '09cdb287aa7a89148c1638dd20891fdbae08102cf433ef128fd345338aa237c7'}, + {'%(name)s-%(version_major_minor)s.3_suppress_fp_exceptions.patch': 'bf33e579c93a16043c54b266321bbe95e4a8797f7fe6d096a13ce905ed2ffde7'}, +] + +dependencies = [ + ('zlib', '1.2.13'), + ('Szip', '2.1.1'), +] + +postinstallcmds = [ + 'sed -i -r "s, -I[^[:space:]]+H5FDsubfiling , -I%(installdir)s/include ,g" %(installdir)s/bin/h5c++', + 'sed -i -r "s, -I[^[:space:]]+H5FDsubfiling , -I%(installdir)s/include ,g" %(installdir)s/bin/h5pcc', +] + +moduleclass = 'data' diff --git a/easybuild/easyconfigs/k/kim-api/kim-api-2.3.0-intel-compilers-2023.2.1.eb b/easybuild/easyconfigs/k/kim-api/kim-api-2.3.0-intel-compilers-2023.2.1.eb new file mode 100644 index 000000000000..c6a7e6365a41 --- /dev/null +++ b/easybuild/easyconfigs/k/kim-api/kim-api-2.3.0-intel-compilers-2023.2.1.eb @@ -0,0 +1,43 @@ +easyblock = 'CMakeMake' + +name = 'kim-api' +version = '2.3.0' + +homepage = 'https://openkim.org/' +description = """Open Knowledgebase of Interatomic Models. + +KIM is an API and OpenKIM is a collection of interatomic models (potentials) for +atomistic simulations. This is a library that can be used by simulation programs +to get access to the models in the OpenKIM database. + +This EasyBuild only installs the API, the models can be installed with the +package openkim-models, or the user can install them manually by running + kim-api-collections-management install user MODELNAME +or + kim-api-collections-management install user OpenKIM +to install them all. + """ + +toolchain = {'name': 'intel-compilers', 'version': '2023.2.1'} + +source_urls = ['https://s3.openkim.org/%(name)s/'] +sources = [SOURCE_TXZ] +checksums = ['93673bb8fbc0625791f2ee67915d1672793366d10cabc63e373196862c14f991'] + +dependencies = [ + ('CMake', '3.27.6'), # Also needed to install models, thus not just a builddependency. +] + +maxparallel = 1 +separate_build_dir = True + +modextravars = { + 'KIM_API_CMAKE_PREFIX_DIR': '%(installdir)s/lib64' +} + +sanity_check_paths = { + 'files': ['bin/kim-api-collections-management', 'lib64/libkim-api.%s' % SHLIB_EXT], + 'dirs': [] +} + +moduleclass = 'chem' diff --git a/easybuild/easyconfigs/l/LAMMPS/LAMMPS-29Aug2024_update2-iomkl-2023b-kokkos.eb b/easybuild/easyconfigs/l/LAMMPS/LAMMPS-29Aug2024_update2-iomkl-2023b-kokkos.eb new file mode 100644 index 000000000000..9a36c22bb171 --- /dev/null +++ b/easybuild/easyconfigs/l/LAMMPS/LAMMPS-29Aug2024_update2-iomkl-2023b-kokkos.eb @@ -0,0 +1,191 @@ +name = 'LAMMPS' +version = '29Aug2024_update2' +versionsuffix = '-kokkos' + +homepage = 'https://www.lammps.org' +description = """LAMMPS is a classical molecular dynamics code, and an acronym +for Large-scale Atomic/Molecular Massively Parallel Simulator. LAMMPS has +potentials for solid-state materials (metals, semiconductors) and soft matter +(biomolecules, polymers) and coarse-grained or mesoscopic systems. It can be +used to model atoms or, more generically, as a parallel particle simulator at +the atomic, meso, or continuum scale. LAMMPS runs on single processors or in +parallel using message-passing techniques and a spatial-decomposition of the +simulation domain. The code is designed to be easy to modify or extend with new +functionality. +""" + +toolchain = {'name': 'iomkl', 'version': '2023b'} +toolchainopts = {'cstd': 'c++17', 'openmp': True, 'usempi': True, 'loose': True} + +# 'https://github.com/lammps/lammps/archive/' +source_urls = [GITHUB_LOWER_SOURCE] +sources = ['stable_%(version)s.tar.gz'] +patches = [ + 'LAMMPS-2Aug2023_install_lammps_python_package_in_eb_software_module.patch', +] +checksums = [ + {'stable_29Aug2024_update2.tar.gz': 'f8ca3f021a819ced8658055f7750e235c51b4937ddb621cf1bd7bee08e0b6266'}, + {'LAMMPS-2Aug2023_install_lammps_python_package_in_eb_software_module.patch': + '723c944b62b9d28427d25e80a7a67049631702d344df49268a6846aa0cd0fe04'}, +] + +builddependencies = [ + ('CMake', '3.27.6'), + ('pkgconf', '2.0.3'), + ('archspec', '0.2.2'), +] +dependencies = [ + ('Python', '3.11.5'), + ('libpng', '1.6.40'), + ('libjpeg-turbo', '3.0.1'), + ('netCDF', '4.9.2'), + ('GSL', '2.7'), + ('zlib', '1.2.13'), + ('gzip', '1.13'), + ('cURL', '8.3.0'), + ('HDF5', '1.14.3'), + ('PCRE', '8.45'), + ('libxml2', '2.11.5'), + ('FFmpeg', '6.0'), + ('Voro++', '0.4.6'), + ('kim-api', '2.3.0'), + ('Eigen', '3.4.0'), + ('PLUMED', '2.9.2'), + ('SciPy-bundle', '2023.12'), + # VTK package is auto-disabled if this dep is not available + ('VTK', '9.3.0'), + # We use a custom build of MDI + ('MDI', '1.4.29'), +] +if ARCH == 'x86_64': + # TBB and ScaFaCos are an optional dependency when building on Intel arch + dependencies += [ + ('tbb', '2021.13.0'), + # ('ScaFaCoS', '1.0.4'), + # ScaFaCoS causes a link error: + # binutils/2.40-GCCcore-13.2.0/bin/ld: cannot find -lwp: No such file or directory + # binutils/2.40-GCCcore-13.2.0/bin/ld: cannot find -loopopt: No such file or directory + # icpx: error: linker command failed with exit code 1 (use -v to see invocation) + # make[2]: *** [CMakeFiles/lammps.dir/build.make:26524: liblammps.so.0] Error 1 + # because it adds the following flags: '-lwp -loopopt' that are wrongly interpreted as libs by the Intel compiler. + # They should be prepend with '-mllvm -lwp -mllvm -loopopt' + # https://community.intel.com/t5/Intel-Fortran-Compiler/ifx-2021-1-beta04-HPC-Toolkit-build-error-with-loopopt/td-p/1184181 + # https://www.intel.com/content/www/us/en/developer/articles/release-notes/fortran-compiler/2025.html + ] + +# To use additional custom configuration options, use the 'configopts' easyconfig parameter +# See docs and lammps easyblock for more information. +# https://github.com/lammps/lammps/blob/master/cmake/README.md#lammps-configuration-options + +# OpenMP-Kokkos build is default in the current easyblock. One can switch to serial backend of Kokkos, +# which is claimed to be faster in pure MPI calculations +# configopts = "-DKokkos_ENABLE_SERIAL=yes " + + +# packages auto-enabled by easyblock +# 'GPU' - if cuda package is present and kokkos is disabled +# 'KOKKOS' - if kokkos is enabled (by default) +# 'INTEL' - if builing on Intel CPU +# 'OPENMP' - if OpenMP swithed on in 'toolchainopts' + +configopts = ' '.join([ + '-DCMAKE_CXX_STANDARD=17', + '-DCMAKE_CXX_STANDARD_REQUIRED=on', +]) + +# include the following extra packages into the build +general_packages = [ + 'AMOEBA', + 'ASPHERE', + 'ATC', + 'AWPMD', + 'BOCS', + 'BODY', + 'BPM', + 'BROWNIAN', + 'CG-DNA', + 'CG-SPICA', + 'CLASS2', + 'COLLOID', + 'COLVARS', + 'COMPRESS', + 'CORESHELL', + 'DIELECTRIC', + 'DIFFRACTION', + 'DIPOLE', + 'DPD-BASIC', + 'DPD-MESO', + 'DPD-REACT', + 'DPD-SMOOTH', + 'DRUDE', + 'EFF', + 'ELECTRODE', + 'EXTRA-COMPUTE', + 'EXTRA-DUMP', + 'EXTRA-FIX', + 'EXTRA-MOLECULE', + 'EXTRA-PAIR', + 'FEP', + 'GRANULAR', + 'H5MD', + 'INTERLAYER', + 'KIM', + 'KSPACE', + 'LATBOLTZ', + 'LEPTON', + 'MACHDYN', + 'MANIFOLD', + 'MANYBODY', + 'MC', + 'MDI', + 'MEAM', + 'MGPT', + 'MISC', + 'ML-IAP', + 'ML-PACE', + 'ML-POD', + 'ML-RANN', + 'ML-SNAP', + 'MOFFF', + 'MOLECULE', + 'MOLFILE', + 'MPIIO', + 'NETCDF', + 'OPT', + 'ORIENT', + 'PERI', + 'PHONON', + 'PLUGIN', + 'PLUMED', + 'POEMS', + 'PTM', + 'PYTHON', + 'QEQ', + 'QTB', + 'REACTION', + 'REAXFF', + 'REPLICA', + 'RIGID', + 'SCAFACOS', + 'SHOCK', + 'SMTBQ', + 'SPH', + 'SPIN', + 'SRD', + 'TALLY', + 'UEF', + 'VORONOI', + 'VTK', + 'YAFF', +] + +# Excluded packages due to requiring additional (non-trivial) deps +# - ADIOS +# - LATTE +# - MESONT (requires very large files downloaded during build) +# - ML-HDNNP (requires N2P2) +# - ML-QUIP +# - MSCG +# - QMMM (setup seems complex) + +moduleclass = 'chem' diff --git a/easybuild/easyconfigs/m/MDI/MDI-1.4.29-iompi-2023b.eb b/easybuild/easyconfigs/m/MDI/MDI-1.4.29-iompi-2023b.eb new file mode 100644 index 000000000000..c4143db66701 --- /dev/null +++ b/easybuild/easyconfigs/m/MDI/MDI-1.4.29-iompi-2023b.eb @@ -0,0 +1,54 @@ +# MDI package for LAMMPS +# Author: J. Saßmannshausen (Imperial College London) + +easyblock = 'CMakeMake' + +name = 'MDI' +version = '1.4.29' + +homepage = 'https://github.com/MolSSI-MDI/MDI_Library' +description = """The MolSSI Driver Interface (MDI) project provides a +standardized API for fast, on-the-fly communication between computational +chemistry codes. This greatly simplifies the process of implementing +methods that require the cooperation of multiple software packages and +enables developers to write a single implementation that works across +many different codes. The API is sufficiently general to support a wide +variety of techniques, including QM/MM, ab initio MD, machine learning, +advanced sampling, and path integral MD, while also being straightforwardly +extensible. Communication between codes is handled by the MDI Library, which +enables tight coupling between codes using either the MPI or TCP/IP methods. +""" + +toolchain = {'name': 'iompi', 'version': '2023b'} + +source_urls = ['https://github.com/MolSSI-%(name)s/MDI_Library/archive'] +sources = ['v%(version)s.tar.gz'] +checksums = ['6fb9ab2cf01c1a88a183bb481313f3131f0afd041ddea7aeacabe857fbdcb6ad'] + +builddependencies = [ + ('CMake', '3.27.6'), +] +dependencies = [ + ('Python', '3.11.5'), +] + +# perform iterative build to get both static and shared libraries +local_common_configopts = '-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DPython_EXECUTABLE=$EBROOTPYTHON/bin/python ' +configopts = [ + local_common_configopts + ' -Dlibtype=STATIC', + local_common_configopts + ' -DBUILD_SHARED_LIBS=ON', +] + +modextrapaths = { + 'LD_LIBRARY_PATH': 'lib/mdi', + 'LIBRARY_PATH': 'lib/mdi', +} + +sanity_check_paths = { + 'files': ['lib/mdi/libmdi.a', 'lib/mdi/libmdi.%s' % SHLIB_EXT], + 'dirs': ['include', 'share'], +} + +bin_lib_subdirs = ['lib/mdi'] + +moduleclass = 'chem' diff --git a/easybuild/easyconfigs/n/netCDF/netCDF-4.9.2-iompi-2023b.eb b/easybuild/easyconfigs/n/netCDF/netCDF-4.9.2-iompi-2023b.eb new file mode 100644 index 000000000000..cb7ad9d52335 --- /dev/null +++ b/easybuild/easyconfigs/n/netCDF/netCDF-4.9.2-iompi-2023b.eb @@ -0,0 +1,50 @@ +name = 'netCDF' +version = '4.9.2' + +homepage = 'https://www.unidata.ucar.edu/software/netcdf/' +description = """NetCDF (network Common Data Form) is a set of software libraries + and machine-independent data formats that support the creation, access, and sharing of array-oriented + scientific data.""" + +toolchain = {'name': 'iompi', 'version': '2023b'} +toolchainopts = {'pic': True, 'usempi': True} + +source_urls = ['https://github.com/Unidata/%(namelower)s-c/archive/'] +sources = ['v%(version)s.tar.gz'] +patches = ['%(name)s-%(version_major_minor)s.0_skip-nasa-test.patch'] +checksums = [ + {'v4.9.2.tar.gz': 'bc104d101278c68b303359b3dc4192f81592ae8640f1aee486921138f7f88cb7'}, + {'%(name)s-%(version_major_minor)s.0_skip-nasa-test.patch': '19d99e03c048b037dc01f03f5b8ddc910ebaceb076d0f050540d348f26dfcd2a'}, +] + +builddependencies = [ + ('Autotools', '20220317'), + ('CMake', '3.27.6'), + ('Doxygen', '1.9.8'), +] +dependencies = [ + ('HDF5', '1.14.3'), + ('cURL', '8.3.0'), + ('Szip', '2.1.1'), + ('zstd', '1.5.5'), + ('bzip2', '1.0.8'), + ('libxml2', '2.11.5'), +] + +# disable Szip, zlib parallel I/O tests, since these can hang on some systems, e.g. generoso +# see: https://github.com/easybuilders/easybuild-easyconfigs/pull/16834 +# and https://github.com/easybuilders/easybuild-easyconfigs/pull/17107#issuecomment-1432947172 +# and https://github.com/easybuilders/easybuild-easyconfigs/pull/18523#issuecomment-1675313158 +preconfigopts = """sed -i -e 's|@MPIEXEC@ -n 16 ./tst_parallel3|echo "skipped by EasyBuild"|g' -e 's|@MPIEXEC@ -n 4 ./tst_parallel5|echo "skipped by EasyBuild"|g' -e 's|@MPIEXEC@ -n 4 ./tst_parallel_zlib|echo "skipped by EasyBuild"|g' -e 's|@MPIEXEC@ -n 4 ./tst_parallel_compress|echo "skipped by EasyBuild"|g' %(builddir)s/%(namelower)s-c-%(version)s/nc_test4/run_par_test.sh.in &&""" +# make sure both static and shared libs are built +# and disable "remote" tests that access a unreliable external test server over internet +configopts = [ + "-DENABLE_DAP_REMOTE_TESTS=OFF -DBUILD_SHARED_LIBS=OFF", + "-DENABLE_DAP_REMOTE_TESTS=OFF -DBUILD_SHARED_LIBS=ON", +] + +# some tests try to start 16 MPI ranks, so we need to allow oversubscription to avoid failing tests +pretestopts = "OMPI_MCA_rmaps_base_oversubscribe=1 " +runtest = 'test' + +moduleclass = 'data' diff --git a/easybuild/easyconfigs/p/PLUMED/PLUMED-2.9.2-iomkl-2023b.eb b/easybuild/easyconfigs/p/PLUMED/PLUMED-2.9.2-iomkl-2023b.eb new file mode 100644 index 000000000000..423a199bc59a --- /dev/null +++ b/easybuild/easyconfigs/p/PLUMED/PLUMED-2.9.2-iomkl-2023b.eb @@ -0,0 +1,54 @@ +easyblock = 'ConfigureMake' + +name = 'PLUMED' +version = '2.9.2' + +homepage = 'https://www.plumed.org' +description = """PLUMED is an open source library for free energy calculations in molecular systems which + works together with some of the most popular molecular dynamics engines. Free energy calculations can be + performed as a function of many order parameters with a particular focus on biological problems, using + state of the art methods such as metadynamics, umbrella sampling and Jarzynski-equation based steered MD. + The software, written in C++, can be easily interfaced with both fortran and C/C++ codes. +""" + +toolchain = {'name': 'iomkl', 'version': '2023b'} +toolchainopts = {'usempi': 'True'} + +source_urls = ['https://github.com/%(namelower)s/plumed2/releases/download/v%(version)s/'] +sources = [SOURCE_TGZ] +checksums = ['6fc23fe31074ad6b7a0eb9e2441fce5b3d92514d0d87206594c59c75e4c83d6e'] + +builddependencies = [ + ('xxd', '9.1.0307'), +] +dependencies = [ + ('zlib', '1.2.13'), + ('GSL', '2.7'), + ('Python', '3.11.5'), + ('SciPy-bundle', '2023.12'), + ('Boost', '1.83.0'), +] + +preconfigopts = 'env FC=$MPIF90 LIBS="$LIBLAPACK $LIBS" ' +configopts = '--exec-prefix=%(installdir)s --enable-gsl --enable-modules=all --enable-python ' +configopts += '--enable-boost_graph --enable-boost_serialization ' +prebuildopts = 'source sourceme.sh && ' + +# install path for PLUMED libraries must be included in $LD_LIBRARY_PATH when Python bindings get built/installed +preinstallopts = 'LD_LIBRARY_PATH="%(installdir)s/lib:$LD_LIBRARY_PATH" ' + + +sanity_check_paths = { + 'files': ['bin/plumed', 'lib/libplumedKernel.%s' % SHLIB_EXT, 'lib/libplumed.%s' % SHLIB_EXT], + 'dirs': [], +} + +sanity_check_commands = ["python -c 'import plumed'"] + +modextrapaths = { + 'PLUMED_KERNEL': 'lib/libplumedKernel.%s' % SHLIB_EXT, + 'PLUMED_ROOT': 'lib/plumed', + 'PYTHONPATH': 'lib/plumed/python', +} + +moduleclass = 'chem' diff --git a/easybuild/easyconfigs/v/VTK/VTK-9.3.0-iomkl-2023b.eb b/easybuild/easyconfigs/v/VTK/VTK-9.3.0-iomkl-2023b.eb new file mode 100644 index 000000000000..538de6b3db4e --- /dev/null +++ b/easybuild/easyconfigs/v/VTK/VTK-9.3.0-iomkl-2023b.eb @@ -0,0 +1,94 @@ +# # +# Authors:: +# * Fotis Georgatos +# * Robert Mijakovic +# # + +easyblock = 'CMakeNinja' + +name = 'VTK' +version = '9.3.0' + +homepage = 'https://www.vtk.org' +description = """The Visualization Toolkit (VTK) is an open-source, freely available software system for + 3D computer graphics, image processing and visualization. VTK consists of a C++ class library and several + interpreted interface layers including Tcl/Tk, Java, and Python. VTK supports a wide variety of visualization + algorithms including: scalar, vector, tensor, texture, and volumetric methods; and advanced modeling techniques + such as: implicit modeling, polygon reduction, mesh smoothing, cutting, contouring, and Delaunay triangulation.""" + +toolchain = {'name': 'iomkl', 'version': '2023b'} +toolchainopts = {'usempi': True} + +source_urls = ['https://www.%(namelower)s.org/files/release/%(version_major_minor)s'] +sources = [ + SOURCE_TAR_GZ, + '%(name)sData-%(version)s.tar.gz', +] +patches = [('%(namelower)s-version.egg-info', '.')] +checksums = [ + {SOURCE_TAR_GZ: 'fdc7b9295225b34e4fdddc49cd06e66e94260cb00efee456e0f66568c9681be9'}, + {'VTKData-%(version)s.tar.gz': 'f82142dd327e995c9536c1003e1370bb4092c96f23edb8119d16d2411ef35dc3'}, + {'%(namelower)s-version.egg-info': '787b82415ae7a4a1f815b4db0e25f7abc809a05fc85d7d219627f3a7e5d3867b'}, +] + +builddependencies = [ + ('CMake', '3.27.6'), + ('Ninja', '1.11.1'), +] + +dependencies = [ + ('Python', '3.11.5'), + ('SciPy-bundle', '2023.12'), + ('XZ', '5.4.4'), + ('libGLU', '9.0.3'), + ('X11', '20231019'), + ('Qt5', '5.15.13'), +] + +separate_build_dir = True + +# OpenGL +configopts = "-DOPENGL_glu_LIBRARY=$EBROOTLIBGLU/lib/libGLU.%s " % SHLIB_EXT +configopts += "-DOPENGL_gl_LIBRARY=$EBROOTMESA/lib/libGL.%s " % SHLIB_EXT +configopts += "-DOPENGL_INCLUDE_DIR=$EBROOTMESA/include " +# Python +configopts += "-DVTK_WRAP_PYTHON=ON -DVTK_PYTHON_VERSION=3 -DVTK_PYTHON_OPTIONAL_LINK=OFF " +configopts += "-DPython3_EXECUTABLE=$EBROOTPYTHON/bin/python3 " +configopts += "-DPython3_INCLUDE_DIR=$EBROOTPYTHON/include/python%(pyshortver)s " +configopts += "-DPython3_LIBRARY=$EBROOTPYTHON/lib/libpython%(pyshortver)s.so " +# Other +configopts += "-DVTK_USE_MPI=ON " +configopts += "-DVTK_QT_VERSION=5 " +configopts += "-DQt5_DIR=$EBROOTQT5 " +configopts += "-DVTK_MODULE_ENABLE_VTK_GuiSupportQt=YES " +configopts += "-DVTK_MODULE_ENABLE_VTK_ViewsQt=YES" + +preinstallopts = "export PYTHONPATH=%(installdir)s/lib/python%(pyshortver)s/site-packages:$PYTHONPATH && " + +# Install a egg-info file so VTK is more python friendly, required for mayavi +local_egg_info_src = '%(builddir)s/VTK-%(version)s/vtk-version.egg-info' +local_egg_info_dest = '%(installdir)s/lib/python%(pyshortver)s/site-packages/vtk-%(version)s.egg-info' +postinstallcmds = [ + 'sed "s/#VTK_VERSION#/%%(version)s/" %s > %s' % (local_egg_info_src, local_egg_info_dest), +] + +local_vtk_exec = ['vtk%s-%%(version_major_minor)s' % x + for x in ['WrapJava', 'ParseJava', 'WrapPythonInit', 'WrapPython', 'WrapHierarchy']] +local_vtk_exec += ['vtkpython'] +local_vtk_libs = ['CommonCore', 'IONetCDF', 'ParallelCore', 'RenderingOpenGL2'] + +sanity_check_paths = { + 'files': ['bin/%s' % x for x in local_vtk_exec] + ['include/vtk-%(version_major_minor)s/vtkMPI.h'] + + ['lib/libvtk%s-%%(version_major_minor)s.%s' % (x, SHLIB_EXT) for x in local_vtk_libs], + 'dirs': ['lib/python%(pyshortver)s/site-packages/', 'include/vtk-%(version_major_minor)s'], +} + +sanity_check_commands = [ + "python -c 'import %(namelower)s'", + "python -c 'import pkg_resources; pkg_resources.get_distribution(\"vtk\")'", + # make sure that VTK Python libraries link to libpython (controlled via DVTK_PYTHON_OPTIONAL_LINK=OFF), + # see https://gitlab.kitware.com/vtk/vtk/-/issues/17881 + "ldd $EBROOTVTK/lib/libvtkPythonContext2D-%%(version_major_minor)s.%s | grep /libpython" % SHLIB_EXT, +] + +moduleclass = 'vis' From 2599a692455ca95a32c1d16d935e3ffa00967489 Mon Sep 17 00:00:00 2001 From: Loris Ercole Date: Wed, 13 Aug 2025 09:39:33 +0200 Subject: [PATCH 02/10] Fix style --- .../h/HDF5/HDF5-1.14.3-iompi-2023b.eb | 17 +++++++------- .../kim-api-2.3.0-intel-compilers-2023.2.1.eb | 6 ++--- ...PS-29Aug2024_update2-iomkl-2023b-kokkos.eb | 6 ++--- .../m/MDI/MDI-1.4.29-iompi-2023b.eb | 1 - .../n/netCDF/netCDF-4.9.2-iompi-2023b.eb | 23 +++++++++++++------ .../p/PLUMED/PLUMED-2.9.2-iomkl-2023b.eb | 4 ++-- .../v/VTK/VTK-9.3.0-iomkl-2023b.eb | 10 ++++---- 7 files changed, 36 insertions(+), 31 deletions(-) diff --git a/easybuild/easyconfigs/h/HDF5/HDF5-1.14.3-iompi-2023b.eb b/easybuild/easyconfigs/h/HDF5/HDF5-1.14.3-iompi-2023b.eb index c8052585a03a..5ee2dc29f58b 100644 --- a/easybuild/easyconfigs/h/HDF5/HDF5-1.14.3-iompi-2023b.eb +++ b/easybuild/easyconfigs/h/HDF5/HDF5-1.14.3-iompi-2023b.eb @@ -10,22 +10,21 @@ description = """HDF5 is a data model, library, and file format for storing and toolchain = {'name': 'iompi', 'version': '2023b'} toolchainopts = {'pic': True, 'usempi': True} -source_urls = ['https://support.hdfgroup.org/ftp/%(name)s/releases/%(namelower)s-%(version_major_minor)s/%(namelower)s-%(version)s/src'] +source_urls = ['https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-%(version_major_minor)s/hdf5-%(version)s/src'] sources = [SOURCELOWER_TAR_GZ] -patches = ['%(name)s-%(version_major_minor)s.3_suppress_fp_exceptions.patch'] +patches = ['HDF5-1.14.3_suppress_fp_exceptions.patch'] checksums = [ - {SOURCELOWER_TAR_GZ: '09cdb287aa7a89148c1638dd20891fdbae08102cf433ef128fd345338aa237c7'}, - {'%(name)s-%(version_major_minor)s.3_suppress_fp_exceptions.patch': 'bf33e579c93a16043c54b266321bbe95e4a8797f7fe6d096a13ce905ed2ffde7'}, + {'hdf5-1.14.3.tar.gz': '09cdb287aa7a89148c1638dd20891fdbae08102cf433ef128fd345338aa237c7'}, + {'HDF5-1.14.3_suppress_fp_exceptions.patch': 'bf33e579c93a16043c54b266321bbe95e4a8797f7fe6d096a13ce905ed2ffde7'}, ] +# replace src include path with installation dir for $H5BLD_CPPFLAGS +_regex = 's, -I[^[:space:]]+H5FDsubfiling , -I%(installdir)s/include ,g' +postinstallcmds = ['sed -i -r "%s" %%(installdir)s/bin/%s' % (_regex, x) for x in ['h5c++', 'h5pcc']] + dependencies = [ ('zlib', '1.2.13'), ('Szip', '2.1.1'), ] -postinstallcmds = [ - 'sed -i -r "s, -I[^[:space:]]+H5FDsubfiling , -I%(installdir)s/include ,g" %(installdir)s/bin/h5c++', - 'sed -i -r "s, -I[^[:space:]]+H5FDsubfiling , -I%(installdir)s/include ,g" %(installdir)s/bin/h5pcc', -] - moduleclass = 'data' diff --git a/easybuild/easyconfigs/k/kim-api/kim-api-2.3.0-intel-compilers-2023.2.1.eb b/easybuild/easyconfigs/k/kim-api/kim-api-2.3.0-intel-compilers-2023.2.1.eb index c6a7e6365a41..a0ee81b682cd 100644 --- a/easybuild/easyconfigs/k/kim-api/kim-api-2.3.0-intel-compilers-2023.2.1.eb +++ b/easybuild/easyconfigs/k/kim-api/kim-api-2.3.0-intel-compilers-2023.2.1.eb @@ -20,8 +20,8 @@ to install them all. toolchain = {'name': 'intel-compilers', 'version': '2023.2.1'} -source_urls = ['https://s3.openkim.org/%(name)s/'] -sources = [SOURCE_TXZ] +source_urls = ['https://s3.openkim.org/kim-api/'] +sources = ['%(name)s-%(version)s.txz'] checksums = ['93673bb8fbc0625791f2ee67915d1672793366d10cabc63e373196862c14f991'] dependencies = [ @@ -29,8 +29,6 @@ dependencies = [ ] maxparallel = 1 -separate_build_dir = True - modextravars = { 'KIM_API_CMAKE_PREFIX_DIR': '%(installdir)s/lib64' } diff --git a/easybuild/easyconfigs/l/LAMMPS/LAMMPS-29Aug2024_update2-iomkl-2023b-kokkos.eb b/easybuild/easyconfigs/l/LAMMPS/LAMMPS-29Aug2024_update2-iomkl-2023b-kokkos.eb index 9a36c22bb171..b8282d1ab78a 100644 --- a/easybuild/easyconfigs/l/LAMMPS/LAMMPS-29Aug2024_update2-iomkl-2023b-kokkos.eb +++ b/easybuild/easyconfigs/l/LAMMPS/LAMMPS-29Aug2024_update2-iomkl-2023b-kokkos.eb @@ -67,9 +67,9 @@ if ARCH == 'x86_64': # binutils/2.40-GCCcore-13.2.0/bin/ld: cannot find -loopopt: No such file or directory # icpx: error: linker command failed with exit code 1 (use -v to see invocation) # make[2]: *** [CMakeFiles/lammps.dir/build.make:26524: liblammps.so.0] Error 1 - # because it adds the following flags: '-lwp -loopopt' that are wrongly interpreted as libs by the Intel compiler. - # They should be prepend with '-mllvm -lwp -mllvm -loopopt' - # https://community.intel.com/t5/Intel-Fortran-Compiler/ifx-2021-1-beta04-HPC-Toolkit-build-error-with-loopopt/td-p/1184181 + # because it adds the following flags: '-lwp -loopopt' that are wrongly interpreted as libs by the Intel + # compiler. They should be prepend with '-mllvm -lwp -mllvm -loopopt' + # https://community.intel.com/t5/Intel-Fortran-Compiler/ifx-2021-1-beta04-HPC-Toolkit-build-error-with-loopopt/td-p/1184181 # noqa: E501 # https://www.intel.com/content/www/us/en/developer/articles/release-notes/fortran-compiler/2025.html ] diff --git a/easybuild/easyconfigs/m/MDI/MDI-1.4.29-iompi-2023b.eb b/easybuild/easyconfigs/m/MDI/MDI-1.4.29-iompi-2023b.eb index c4143db66701..1d06cfb7d10f 100644 --- a/easybuild/easyconfigs/m/MDI/MDI-1.4.29-iompi-2023b.eb +++ b/easybuild/easyconfigs/m/MDI/MDI-1.4.29-iompi-2023b.eb @@ -2,7 +2,6 @@ # Author: J. Saßmannshausen (Imperial College London) easyblock = 'CMakeMake' - name = 'MDI' version = '1.4.29' diff --git a/easybuild/easyconfigs/n/netCDF/netCDF-4.9.2-iompi-2023b.eb b/easybuild/easyconfigs/n/netCDF/netCDF-4.9.2-iompi-2023b.eb index cb7ad9d52335..3b018b035f2f 100644 --- a/easybuild/easyconfigs/n/netCDF/netCDF-4.9.2-iompi-2023b.eb +++ b/easybuild/easyconfigs/n/netCDF/netCDF-4.9.2-iompi-2023b.eb @@ -9,12 +9,14 @@ description = """NetCDF (network Common Data Form) is a set of software librarie toolchain = {'name': 'iompi', 'version': '2023b'} toolchainopts = {'pic': True, 'usempi': True} -source_urls = ['https://github.com/Unidata/%(namelower)s-c/archive/'] +source_urls = ['https://github.com/Unidata/netcdf-c/archive/'] sources = ['v%(version)s.tar.gz'] -patches = ['%(name)s-%(version_major_minor)s.0_skip-nasa-test.patch'] +patches = [ + 'netCDF-4.9.0_skip-nasa-test.patch', +] checksums = [ {'v4.9.2.tar.gz': 'bc104d101278c68b303359b3dc4192f81592ae8640f1aee486921138f7f88cb7'}, - {'%(name)s-%(version_major_minor)s.0_skip-nasa-test.patch': '19d99e03c048b037dc01f03f5b8ddc910ebaceb076d0f050540d348f26dfcd2a'}, + {'netCDF-4.9.0_skip-nasa-test.patch': '19d99e03c048b037dc01f03f5b8ddc910ebaceb076d0f050540d348f26dfcd2a'}, ] builddependencies = [ @@ -22,6 +24,7 @@ builddependencies = [ ('CMake', '3.27.6'), ('Doxygen', '1.9.8'), ] + dependencies = [ ('HDF5', '1.14.3'), ('cURL', '8.3.0'), @@ -32,10 +35,15 @@ dependencies = [ ] # disable Szip, zlib parallel I/O tests, since these can hang on some systems, e.g. generoso -# see: https://github.com/easybuilders/easybuild-easyconfigs/pull/16834 -# and https://github.com/easybuilders/easybuild-easyconfigs/pull/17107#issuecomment-1432947172 -# and https://github.com/easybuilders/easybuild-easyconfigs/pull/18523#issuecomment-1675313158 -preconfigopts = """sed -i -e 's|@MPIEXEC@ -n 16 ./tst_parallel3|echo "skipped by EasyBuild"|g' -e 's|@MPIEXEC@ -n 4 ./tst_parallel5|echo "skipped by EasyBuild"|g' -e 's|@MPIEXEC@ -n 4 ./tst_parallel_zlib|echo "skipped by EasyBuild"|g' -e 's|@MPIEXEC@ -n 4 ./tst_parallel_compress|echo "skipped by EasyBuild"|g' %(builddir)s/%(namelower)s-c-%(version)s/nc_test4/run_par_test.sh.in &&""" +# see: https://github.com/easybuilders/easybuild-easyconfigs/pull/16834 +# and https://github.com/easybuilders/easybuild-easyconfigs/pull/17107#issuecomment-1432947172 +# and https://github.com/easybuilders/easybuild-easyconfigs/pull/18523#issuecomment-1675313158 +preconfigopts = ("sed -i -e 's|@MPIEXEC@ -n 16 ./tst_parallel3|echo \"skipped by EasyBuild\"|g'" + " -e 's|@MPIEXEC@ -n 4 ./tst_parallel5|echo \"skipped by EasyBuild\"|g'" + " -e 's|@MPIEXEC@ -n 4 ./tst_parallel_zlib|echo \"skipped by EasyBuild\"|g'" + " -e 's|@MPIEXEC@ -n 4 ./tst_parallel_compress|echo \"skipped by EasyBuild\"|g'" + " %(builddir)s/%(namelower)s-c-%(version)s/nc_test4/run_par_test.sh.in &&") + # make sure both static and shared libs are built # and disable "remote" tests that access a unreliable external test server over internet configopts = [ @@ -45,6 +53,7 @@ configopts = [ # some tests try to start 16 MPI ranks, so we need to allow oversubscription to avoid failing tests pretestopts = "OMPI_MCA_rmaps_base_oversubscribe=1 " + runtest = 'test' moduleclass = 'data' diff --git a/easybuild/easyconfigs/p/PLUMED/PLUMED-2.9.2-iomkl-2023b.eb b/easybuild/easyconfigs/p/PLUMED/PLUMED-2.9.2-iomkl-2023b.eb index 423a199bc59a..9ec4eb0bfbe5 100644 --- a/easybuild/easyconfigs/p/PLUMED/PLUMED-2.9.2-iomkl-2023b.eb +++ b/easybuild/easyconfigs/p/PLUMED/PLUMED-2.9.2-iomkl-2023b.eb @@ -14,13 +14,14 @@ description = """PLUMED is an open source library for free energy calculations i toolchain = {'name': 'iomkl', 'version': '2023b'} toolchainopts = {'usempi': 'True'} -source_urls = ['https://github.com/%(namelower)s/plumed2/releases/download/v%(version)s/'] +source_urls = ['https://github.com/plumed/plumed2/releases/download/v%(version)s/'] sources = [SOURCE_TGZ] checksums = ['6fc23fe31074ad6b7a0eb9e2441fce5b3d92514d0d87206594c59c75e4c83d6e'] builddependencies = [ ('xxd', '9.1.0307'), ] + dependencies = [ ('zlib', '1.2.13'), ('GSL', '2.7'), @@ -37,7 +38,6 @@ prebuildopts = 'source sourceme.sh && ' # install path for PLUMED libraries must be included in $LD_LIBRARY_PATH when Python bindings get built/installed preinstallopts = 'LD_LIBRARY_PATH="%(installdir)s/lib:$LD_LIBRARY_PATH" ' - sanity_check_paths = { 'files': ['bin/plumed', 'lib/libplumedKernel.%s' % SHLIB_EXT, 'lib/libplumed.%s' % SHLIB_EXT], 'dirs': [], diff --git a/easybuild/easyconfigs/v/VTK/VTK-9.3.0-iomkl-2023b.eb b/easybuild/easyconfigs/v/VTK/VTK-9.3.0-iomkl-2023b.eb index 538de6b3db4e..9339a566bcb8 100644 --- a/easybuild/easyconfigs/v/VTK/VTK-9.3.0-iomkl-2023b.eb +++ b/easybuild/easyconfigs/v/VTK/VTK-9.3.0-iomkl-2023b.eb @@ -19,16 +19,16 @@ description = """The Visualization Toolkit (VTK) is an open-source, freely avail toolchain = {'name': 'iomkl', 'version': '2023b'} toolchainopts = {'usempi': True} -source_urls = ['https://www.%(namelower)s.org/files/release/%(version_major_minor)s'] +source_urls = ['https://www.vtk.org/files/release/%(version_major_minor)s'] sources = [ SOURCE_TAR_GZ, '%(name)sData-%(version)s.tar.gz', ] -patches = [('%(namelower)s-version.egg-info', '.')] +patches = [('vtk-version.egg-info', '.')] checksums = [ - {SOURCE_TAR_GZ: 'fdc7b9295225b34e4fdddc49cd06e66e94260cb00efee456e0f66568c9681be9'}, - {'VTKData-%(version)s.tar.gz': 'f82142dd327e995c9536c1003e1370bb4092c96f23edb8119d16d2411ef35dc3'}, - {'%(namelower)s-version.egg-info': '787b82415ae7a4a1f815b4db0e25f7abc809a05fc85d7d219627f3a7e5d3867b'}, + {'VTK-9.3.0.tar.gz': 'fdc7b9295225b34e4fdddc49cd06e66e94260cb00efee456e0f66568c9681be9'}, + {'VTKData-9.3.0.tar.gz': 'f82142dd327e995c9536c1003e1370bb4092c96f23edb8119d16d2411ef35dc3'}, + {'vtk-version.egg-info': '787b82415ae7a4a1f815b4db0e25f7abc809a05fc85d7d219627f3a7e5d3867b'}, ] builddependencies = [ From 6b141a850f95e3704cc8f3ef16bd1bb2549b8c70 Mon Sep 17 00:00:00 2001 From: Loris Ercole Date: Wed, 13 Aug 2025 14:31:22 +0200 Subject: [PATCH 03/10] Patch ScaFaCoS for Intel tc and add it to LAMMPS --- ...PS-29Aug2024_update2-iomkl-2023b-kokkos.eb | 11 +---- .../s/ScaFaCoS/ScaFaCoS-1.0.4-iomkl-2023b.eb | 45 +++++++++++++++++++ .../ax_cxx_library_ldflags_intel_fix.patch | 23 ++++++++++ 3 files changed, 69 insertions(+), 10 deletions(-) create mode 100644 easybuild/easyconfigs/s/ScaFaCoS/ScaFaCoS-1.0.4-iomkl-2023b.eb create mode 100644 easybuild/easyconfigs/s/ScaFaCoS/ax_cxx_library_ldflags_intel_fix.patch diff --git a/easybuild/easyconfigs/l/LAMMPS/LAMMPS-29Aug2024_update2-iomkl-2023b-kokkos.eb b/easybuild/easyconfigs/l/LAMMPS/LAMMPS-29Aug2024_update2-iomkl-2023b-kokkos.eb index b8282d1ab78a..d8e4594dc0f8 100644 --- a/easybuild/easyconfigs/l/LAMMPS/LAMMPS-29Aug2024_update2-iomkl-2023b-kokkos.eb +++ b/easybuild/easyconfigs/l/LAMMPS/LAMMPS-29Aug2024_update2-iomkl-2023b-kokkos.eb @@ -61,16 +61,7 @@ if ARCH == 'x86_64': # TBB and ScaFaCos are an optional dependency when building on Intel arch dependencies += [ ('tbb', '2021.13.0'), - # ('ScaFaCoS', '1.0.4'), - # ScaFaCoS causes a link error: - # binutils/2.40-GCCcore-13.2.0/bin/ld: cannot find -lwp: No such file or directory - # binutils/2.40-GCCcore-13.2.0/bin/ld: cannot find -loopopt: No such file or directory - # icpx: error: linker command failed with exit code 1 (use -v to see invocation) - # make[2]: *** [CMakeFiles/lammps.dir/build.make:26524: liblammps.so.0] Error 1 - # because it adds the following flags: '-lwp -loopopt' that are wrongly interpreted as libs by the Intel - # compiler. They should be prepend with '-mllvm -lwp -mllvm -loopopt' - # https://community.intel.com/t5/Intel-Fortran-Compiler/ifx-2021-1-beta04-HPC-Toolkit-build-error-with-loopopt/td-p/1184181 # noqa: E501 - # https://www.intel.com/content/www/us/en/developer/articles/release-notes/fortran-compiler/2025.html + ('ScaFaCoS', '1.0.4'), ] # To use additional custom configuration options, use the 'configopts' easyconfig parameter diff --git a/easybuild/easyconfigs/s/ScaFaCoS/ScaFaCoS-1.0.4-iomkl-2023b.eb b/easybuild/easyconfigs/s/ScaFaCoS/ScaFaCoS-1.0.4-iomkl-2023b.eb new file mode 100644 index 000000000000..4c54cec16f4b --- /dev/null +++ b/easybuild/easyconfigs/s/ScaFaCoS/ScaFaCoS-1.0.4-iomkl-2023b.eb @@ -0,0 +1,45 @@ +easyblock = 'ConfigureMake' + +name = 'ScaFaCoS' +version = '1.0.4' + +homepage = 'http://www.scafacos.de/' +description = "ScaFaCoS is a library of scalable fast coulomb solvers." + +toolchain = {'name': 'iomkl', 'version': '2023b'} +toolchainopts = {'usempi': True} + +source_urls = ['https://github.com/scafacos/scafacos/releases/download/v%(version)s'] +sources = [SOURCELOWER_TAR_GZ] +patches = ['ax_cxx_library_ldflags_intel_fix.patch'] +checksums = [ + {'scafacos-1.0.4.tar.gz': '6634c4202e825e771d1dd75bbe9cac5cee41136c87653fde98fbd634681c1be6'}, + {'ax_cxx_library_ldflags_intel_fix.patch': 'f5be905035c41838a4e570844244952d9f40a025806ee881582991491cfb2600'}, +] + +builddependencies = [ + ('Autotools', '20220317'), + ('pkgconf', '2.0.3'), +] + +dependencies = [ + ('GMP', '6.3.0'), + ('GSL', '2.7'), +] + +preconfigopts = 'unset F77 && mkdir ./lib/fmm/armci/compat && autoreconf -fiv && ' + +configopts = 'FCFLAGS="-fallow-argument-mismatch $FCFLAGS" ' +configopts += '--enable-shared --enable-static --disable-doc ' +# tell it where to find provided FFTW +configopts += '--without-internal-fftw --with-fftw3-includedir=$EBROOTFFTW/include --with-fftw3-libdir=$EBROOTFFTW/lib ' +# only include the solvers supported for LAMMPS +# (for p2nfft we need an additonal dependency) +configopts += '--enable-fcs-solvers=direct,ewald,fmm,p3m ' + +sanity_check_paths = { + 'files': ['lib/libfcs.a', 'include/fcs.h', 'include/fcs_module.mod'], + 'dirs': [], +} + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/s/ScaFaCoS/ax_cxx_library_ldflags_intel_fix.patch b/easybuild/easyconfigs/s/ScaFaCoS/ax_cxx_library_ldflags_intel_fix.patch new file mode 100644 index 000000000000..c48d9a441a3e --- /dev/null +++ b/easybuild/easyconfigs/s/ScaFaCoS/ax_cxx_library_ldflags_intel_fix.patch @@ -0,0 +1,23 @@ +The `AX_CXX_LIBRARY_LDFLAGS` autoconf macro incorrectly identifies some Intel compiler optimization flags as library +dependencies. The macro parses the verbose compiler output looking for patterns starting with `-l`, assuming they are +all library flags. In particular: +- `-lwp` - Actually from `-target-feature -lwp` (disables Light Weight Profiling CPU feature) +- `-loopopt` - Actually from `-mllvm -loopopt` (LLVM loop optimization flag) +This results in these non-existent "libraries" being added to various build configurations. +This patch adds specific filtering for known Intel compiler flags that are commonly misidentified. +--- package/m4/ax_cxx_library_ldflags.m4.orig 2025-08-13 13:30:02.721679032 +0200 ++++ package/m4/ax_cxx_library_ldflags.m4 2025-08-13 13:30:08.579715712 +0200 +@@ -89,6 +89,13 @@ + # Ignore these flags. + -lang* | -lcrt0.o | -lc | -lgcc | -libmil | -LANG:=*) + ;; ++ # Ignore Intel compiler specific flags that look like libraries but aren't. ++ # These flags come from Intel compiler verbose output and are incorrectly ++ # parsed as library flags: ++ # -lwp: disables Light Weight Profiling CPU feature (-target-feature -lwp) ++ # -loopopt: LLVM loop optimization flag (-mllvm -loopopt) ++ -lwp | -loopopt ) ++ ;; + -lcrt1.o | -lcrt2.o |-lcrtbegin.o ) + ;; + -lkernel32) From 4b757b4f5437a927d1f90580209818a55819e49e Mon Sep 17 00:00:00 2001 From: Loris Ercole Date: Wed, 17 Dec 2025 17:52:20 +0100 Subject: [PATCH 04/10] Update easyconfig with latest fixes New patch, checksum, mpi4py dep, and disable tests Tests would require several other dependencies built with intel. --- ...PS-29Aug2024_update2-iomkl-2023b-kokkos.eb | 4 +++- .../m/mpi4py/mpi4py-3.1.5-iompi-2023b.eb | 22 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 easybuild/easyconfigs/m/mpi4py/mpi4py-3.1.5-iompi-2023b.eb diff --git a/easybuild/easyconfigs/l/LAMMPS/LAMMPS-29Aug2024_update2-iomkl-2023b-kokkos.eb b/easybuild/easyconfigs/l/LAMMPS/LAMMPS-29Aug2024_update2-iomkl-2023b-kokkos.eb index d8e4594dc0f8..3e964a8c4e84 100644 --- a/easybuild/easyconfigs/l/LAMMPS/LAMMPS-29Aug2024_update2-iomkl-2023b-kokkos.eb +++ b/easybuild/easyconfigs/l/LAMMPS/LAMMPS-29Aug2024_update2-iomkl-2023b-kokkos.eb @@ -26,7 +26,7 @@ patches = [ checksums = [ {'stable_29Aug2024_update2.tar.gz': 'f8ca3f021a819ced8658055f7750e235c51b4937ddb621cf1bd7bee08e0b6266'}, {'LAMMPS-2Aug2023_install_lammps_python_package_in_eb_software_module.patch': - '723c944b62b9d28427d25e80a7a67049631702d344df49268a6846aa0cd0fe04'}, + '314ab1064af74ddfcf4091dfe9f90fa32cfa4100e8d01fea7b59b019575a7c51'}, ] builddependencies = [ @@ -56,6 +56,7 @@ dependencies = [ ('VTK', '9.3.0'), # We use a custom build of MDI ('MDI', '1.4.29'), + ('mpi4py', '3.1.5'), ] if ARCH == 'x86_64': # TBB and ScaFaCos are an optional dependency when building on Intel arch @@ -179,4 +180,5 @@ general_packages = [ # - MSCG # - QMMM (setup seems complex) +runtest = False moduleclass = 'chem' diff --git a/easybuild/easyconfigs/m/mpi4py/mpi4py-3.1.5-iompi-2023b.eb b/easybuild/easyconfigs/m/mpi4py/mpi4py-3.1.5-iompi-2023b.eb new file mode 100644 index 000000000000..03053d9a0210 --- /dev/null +++ b/easybuild/easyconfigs/m/mpi4py/mpi4py-3.1.5-iompi-2023b.eb @@ -0,0 +1,22 @@ +easyblock = 'PythonBundle' + +name = 'mpi4py' +version = '3.1.5' + +homepage = 'https://github.com/mpi4py/mpi4py' +description = """MPI for Python (mpi4py) provides bindings of the Message Passing Interface (MPI) standard for + the Python programming language, allowing any Python program to exploit multiple processors.""" + +toolchain = {'name': 'iompi', 'version': '2023b'} + +dependencies = [ + ('Python', '3.11.5'), +] + +exts_list = [ + (name, version, { + 'checksums': ['a706e76db9255135c2fb5d1ef54cb4f7b0e4ad9e33cbada7de27626205f2a153'], + }), +] + +moduleclass = 'lib' From da4b73f5d44011f72d5deb0a9fc1aa98e1fb1176 Mon Sep 17 00:00:00 2001 From: Loris Ercole <30901257+lorisercole@users.noreply.github.com> Date: Wed, 7 Jan 2026 11:24:50 +0100 Subject: [PATCH 05/10] Apply suggestions from code review Co-authored-by: Davide Grassano <34096612+Crivella@users.noreply.github.com> --- .../l/LAMMPS/LAMMPS-29Aug2024_update2-iomkl-2023b-kokkos.eb | 2 +- easybuild/easyconfigs/p/PLUMED/PLUMED-2.9.2-iomkl-2023b.eb | 4 ++-- easybuild/easyconfigs/v/VTK/VTK-9.3.0-iomkl-2023b.eb | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/easybuild/easyconfigs/l/LAMMPS/LAMMPS-29Aug2024_update2-iomkl-2023b-kokkos.eb b/easybuild/easyconfigs/l/LAMMPS/LAMMPS-29Aug2024_update2-iomkl-2023b-kokkos.eb index 3e964a8c4e84..e1c7dca50d9c 100644 --- a/easybuild/easyconfigs/l/LAMMPS/LAMMPS-29Aug2024_update2-iomkl-2023b-kokkos.eb +++ b/easybuild/easyconfigs/l/LAMMPS/LAMMPS-29Aug2024_update2-iomkl-2023b-kokkos.eb @@ -51,7 +51,7 @@ dependencies = [ ('kim-api', '2.3.0'), ('Eigen', '3.4.0'), ('PLUMED', '2.9.2'), - ('SciPy-bundle', '2023.12'), + ('SciPy-bundle', '2023.11'), # VTK package is auto-disabled if this dep is not available ('VTK', '9.3.0'), # We use a custom build of MDI diff --git a/easybuild/easyconfigs/p/PLUMED/PLUMED-2.9.2-iomkl-2023b.eb b/easybuild/easyconfigs/p/PLUMED/PLUMED-2.9.2-iomkl-2023b.eb index 9ec4eb0bfbe5..4e6251deef77 100644 --- a/easybuild/easyconfigs/p/PLUMED/PLUMED-2.9.2-iomkl-2023b.eb +++ b/easybuild/easyconfigs/p/PLUMED/PLUMED-2.9.2-iomkl-2023b.eb @@ -26,7 +26,7 @@ dependencies = [ ('zlib', '1.2.13'), ('GSL', '2.7'), ('Python', '3.11.5'), - ('SciPy-bundle', '2023.12'), + ('SciPy-bundle', '2023.11'), ('Boost', '1.83.0'), ] @@ -43,7 +43,7 @@ sanity_check_paths = { 'dirs': [], } -sanity_check_commands = ["python -c 'import plumed'"] +sanity_check_commands = ["python -s -c 'import plumed'"] modextrapaths = { 'PLUMED_KERNEL': 'lib/libplumedKernel.%s' % SHLIB_EXT, diff --git a/easybuild/easyconfigs/v/VTK/VTK-9.3.0-iomkl-2023b.eb b/easybuild/easyconfigs/v/VTK/VTK-9.3.0-iomkl-2023b.eb index 9339a566bcb8..2f9f8c930d15 100644 --- a/easybuild/easyconfigs/v/VTK/VTK-9.3.0-iomkl-2023b.eb +++ b/easybuild/easyconfigs/v/VTK/VTK-9.3.0-iomkl-2023b.eb @@ -38,7 +38,7 @@ builddependencies = [ dependencies = [ ('Python', '3.11.5'), - ('SciPy-bundle', '2023.12'), + ('SciPy-bundle', '2023.11'), ('XZ', '5.4.4'), ('libGLU', '9.0.3'), ('X11', '20231019'), @@ -84,8 +84,8 @@ sanity_check_paths = { } sanity_check_commands = [ - "python -c 'import %(namelower)s'", - "python -c 'import pkg_resources; pkg_resources.get_distribution(\"vtk\")'", + "python -s -c 'import %(namelower)s'", + "python -s -c 'import pkg_resources; pkg_resources.get_distribution(\"vtk\")'", # make sure that VTK Python libraries link to libpython (controlled via DVTK_PYTHON_OPTIONAL_LINK=OFF), # see https://gitlab.kitware.com/vtk/vtk/-/issues/17881 "ldd $EBROOTVTK/lib/libvtkPythonContext2D-%%(version_major_minor)s.%s | grep /libpython" % SHLIB_EXT, From 9ea6bfdc4f90aebe2533316f79dd8b34b1240d41 Mon Sep 17 00:00:00 2001 From: Loris Ercole <30901257+lorisercole@users.noreply.github.com> Date: Wed, 7 Jan 2026 14:18:48 +0100 Subject: [PATCH 06/10] Delete patch --- .../ax_cxx_library_ldflags_intel_fix.patch | 23 ------------------- 1 file changed, 23 deletions(-) delete mode 100644 easybuild/easyconfigs/s/ScaFaCoS/ax_cxx_library_ldflags_intel_fix.patch diff --git a/easybuild/easyconfigs/s/ScaFaCoS/ax_cxx_library_ldflags_intel_fix.patch b/easybuild/easyconfigs/s/ScaFaCoS/ax_cxx_library_ldflags_intel_fix.patch deleted file mode 100644 index c48d9a441a3e..000000000000 --- a/easybuild/easyconfigs/s/ScaFaCoS/ax_cxx_library_ldflags_intel_fix.patch +++ /dev/null @@ -1,23 +0,0 @@ -The `AX_CXX_LIBRARY_LDFLAGS` autoconf macro incorrectly identifies some Intel compiler optimization flags as library -dependencies. The macro parses the verbose compiler output looking for patterns starting with `-l`, assuming they are -all library flags. In particular: -- `-lwp` - Actually from `-target-feature -lwp` (disables Light Weight Profiling CPU feature) -- `-loopopt` - Actually from `-mllvm -loopopt` (LLVM loop optimization flag) -This results in these non-existent "libraries" being added to various build configurations. -This patch adds specific filtering for known Intel compiler flags that are commonly misidentified. ---- package/m4/ax_cxx_library_ldflags.m4.orig 2025-08-13 13:30:02.721679032 +0200 -+++ package/m4/ax_cxx_library_ldflags.m4 2025-08-13 13:30:08.579715712 +0200 -@@ -89,6 +89,13 @@ - # Ignore these flags. - -lang* | -lcrt0.o | -lc | -lgcc | -libmil | -LANG:=*) - ;; -+ # Ignore Intel compiler specific flags that look like libraries but aren't. -+ # These flags come from Intel compiler verbose output and are incorrectly -+ # parsed as library flags: -+ # -lwp: disables Light Weight Profiling CPU feature (-target-feature -lwp) -+ # -loopopt: LLVM loop optimization flag (-mllvm -loopopt) -+ -lwp | -loopopt ) -+ ;; - -lcrt1.o | -lcrt2.o |-lcrtbegin.o ) - ;; - -lkernel32) From f503083eec72ec45ec7905283020c15f094d6107 Mon Sep 17 00:00:00 2001 From: Loris Ercole <30901257+lorisercole@users.noreply.github.com> Date: Wed, 7 Jan 2026 14:19:13 +0100 Subject: [PATCH 07/10] Apply suggestions from code review Co-authored-by: Davide Grassano <34096612+Crivella@users.noreply.github.com> --- easybuild/easyconfigs/s/ScaFaCoS/ScaFaCoS-1.0.4-iomkl-2023b.eb | 2 -- 1 file changed, 2 deletions(-) diff --git a/easybuild/easyconfigs/s/ScaFaCoS/ScaFaCoS-1.0.4-iomkl-2023b.eb b/easybuild/easyconfigs/s/ScaFaCoS/ScaFaCoS-1.0.4-iomkl-2023b.eb index 4c54cec16f4b..9b6494f70522 100644 --- a/easybuild/easyconfigs/s/ScaFaCoS/ScaFaCoS-1.0.4-iomkl-2023b.eb +++ b/easybuild/easyconfigs/s/ScaFaCoS/ScaFaCoS-1.0.4-iomkl-2023b.eb @@ -11,10 +11,8 @@ toolchainopts = {'usempi': True} source_urls = ['https://github.com/scafacos/scafacos/releases/download/v%(version)s'] sources = [SOURCELOWER_TAR_GZ] -patches = ['ax_cxx_library_ldflags_intel_fix.patch'] checksums = [ {'scafacos-1.0.4.tar.gz': '6634c4202e825e771d1dd75bbe9cac5cee41136c87653fde98fbd634681c1be6'}, - {'ax_cxx_library_ldflags_intel_fix.patch': 'f5be905035c41838a4e570844244952d9f40a025806ee881582991491cfb2600'}, ] builddependencies = [ From 73cf782c157f52dde252afcedd8a6d2f0d3458b2 Mon Sep 17 00:00:00 2001 From: Loris Ercole Date: Wed, 7 Jan 2026 18:44:03 +0100 Subject: [PATCH 08/10] Fix HDF5 checksums --- easybuild/easyconfigs/h/HDF5/HDF5-1.14.3-iompi-2023b.eb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/easybuild/easyconfigs/h/HDF5/HDF5-1.14.3-iompi-2023b.eb b/easybuild/easyconfigs/h/HDF5/HDF5-1.14.3-iompi-2023b.eb index 5ee2dc29f58b..d5dd8c228da5 100644 --- a/easybuild/easyconfigs/h/HDF5/HDF5-1.14.3-iompi-2023b.eb +++ b/easybuild/easyconfigs/h/HDF5/HDF5-1.14.3-iompi-2023b.eb @@ -14,7 +14,11 @@ source_urls = ['https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-%(version_ma sources = [SOURCELOWER_TAR_GZ] patches = ['HDF5-1.14.3_suppress_fp_exceptions.patch'] checksums = [ - {'hdf5-1.14.3.tar.gz': '09cdb287aa7a89148c1638dd20891fdbae08102cf433ef128fd345338aa237c7'}, + {'hdf5-1.14.3.tar.gz': ( + # Folder name changed from hdf5-1.14.3 to hdfsrc and Makefile got deleted + '09cdb287aa7a89148c1638dd20891fdbae08102cf433ef128fd345338aa237c7', + '126b800e9b87f65e7e7ffa58ee006607bab03a8e11e5209ea3d5c0c331321d43', + )}, {'HDF5-1.14.3_suppress_fp_exceptions.patch': 'bf33e579c93a16043c54b266321bbe95e4a8797f7fe6d096a13ce905ed2ffde7'}, ] From 985395c6d07432feb68242ed454b87305ef60dbb Mon Sep 17 00:00:00 2001 From: Loris Ercole Date: Wed, 13 Aug 2025 14:31:22 +0200 Subject: [PATCH 09/10] Reapply patch ScaFaCoS for Intel tc --- .../s/ScaFaCoS/ScaFaCoS-1.0.4-iomkl-2023b.eb | 2 ++ .../ax_cxx_library_ldflags_intel_fix.patch | 23 +++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 easybuild/easyconfigs/s/ScaFaCoS/ax_cxx_library_ldflags_intel_fix.patch diff --git a/easybuild/easyconfigs/s/ScaFaCoS/ScaFaCoS-1.0.4-iomkl-2023b.eb b/easybuild/easyconfigs/s/ScaFaCoS/ScaFaCoS-1.0.4-iomkl-2023b.eb index 9b6494f70522..4c54cec16f4b 100644 --- a/easybuild/easyconfigs/s/ScaFaCoS/ScaFaCoS-1.0.4-iomkl-2023b.eb +++ b/easybuild/easyconfigs/s/ScaFaCoS/ScaFaCoS-1.0.4-iomkl-2023b.eb @@ -11,8 +11,10 @@ toolchainopts = {'usempi': True} source_urls = ['https://github.com/scafacos/scafacos/releases/download/v%(version)s'] sources = [SOURCELOWER_TAR_GZ] +patches = ['ax_cxx_library_ldflags_intel_fix.patch'] checksums = [ {'scafacos-1.0.4.tar.gz': '6634c4202e825e771d1dd75bbe9cac5cee41136c87653fde98fbd634681c1be6'}, + {'ax_cxx_library_ldflags_intel_fix.patch': 'f5be905035c41838a4e570844244952d9f40a025806ee881582991491cfb2600'}, ] builddependencies = [ diff --git a/easybuild/easyconfigs/s/ScaFaCoS/ax_cxx_library_ldflags_intel_fix.patch b/easybuild/easyconfigs/s/ScaFaCoS/ax_cxx_library_ldflags_intel_fix.patch new file mode 100644 index 000000000000..c48d9a441a3e --- /dev/null +++ b/easybuild/easyconfigs/s/ScaFaCoS/ax_cxx_library_ldflags_intel_fix.patch @@ -0,0 +1,23 @@ +The `AX_CXX_LIBRARY_LDFLAGS` autoconf macro incorrectly identifies some Intel compiler optimization flags as library +dependencies. The macro parses the verbose compiler output looking for patterns starting with `-l`, assuming they are +all library flags. In particular: +- `-lwp` - Actually from `-target-feature -lwp` (disables Light Weight Profiling CPU feature) +- `-loopopt` - Actually from `-mllvm -loopopt` (LLVM loop optimization flag) +This results in these non-existent "libraries" being added to various build configurations. +This patch adds specific filtering for known Intel compiler flags that are commonly misidentified. +--- package/m4/ax_cxx_library_ldflags.m4.orig 2025-08-13 13:30:02.721679032 +0200 ++++ package/m4/ax_cxx_library_ldflags.m4 2025-08-13 13:30:08.579715712 +0200 +@@ -89,6 +89,13 @@ + # Ignore these flags. + -lang* | -lcrt0.o | -lc | -lgcc | -libmil | -LANG:=*) + ;; ++ # Ignore Intel compiler specific flags that look like libraries but aren't. ++ # These flags come from Intel compiler verbose output and are incorrectly ++ # parsed as library flags: ++ # -lwp: disables Light Weight Profiling CPU feature (-target-feature -lwp) ++ # -loopopt: LLVM loop optimization flag (-mllvm -loopopt) ++ -lwp | -loopopt ) ++ ;; + -lcrt1.o | -lcrt2.o |-lcrtbegin.o ) + ;; + -lkernel32) From 707c6c7b1272fe1006acff82f8d297599ff99cc6 Mon Sep 17 00:00:00 2001 From: Loris Ercole Date: Tue, 20 Jan 2026 17:12:32 +0100 Subject: [PATCH 10/10] Patch LAMMPS python setup Use system packages in virtual environment, and constrain version of `build<1.4`. Fixes https://github.com/easybuilders/easybuild-easyconfigs/issues/25089 --- ...PS-29Aug2024_update2-iomkl-2023b-kokkos.eb | 2 + .../l/LAMMPS/lammps-python-venv.patch | 40 +++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 easybuild/easyconfigs/l/LAMMPS/lammps-python-venv.patch diff --git a/easybuild/easyconfigs/l/LAMMPS/LAMMPS-29Aug2024_update2-iomkl-2023b-kokkos.eb b/easybuild/easyconfigs/l/LAMMPS/LAMMPS-29Aug2024_update2-iomkl-2023b-kokkos.eb index e1c7dca50d9c..5f6c4f000c64 100644 --- a/easybuild/easyconfigs/l/LAMMPS/LAMMPS-29Aug2024_update2-iomkl-2023b-kokkos.eb +++ b/easybuild/easyconfigs/l/LAMMPS/LAMMPS-29Aug2024_update2-iomkl-2023b-kokkos.eb @@ -22,11 +22,13 @@ source_urls = [GITHUB_LOWER_SOURCE] sources = ['stable_%(version)s.tar.gz'] patches = [ 'LAMMPS-2Aug2023_install_lammps_python_package_in_eb_software_module.patch', + 'lammps-python-venv.patch', ] checksums = [ {'stable_29Aug2024_update2.tar.gz': 'f8ca3f021a819ced8658055f7750e235c51b4937ddb621cf1bd7bee08e0b6266'}, {'LAMMPS-2Aug2023_install_lammps_python_package_in_eb_software_module.patch': '314ab1064af74ddfcf4091dfe9f90fa32cfa4100e8d01fea7b59b019575a7c51'}, + {'lammps-python-venv.patch': '84d5687aca5df2d288e1c6152843c9f65c6ed11030a1133cceb128c2846fd049'}, ] builddependencies = [ diff --git a/easybuild/easyconfigs/l/LAMMPS/lammps-python-venv.patch b/easybuild/easyconfigs/l/LAMMPS/lammps-python-venv.patch new file mode 100644 index 000000000000..389ec28111f9 --- /dev/null +++ b/easybuild/easyconfigs/l/LAMMPS/lammps-python-venv.patch @@ -0,0 +1,40 @@ +Patch Python installation to ensure system packages are used. +Constrain `build<1.4` for compatibility. +diff --git a/python/install.py b/python/install.py +index fd9f95f1bf..42f404224a 100644 +--- a/python/install.py ++++ b/python/install.py +@@ -97,7 +97,7 @@ shutil.copy(args.lib,'lammps') + # create a virtual environment for building the wheel + shutil.rmtree('buildwheel', True) + try: +- txt = subprocess.check_output([sys.executable, '-m', 'venv', 'buildwheel'], stderr=subprocess.STDOUT, shell=False) ++ txt = subprocess.check_output([sys.executable, '-m', 'venv', '--system-site-packages', 'buildwheel'], stderr=subprocess.STDOUT, shell=False) + print(txt.decode('UTF-8')) + except subprocess.CalledProcessError as err: + sys.exit("Failed to create a virtual environment: {0}".format(err.output.decode('UTF-8'))) +diff --git a/python/makewheel.py b/python/makewheel.py +index f13ad110ce..014756ddbd 100644 +--- a/python/makewheel.py ++++ b/python/makewheel.py +@@ -23,8 +23,8 @@ sys.real_prefix = sys.prefix + sys.prefix = base + + # update pip and install all requirements to build the wheel +-os.system('python -m pip install --upgrade pip') +-os.system('python -m pip install --upgrade -r wheel_requirements.txt') ++os.system('python -m pip install pip') ++os.system('python -m pip install -r wheel_requirements.txt') + + print("Building new binary wheel") + os.system('python -m build -n --wheel -o .') +diff --git a/python/wheel_requirements.txt b/python/wheel_requirements.txt +index dafedeee23..ff4cc9593c 100644 +--- a/python/wheel_requirements.txt ++++ b/python/wheel_requirements.txt +@@ -1,4 +1,4 @@ + pip +-build ++build<1.4 + wheel + setuptools