Skip to content

{data,lib}[foss/2023b] cfchecker v4.1.0, cfunits v3.3.7, cftime v1.6.4 - #25995

Merged
Crivella merged 10 commits into
easybuilders:developfrom
stamenminkov:20260514164119_new_pr_cfchecker410
Jun 23, 2026
Merged

{data,lib}[foss/2023b] cfchecker v4.1.0, cfunits v3.3.7, cftime v1.6.4#25995
Crivella merged 10 commits into
easybuilders:developfrom
stamenminkov:20260514164119_new_pr_cfchecker410

Conversation

@stamenminkov

@stamenminkov stamenminkov commented May 14, 2026

Copy link
Copy Markdown
Contributor

No AI usage

@github-actions github-actions Bot added 2020b issues & PRs related to 2020b 2023b new update labels May 14, 2026
@github-actions

github-actions Bot commented May 14, 2026

Copy link
Copy Markdown

Updated software cfunits-3.3.7-foss-2023b.eb

Diff against cfunits-3.3.7-gfbf-2024a.eb

easybuild/easyconfigs/c/cfunits/cfunits-3.3.7-gfbf-2024a.eb

diff --git a/easybuild/easyconfigs/c/cfunits/cfunits-3.3.7-gfbf-2024a.eb b/easybuild/easyconfigs/c/cfunits/cfunits-3.3.7-foss-2023b.eb
index 1e4e761bd8..2bf4cda434 100644
--- a/easybuild/easyconfigs/c/cfunits/cfunits-3.3.7-gfbf-2024a.eb
+++ b/easybuild/easyconfigs/c/cfunits/cfunits-3.3.7-foss-2023b.eb
@@ -1,30 +1,28 @@
+# Author: Stamen Miroslavov <stamen.miroslavov@bsc.es>
+# Barcelona Supercomputing Center 2025
+
 easyblock = 'PythonBundle'
 
 name = 'cfunits'
 version = '3.3.7'
 
-homepage = 'https://ncas-cms.github.io/cfunits'
-description = "A Python interface to UNIDATA’s UDUNITS-2 library with CF extensions."
-
-toolchain = {'name': 'gfbf', 'version': '2024a'}
+homepage = 'https://github.com/NCAS-CMS/cfunits'
+description = """A Python interface to UNIDATA's UDUNITS-2 package with CF extensions.
+ Store, combine and compare physical units and convert numeric values to different units."""
 
-builddependencies = [
-    ('Cython', '3.0.10'),
-]
+toolchain = {'name': 'foss', 'version': '2023b'}
 
 dependencies = [
-    ('Python', '3.12.3'),
-    ('SciPy-bundle', '2024.05'),
+    ('Python', '3.11.5'),
     ('UDUNITS', '2.2.28'),
+    ('SciPy-bundle', '2023.11'),
+    ('netcdf4-python', '1.7.1.post2'),  # needed for cftime
 ]
 
 exts_list = [
-    ('cftime', '1.6.4', {
-        'checksums': ['e325406193758a7ed67308deb52e727782a19e384e183378e7ff62098be0aedc'],
-    }),
     (name, version, {
         'checksums': ['e271ae2c01765cc437e7eefd802846894367179e3208653ab9b520ade48286d6'],
     }),
 ]
 
-moduleclass = 'geo'
+moduleclass = 'lib'

@github-actions github-actions Bot removed update 2020b issues & PRs related to 2020b labels May 14, 2026
@stamenminkov stamenminkov changed the title {data,lib}[foss/2020b,foss/2023b] cfchecker v4.1.0, cfunits v3.3.7 {data,lib}[foss/2023b] cfchecker v4.1.0, cfunits v3.3.7 May 14, 2026
@sassy-crick

Copy link
Copy Markdown
Collaborator

@boegelbot please test @ jsc-zen3

@boegelbot

Copy link
Copy Markdown
Collaborator

@sassy-crick: 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=25995 EB_ARGS= EB_CONTAINER= EB_REPO=easybuild-easyconfigs EB_BRANCH=develop /opt/software/slurm/bin/sbatch --job-name test_PR_25995 --ntasks=8 ~/boegelbot/eb_from_pr_upload_jsc-zen3.sh' executed!

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

