Skip to content

{geo}[foss/2023b] ESMPy v8.6.1, xESMF v0.8.8 - #25853

Merged
Crivella merged 8 commits into
easybuilders:developfrom
stamenminkov:20260427143003_new_pr_ESMPy861
Aug 19, 2026
Merged

{geo}[foss/2023b] ESMPy v8.6.1, xESMF v0.8.8#25853
Crivella merged 8 commits into
easybuilders:developfrom
stamenminkov:20260427143003_new_pr_ESMPy861

Conversation

@stamenminkov

@stamenminkov stamenminkov commented Apr 27, 2026

Copy link
Copy Markdown
Contributor

AI usage: GPT-4 to find a way to properly set the ESMFMKFILE call (in the ESMPy recipe), especially for the sanity check.

The rest is written by me, based on existing recipes for xESMF and ESMPy

….eb and patches: ESMPy-8.6.1_use-static-version.patch
@github-actions

github-actions Bot commented Apr 27, 2026

Copy link
Copy Markdown

Updated software ESMPy-8.6.1-foss-2023b.eb

Diff against ESMPy-8.6.0-foss-2023a.eb

easybuild/easyconfigs/e/ESMPy/ESMPy-8.6.0-foss-2023a.eb

diff --git a/easybuild/easyconfigs/e/ESMPy/ESMPy-8.6.0-foss-2023a.eb b/easybuild/easyconfigs/e/ESMPy/ESMPy-8.6.1-foss-2023b.eb
index 858f46487e..bbfd6935b6 100644
--- a/easybuild/easyconfigs/e/ESMPy/ESMPy-8.6.0-foss-2023a.eb
+++ b/easybuild/easyconfigs/e/ESMPy/ESMPy-8.6.1-foss-2023b.eb
@@ -1,55 +1,62 @@
-easyblock = 'PythonBundle'
+# Updated as PythonPackage easyblock to avoid issues with the variables (ESMFMKFILE,...)
+# Stamen Miroslavov Minkov <stamen.miroslavov@bsc.es>, BSC 2025
+# Patch needs to be updated for every different version
+
+easyblock = 'PythonPackage'
 
 name = 'ESMPy'
-version = '8.6.0'
+version = '8.6.1'
 
 homepage = 'https://earthsystemmodeling.org/esmpy'
 description = "Earth System Modeling Framework (ESMF) Python Interface"
 
-toolchain = {'name': 'foss', 'version': '2023a'}
+toolchain = {'name': 'foss', 'version': '2023b'}
+
+source_urls = ['https://github.com/esmf-org/esmf/archive']
+sources = ['v%(version)s.tar.gz']
+patches = ['ESMPy-8.6.1_use-static-version.patch']
+checksums = [
+    'dc270dcba1c0b317f5c9c6a32ab334cb79468dda283d1e395d98ed2a22866364',  # ESMPy source
+    'c8b1e547ac06260b36c34839d58976d094dd5ccffa2caf545d5397d5a0b54da2',  # Patch file
+]
 
 builddependencies = [
-    ('pytest', '7.4.2'),
+    ('pytest', '8.2.2'),
 ]
 
 dependencies = [
-    ('Python', '3.11.3'),
-    ('SciPy-bundle', '2023.07'),
+    ('Python', '3.11.5'),
+    ('SciPy-bundle', '2023.11'),
     ('ESMF', version),
+    ('mpi4py', '3.1.5'),
+    ('netcdf4-python', '1.7.1.post2'),
 ]
 
 # downloads of data files from data.earthsystemmodeling.org are failing at the
 # time of writting, switch to github.com:
 _switch_data_url_regex = r"s/^\(DATA_URL.*earthsystemmodeling.org\)/# \1/;s/# \(DATA_URL.*github.com\)/\1/"
 
-_pre_test_cmds = [
+pretestopts = " && ".join([
     "sed -i '%s' src/esmpy/util/cache_data.py" % _switch_data_url_regex,
     "unset ESMPY_DATA_DIR",
-    "export ESMPY_DATA_NEW_DIR=/tmp",
-    "",
-]
+    "export ESMPY_DATA_NEW_DIR=%(builddir)s",
+])
 
-exts_list = [
-    ('esmpy', version, {
-        'patches': ['ESMPy-%(version)s_use-static-version.patch'],
-        'source_urls': ['https://github.com/esmf-org/esmf/archive/'],
-        'sources': ['v%(version)s.tar.gz'],
-        'checksums': [
-            {'v8.6.0.tar.gz':
-             'ed057eaddb158a3cce2afc0712b49353b7038b45b29aee86180f381457c0ebe7'},
-            {'ESMPy-8.6.0_use-static-version.patch':
-             '4878e0066593c993e7fc16638ab8e671693c402263b13d1c903b5c5b717f6468'},
-        ],
-        'start_dir': 'src/addon/%(name)s',
-        'preinstallopts': "sed -i 's/EB_ESMPY_VERSION/%(version)s/' pyproject.toml && ",
-        'pretestopts': " && ".join(_pre_test_cmds),
-        'runtest': 'pytest',
-        'testinstall': True,
-    }),
-]
+testinstall = True
+runtest = 'pytest'
+start_dir = 'src/addon/%(namelower)s'
+preinstallopts = "sed -i 's/EB_ESMPY_VERSION/%(version)s/' pyproject.toml && "
+buildopts = "--ESMFMKFILE=$EBROOTESMF/lib/esmf.mk"  # Fix ESMFMKFILE path issue
 
 # set data directory to a user-writable directory
 # default: %(installdir)s/lib/python%(pyshortver)s/site-packages/esmpy/data
-modextravars = {'ESMPY_DATA_DIR': '/tmp'}
+modextravars = {
+    'ESMPY_DATA_DIR': '/tmp',
+    'ESMFMKFILE': '$EBROOTESMF/lib/esmf.mk',
+}
+
+sanity_check_commands = [
+    "python -s -c 'import esmpy'",
+]
 
 moduleclass = 'geo'

Updated software xESMF-0.8.8-foss-2023b.eb

Diff against xESMF-0.8.6-foss-2023a.eb

easybuild/easyconfigs/x/xESMF/xESMF-0.8.6-foss-2023a.eb

diff --git a/easybuild/easyconfigs/x/xESMF/xESMF-0.8.6-foss-2023a.eb b/easybuild/easyconfigs/x/xESMF/xESMF-0.8.8-foss-2023b.eb
index 7dea750a5c..c57f729917 100644
--- a/easybuild/easyconfigs/x/xESMF/xESMF-0.8.6-foss-2023a.eb
+++ b/easybuild/easyconfigs/x/xESMF/xESMF-0.8.8-foss-2023b.eb
@@ -1,39 +1,41 @@
+# Updated: Stamen Miroslavov Minkov <stamen.miroslavov@bsc.es>, BSC 2025
+
 easyblock = 'PythonBundle'
 
 name = 'xESMF'
-version = '0.8.6'
+version = '0.8.8'
 
 homepage = 'https://xesmf.readthedocs.io'
 description = "xESMF: Universal Regridder for Geospatial Data"
 
-toolchain = {'name': 'foss', 'version': '2023a'}
+toolchain = {'name': 'foss', 'version': '2023b'}
 
 builddependencies = [
-    ('pytest', '7.4.2'),
+    ('pytest', '8.2.2'),
 ]
 
 dependencies = [
-    ('Python', '3.11.3'),
-    ('SciPy-bundle', '2023.07'),
-    ('ESMPy', '8.6.0'),
-    ('numba', '0.58.1'),
-    ('Shapely', '2.0.1'),
-    ('xarray', '2023.9.0'),
-    ('dask', '2023.9.2'),
+    ('Python', '3.11.5'),
+    ('SciPy-bundle', '2023.11'),
+    ('ESMPy', '8.6.1'),
+    ('numba', '0.60.0'),
+    ('Shapely', '2.0.6'),
+    ('xarray', '2024.5.0'),
+    ('dask', '2024.5.1'),
 ]
 
 exts_list = [
-    ('cftime', '1.6.2', {
-        'checksums': ['8614c00fb8a5046de304fdd86dbd224f99408185d7b245ac6628d0276596e6d2'],
+    ('cftime', '1.6.4', {
+        'checksums': ['e325406193758a7ed67308deb52e727782a19e384e183378e7ff62098be0aedc'],
     }),
-    ('cf_xarray', '0.9.3', {
-        'checksums': ['5012444078964ef931cdc71d559f58488edd5fa9a175fbec326f9356e481b2cf'],
+    ('cf_xarray', '0.10.4', {
+        'checksums': ['047dd732cc7f154c7aa9d5c00b77c64e2c538258f0b6e7565a4b2c7715ee8aba'],
     }),
-    ('sparse', '0.14.0', {
-        'checksums': ['5f5827a37f6cd6f6730a541f994c95c60a3ae2329e01f4ba21ced5339aea0098'],
+    ('sparse', '0.15.5', {
+        'checksums': ['4c76ce0c96f5cd5c31b7e79e650f0022424c2b16f05f10049e9c6381ee4be266'],
     }),
     ('xesmf', version, {
-        'checksums': ['61c54f0db19fe4871623791db50b1ae589ea1a834d0df461cb58ffbd10d875de'],
+        'checksums': ['8588f83007ce7011379991f516be3691df6fb30486741f0e1c33aa962056ea33'],
         'runtest': 'pytest',
         'testopts': "-v --pyargs xesmf",
         'testinstall': True,

boegel
boegel previously requested changes Jun 12, 2026
Comment thread easybuild/easyconfigs/e/ESMPy/ESMPy-8.6.1-foss-2023b.eb Outdated
Comment thread easybuild/easyconfigs/e/ESMPy/ESMPy-8.6.1-foss-2023b.eb Outdated
Comment thread easybuild/easyconfigs/e/ESMPy/ESMPy-8.6.1-foss-2023b.eb Outdated
Comment thread easybuild/easyconfigs/e/ESMPy/ESMPy-8.6.1-foss-2023b.eb Outdated
@boegel boegel added this to the 5.x milestone Jun 12, 2026
Co-authored-by: Kenneth Hoste <kenneth.hoste@ugent.be>
Comment thread easybuild/easyconfigs/e/ESMPy/ESMPy-8.6.1-foss-2023b.eb Outdated
Comment thread easybuild/easyconfigs/e/ESMPy/ESMPy-8.6.1-foss-2023b.eb Outdated
@stamenminkov
stamenminkov requested a review from boegel June 18, 2026 09:47
@Crivella Crivella added the AI-assisted AI-assisted contributions label Aug 18, 2026
Comment thread easybuild/easyconfigs/e/ESMPy/ESMPy-8.6.1-foss-2023b.eb Outdated
@github-actions

github-actions Bot commented Aug 19, 2026

Copy link
Copy Markdown

Updated software ESMPy-8.6.1-foss-2023b.eb

Diff against ESMPy-8.6.0-foss-2023a.eb

easybuild/easyconfigs/e/ESMPy/ESMPy-8.6.0-foss-2023a.eb

diff --git a/easybuild/easyconfigs/e/ESMPy/ESMPy-8.6.0-foss-2023a.eb b/easybuild/easyconfigs/e/ESMPy/ESMPy-8.6.1-foss-2023b.eb
index 858f46487e..3f29fd4a60 100644
--- a/easybuild/easyconfigs/e/ESMPy/ESMPy-8.6.0-foss-2023a.eb
+++ b/easybuild/easyconfigs/e/ESMPy/ESMPy-8.6.1-foss-2023b.eb
@@ -1,55 +1,59 @@
-easyblock = 'PythonBundle'
+# Updated as PythonPackage easyblock to avoid issues with the variables (ESMFMKFILE,...)
+# Stamen Miroslavov Minkov <stamen.miroslavov@bsc.es>, BSC 2025
+# Patch needs to be updated for every different version
+
+easyblock = 'PythonPackage'
 
 name = 'ESMPy'
-version = '8.6.0'
+version = '8.6.1'
 
 homepage = 'https://earthsystemmodeling.org/esmpy'
 description = "Earth System Modeling Framework (ESMF) Python Interface"
 
-toolchain = {'name': 'foss', 'version': '2023a'}
+toolchain = {'name': 'foss', 'version': '2023b'}
+
+source_urls = ['https://github.com/esmf-org/esmf/archive']
+sources = ['v%(version)s.tar.gz']
+patches = ['ESMPy-8.6.1_use-static-version.patch']
+checksums = [
+    'dc270dcba1c0b317f5c9c6a32ab334cb79468dda283d1e395d98ed2a22866364',  # ESMPy source
+    'c8b1e547ac06260b36c34839d58976d094dd5ccffa2caf545d5397d5a0b54da2',  # Patch file
+]
 
 builddependencies = [
-    ('pytest', '7.4.2'),
+    ('pytest', '8.2.2'),
 ]
 
 dependencies = [
-    ('Python', '3.11.3'),
-    ('SciPy-bundle', '2023.07'),
+    ('Python', '3.11.5'),
+    ('SciPy-bundle', '2023.11'),
     ('ESMF', version),
+    ('mpi4py', '3.1.5'),
+    ('netcdf4-python', '1.7.1.post2'),
 ]
 
 # downloads of data files from data.earthsystemmodeling.org are failing at the
 # time of writting, switch to github.com:
 _switch_data_url_regex = r"s/^\(DATA_URL.*earthsystemmodeling.org\)/# \1/;s/# \(DATA_URL.*github.com\)/\1/"
 
-_pre_test_cmds = [
+pretestopts = " && ".join([
     "sed -i '%s' src/esmpy/util/cache_data.py" % _switch_data_url_regex,
     "unset ESMPY_DATA_DIR",
-    "export ESMPY_DATA_NEW_DIR=/tmp",
-    "",
-]
+    "export ESMPY_DATA_NEW_DIR=%(builddir)s",
+    ""  # Add trailing &&
+])
 
-exts_list = [
-    ('esmpy', version, {
-        'patches': ['ESMPy-%(version)s_use-static-version.patch'],
-        'source_urls': ['https://github.com/esmf-org/esmf/archive/'],
-        'sources': ['v%(version)s.tar.gz'],
-        'checksums': [
-            {'v8.6.0.tar.gz':
-             'ed057eaddb158a3cce2afc0712b49353b7038b45b29aee86180f381457c0ebe7'},
-            {'ESMPy-8.6.0_use-static-version.patch':
-             '4878e0066593c993e7fc16638ab8e671693c402263b13d1c903b5c5b717f6468'},
-        ],
-        'start_dir': 'src/addon/%(name)s',
-        'preinstallopts': "sed -i 's/EB_ESMPY_VERSION/%(version)s/' pyproject.toml && ",
-        'pretestopts': " && ".join(_pre_test_cmds),
-        'runtest': 'pytest',
-        'testinstall': True,
-    }),
-]
+testinstall = True
+runtest = 'pytest'
+start_dir = 'src/addon/%(namelower)s'
+preinstallopts = "sed -i 's/EB_ESMPY_VERSION/%(version)s/' pyproject.toml && "
 
 # set data directory to a user-writable directory
 # default: %(installdir)s/lib/python%(pyshortver)s/site-packages/esmpy/data
 modextravars = {'ESMPY_DATA_DIR': '/tmp'}
 
+sanity_check_commands = [
+    "python -s -c 'import esmpy'",
+]
+
 moduleclass = 'geo'

Updated software xESMF-0.8.8-foss-2023b.eb

Diff against xESMF-0.8.6-foss-2023a.eb

easybuild/easyconfigs/x/xESMF/xESMF-0.8.6-foss-2023a.eb

diff --git a/easybuild/easyconfigs/x/xESMF/xESMF-0.8.6-foss-2023a.eb b/easybuild/easyconfigs/x/xESMF/xESMF-0.8.8-foss-2023b.eb
index 7dea750a5c..a0a8c59fb8 100644
--- a/easybuild/easyconfigs/x/xESMF/xESMF-0.8.6-foss-2023a.eb
+++ b/easybuild/easyconfigs/x/xESMF/xESMF-0.8.8-foss-2023b.eb
@@ -1,39 +1,39 @@
+# Updated: Stamen Miroslavov Minkov <stamen.miroslavov@bsc.es>, BSC 2025
+
 easyblock = 'PythonBundle'
 
 name = 'xESMF'
-version = '0.8.6'
+version = '0.8.8'
 
 homepage = 'https://xesmf.readthedocs.io'
 description = "xESMF: Universal Regridder for Geospatial Data"
 
-toolchain = {'name': 'foss', 'version': '2023a'}
+toolchain = {'name': 'foss', 'version': '2023b'}
 
 builddependencies = [
-    ('pytest', '7.4.2'),
+    ('pytest', '8.2.2'),
 ]
 
 dependencies = [
-    ('Python', '3.11.3'),
-    ('SciPy-bundle', '2023.07'),
-    ('ESMPy', '8.6.0'),
-    ('numba', '0.58.1'),
-    ('Shapely', '2.0.1'),
-    ('xarray', '2023.9.0'),
-    ('dask', '2023.9.2'),
+    ('Python', '3.11.5'),
+    ('SciPy-bundle', '2023.11'),
+    ('ESMPy', '8.6.1'),
+    ('numba', '0.60.0'),
+    ('Shapely', '2.0.6'),
+    ('xarray', '2024.5.0'),
+    ('dask', '2024.5.1'),
+    ('cftime', '1.6.4'),
 ]
 
 exts_list = [
-    ('cftime', '1.6.2', {
-        'checksums': ['8614c00fb8a5046de304fdd86dbd224f99408185d7b245ac6628d0276596e6d2'],
-    }),
-    ('cf_xarray', '0.9.3', {
-        'checksums': ['5012444078964ef931cdc71d559f58488edd5fa9a175fbec326f9356e481b2cf'],
+    ('cf_xarray', '0.10.4', {
+        'checksums': ['047dd732cc7f154c7aa9d5c00b77c64e2c538258f0b6e7565a4b2c7715ee8aba'],
     }),
-    ('sparse', '0.14.0', {
-        'checksums': ['5f5827a37f6cd6f6730a541f994c95c60a3ae2329e01f4ba21ced5339aea0098'],
+    ('sparse', '0.15.5', {
+        'checksums': ['4c76ce0c96f5cd5c31b7e79e650f0022424c2b16f05f10049e9c6381ee4be266'],
     }),
     ('xesmf', version, {
-        'checksums': ['61c54f0db19fe4871623791db50b1ae589ea1a834d0df461cb58ffbd10d875de'],
+        'checksums': ['8588f83007ce7011379991f516be3691df6fb30486741f0e1c33aa962056ea33'],
         'runtest': 'pytest',
         'testopts': "-v --pyargs xesmf",
         'testinstall': True,

@Crivella

Copy link
Copy Markdown
Contributor

Test report by @Crivella
SUCCESS
Build succeeded for 4 out of 4 (total: 15 mins 12 secs) (3 easyconfigs in total)
crivella-desktop - Linux Ubuntu 22.04.5 LTS (Jammy Jellyfish), x86_64, 13th Gen Intel(R) Core(TM) i9-13900K (skylake), 1 x NVIDIA NVIDIA GeForce RTX 5060, 580.173.02, Python 3.11.15
See https://gist.github.com/Crivella/18bb3452ba5f1f6ef7acbe0f72b9efa9 for a full test report.

@Crivella

Crivella commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Seems to be working, also TBH considering that we are using pip for the install and buildcmd was not set i do not even thhink EB was running a dedicated build command that makes use of the buildopts

@Crivella

Copy link
Copy Markdown
Contributor

@boegelbot please test @ jsc-zen3

@boegelbot

Copy link
Copy Markdown
Collaborator

@Crivella: Request for testing this PR well received on jsczen3l1.int.jsc-zen3.fz-juelich.de

PR test command 'if [[ develop != 'develop' ]]; then EB_BRANCH=develop ./easybuild_develop.sh 2> /dev/null 1>&2; EB_PREFIX=/home/boegelbot/easybuild/develop source init_env_easybuild_develop.sh; fi; EB_PR=25853 EB_ARGS= EB_CONTAINER= EB_REPO=easybuild-easyconfigs EB_BRANCH=develop /opt/software/slurm/bin/sbatch --job-name test_PR_25853 --ntasks=8 ~/boegelbot/eb_from_pr_upload_jsc-zen3.sh' executed!

  • exit code: 0
  • output:
Submitted batch job 11294

Test results coming soon (I hope)...

Details

- notification for comment with ID 5341607301 processed

Message to humans: this is just bookkeeping information for me,
it is of no use to you (unless you think I have a bug, which I don't).

@boegelbot

Copy link
Copy Markdown
Collaborator

Test report by @boegelbot
FAILED
Build succeeded for 1 out of 3 (total: 22 mins 57 secs) (3 easyconfigs in total)
jsczen3c1.int.jsc-zen3.fz-juelich.de - Linux Rocky Linux 9.8, x86_64, AMD EPYC-Milan Processor (zen3), Python 3.9.25
See https://gist.github.com/boegelbot/c602858ca90535a322b04c20ba21190e for a full test report.

Comment thread easybuild/easyconfigs/e/ESMPy/ESMPy-8.6.1-foss-2023b.eb
@Crivella

Copy link
Copy Markdown
Contributor

@boegelbot please test @ jsc-zen3

@boegelbot

Copy link
Copy Markdown
Collaborator

@Crivella: Request for testing this PR well received on jsczen3l1.int.jsc-zen3.fz-juelich.de

PR test command 'if [[ develop != 'develop' ]]; then EB_BRANCH=develop ./easybuild_develop.sh 2> /dev/null 1>&2; EB_PREFIX=/home/boegelbot/easybuild/develop source init_env_easybuild_develop.sh; fi; EB_PR=25853 EB_ARGS= EB_CONTAINER= EB_REPO=easybuild-easyconfigs EB_BRANCH=develop /opt/software/slurm/bin/sbatch --job-name test_PR_25853 --ntasks=8 ~/boegelbot/eb_from_pr_upload_jsc-zen3.sh' executed!

  • exit code: 0
  • output:
Submitted batch job 11295

Test results coming soon (I hope)...

Details

- notification for comment with ID 5342526216 processed

Message to humans: this is just bookkeeping information for me,
it is of no use to you (unless you think I have a bug, which I don't).

@Crivella

Copy link
Copy Markdown
Contributor

Test report by @Crivella
SUCCESS
Build succeeded for 3 out of 3 (total: 12 mins 51 secs) (3 easyconfigs in total)
crivella-desktop - Linux Ubuntu 22.04.5 LTS (Jammy Jellyfish), x86_64, 13th Gen Intel(R) Core(TM) i9-13900K (skylake), 1 x NVIDIA NVIDIA GeForce RTX 5060, 580.173.02, Python 3.11.15
See https://gist.github.com/Crivella/3bca5039d528c14ac5b315d3780ce180 for a full test report.

@boegelbot

Copy link
Copy Markdown
Collaborator

Test report by @boegelbot
SUCCESS
Build succeeded for 3 out of 3 (total: 26 mins 25 secs) (3 easyconfigs in total)
jsczen3c1.int.jsc-zen3.fz-juelich.de - Linux Rocky Linux 9.8, x86_64, AMD EPYC-Milan Processor (zen3), Python 3.9.25
See https://gist.github.com/boegelbot/a2a96a4f20158bb7dd4b459d25dc88d8 for a full test report.

@Crivella Crivella left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@Crivella
Crivella dismissed boegel’s stale review August 19, 2026 14:02

Changes done in PR

@Crivella Crivella modified the milestones: 5.x, next release (5.4.1?) Aug 19, 2026
@Crivella

Copy link
Copy Markdown
Contributor

Going in, thanks @stamenminkov!

@Crivella
Crivella merged commit 2dde5f1 into easybuilders:develop Aug 19, 2026
6 checks passed
@stamenminkov

stamenminkov commented Aug 19, 2026

Copy link
Copy Markdown
Contributor Author

Awesome! Thanks for all the corrections @Crivella !

Also, I'll open a new PR to correct all the rest of ESMF easyconfs so ESMFMKFILE is defined everywhere

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants