From 05a80d7b1a17cc1eeff38457cc57e1591c8aa0e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 1 May 2026 11:00:23 +0200 Subject: [PATCH 01/14] use LooseVersion for comparing version numbers --- scripts/available_software/available_software.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/scripts/available_software/available_software.py b/scripts/available_software/available_software.py index 9e0c871cee..92698852c3 100644 --- a/scripts/available_software/available_software.py +++ b/scripts/available_software/available_software.py @@ -16,6 +16,7 @@ import json import os import yaml +from easybuild.tools import LooseVersion from mdutils.tools.Table import Table from string import Template @@ -182,7 +183,7 @@ def generate_software_page(software_name: str, software_data: dict, path: str) - n_cols = len(table_data) n_rows = 1 - for version in sorted(software_data["versions"], key=lambda x: x["version"]): + for version in sorted(software_data["versions"], key=lambda x: LooseVersion(x["version"])): cpu_targets = format_cpu_arch_list(version["cpu_arch"]) gpu_targets = format_gpu_arch_list(version["gpu_arch"]) @@ -243,12 +244,12 @@ def generate_software_page(software_name: str, software_data: dict, path: str) - table_data[0] = table_data[0] % ext_name n_rows = 1 - for ext_version, ext_version_mods in sorted(ext_details.items(), key=lambda x: x[0]): + for ext_version, ext_version_mods in sorted(ext_details.items(), key=lambda x: LooseVersion(x[0])): n_rows += 1 table_data.extend( [ ext_version, - "
".join("`" + m + "`" for m in sorted(ext_version_mods)), + "
".join("`" + m + "`" for m in sorted(ext_version_mods, key=LooseVersion)), ] ) @@ -273,7 +274,7 @@ def generate_software_page(software_name: str, software_data: dict, path: str) - ldjson_software_data["name"] = software_name # Just output the supported versionsq ldjson_software_data["version"] = sorted( - list(set([version["version"] for version in software_data["versions"]])), reverse=True + list(set([version["version"] for version in software_data["versions"]])), key=LooseVersion, reverse=True ) # Make the description safe for json (and remove surrounding quotes) ldjson_software_data["description"] = json.dumps(ldjson_software_data["description"])[1:-1] From b2f60ea91e495b4f2a188d991f75d33e89a14c75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 1 May 2026 11:00:30 +0200 Subject: [PATCH 02/14] fix typo --- scripts/available_software/available_software.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/available_software/available_software.py b/scripts/available_software/available_software.py index 92698852c3..a1e7c9c82e 100644 --- a/scripts/available_software/available_software.py +++ b/scripts/available_software/available_software.py @@ -272,7 +272,7 @@ def generate_software_page(software_name: str, software_data: dict, path: str) - with open(filename, "w") as f: # Add the software name ldjson_software_data["name"] = software_name - # Just output the supported versionsq + # Just output the supported versions ldjson_software_data["version"] = sorted( list(set([version["version"] for version in software_data["versions"]])), key=LooseVersion, reverse=True ) From cfbcb1fb9845547628760a921bd5f874b77b1838 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 1 May 2026 11:00:49 +0200 Subject: [PATCH 03/14] add easybuild-framework --- scripts/available_software/requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/available_software/requirements.txt b/scripts/available_software/requirements.txt index 6d558a8c4d..44b9377a8a 100644 --- a/scripts/available_software/requirements.txt +++ b/scripts/available_software/requirements.txt @@ -1,2 +1,3 @@ +easybuild-framework mdutils pyyaml From 4d5942cfc25a81b238bd9ed172759b47008b3f75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 1 May 2026 11:10:35 +0200 Subject: [PATCH 04/14] reverse sort for software versions --- scripts/available_software/available_software.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/available_software/available_software.py b/scripts/available_software/available_software.py index a1e7c9c82e..a4d618d36c 100644 --- a/scripts/available_software/available_software.py +++ b/scripts/available_software/available_software.py @@ -183,7 +183,7 @@ def generate_software_page(software_name: str, software_data: dict, path: str) - n_cols = len(table_data) n_rows = 1 - for version in sorted(software_data["versions"], key=lambda x: LooseVersion(x["version"])): + for version in sorted(software_data["versions"], key=lambda x: LooseVersion(x["version"]), reverse=True): cpu_targets = format_cpu_arch_list(version["cpu_arch"]) gpu_targets = format_gpu_arch_list(version["gpu_arch"]) @@ -244,12 +244,12 @@ def generate_software_page(software_name: str, software_data: dict, path: str) - table_data[0] = table_data[0] % ext_name n_rows = 1 - for ext_version, ext_version_mods in sorted(ext_details.items(), key=lambda x: LooseVersion(x[0])): + for ext_version, ext_version_mods in sorted(ext_details.items(), key=lambda x: LooseVersion(x[0]), reverse=True): n_rows += 1 table_data.extend( [ ext_version, - "
".join("`" + m + "`" for m in sorted(ext_version_mods, key=LooseVersion)), + "
".join("`" + m + "`" for m in sorted(ext_version_mods, key=LooseVersion, reverse=True)), ] ) From 02d61064e1496b2bf23aa2c5e29230f19ddeae27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 1 May 2026 11:14:54 +0200 Subject: [PATCH 05/14] fix long line --- scripts/available_software/available_software.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/available_software/available_software.py b/scripts/available_software/available_software.py index a4d618d36c..b23ffe21ef 100644 --- a/scripts/available_software/available_software.py +++ b/scripts/available_software/available_software.py @@ -244,7 +244,9 @@ def generate_software_page(software_name: str, software_data: dict, path: str) - table_data[0] = table_data[0] % ext_name n_rows = 1 - for ext_version, ext_version_mods in sorted(ext_details.items(), key=lambda x: LooseVersion(x[0]), reverse=True): + for ext_version, ext_version_mods in sorted( + ext_details.items(), key=lambda x: LooseVersion(x[0]), reverse=True + ): n_rows += 1 table_data.extend( [ From 4c5ef8fe7cf520b187ef572ba0905a16db71dd0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 1 May 2026 11:18:13 +0200 Subject: [PATCH 06/14] fix hatchling reference output --- .../tests/reference_detail/hatchling.md | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/scripts/available_software/tests/reference_detail/hatchling.md b/scripts/available_software/tests/reference_detail/hatchling.md index 76b795750e..060440a575 100644 --- a/scripts/available_software/tests/reference_detail/hatchling.md +++ b/scripts/available_software/tests/reference_detail/hatchling.md @@ -40,11 +40,11 @@ a modern, extensible Python project manager. |hatchling version|Supported CPU targets|Supported GPU targets|EESSI version|Module| | --- | --- | --- | --- | --- | -|1.18.0|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2023.06|`hatchling/1.18.0-GCCcore-12.3.0`| -|1.18.0|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2023.06|`hatchling/1.18.0-GCCcore-13.2.0`| -|1.24.2|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2025.06|`hatchling/1.24.2-GCCcore-13.3.0`| -|1.27.0|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2025.06|`hatchling/1.27.0-GCCcore-14.2.0`| |1.27.0|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2025.06|`hatchling/1.27.0-GCCcore-14.3.0`| +|1.27.0|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2025.06|`hatchling/1.27.0-GCCcore-14.2.0`| +|1.24.2|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2025.06|`hatchling/1.24.2-GCCcore-13.3.0`| +|1.18.0|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2023.06|`hatchling/1.18.0-GCCcore-13.2.0`| +|1.18.0|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2023.06|`hatchling/1.18.0-GCCcore-12.3.0`| ## Extensions @@ -56,8 +56,8 @@ Overview of extensions included in hatchling installations |`editables` version|hatchling modules that include it| | --- | --- | -|0.3|`hatchling/1.18.0-GCCcore-12.3.0`| |0.5|`hatchling/1.18.0-GCCcore-13.2.0`
`hatchling/1.24.2-GCCcore-13.3.0`
`hatchling/1.27.0-GCCcore-14.2.0`
`hatchling/1.27.0-GCCcore-14.3.0`| +|0.3|`hatchling/1.18.0-GCCcore-12.3.0`| ### hatch-docstring-description @@ -71,8 +71,8 @@ Overview of extensions included in hatchling installations |`hatch-fancy-pypi-readme` version|hatchling modules that include it| | --- | --- | -|24.1.0|`hatchling/1.24.2-GCCcore-13.3.0`
`hatchling/1.27.0-GCCcore-14.2.0`| |25.1.0|`hatchling/1.27.0-GCCcore-14.3.0`| +|24.1.0|`hatchling/1.24.2-GCCcore-13.3.0`
`hatchling/1.27.0-GCCcore-14.2.0`| ### hatch-requirements-txt @@ -86,8 +86,8 @@ Overview of extensions included in hatchling installations |`hatch-vcs` version|hatchling modules that include it| | --- | --- | -|0.4.0|`hatchling/1.24.2-GCCcore-13.3.0`
`hatchling/1.27.0-GCCcore-14.2.0`| |0.5.0|`hatchling/1.27.0-GCCcore-14.3.0`| +|0.4.0|`hatchling/1.24.2-GCCcore-13.3.0`
`hatchling/1.27.0-GCCcore-14.2.0`| ### hatch_fancy_pypi_readme @@ -108,37 +108,37 @@ Overview of extensions included in hatchling installations |`hatchling` version|hatchling modules that include it| | --- | --- | -|1.18.0|`hatchling/1.18.0-GCCcore-12.3.0`
`hatchling/1.18.0-GCCcore-13.2.0`| -|1.24.2|`hatchling/1.24.2-GCCcore-13.3.0`| |1.27.0|`hatchling/1.27.0-GCCcore-14.2.0`
`hatchling/1.27.0-GCCcore-14.3.0`| +|1.24.2|`hatchling/1.24.2-GCCcore-13.3.0`| +|1.18.0|`hatchling/1.18.0-GCCcore-12.3.0`
`hatchling/1.18.0-GCCcore-13.2.0`| ### pathspec |`pathspec` version|hatchling modules that include it| | --- | --- | -|0.11.1|`hatchling/1.18.0-GCCcore-12.3.0`| -|0.11.2|`hatchling/1.18.0-GCCcore-13.2.0`| |0.12.1|`hatchling/1.24.2-GCCcore-13.3.0`
`hatchling/1.27.0-GCCcore-14.2.0`
`hatchling/1.27.0-GCCcore-14.3.0`| +|0.11.2|`hatchling/1.18.0-GCCcore-13.2.0`| +|0.11.1|`hatchling/1.18.0-GCCcore-12.3.0`| ### pluggy |`pluggy` version|hatchling modules that include it| | --- | --- | -|1.2.0|`hatchling/1.18.0-GCCcore-12.3.0`| -|1.3.0|`hatchling/1.18.0-GCCcore-13.2.0`| -|1.5.0|`hatchling/1.24.2-GCCcore-13.3.0`
`hatchling/1.27.0-GCCcore-14.2.0`| |1.6.0|`hatchling/1.27.0-GCCcore-14.3.0`| +|1.5.0|`hatchling/1.24.2-GCCcore-13.3.0`
`hatchling/1.27.0-GCCcore-14.2.0`| +|1.3.0|`hatchling/1.18.0-GCCcore-13.2.0`| +|1.2.0|`hatchling/1.18.0-GCCcore-12.3.0`| ### trove-classifiers |`trove-classifiers` version|hatchling modules that include it| | --- | --- | -|2024.5.22|`hatchling/1.24.2-GCCcore-13.3.0`| -|2025.2.18.16|`hatchling/1.27.0-GCCcore-14.2.0`| |2025.5.9.12|`hatchling/1.27.0-GCCcore-14.3.0`| +|2025.2.18.16|`hatchling/1.27.0-GCCcore-14.2.0`| +|2024.5.22|`hatchling/1.24.2-GCCcore-13.3.0`| ### trove_classifiers @@ -146,4 +146,4 @@ Overview of extensions included in hatchling installations |`trove_classifiers` version|hatchling modules that include it| | --- | --- | |2023.10.18|`hatchling/1.18.0-GCCcore-13.2.0`| -|2023.5.24|`hatchling/1.18.0-GCCcore-12.3.0`| \ No newline at end of file +|2023.5.24|`hatchling/1.18.0-GCCcore-12.3.0`| From cdb8565bb59ea94eebef62ce31fd2fa62ac70ad4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 1 May 2026 11:18:41 +0200 Subject: [PATCH 07/14] fix espresso reference output --- .../available_software/tests/reference_detail/ESPResSo.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/available_software/tests/reference_detail/ESPResSo.md b/scripts/available_software/tests/reference_detail/ESPResSo.md index 14a051054d..20fac56b0c 100644 --- a/scripts/available_software/tests/reference_detail/ESPResSo.md +++ b/scripts/available_software/tests/reference_detail/ESPResSo.md @@ -38,7 +38,7 @@ A software package for performing and analyzing scientific Molecular Dynamics si |ESPResSo version|Supported CPU targets|Supported GPU targets|EESSI version|Module| | --- | --- | --- | --- | --- | -|4.2.1|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2023.06|`ESPResSo/4.2.1-foss-2023a`| -|4.2.2|`generic`: `aarch64`, `x86_64`
Arm: `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|NVIDIA: `cc70`, `cc80`, `cc90`
|2023.06|`ESPResSo/4.2.2-foss-2023a-CUDA-12.1.1`| +|4.2.2|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2023.06|`ESPResSo/4.2.2-foss-2023b`| |4.2.2|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2023.06|`ESPResSo/4.2.2-foss-2023a`| -|4.2.2|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2023.06|`ESPResSo/4.2.2-foss-2023b`| \ No newline at end of file +|4.2.2|`generic`: `aarch64`, `x86_64`
Arm: `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|NVIDIA: `cc70`, `cc80`, `cc90`
|2023.06|`ESPResSo/4.2.2-foss-2023a-CUDA-12.1.1`| +|4.2.1|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2023.06|`ESPResSo/4.2.1-foss-2023a`| From a5a3a5523c31e5ec74cecc2bd27e1e6c7315e838 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 1 May 2026 11:19:18 +0200 Subject: [PATCH 08/14] fix pmix reference output --- .../available_software/tests/reference_detail/PMIx.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/scripts/available_software/tests/reference_detail/PMIx.md b/scripts/available_software/tests/reference_detail/PMIx.md index c58557dc87..334840f3d4 100644 --- a/scripts/available_software/tests/reference_detail/PMIx.md +++ b/scripts/available_software/tests/reference_detail/PMIx.md @@ -67,9 +67,9 @@ the desired level of scalability. |PMIx version|Supported CPU targets|Supported GPU targets|EESSI version|Module| | --- | --- | --- | --- | --- | -|4.2.2|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2023.06|`PMIx/4.2.2-GCCcore-12.2.0`| -|4.2.4|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2023.06|`PMIx/4.2.4-GCCcore-12.3.0`| -|4.2.6|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2023.06|`PMIx/4.2.6-GCCcore-13.2.0`| -|5.0.2|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2025.06|`PMIx/5.0.2-GCCcore-13.3.0`| +|5.0.8|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2025.06|`PMIx/5.0.8-GCCcore-14.3.0`| |5.0.6|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2025.06|`PMIx/5.0.6-GCCcore-14.2.0`| -|5.0.8|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2025.06|`PMIx/5.0.8-GCCcore-14.3.0`| \ No newline at end of file +|5.0.2|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2025.06|`PMIx/5.0.2-GCCcore-13.3.0`| +|4.2.6|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2023.06|`PMIx/4.2.6-GCCcore-13.2.0`| +|4.2.4|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2023.06|`PMIx/4.2.4-GCCcore-12.3.0`| +|4.2.2|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2023.06|`PMIx/4.2.2-GCCcore-12.2.0`| From b889405e8c7384fda063ba0caf660babbe6a7268 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 1 May 2026 11:32:58 +0200 Subject: [PATCH 09/14] another attempt to fix hatchling reference output --- .../tests/reference_detail/hatchling.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/scripts/available_software/tests/reference_detail/hatchling.md b/scripts/available_software/tests/reference_detail/hatchling.md index 060440a575..dd7ee4b175 100644 --- a/scripts/available_software/tests/reference_detail/hatchling.md +++ b/scripts/available_software/tests/reference_detail/hatchling.md @@ -56,7 +56,7 @@ Overview of extensions included in hatchling installations |`editables` version|hatchling modules that include it| | --- | --- | -|0.5|`hatchling/1.18.0-GCCcore-13.2.0`
`hatchling/1.24.2-GCCcore-13.3.0`
`hatchling/1.27.0-GCCcore-14.2.0`
`hatchling/1.27.0-GCCcore-14.3.0`| +|0.5|`hatchling/1.27.0-GCCcore-14.3.0`
`hatchling/1.27.0-GCCcore-14.2.0`
`hatchling/1.24.2-GCCcore-13.3.0`
`hatchling/1.18.0-GCCcore-13.2.0`| |0.3|`hatchling/1.18.0-GCCcore-12.3.0`| ### hatch-docstring-description @@ -72,14 +72,14 @@ Overview of extensions included in hatchling installations |`hatch-fancy-pypi-readme` version|hatchling modules that include it| | --- | --- | |25.1.0|`hatchling/1.27.0-GCCcore-14.3.0`| -|24.1.0|`hatchling/1.24.2-GCCcore-13.3.0`
`hatchling/1.27.0-GCCcore-14.2.0`| +|24.1.0|`hatchling/1.27.0-GCCcore-14.2.0`
`hatchling/1.24.2-GCCcore-13.3.0`| ### hatch-requirements-txt |`hatch-requirements-txt` version|hatchling modules that include it| | --- | --- | -|0.4.1|`hatchling/1.18.0-GCCcore-12.3.0`
`hatchling/1.18.0-GCCcore-13.2.0`
`hatchling/1.24.2-GCCcore-13.3.0`
`hatchling/1.27.0-GCCcore-14.2.0`
`hatchling/1.27.0-GCCcore-14.3.0`| +|0.4.1|`hatchling/1.27.0-GCCcore-14.3.0`
`hatchling/1.27.0-GCCcore-14.2.0`
`hatchling/1.24.2-GCCcore-13.3.0`
`hatchling/1.18.0-GCCcore-13.2.0`
`hatchling/1.18.0-GCCcore-12.3.0`| ### hatch-vcs @@ -87,37 +87,37 @@ Overview of extensions included in hatchling installations |`hatch-vcs` version|hatchling modules that include it| | --- | --- | |0.5.0|`hatchling/1.27.0-GCCcore-14.3.0`| -|0.4.0|`hatchling/1.24.2-GCCcore-13.3.0`
`hatchling/1.27.0-GCCcore-14.2.0`| +|0.4.0|`hatchling/1.27.0-GCCcore-14.2.0`
`hatchling/1.24.2-GCCcore-13.3.0`| ### hatch_fancy_pypi_readme |`hatch_fancy_pypi_readme` version|hatchling modules that include it| | --- | --- | -|23.1.0|`hatchling/1.18.0-GCCcore-12.3.0`
`hatchling/1.18.0-GCCcore-13.2.0`| +|23.1.0|`hatchling/1.18.0-GCCcore-13.2.0`
`hatchling/1.18.0-GCCcore-12.3.0`| ### hatch_vcs |`hatch_vcs` version|hatchling modules that include it| | --- | --- | -|0.3.0|`hatchling/1.18.0-GCCcore-12.3.0`
`hatchling/1.18.0-GCCcore-13.2.0`| +|0.3.0|`hatchling/1.18.0-GCCcore-13.2.0`
`hatchling/1.18.0-GCCcore-12.3.0`| ### hatchling |`hatchling` version|hatchling modules that include it| | --- | --- | -|1.27.0|`hatchling/1.27.0-GCCcore-14.2.0`
`hatchling/1.27.0-GCCcore-14.3.0`| +|1.27.0|`hatchling/1.27.0-GCCcore-14.3.0`
`hatchling/1.27.0-GCCcore-14.2.0`| |1.24.2|`hatchling/1.24.2-GCCcore-13.3.0`| -|1.18.0|`hatchling/1.18.0-GCCcore-12.3.0`
`hatchling/1.18.0-GCCcore-13.2.0`| +|1.18.0|`hatchling/1.18.0-GCCcore-13.2.0`
`hatchling/1.18.0-GCCcore-12.3.0`| ### pathspec |`pathspec` version|hatchling modules that include it| | --- | --- | -|0.12.1|`hatchling/1.24.2-GCCcore-13.3.0`
`hatchling/1.27.0-GCCcore-14.2.0`
`hatchling/1.27.0-GCCcore-14.3.0`| +|0.12.1|`hatchling/1.27.0-GCCcore-14.3.0`
`hatchling/1.27.0-GCCcore-14.2.0`
`hatchling/1.24.2-GCCcore-13.3.0`| |0.11.2|`hatchling/1.18.0-GCCcore-13.2.0`| |0.11.1|`hatchling/1.18.0-GCCcore-12.3.0`| @@ -127,7 +127,7 @@ Overview of extensions included in hatchling installations |`pluggy` version|hatchling modules that include it| | --- | --- | |1.6.0|`hatchling/1.27.0-GCCcore-14.3.0`| -|1.5.0|`hatchling/1.24.2-GCCcore-13.3.0`
`hatchling/1.27.0-GCCcore-14.2.0`| +|1.5.0|`hatchling/1.27.0-GCCcore-14.2.0`
`hatchling/1.24.2-GCCcore-13.3.0`| |1.3.0|`hatchling/1.18.0-GCCcore-13.2.0`| |1.2.0|`hatchling/1.18.0-GCCcore-12.3.0`| From 57f69267a52ed90716c8f78471984a90e78f308d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 1 May 2026 11:58:37 +0200 Subject: [PATCH 10/14] sort by module_version instead to also take toolchain into account --- scripts/available_software/available_software.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/available_software/available_software.py b/scripts/available_software/available_software.py index b23ffe21ef..68bd965e99 100644 --- a/scripts/available_software/available_software.py +++ b/scripts/available_software/available_software.py @@ -183,7 +183,7 @@ def generate_software_page(software_name: str, software_data: dict, path: str) - n_cols = len(table_data) n_rows = 1 - for version in sorted(software_data["versions"], key=lambda x: LooseVersion(x["version"]), reverse=True): + for version in sorted(software_data["versions"], key=lambda x: LooseVersion(x["module"]["module_version"]), reverse=True): cpu_targets = format_cpu_arch_list(version["cpu_arch"]) gpu_targets = format_gpu_arch_list(version["gpu_arch"]) From cb7a0fdd300d16ad7cad594dbe10f642abcbd092 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 1 May 2026 11:59:13 +0200 Subject: [PATCH 11/14] remove newline at end of file --- scripts/available_software/tests/reference_detail/hatchling.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/available_software/tests/reference_detail/hatchling.md b/scripts/available_software/tests/reference_detail/hatchling.md index dd7ee4b175..3615679a5b 100644 --- a/scripts/available_software/tests/reference_detail/hatchling.md +++ b/scripts/available_software/tests/reference_detail/hatchling.md @@ -146,4 +146,4 @@ Overview of extensions included in hatchling installations |`trove_classifiers` version|hatchling modules that include it| | --- | --- | |2023.10.18|`hatchling/1.18.0-GCCcore-13.2.0`| -|2023.5.24|`hatchling/1.18.0-GCCcore-12.3.0`| +|2023.5.24|`hatchling/1.18.0-GCCcore-12.3.0`| \ No newline at end of file From b7b4d661beb9a7fea16d9c830dc851e1447fe6bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 1 May 2026 12:04:43 +0200 Subject: [PATCH 12/14] remove newline, list CUDA version first --- scripts/available_software/tests/reference_detail/ESPResSo.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/available_software/tests/reference_detail/ESPResSo.md b/scripts/available_software/tests/reference_detail/ESPResSo.md index 20fac56b0c..969348cdfc 100644 --- a/scripts/available_software/tests/reference_detail/ESPResSo.md +++ b/scripts/available_software/tests/reference_detail/ESPResSo.md @@ -39,6 +39,6 @@ A software package for performing and analyzing scientific Molecular Dynamics si |ESPResSo version|Supported CPU targets|Supported GPU targets|EESSI version|Module| | --- | --- | --- | --- | --- | |4.2.2|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2023.06|`ESPResSo/4.2.2-foss-2023b`| -|4.2.2|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2023.06|`ESPResSo/4.2.2-foss-2023a`| |4.2.2|`generic`: `aarch64`, `x86_64`
Arm: `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|NVIDIA: `cc70`, `cc80`, `cc90`
|2023.06|`ESPResSo/4.2.2-foss-2023a-CUDA-12.1.1`| -|4.2.1|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2023.06|`ESPResSo/4.2.1-foss-2023a`| +|4.2.2|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2023.06|`ESPResSo/4.2.2-foss-2023a`| +|4.2.1|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2023.06|`ESPResSo/4.2.1-foss-2023a`| \ No newline at end of file From f21242737b09b5d45e5eac8b0c301596e7eebf4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 1 May 2026 12:07:19 +0200 Subject: [PATCH 13/14] split long line --- scripts/available_software/available_software.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/available_software/available_software.py b/scripts/available_software/available_software.py index 68bd965e99..dba2eaa7a8 100644 --- a/scripts/available_software/available_software.py +++ b/scripts/available_software/available_software.py @@ -183,7 +183,9 @@ def generate_software_page(software_name: str, software_data: dict, path: str) - n_cols = len(table_data) n_rows = 1 - for version in sorted(software_data["versions"], key=lambda x: LooseVersion(x["module"]["module_version"]), reverse=True): + for version in sorted( + software_data["versions"], key=lambda x: LooseVersion(x["module"]["module_version"]), reverse=True + ): cpu_targets = format_cpu_arch_list(version["cpu_arch"]) gpu_targets = format_gpu_arch_list(version["gpu_arch"]) From 75adfaa5e20ec8996c758c69a4a5e639ae1ccd49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 1 May 2026 12:08:05 +0200 Subject: [PATCH 14/14] remove newline --- scripts/available_software/tests/reference_detail/PMIx.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/available_software/tests/reference_detail/PMIx.md b/scripts/available_software/tests/reference_detail/PMIx.md index 334840f3d4..05d283e673 100644 --- a/scripts/available_software/tests/reference_detail/PMIx.md +++ b/scripts/available_software/tests/reference_detail/PMIx.md @@ -72,4 +72,4 @@ the desired level of scalability. |5.0.2|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2025.06|`PMIx/5.0.2-GCCcore-13.3.0`| |4.2.6|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2023.06|`PMIx/4.2.6-GCCcore-13.2.0`| |4.2.4|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2023.06|`PMIx/4.2.4-GCCcore-12.3.0`| -|4.2.2|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2023.06|`PMIx/4.2.2-GCCcore-12.2.0`| +|4.2.2|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2023.06|`PMIx/4.2.2-GCCcore-12.2.0`| \ No newline at end of file