Test results coming soon (I hope)...

Details

- notification for comment with ID 4708740212 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
SUCCESS
Build succeeded for 2 out of 2 (total: 2 mins 2 secs) (2 easyconfigs in total)
jsczen3c3.int.jsc-zen3.fz-juelich.de - Linux Rocky Linux 9.7, x86_64, AMD EPYC-Milan Processor (zen3), Python 3.9.25
See https://gist.github.com/boegelbot/b5c4aa2ab17e9a1a34c1fbddb581abf6 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.

In general we are trying to move to using Bundles also for single packages.

I added an example to convert one of the 2 ECs to one, could you convert also the other?

Comment thread easybuild/easyconfigs/c/cfunits/cfunits-3.3.7-foss-2023b.eb Outdated
stamenminkov and others added 2 commits June 18, 2026 11:24
Co-authored-by: Davide Grassano <34096612+Crivella@users.noreply.github.com>
@stamenminkov
stamenminkov requested a review from Crivella June 18, 2026 09:26
@Crivella

Copy link
Copy Markdown
Contributor

Test report by @Crivella
SUCCESS
Build succeeded for 2 out of 2 (total: 18 secs) (2 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.159.03, Python 3.11.15
See https://gist.github.com/Crivella/e50ee7f59ba6e443e55cfe83b07a7b2a 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.

There is already an EC for cfunits with the same version in 2024a.
https://github.com/easybuilders/easybuild-easyconfigs/blob/develop/easybuild/easyconfigs/c/cfunits/cfunits-3.3.7-gfbf-2024a.eb

There cftime is added as an extension instead of through ntecdf4-python which allows to keep the TC to a lower level (gfbf instead of foss).

Is there a reason here it was done in a such a manner?
It not i would follow the same approach as the existing EC as avoids introducing a lot of not needed dependencies

@stamenminkov

Copy link
Copy Markdown
Contributor Author

There is already an EC for cfunits with the same version in 2024a. https://github.com/easybuilders/easybuild-easyconfigs/blob/develop/easybuild/easyconfigs/c/cfunits/cfunits-3.3.7-gfbf-2024a.eb

There cftime is added as an extension instead of through ntecdf4-python which allows to keep the TC to a lower level (gfbf instead of foss).

Is there a reason here it was done in a such a manner? It not i would follow the same approach as the existing EC as avoids introducing a lot of not needed dependencies

@Crivella Ah I see, my thought was just to use an already installed package rather than installing it again as an extension.

It does make sense though to keep it down to gfbf, instead of foss, I agree.

In that case, though, would it make more sense to revert the dependencies? We install cftime here as an extension to cfunits, and then we call cfunits as a dependency to netcdf4-python, and this way we maintain the balance in the toolchain. What do you think? Or rather have cftime as a standalone module that can be called as a dependency to both directions.

What is confusing to me is having the same library repeated multiple times as an extension across different modules, feels a bit unorganised and to me it doesn't really fit the idea of a "single" version per toolchain, as we can end up with different versions also across these multiple modules.

@Crivella

Copy link
Copy Markdown
Contributor

In general if a package is used multiple times as a dependency i agree it would be best to add it as a separate dependency for improved re-usability, and ensuring we do not ship multiple versions in a TC.

There are currently talks on how we can improve this, either through CI checks or other methods.

I think in general it is about finding a balance on how to granularize bundles (i think the original idea was to avoide having a huge amount of entries in the PATH-like environment variables)
See also easybuilders/easybuild-easyblocks#4146 (comment) for a similar conversation on Julia packages

In this case whether we want to split cftime as another EC or not we definitely want to keep this EC on the lowest TC level possible.

@stamenminkov

Copy link
Copy Markdown
Contributor Author

In general if a package is used multiple times as a dependency i agree it would be best to add it as a separate dependency for improved re-usability, and ensuring we do not ship multiple versions in a TC.

There are currently talks on how we can improve this, either through CI checks or other methods.

I think in general it is about finding a balance on how to granularize bundles (i think the original idea was to avoide having a huge amount of entries in the PATH-like environment variables) See also easybuilders/easybuild-easyblocks#4146 (comment) for a similar conversation on Julia packages

In this case whether we want to split cftime as another EC or not we definitely want to keep this EC on the lowest TC level possible.

Okay, I think for the sake of this PR I'll separate cftime as another EC, and then adapt cfchecker and cfunits.

@Crivella Regarding netcdf4-python, I can add a corrected version also here in this same PR... or maybe we should open a new one that covers all the available tooclhains so the fix is applied everywhere?

@Crivella

Copy link
Copy Markdown
Contributor

I would not do it in this PR and keep it for a separate one

@github-actions

github-actions Bot commented Jun 22, 2026

Copy link
Copy Markdown

Updated software cfunits-3.3.7-gfbf-2023b.eb

Diff against cfunits-3.3.7-gfbf-2024a.eb

easybuild/easyconfigs/c/cfunits/cfunits-3.3.7-gfbf-2024a.eb

diff --git a/easybuild/easyconfigs/c/cfunits/cfunits-3.3.7-gfbf-2024a.eb b/easybuild/easyconfigs/c/cfunits/cfunits-3.3.7-gfbf-2023b.eb
index 1e4e761bd8..f88c872808 100644
--- a/easybuild/easyconfigs/c/cfunits/cfunits-3.3.7-gfbf-2024a.eb
+++ b/easybuild/easyconfigs/c/cfunits/cfunits-3.3.7-gfbf-2023b.eb
@@ -1,30 +1,28 @@
+# Author: Stamen Miroslavov <stamen.miroslavov@bsc.es>
+# Barcelona Supercomputing Center 2025
+
 easyblock = 'PythonBundle'
 
 name = 'cfunits'
 version = '3.3.7'
 
-homepage = 'https://ncas-cms.github.io/cfunits'
-description = "A Python interface to UNIDATA’s UDUNITS-2 library with CF extensions."
-
-toolchain = {'name': 'gfbf', 'version': '2024a'}
+homepage = 'https://github.com/NCAS-CMS/cfunits'
+description = """A Python interface to UNIDATA's UDUNITS-2 package with CF extensions.
+ Store, combine and compare physical units and convert numeric values to different units."""
 
-builddependencies = [
-    ('Cython', '3.0.10'),
-]
+toolchain = {'name': 'gfbf', 'version': '2023b'}
 
 dependencies = [
-    ('Python', '3.12.3'),
-    ('SciPy-bundle', '2024.05'),
+    ('Python', '3.11.5'),
     ('UDUNITS', '2.2.28'),
+    ('SciPy-bundle', '2023.11'),
+    ('cftime', '1.6.4'),
 ]
 
 exts_list = [
-    ('cftime', '1.6.4', {
-        'checksums': ['e325406193758a7ed67308deb52e727782a19e384e183378e7ff62098be0aedc'],
-    }),
     (name, version, {
         'checksums': ['e271ae2c01765cc437e7eefd802846894367179e3208653ab9b520ade48286d6'],
     }),
 ]
 
-moduleclass = 'geo'
+moduleclass = 'lib'

@stamenminkov
stamenminkov requested a review from Crivella June 22, 2026 14:55
@stamenminkov

Copy link
Copy Markdown
Contributor Author

I would not do it in this PR and keep it for a separate one

Perfect, I'll open it when I have some time;)

@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.

Judging from cftime docs and the diff with the previous cfunits EC we will probably need Cython to make sure the build works atleast for cftime

EDIT:

== 2026-06-22 17:46:45,931 run.py:650 INFO Output of '/home/crivella/.local/easybuild/software/Python/3.11.5-GCCcore-13.2.0/bin/python ...' shell command (stdout + stderr):
Using pip 23.2.1 from /home/crivella/.local/easybuild/software/Python/3.11.5-GCCcore-13.2.0/lib/python3.11/site-packages/pip (python 3.11)
Processing /home/crivella/.local/easybuild/build/cftime/1.6.4/gfbf-2023b/cftime/cftime-1.6.4
  Preparing metadata (pyproject.toml): started
  Running command Preparing metadata (pyproject.toml)
  Compiling /home/crivella/.local/easybuild/build/cftime/1.6.4/gfbf-2023b/cftime/cftime-1.6.4/src/cftime/_cftime.pyx because it changed.
  [1/1] Cythonizing /home/crivella/.local/easybuild/build/cftime/1.6.4/gfbf-2023b/cftime/cftime-1.6.4/src/cftime/_cftime.pyx
  running dist_info

I guess on my system it picked it up from somewhere else but we should definitely add it as a builddep

@stamenminkov

Copy link
Copy Markdown
Contributor Author

Judging from cftime docs and the diff with the previous cfunits EC we will probably need Cython to make sure the build works atleast for cftime

EDIT:

== 2026-06-22 17:46:45,931 run.py:650 INFO Output of '/home/crivella/.local/easybuild/software/Python/3.11.5-GCCcore-13.2.0/bin/python ...' shell command (stdout + stderr):
Using pip 23.2.1 from /home/crivella/.local/easybuild/software/Python/3.11.5-GCCcore-13.2.0/lib/python3.11/site-packages/pip (python 3.11)
Processing /home/crivella/.local/easybuild/build/cftime/1.6.4/gfbf-2023b/cftime/cftime-1.6.4
  Preparing metadata (pyproject.toml): started
  Running command Preparing metadata (pyproject.toml)
  Compiling /home/crivella/.local/easybuild/build/cftime/1.6.4/gfbf-2023b/cftime/cftime-1.6.4/src/cftime/_cftime.pyx because it changed.
  [1/1] Cythonizing /home/crivella/.local/easybuild/build/cftime/1.6.4/gfbf-2023b/cftime/cftime-1.6.4/src/cftime/_cftime.pyx
  running dist_info

I guess on my system it picked it up from somewhere else but we should definitely add it as a builddep

Emmmmmmm true, you're right:) Just added it now

That's quite confusing though, since early ECs for netcdf4-python don't use it, I see it used only after 2024a; plus my builds succeed without calling it and I definitely don't have a system lib for Cython 🤔 So I don't understand haha

But it has to be there, checking the setup.py and pyproject.toml of the package, it's clearly stated there..

@stamenminkov
stamenminkov requested a review from Crivella June 23, 2026 09:14
@Crivella

Copy link
Copy Markdown
Contributor

Test report by @Crivella
SUCCESS
Build succeeded for 3 out of 3 (total: 37 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.159.03, Python 3.11.15
See https://gist.github.com/Crivella/f7e0ce1630b9b4010342faebd9db70f7 for a full test report.

@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=25995 EB_ARGS= EB_CONTAINER= EB_REPO=easybuild-easyconfigs EB_BRANCH=develop /opt/software/slurm/bin/sbatch --job-name test_PR_25995 --ntasks=8 ~/boegelbot/eb_from_pr_upload_jsc-zen3.sh' executed!

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

Test results coming soon (I hope)...

Details

- notification for comment with ID 4778329137 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
SUCCESS
Build succeeded for 3 out of 3 (total: 3 mins 35 secs) (3 easyconfigs in total)
jsczen3c1.int.jsc-zen3.fz-juelich.de - Linux Rocky Linux 9.7, x86_64, AMD EPYC-Milan Processor (zen3), Python 3.9.25
See https://gist.github.com/boegelbot/55de1d73d48a20e911d97f6a800898f0 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 added this to the next release (5.3.2?) milestone Jun 23, 2026
@Crivella

Copy link
Copy Markdown
Contributor

Going in, thanks @stamenminkov!

@Crivella
Crivella merged commit 21a903c into easybuilders:develop Jun 23, 2026
6 checks passed
@boegel boegel changed the title {data,lib}[foss/2023b] cfchecker v4.1.0, cfunits v3.3.7 {data,lib}[foss/2023b] cfchecker v4.1.0, cfunits v3.3.7, cftime v1.6.4 Aug 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants