diff --git a/.github/workflows/test_overview_available_software.yml b/.github/workflows/test_overview_available_software.yml
index 8b9372a10b..e2e958efd9 100644
--- a/.github/workflows/test_overview_available_software.yml
+++ b/.github/workflows/test_overview_available_software.yml
@@ -31,6 +31,7 @@ jobs:
mkdir -p ${data_dir}
cd ${data_dir}
curl -OL https://eessi.io/api_data/data/eessi_api_metadata_software.json
+ curl -OL https://eessi.io/api_data/data/eessi_api_metadata-riscv_software.json
cd -
python scripts/available_software/available_software.py
@@ -38,7 +39,7 @@ jobs:
# determine whether pull request would need to be opened:
# if detailed software pages in docs/available_software/detail have been updated, then a PR should be opened
- if [[ $(git status --porcelain ./docs/available_software/detail) ]]; then
+ if [[ -n "$(git status --porcelain ./docs/available_software/detail ./docs/available_software_riscv/detail)" ]]; then
echo "Software pages have been changed, PR should be opened"
git diff ./docs/available_software/detail
else
diff --git a/.github/workflows/update_available_software.yml b/.github/workflows/update_available_software.yml
index e4f97008c5..d051a758f3 100644
--- a/.github/workflows/update_available_software.yml
+++ b/.github/workflows/update_available_software.yml
@@ -31,6 +31,8 @@ jobs:
mkdir -p ${data_dir}
cd ${data_dir}
curl -OL https://eessi.io/api_data/data/eessi_api_metadata_software.json
+ # Also download RISC-V data
+ curl -OL https://eessi.io/api_data/data/eessi_api_metadata-riscv_software.json
cd -
python scripts/available_software/available_software.py
@@ -40,7 +42,7 @@ jobs:
# determine whether pull request should be opened:
# if detailed software pages in docs/available_software/detail have been updated, then a PR should be opened
- if [[ $(git status --porcelain ./docs/available_software/detail) ]]; then
+ if [[ -n "$(git status --porcelain ./docs/available_software/detail ./docs/available_software_riscv/detail)" ]]; then
echo "Software pages have been changed, PR should be opened"
echo "json_data_changed=yes" >> $GITHUB_OUTPUT
else
@@ -57,6 +59,7 @@ jobs:
with:
add-paths: |
docs/available_software
+ docs/available_software_riscv
mkdocs.yml
branch: update-software-overview
branch-suffix: timestamp
diff --git a/docs/available_software/index.md b/docs/available_software/index.md
index 900316bfec..6731213bdf 100644
--- a/docs/available_software/index.md
+++ b/docs/available_software/index.md
@@ -5,6 +5,8 @@
Overview of software available in [EESSI's production repository `software.eessi.io`](../repositories/software.eessi.io.md).
+(For an overview of the currently available RISC-V software see the [RISC-V specific available software page](../available_software_riscv/index.md))
+
{{ data.n_software }} unique software projects (+ {{ data.n_extensions }} unique extensions)
diff --git a/docs/available_software/macros.py b/docs/available_software/macros.py
index 9a486a7911..999281fa3a 100644
--- a/docs/available_software/macros.py
+++ b/docs/available_software/macros.py
@@ -10,6 +10,7 @@
from pathlib import Path
EESSI_API_SOFTWARE_JSON_URL = 'https://www.eessi.io/api_data/data/eessi_api_metadata_software.json'
+EESSI_API_SOFTWARE_RISCV_JSON_URL = 'https://www.eessi.io/api_data/data/eessi_api_metadata-riscv_software.json'
CPU_ARCHS = {
'x86_64': ['AMD', 'Intel'],
@@ -27,19 +28,27 @@
def define_env(env):
@env.macro
- def load_json_eessi_software():
+ def load_json_eessi_software(riscv=False):
"""
Load JSON with metadata for software.eessi.io repository,
and return Python dictionary with relevant info to generate software overview in EESSI documentation.
"""
# https://eessi.io/api_data/data/eessi_api_metadata_software.json is expected to be downloaded to docs/available_software/data/
root_dir = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
- json_path = os.path.join(root_dir, 'docs', 'available_software', 'data', 'eessi_api_metadata_software.json')
+ if riscv:
+ data_file='eessi_api_metadata-riscv_software.json'
+ else:
+ data_file='eessi_api_metadata_software.json'
+ json_path = os.path.join(root_dir, 'docs', 'available_software', 'data', data_file)
if os.path.exists(json_path):
with open(json_path) as fp:
data = json.loads(fp.read())
else:
- with urllib.request.urlopen(EESSI_API_SOFTWARE_JSON_URL) as response:
+ if riscv:
+ data_url = EESSI_API_SOFTWARE_RISCV_JSON_URL
+ else:
+ data_url = EESSI_API_SOFTWARE_JSON_URL
+ with urllib.request.urlopen(data_url) as response:
data = json.loads(response.read().decode('utf-8'))
data_software = data['software']
diff --git a/scripts/available_software/tests/detail/.gitkeep b/docs/available_software_riscv/detail/.gitkeep
similarity index 100%
rename from scripts/available_software/tests/detail/.gitkeep
rename to docs/available_software_riscv/detail/.gitkeep
diff --git a/docs/available_software_riscv/index.md b/docs/available_software_riscv/index.md
new file mode 100644
index 0000000000..7b38543998
--- /dev/null
+++ b/docs/available_software_riscv/index.md
@@ -0,0 +1,63 @@
+{% set data = load_json_eessi_software(riscv=True) %}
+{% set software = data.software %}
+
+# Software available for RISC-V in EESSI
+
+Overview of software available in [EESSI's development repository for RISC-V `dev.eessi.io/riscv`](../repositories/dev.eessi.io.md).
+
+{{ data.n_software }} unique software projects (+ {{ data.n_extensions }} unique extensions)
+
+
+
+
+
+
+{% for pkg in software %}
+{% set pkg_slug = pkg.name | replace(' ', '-') %}
+{% if pkg.is_extension -%}
+-
+ {{ pkg.name }}
+ (extension)
+
+
+ {{ pkg.name }} is a {% if pkg.type == "python" -%} Python package{% elif pkg.type == "r" -%}R library{% elif pkg.type == "perl" -%}Perl module{% endif %}
+ that is included as extension in the following software installations:
+
+ {% for parent in pkg.all_parent_names %}
+ {% set parent_slug = parent | replace(' ', '-') %}
+
+ Available in EESSI versions: {% if '2023.06' in pkg.eessi_versions -%}2023.06{% endif %}{% if '2025.06' in pkg.eessi_versions -%}2025.06{% endif %}
+
+ Supported CPU families: {% if 'AMD' in pkg.cpu_families -%}AMD{% endif %}{% if 'Intel' in pkg.cpu_families -%}Intel{% endif %}{% if 'Arm' in pkg.cpu_families -%}Arm{% endif %}{% if 'RISC-V' in pkg.cpu_families -%}RISC-V{% endif %}
+
+ Supported GPU families: {% if pkg.gpu_families == '' -%}(none){% else -%}{% if 'AMD' in pkg.gpu_families -%}AMD{% endif %}{% if 'NVIDIA' in pkg.gpu_families -%}NVIDIA{% endif %}{% endif %}
+
+
+{% endif %}
+{% endfor %}
+
+
+
+---
+
+Last update: {{ data.timestamp }}
diff --git a/mkdocs.yml b/mkdocs.yml
index 698b8f7662..77f70c8fb0 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -23,7 +23,9 @@ nav:
- Software layer: software_layer.md
- Supported CPU targets: software_layer/cpu_targets.md
- Supported GPU targets: software_layer/gpu_targets.md
- - Available software: available_software/index.md
+ - Available software:
+ - Production: available_software/index.md
+ - RISC-V: available_software_riscv/index.md
- Repositories:
- Production:
- Software: repositories/software.eessi.io.md
diff --git a/scripts/available_software/available_software.py b/scripts/available_software/available_software.py
index 9e0c871cee..4bdbb14d21 100644
--- a/scripts/available_software/available_software.py
+++ b/scripts/available_software/available_software.py
@@ -45,6 +45,14 @@ def main():
print("Generating software-specific pages... ", end="", flush=True)
api_data_software_json = os.path.join(path_data_dir, "eessi_api_metadata_software.json")
generate_software_pages(api_data_software_json, os.path.join(target_directory, "detail"))
+
+ print("Done!")
+
+ # Also handle RISC-V
+ print("Generating software-specific pages for RISC-V... ", end="", flush=True)
+ api_data_software_json = os.path.join(path_data_dir, "eessi_api_metadata-riscv_software.json")
+ generate_software_pages(api_data_software_json, os.path.join(target_directory + "_riscv", "detail"))
+
print("Done!")
diff --git a/scripts/available_software/tests/test_dir/data/eessi_api_metadata-riscv_software.json b/scripts/available_software/tests/test_dir/data/eessi_api_metadata-riscv_software.json
new file mode 100644
index 0000000000..04a9fee511
--- /dev/null
+++ b/scripts/available_software/tests/test_dir/data/eessi_api_metadata-riscv_software.json
@@ -0,0 +1,906 @@
+{
+ "timestamp": "2026-03-19T11:41:00.544447Z",
+ "architectures_map": {
+ "2025.06-001": {
+ "aarch64/generic": "aarch64/generic",
+ "aarch64/a64fx": "aarch64/a64fx",
+ "aarch64/neoverse_n1": "aarch64/neoverse_n1",
+ "aarch64/neoverse_v1": "aarch64/neoverse_v1",
+ "aarch64/nvidia/grace": "aarch64/nvidia/grace",
+ "x86_64/generic": "x86_64/generic",
+ "x86_64/amd/zen2": "x86_64/amd/zen2",
+ "x86_64/amd/zen3": "x86_64/amd/zen3",
+ "x86_64/amd/zen4": "x86_64/amd/zen4",
+ "x86_64/intel/haswell": "x86_64/intel/haswell",
+ "x86_64/intel/skylake_avx512": "x86_64/intel/skylake_avx512",
+ "x86_64/intel/sapphirerapids": "x86_64/intel/sapphirerapids",
+ "x86_64/intel/icelake": "x86_64/intel/icelake",
+ "x86_64/intel/cascadelake": "x86_64/intel/cascadelake",
+ "riscv64/generic": "riscv64/generic"
+ }
+ },
+ "gpu_architectures_map": {},
+ "category_details": {},
+ "software": {
+ "ANTLR": {
+ "versions": [
+ {
+ "homepage": "https://www.antlr2.org/",
+ "license": [],
+ "image": "",
+ "categories": [],
+ "identifier": "",
+ "toolchain": {
+ "name": "GCCcore",
+ "version": "14.3.0"
+ },
+ "toolchain_families_compatibility": [
+ "2025b_foss"
+ ],
+ "module": {
+ "full_module_name": "ANTLR/2.7.7-GCCcore-14.3.0",
+ "module_name": "ANTLR",
+ "module_version": "2.7.7-GCCcore-14.3.0"
+ },
+ "required_modules": [
+ {
+ "full_module_name": "EESSI/2025.06",
+ "module_name": "EESSI",
+ "module_version": "2025.06"
+ },
+ {
+ "full_module_name": "GCCcore/14.3.0",
+ "module_name": "GCCcore",
+ "module_version": "14.3.0"
+ },
+ {
+ "full_module_name": "Java/21.0.8",
+ "module_name": "Java",
+ "module_version": "21.0.8"
+ },
+ {
+ "full_module_name": "Java/21",
+ "module_name": "Java",
+ "module_version": "21"
+ },
+ {
+ "full_module_name": "ANTLR/2.7.7-GCCcore-14.3.0",
+ "module_name": "ANTLR",
+ "module_version": "2.7.7-GCCcore-14.3.0"
+ }
+ ],
+ "cpu_arch": [
+ "riscv64/generic"
+ ],
+ "gpu_arch": {},
+ "description": "ANTLR, ANother Tool for Language Recognition, (formerly PCCTS)\n is a language tool that provides a framework for constructing recognizers,\n compilers, and translators from grammatical descriptions containing\n Java, C#, C++, or Python actions.",
+ "version": "2.7.7",
+ "versionsuffix": "",
+ "extensions": []
+ }
+ ],
+ "homepage": "https://www.antlr2.org/",
+ "license": [],
+ "image": "",
+ "categories": [],
+ "identifier": "",
+ "description": "ANTLR, ANother Tool for Language Recognition, (formerly PCCTS)\n is a language tool that provides a framework for constructing recognizers,\n compilers, and translators from grammatical descriptions containing\n Java, C#, C++, or Python actions."
+ },
+ "Abseil": {
+ "versions": [
+ {
+ "homepage": "https://abseil.io/",
+ "license": [],
+ "image": "",
+ "categories": [],
+ "identifier": "",
+ "toolchain": {
+ "name": "GCCcore",
+ "version": "14.3.0"
+ },
+ "toolchain_families_compatibility": [
+ "2025b_foss"
+ ],
+ "module": {
+ "full_module_name": "Abseil/20250512.1-GCCcore-14.3.0",
+ "module_name": "Abseil",
+ "module_version": "20250512.1-GCCcore-14.3.0"
+ },
+ "required_modules": [
+ {
+ "full_module_name": "EESSI/2025.06",
+ "module_name": "EESSI",
+ "module_version": "2025.06"
+ },
+ {
+ "full_module_name": "GCCcore/14.3.0",
+ "module_name": "GCCcore",
+ "module_version": "14.3.0"
+ },
+ {
+ "full_module_name": "Abseil/20250512.1-GCCcore-14.3.0",
+ "module_name": "Abseil",
+ "module_version": "20250512.1-GCCcore-14.3.0"
+ }
+ ],
+ "cpu_arch": [
+ "riscv64/generic"
+ ],
+ "gpu_arch": {},
+ "description": "Abseil is an open-source collection of C++ library code designed to augment the\nC++ standard library. The Abseil library code is collected from Google's own\nC++ code base, has been extensively tested and used in production, and is the\nsame code we depend on in our daily coding lives.",
+ "version": "20250512.1",
+ "versionsuffix": "",
+ "extensions": []
+ }
+ ],
+ "homepage": "https://abseil.io/",
+ "license": [],
+ "image": "",
+ "categories": [],
+ "identifier": "",
+ "description": "Abseil is an open-source collection of C++ library code designed to augment the\nC++ standard library. The Abseil library code is collected from Google's own\nC++ code base, has been extensively tested and used in production, and is the\nsame code we depend on in our daily coding lives."
+ },
+ "Automake": {
+ "versions": [
+ {
+ "homepage": "https://www.gnu.org/software/automake/automake.html",
+ "license": [],
+ "image": "",
+ "categories": [],
+ "identifier": "",
+ "toolchain": {
+ "name": "GCCcore",
+ "version": "14.2.0"
+ },
+ "toolchain_families_compatibility": [
+ "2025a_foss"
+ ],
+ "module": {
+ "full_module_name": "Automake/1.17-GCCcore-14.2.0",
+ "module_name": "Automake",
+ "module_version": "1.17-GCCcore-14.2.0"
+ },
+ "required_modules": [
+ {
+ "full_module_name": "EESSI/2025.06",
+ "module_name": "EESSI",
+ "module_version": "2025.06"
+ },
+ {
+ "full_module_name": "GCCcore/14.2.0",
+ "module_name": "GCCcore",
+ "module_version": "14.2.0"
+ },
+ {
+ "full_module_name": "M4/1.4.19-GCCcore-14.2.0",
+ "module_name": "M4",
+ "module_version": "1.4.19-GCCcore-14.2.0"
+ },
+ {
+ "full_module_name": "Perl/5.40.0-GCCcore-14.2.0",
+ "module_name": "Perl",
+ "module_version": "5.40.0-GCCcore-14.2.0"
+ },
+ {
+ "full_module_name": "Autoconf/2.72-GCCcore-14.2.0",
+ "module_name": "Autoconf",
+ "module_version": "2.72-GCCcore-14.2.0"
+ },
+ {
+ "full_module_name": "Automake/1.17-GCCcore-14.2.0",
+ "module_name": "Automake",
+ "module_version": "1.17-GCCcore-14.2.0"
+ }
+ ],
+ "cpu_arch": [
+ "riscv64/generic"
+ ],
+ "gpu_arch": {},
+ "description": "Automake: GNU Standards-compliant Makefile generator",
+ "version": "1.17",
+ "versionsuffix": "",
+ "extensions": []
+ },
+ {
+ "homepage": "https://www.gnu.org/software/automake/automake.html",
+ "license": [],
+ "image": "",
+ "categories": [],
+ "identifier": "",
+ "toolchain": {
+ "name": "GCCcore",
+ "version": "14.3.0"
+ },
+ "toolchain_families_compatibility": [
+ "2025b_foss"
+ ],
+ "module": {
+ "full_module_name": "Automake/1.18-GCCcore-14.3.0",
+ "module_name": "Automake",
+ "module_version": "1.18-GCCcore-14.3.0"
+ },
+ "required_modules": [
+ {
+ "full_module_name": "EESSI/2025.06",
+ "module_name": "EESSI",
+ "module_version": "2025.06"
+ },
+ {
+ "full_module_name": "GCCcore/14.3.0",
+ "module_name": "GCCcore",
+ "module_version": "14.3.0"
+ },
+ {
+ "full_module_name": "M4/1.4.20-GCCcore-14.3.0",
+ "module_name": "M4",
+ "module_version": "1.4.20-GCCcore-14.3.0"
+ },
+ {
+ "full_module_name": "Perl/5.40.2-GCCcore-14.3.0",
+ "module_name": "Perl",
+ "module_version": "5.40.2-GCCcore-14.3.0"
+ },
+ {
+ "full_module_name": "Autoconf/2.72-GCCcore-14.3.0",
+ "module_name": "Autoconf",
+ "module_version": "2.72-GCCcore-14.3.0"
+ },
+ {
+ "full_module_name": "Automake/1.18-GCCcore-14.3.0",
+ "module_name": "Automake",
+ "module_version": "1.18-GCCcore-14.3.0"
+ }
+ ],
+ "cpu_arch": [
+ "riscv64/generic"
+ ],
+ "gpu_arch": {},
+ "description": "Automake: GNU Standards-compliant Makefile generator",
+ "version": "1.18",
+ "versionsuffix": "",
+ "extensions": []
+ }
+ ],
+ "homepage": "https://www.gnu.org/software/automake/automake.html",
+ "license": [],
+ "image": "",
+ "categories": [],
+ "identifier": "",
+ "description": "Automake: GNU Standards-compliant Makefile generator"
+ },
+ "BCFtools": {
+ "versions": [
+ {
+ "homepage": "https://www.htslib.org/",
+ "license": [],
+ "image": "",
+ "categories": [],
+ "identifier": "",
+ "toolchain": {
+ "name": "GCC",
+ "version": "14.3.0"
+ },
+ "toolchain_families_compatibility": [
+ "2025b_foss"
+ ],
+ "module": {
+ "full_module_name": "BCFtools/1.22-GCC-14.3.0",
+ "module_name": "BCFtools",
+ "module_version": "1.22-GCC-14.3.0"
+ },
+ "required_modules": [
+ {
+ "full_module_name": "EESSI/2025.06",
+ "module_name": "EESSI",
+ "module_version": "2025.06"
+ },
+ {
+ "full_module_name": "GCCcore/14.3.0",
+ "module_name": "GCCcore",
+ "module_version": "14.3.0"
+ },
+ {
+ "full_module_name": "GCC/14.3.0",
+ "module_name": "GCC",
+ "module_version": "14.3.0"
+ },
+ {
+ "full_module_name": "libidn2/2.3.8-GCCcore-14.3.0",
+ "module_name": "libidn2",
+ "module_version": "2.3.8-GCCcore-14.3.0"
+ },
+ {
+ "full_module_name": "libiconv/1.18-GCCcore-14.3.0",
+ "module_name": "libiconv",
+ "module_version": "1.18-GCCcore-14.3.0"
+ },
+ {
+ "full_module_name": "libunistring/1.3-GCCcore-14.3.0",
+ "module_name": "libunistring",
+ "module_version": "1.3-GCCcore-14.3.0"
+ },
+ {
+ "full_module_name": "libpsl/0.21.5-GCCcore-14.3.0",
+ "module_name": "libpsl",
+ "module_version": "0.21.5-GCCcore-14.3.0"
+ },
+ {
+ "full_module_name": "OpenSSL/3",
+ "module_name": "OpenSSL",
+ "module_version": "3"
+ },
+ {
+ "full_module_name": "cURL/8.14.1-GCCcore-14.3.0",
+ "module_name": "cURL",
+ "module_version": "8.14.1-GCCcore-14.3.0"
+ },
+ {
+ "full_module_name": "HTSlib/1.22.1-GCC-14.3.0",
+ "module_name": "HTSlib",
+ "module_version": "1.22.1-GCC-14.3.0"
+ },
+ {
+ "full_module_name": "GSL/2.8-GCC-14.3.0",
+ "module_name": "GSL",
+ "module_version": "2.8-GCC-14.3.0"
+ },
+ {
+ "full_module_name": "BCFtools/1.22-GCC-14.3.0",
+ "module_name": "BCFtools",
+ "module_version": "1.22-GCC-14.3.0"
+ }
+ ],
+ "cpu_arch": [
+ "riscv64/generic"
+ ],
+ "gpu_arch": {},
+ "description": "Samtools is a suite of programs for interacting with high-throughput sequencing data.\n BCFtools - Reading/writing BCF2/VCF/gVCF files and calling/filtering/summarising SNP and short indel sequence\n variants",
+ "version": "1.22",
+ "versionsuffix": "",
+ "extensions": []
+ }
+ ],
+ "homepage": "https://www.htslib.org/",
+ "license": [],
+ "image": "",
+ "categories": [],
+ "identifier": "",
+ "description": "Samtools is a suite of programs for interacting with high-throughput sequencing data.\n BCFtools - Reading/writing BCF2/VCF/gVCF files and calling/filtering/summarising SNP and short indel sequence\n variants"
+ },
+ "BLIS": {
+ "versions": [
+ {
+ "homepage": "https://github.com/flame/blis/",
+ "license": [],
+ "image": "",
+ "categories": [],
+ "identifier": "",
+ "toolchain": {
+ "name": "GCC",
+ "version": "14.2.0"
+ },
+ "toolchain_families_compatibility": [
+ "2025a_foss"
+ ],
+ "module": {
+ "full_module_name": "BLIS/1.1-GCC-14.2.0",
+ "module_name": "BLIS",
+ "module_version": "1.1-GCC-14.2.0"
+ },
+ "required_modules": [
+ {
+ "full_module_name": "EESSI/2025.06",
+ "module_name": "EESSI",
+ "module_version": "2025.06"
+ },
+ {
+ "full_module_name": "GCCcore/14.2.0",
+ "module_name": "GCCcore",
+ "module_version": "14.2.0"
+ },
+ {
+ "full_module_name": "GCC/14.2.0",
+ "module_name": "GCC",
+ "module_version": "14.2.0"
+ },
+ {
+ "full_module_name": "BLIS/1.1-GCC-14.2.0",
+ "module_name": "BLIS",
+ "module_version": "1.1-GCC-14.2.0"
+ }
+ ],
+ "cpu_arch": [
+ "riscv64/generic"
+ ],
+ "gpu_arch": {},
+ "description": "BLIS is a portable software framework for instantiating high-performance\nBLAS-like dense linear algebra libraries.",
+ "version": "1.1",
+ "versionsuffix": "",
+ "extensions": []
+ },
+ {
+ "homepage": "https://github.com/flame/blis/",
+ "license": [],
+ "image": "",
+ "categories": [],
+ "identifier": "",
+ "toolchain": {
+ "name": "GCC",
+ "version": "14.3.0"
+ },
+ "toolchain_families_compatibility": [
+ "2025b_foss"
+ ],
+ "module": {
+ "full_module_name": "BLIS/2.0-GCC-14.3.0",
+ "module_name": "BLIS",
+ "module_version": "2.0-GCC-14.3.0"
+ },
+ "required_modules": [
+ {
+ "full_module_name": "EESSI/2025.06",
+ "module_name": "EESSI",
+ "module_version": "2025.06"
+ },
+ {
+ "full_module_name": "GCCcore/14.3.0",
+ "module_name": "GCCcore",
+ "module_version": "14.3.0"
+ },
+ {
+ "full_module_name": "GCC/14.3.0",
+ "module_name": "GCC",
+ "module_version": "14.3.0"
+ },
+ {
+ "full_module_name": "BLIS/2.0-GCC-14.3.0",
+ "module_name": "BLIS",
+ "module_version": "2.0-GCC-14.3.0"
+ }
+ ],
+ "cpu_arch": [
+ "riscv64/generic"
+ ],
+ "gpu_arch": {},
+ "description": "BLIS is a portable software framework for instantiating high-performance\nBLAS-like dense linear algebra libraries.",
+ "version": "2.0",
+ "versionsuffix": "",
+ "extensions": []
+ }
+ ],
+ "homepage": "https://github.com/flame/blis/",
+ "license": [],
+ "image": "",
+ "categories": [],
+ "identifier": "",
+ "description": "BLIS is a portable software framework for instantiating high-performance\nBLAS-like dense linear algebra libraries."
+ },
+ "BamTools": {
+ "versions": [
+ {
+ "homepage": "https://github.com/pezmaster31/bamtools",
+ "license": [],
+ "image": "",
+ "categories": [],
+ "identifier": "",
+ "toolchain": {
+ "name": "GCC",
+ "version": "14.3.0"
+ },
+ "toolchain_families_compatibility": [
+ "2025b_foss"
+ ],
+ "module": {
+ "full_module_name": "BamTools/2.5.3-GCC-14.3.0",
+ "module_name": "BamTools",
+ "module_version": "2.5.3-GCC-14.3.0"
+ },
+ "required_modules": [
+ {
+ "full_module_name": "EESSI/2025.06",
+ "module_name": "EESSI",
+ "module_version": "2025.06"
+ },
+ {
+ "full_module_name": "GCCcore/14.3.0",
+ "module_name": "GCCcore",
+ "module_version": "14.3.0"
+ },
+ {
+ "full_module_name": "GCC/14.3.0",
+ "module_name": "GCC",
+ "module_version": "14.3.0"
+ },
+ {
+ "full_module_name": "JsonCpp/1.9.6-GCCcore-14.3.0",
+ "module_name": "JsonCpp",
+ "module_version": "1.9.6-GCCcore-14.3.0"
+ },
+ {
+ "full_module_name": "BamTools/2.5.3-GCC-14.3.0",
+ "module_name": "BamTools",
+ "module_version": "2.5.3-GCC-14.3.0"
+ }
+ ],
+ "cpu_arch": [
+ "riscv64/generic"
+ ],
+ "gpu_arch": {},
+ "description": "BamTools provides both a programmer's API and an end-user's toolkit for handling BAM files.",
+ "version": "2.5.3",
+ "versionsuffix": "",
+ "extensions": []
+ }
+ ],
+ "homepage": "https://github.com/pezmaster31/bamtools",
+ "license": [],
+ "image": "",
+ "categories": [],
+ "identifier": "",
+ "description": "BamTools provides both a programmer's API and an end-user's toolkit for handling BAM files."
+ },
+ "hatchling": {
+ "versions": [
+ {
+ "homepage": "https://hatch.pypa.io",
+ "license": [],
+ "image": "",
+ "categories": [],
+ "identifier": "",
+ "toolchain": {
+ "name": "GCCcore",
+ "version": "14.2.0"
+ },
+ "toolchain_families_compatibility": [
+ "2025a_foss"
+ ],
+ "module": {
+ "full_module_name": "hatchling/1.27.0-GCCcore-14.2.0",
+ "module_name": "hatchling",
+ "module_version": "1.27.0-GCCcore-14.2.0"
+ },
+ "required_modules": [
+ {
+ "full_module_name": "EESSI/2025.06",
+ "module_name": "EESSI",
+ "module_version": "2025.06"
+ },
+ {
+ "full_module_name": "GCCcore/14.2.0",
+ "module_name": "GCCcore",
+ "module_version": "14.2.0"
+ },
+ {
+ "full_module_name": "Tcl/8.6.16-GCCcore-14.2.0",
+ "module_name": "Tcl",
+ "module_version": "8.6.16-GCCcore-14.2.0"
+ },
+ {
+ "full_module_name": "SQLite/3.47.2-GCCcore-14.2.0",
+ "module_name": "SQLite",
+ "module_version": "3.47.2-GCCcore-14.2.0"
+ },
+ {
+ "full_module_name": "libffi/3.4.5-GCCcore-14.2.0",
+ "module_name": "libffi",
+ "module_version": "3.4.5-GCCcore-14.2.0"
+ },
+ {
+ "full_module_name": "OpenSSL/3",
+ "module_name": "OpenSSL",
+ "module_version": "3"
+ },
+ {
+ "full_module_name": "Python/3.13.1-GCCcore-14.2.0",
+ "module_name": "Python",
+ "module_version": "3.13.1-GCCcore-14.2.0"
+ },
+ {
+ "full_module_name": "hatchling/1.27.0-GCCcore-14.2.0",
+ "module_name": "hatchling",
+ "module_version": "1.27.0-GCCcore-14.2.0"
+ }
+ ],
+ "cpu_arch": [
+ "riscv64/generic"
+ ],
+ "gpu_arch": {},
+ "description": "Extensible, standards compliant build backend used by Hatch,\na modern, extensible Python project manager.",
+ "version": "1.27.0",
+ "versionsuffix": "",
+ "extensions": [
+ {
+ "type": "python",
+ "name": "pathspec",
+ "version": "0.12.1"
+ },
+ {
+ "type": "python",
+ "name": "pluggy",
+ "version": "1.5.0"
+ },
+ {
+ "type": "python",
+ "name": "editables",
+ "version": "0.5"
+ },
+ {
+ "type": "python",
+ "name": "trove-classifiers",
+ "version": "2025.2.18.16"
+ },
+ {
+ "type": "python",
+ "name": "hatchling",
+ "version": "1.27.0"
+ },
+ {
+ "type": "python",
+ "name": "hatch-vcs",
+ "version": "0.4.0"
+ },
+ {
+ "type": "python",
+ "name": "hatch-fancy-pypi-readme",
+ "version": "24.1.0"
+ },
+ {
+ "type": "python",
+ "name": "hatch-requirements-txt",
+ "version": "0.4.1"
+ },
+ {
+ "type": "python",
+ "name": "hatch-docstring-description",
+ "version": "1.1.1"
+ }
+ ]
+ },
+ {
+ "homepage": "https://hatch.pypa.io",
+ "license": [],
+ "image": "",
+ "categories": [],
+ "identifier": "",
+ "toolchain": {
+ "name": "GCCcore",
+ "version": "14.3.0"
+ },
+ "toolchain_families_compatibility": [
+ "2025b_foss"
+ ],
+ "module": {
+ "full_module_name": "hatchling/1.27.0-GCCcore-14.3.0",
+ "module_name": "hatchling",
+ "module_version": "1.27.0-GCCcore-14.3.0"
+ },
+ "required_modules": [
+ {
+ "full_module_name": "EESSI/2025.06",
+ "module_name": "EESSI",
+ "module_version": "2025.06"
+ },
+ {
+ "full_module_name": "GCCcore/14.3.0",
+ "module_name": "GCCcore",
+ "module_version": "14.3.0"
+ },
+ {
+ "full_module_name": "libtommath/1.3.0-GCCcore-14.3.0",
+ "module_name": "libtommath",
+ "module_version": "1.3.0-GCCcore-14.3.0"
+ },
+ {
+ "full_module_name": "Tcl/9.0.1-GCCcore-14.3.0",
+ "module_name": "Tcl",
+ "module_version": "9.0.1-GCCcore-14.3.0"
+ },
+ {
+ "full_module_name": "SQLite/3.50.1-GCCcore-14.3.0",
+ "module_name": "SQLite",
+ "module_version": "3.50.1-GCCcore-14.3.0"
+ },
+ {
+ "full_module_name": "libffi/3.5.1-GCCcore-14.3.0",
+ "module_name": "libffi",
+ "module_version": "3.5.1-GCCcore-14.3.0"
+ },
+ {
+ "full_module_name": "OpenSSL/3",
+ "module_name": "OpenSSL",
+ "module_version": "3"
+ },
+ {
+ "full_module_name": "Python/3.13.5-GCCcore-14.3.0",
+ "module_name": "Python",
+ "module_version": "3.13.5-GCCcore-14.3.0"
+ },
+ {
+ "full_module_name": "hatchling/1.27.0-GCCcore-14.3.0",
+ "module_name": "hatchling",
+ "module_version": "1.27.0-GCCcore-14.3.0"
+ }
+ ],
+ "cpu_arch": [
+ "riscv64/generic"
+ ],
+ "gpu_arch": {},
+ "description": "Extensible, standards compliant build backend used by Hatch,\na modern, extensible Python project manager.",
+ "version": "1.27.0",
+ "versionsuffix": "",
+ "extensions": [
+ {
+ "type": "python",
+ "name": "pathspec",
+ "version": "0.12.1"
+ },
+ {
+ "type": "python",
+ "name": "pluggy",
+ "version": "1.6.0"
+ },
+ {
+ "type": "python",
+ "name": "editables",
+ "version": "0.5"
+ },
+ {
+ "type": "python",
+ "name": "trove-classifiers",
+ "version": "2025.5.9.12"
+ },
+ {
+ "type": "python",
+ "name": "hatchling",
+ "version": "1.27.0"
+ },
+ {
+ "type": "python",
+ "name": "hatch-vcs",
+ "version": "0.5.0"
+ },
+ {
+ "type": "python",
+ "name": "hatch-fancy-pypi-readme",
+ "version": "25.1.0"
+ },
+ {
+ "type": "python",
+ "name": "hatch-requirements-txt",
+ "version": "0.4.1"
+ },
+ {
+ "type": "python",
+ "name": "hatch-docstring-description",
+ "version": "1.1.1"
+ }
+ ]
+ }
+ ],
+ "homepage": "https://hatch.pypa.io",
+ "license": [],
+ "image": "",
+ "categories": [],
+ "identifier": "",
+ "description": "Extensible, standards compliant build backend used by Hatch,\na modern, extensible Python project manager."
+ },
+ "zstd": {
+ "versions": [
+ {
+ "homepage": "https://facebook.github.io/zstd",
+ "license": [],
+ "image": "",
+ "categories": [],
+ "identifier": "",
+ "toolchain": {
+ "name": "GCCcore",
+ "version": "14.2.0"
+ },
+ "toolchain_families_compatibility": [
+ "2025a_foss"
+ ],
+ "module": {
+ "full_module_name": "zstd/1.5.6-GCCcore-14.2.0",
+ "module_name": "zstd",
+ "module_version": "1.5.6-GCCcore-14.2.0"
+ },
+ "required_modules": [
+ {
+ "full_module_name": "EESSI/2025.06",
+ "module_name": "EESSI",
+ "module_version": "2025.06"
+ },
+ {
+ "full_module_name": "GCCcore/14.2.0",
+ "module_name": "GCCcore",
+ "module_version": "14.2.0"
+ },
+ {
+ "full_module_name": "gzip/1.13-GCCcore-14.2.0",
+ "module_name": "gzip",
+ "module_version": "1.13-GCCcore-14.2.0"
+ },
+ {
+ "full_module_name": "lz4/1.10.0-GCCcore-14.2.0",
+ "module_name": "lz4",
+ "module_version": "1.10.0-GCCcore-14.2.0"
+ },
+ {
+ "full_module_name": "zstd/1.5.6-GCCcore-14.2.0",
+ "module_name": "zstd",
+ "module_version": "1.5.6-GCCcore-14.2.0"
+ }
+ ],
+ "cpu_arch": [
+ "riscv64/generic"
+ ],
+ "gpu_arch": {},
+ "description": "Zstandard is a real-time compression algorithm, providing high compression ratios.\n It offers a very wide range of compression/speed trade-off, while being backed by a very fast decoder.\n It also offers a special mode for small data, called dictionary compression, and can create dictionaries\n from any sample set.",
+ "version": "1.5.6",
+ "versionsuffix": "",
+ "extensions": []
+ },
+ {
+ "homepage": "https://facebook.github.io/zstd",
+ "license": [],
+ "image": "",
+ "categories": [],
+ "identifier": "",
+ "toolchain": {
+ "name": "GCCcore",
+ "version": "14.3.0"
+ },
+ "toolchain_families_compatibility": [
+ "2025b_foss"
+ ],
+ "module": {
+ "full_module_name": "zstd/1.5.7-GCCcore-14.3.0",
+ "module_name": "zstd",
+ "module_version": "1.5.7-GCCcore-14.3.0"
+ },
+ "required_modules": [
+ {
+ "full_module_name": "EESSI/2025.06",
+ "module_name": "EESSI",
+ "module_version": "2025.06"
+ },
+ {
+ "full_module_name": "GCCcore/14.3.0",
+ "module_name": "GCCcore",
+ "module_version": "14.3.0"
+ },
+ {
+ "full_module_name": "gzip/1.14-GCCcore-14.3.0",
+ "module_name": "gzip",
+ "module_version": "1.14-GCCcore-14.3.0"
+ },
+ {
+ "full_module_name": "lz4/1.10.0-GCCcore-14.3.0",
+ "module_name": "lz4",
+ "module_version": "1.10.0-GCCcore-14.3.0"
+ },
+ {
+ "full_module_name": "zstd/1.5.7-GCCcore-14.3.0",
+ "module_name": "zstd",
+ "module_version": "1.5.7-GCCcore-14.3.0"
+ }
+ ],
+ "cpu_arch": [
+ "riscv64/generic"
+ ],
+ "gpu_arch": {},
+ "description": "Zstandard is a real-time compression algorithm, providing high compression ratios.\n It offers a very wide range of compression/speed trade-off, while being backed by a very fast decoder.\n It also offers a special mode for small data, called dictionary compression, and can create dictionaries\n from any sample set.",
+ "version": "1.5.7",
+ "versionsuffix": "",
+ "extensions": []
+ }
+ ],
+ "homepage": "https://facebook.github.io/zstd",
+ "license": [],
+ "image": "",
+ "categories": [],
+ "identifier": "",
+ "description": "Zstandard is a real-time compression algorithm, providing high compression ratios.\n It offers a very wide range of compression/speed trade-off, while being backed by a very fast decoder.\n It also offers a special mode for small data, called dictionary compression, and can create dictionaries\n from any sample set."
+ }
+ }
+}
diff --git a/scripts/available_software/tests/data/eessi_api_metadata_software.json b/scripts/available_software/tests/test_dir/data/eessi_api_metadata_software.json
similarity index 100%
rename from scripts/available_software/tests/data/eessi_api_metadata_software.json
rename to scripts/available_software/tests/test_dir/data/eessi_api_metadata_software.json
diff --git a/scripts/available_software/tests/test_dir/detail/.gitkeep b/scripts/available_software/tests/test_dir/detail/.gitkeep
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/scripts/available_software/tests/reference_detail/CUDA-Samples.md b/scripts/available_software/tests/test_dir/reference_detail/CUDA-Samples.md
similarity index 100%
rename from scripts/available_software/tests/reference_detail/CUDA-Samples.md
rename to scripts/available_software/tests/test_dir/reference_detail/CUDA-Samples.md
diff --git a/scripts/available_software/tests/reference_detail/ESPResSo.md b/scripts/available_software/tests/test_dir/reference_detail/ESPResSo.md
similarity index 100%
rename from scripts/available_software/tests/reference_detail/ESPResSo.md
rename to scripts/available_software/tests/test_dir/reference_detail/ESPResSo.md
diff --git a/scripts/available_software/tests/reference_detail/PMIx.md b/scripts/available_software/tests/test_dir/reference_detail/PMIx.md
similarity index 100%
rename from scripts/available_software/tests/reference_detail/PMIx.md
rename to scripts/available_software/tests/test_dir/reference_detail/PMIx.md
diff --git a/scripts/available_software/tests/reference_detail/Salmon.md b/scripts/available_software/tests/test_dir/reference_detail/Salmon.md
similarity index 100%
rename from scripts/available_software/tests/reference_detail/Salmon.md
rename to scripts/available_software/tests/test_dir/reference_detail/Salmon.md
diff --git a/scripts/available_software/tests/reference_detail/hatchling.md b/scripts/available_software/tests/test_dir/reference_detail/hatchling.md
similarity index 100%
rename from scripts/available_software/tests/reference_detail/hatchling.md
rename to scripts/available_software/tests/test_dir/reference_detail/hatchling.md
diff --git a/scripts/available_software/tests/reference_detail/xterm.md b/scripts/available_software/tests/test_dir/reference_detail/xterm.md
similarity index 100%
rename from scripts/available_software/tests/reference_detail/xterm.md
rename to scripts/available_software/tests/test_dir/reference_detail/xterm.md
diff --git a/scripts/available_software/tests/test_dir_riscv/detail/.gitkeep b/scripts/available_software/tests/test_dir_riscv/detail/.gitkeep
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/scripts/available_software/tests/test_dir_riscv/reference_detail/ANTLR.md b/scripts/available_software/tests/test_dir_riscv/reference_detail/ANTLR.md
new file mode 100644
index 0000000000..dd65b5cef3
--- /dev/null
+++ b/scripts/available_software/tests/test_dir_riscv/reference_detail/ANTLR.md
@@ -0,0 +1,46 @@
+---
+json_ld:
+ '@context': https://schema.org
+ '@type': SoftwareApplication
+ applicationCategory: DeveloperApplication
+ description: "ANTLR, ANother Tool for Language Recognition, (formerly PCCTS)\n is\
+ \ a language tool that provides a framework for constructing recognizers,\n compilers,\
+ \ and translators from grammatical descriptions containing\n Java, C#, C++, or\
+ \ Python actions."
+ license: Not confirmed
+ name: ANTLR
+ offers:
+ '@type': Offer
+ price: 0
+ operatingSystem: LINUX
+ review:
+ '@type': Review
+ author:
+ '@type': Organization
+ name: EESSI
+ reviewBody: Application has been successfully made available on all architectures
+ supported by EESSI
+ reviewRating:
+ '@type': Rating
+ ratingValue: 5
+ softwareRequirements: See https://www.eessi.io/docs/ for how to make EESSI available
+ on your system
+ softwareVersion: '[''2.7.7'']'
+ url: https://www.antlr2.org/
+---
+# ANTLR
+
+
+ANTLR, ANother Tool for Language Recognition, (formerly PCCTS)
+ is a language tool that provides a framework for constructing recognizers,
+ compilers, and translators from grammatical descriptions containing
+ Java, C#, C++, or Python actions.
+
+homepage: [https://www.antlr2.org/](https://www.antlr2.org/)
+
+## Available installations
+
+
+|ANTLR version|Supported CPU targets|Supported GPU targets|EESSI version|Module|
+| --- | --- | --- | --- | --- |
+|2.7.7|`generic`: `riscv64` Arm: AMD: Intel: |*(none)*|2025.06|`ANTLR/2.7.7-GCCcore-14.3.0`|
\ No newline at end of file
diff --git a/scripts/available_software/tests/test_dir_riscv/reference_detail/Abseil.md b/scripts/available_software/tests/test_dir_riscv/reference_detail/Abseil.md
new file mode 100644
index 0000000000..9cd730c41e
--- /dev/null
+++ b/scripts/available_software/tests/test_dir_riscv/reference_detail/Abseil.md
@@ -0,0 +1,50 @@
+---
+json_ld:
+ '@context': https://schema.org
+ '@type': SoftwareApplication
+ applicationCategory: DeveloperApplication
+ description: 'Abseil is an open-source collection of C++ library code designed to
+ augment the
+
+ C++ standard library. The Abseil library code is collected from Google''s own
+
+ C++ code base, has been extensively tested and used in production, and is the
+
+ same code we depend on in our daily coding lives.'
+ license: Not confirmed
+ name: Abseil
+ offers:
+ '@type': Offer
+ price: 0
+ operatingSystem: LINUX
+ review:
+ '@type': Review
+ author:
+ '@type': Organization
+ name: EESSI
+ reviewBody: Application has been successfully made available on all architectures
+ supported by EESSI
+ reviewRating:
+ '@type': Rating
+ ratingValue: 5
+ softwareRequirements: See https://www.eessi.io/docs/ for how to make EESSI available
+ on your system
+ softwareVersion: '[''20250512.1'']'
+ url: https://abseil.io/
+---
+# Abseil
+
+
+Abseil is an open-source collection of C++ library code designed to augment the
+C++ standard library. The Abseil library code is collected from Google's own
+C++ code base, has been extensively tested and used in production, and is the
+same code we depend on in our daily coding lives.
+
+homepage: [https://abseil.io/](https://abseil.io/)
+
+## Available installations
+
+
+|Abseil version|Supported CPU targets|Supported GPU targets|EESSI version|Module|
+| --- | --- | --- | --- | --- |
+|20250512.1|`generic`: `riscv64` Arm: AMD: Intel: |*(none)*|2025.06|`Abseil/20250512.1-GCCcore-14.3.0`|
\ No newline at end of file
diff --git a/scripts/available_software/tests/test_dir_riscv/reference_detail/Automake.md b/scripts/available_software/tests/test_dir_riscv/reference_detail/Automake.md
new file mode 100644
index 0000000000..dc2d7415b2
--- /dev/null
+++ b/scripts/available_software/tests/test_dir_riscv/reference_detail/Automake.md
@@ -0,0 +1,41 @@
+---
+json_ld:
+ '@context': https://schema.org
+ '@type': SoftwareApplication
+ applicationCategory: DeveloperApplication
+ description: 'Automake: GNU Standards-compliant Makefile generator'
+ license: Not confirmed
+ name: Automake
+ offers:
+ '@type': Offer
+ price: 0
+ operatingSystem: LINUX
+ review:
+ '@type': Review
+ author:
+ '@type': Organization
+ name: EESSI
+ reviewBody: Application has been successfully made available on all architectures
+ supported by EESSI
+ reviewRating:
+ '@type': Rating
+ ratingValue: 5
+ softwareRequirements: See https://www.eessi.io/docs/ for how to make EESSI available
+ on your system
+ softwareVersion: '[''1.18'', ''1.17'']'
+ url: https://www.gnu.org/software/automake/automake.html
+---
+# Automake
+
+
+Automake: GNU Standards-compliant Makefile generator
+
+homepage: [https://www.gnu.org/software/automake/automake.html](https://www.gnu.org/software/automake/automake.html)
+
+## Available installations
+
+
+|Automake version|Supported CPU targets|Supported GPU targets|EESSI version|Module|
+| --- | --- | --- | --- | --- |
+|1.17|`generic`: `riscv64` Arm: AMD: Intel: |*(none)*|2025.06|`Automake/1.17-GCCcore-14.2.0`|
+|1.18|`generic`: `riscv64` Arm: AMD: Intel: |*(none)*|2025.06|`Automake/1.18-GCCcore-14.3.0`|
\ No newline at end of file
diff --git a/scripts/available_software/tests/test_dir_riscv/reference_detail/BCFtools.md b/scripts/available_software/tests/test_dir_riscv/reference_detail/BCFtools.md
new file mode 100644
index 0000000000..02b0ab704e
--- /dev/null
+++ b/scripts/available_software/tests/test_dir_riscv/reference_detail/BCFtools.md
@@ -0,0 +1,44 @@
+---
+json_ld:
+ '@context': https://schema.org
+ '@type': SoftwareApplication
+ applicationCategory: DeveloperApplication
+ description: "Samtools is a suite of programs for interacting with high-throughput\
+ \ sequencing data.\n BCFtools - Reading/writing BCF2/VCF/gVCF files and calling/filtering/summarising\
+ \ SNP and short indel sequence\n variants"
+ license: Not confirmed
+ name: BCFtools
+ offers:
+ '@type': Offer
+ price: 0
+ operatingSystem: LINUX
+ review:
+ '@type': Review
+ author:
+ '@type': Organization
+ name: EESSI
+ reviewBody: Application has been successfully made available on all architectures
+ supported by EESSI
+ reviewRating:
+ '@type': Rating
+ ratingValue: 5
+ softwareRequirements: See https://www.eessi.io/docs/ for how to make EESSI available
+ on your system
+ softwareVersion: '[''1.22'']'
+ url: https://www.htslib.org/
+---
+# BCFtools
+
+
+Samtools is a suite of programs for interacting with high-throughput sequencing data.
+ BCFtools - Reading/writing BCF2/VCF/gVCF files and calling/filtering/summarising SNP and short indel sequence
+ variants
+
+homepage: [https://www.htslib.org/](https://www.htslib.org/)
+
+## Available installations
+
+
+|BCFtools version|Supported CPU targets|Supported GPU targets|EESSI version|Module|
+| --- | --- | --- | --- | --- |
+|1.22|`generic`: `riscv64` Arm: AMD: Intel: |*(none)*|2025.06|`BCFtools/1.22-GCC-14.3.0`|
\ No newline at end of file
diff --git a/scripts/available_software/tests/test_dir_riscv/reference_detail/BLIS.md b/scripts/available_software/tests/test_dir_riscv/reference_detail/BLIS.md
new file mode 100644
index 0000000000..995b826881
--- /dev/null
+++ b/scripts/available_software/tests/test_dir_riscv/reference_detail/BLIS.md
@@ -0,0 +1,44 @@
+---
+json_ld:
+ '@context': https://schema.org
+ '@type': SoftwareApplication
+ applicationCategory: DeveloperApplication
+ description: 'BLIS is a portable software framework for instantiating high-performance
+
+ BLAS-like dense linear algebra libraries.'
+ license: Not confirmed
+ name: BLIS
+ offers:
+ '@type': Offer
+ price: 0
+ operatingSystem: LINUX
+ review:
+ '@type': Review
+ author:
+ '@type': Organization
+ name: EESSI
+ reviewBody: Application has been successfully made available on all architectures
+ supported by EESSI
+ reviewRating:
+ '@type': Rating
+ ratingValue: 5
+ softwareRequirements: See https://www.eessi.io/docs/ for how to make EESSI available
+ on your system
+ softwareVersion: '[''2.0'', ''1.1'']'
+ url: https://github.com/flame/blis/
+---
+# BLIS
+
+
+BLIS is a portable software framework for instantiating high-performance
+BLAS-like dense linear algebra libraries.
+
+homepage: [https://github.com/flame/blis/](https://github.com/flame/blis/)
+
+## Available installations
+
+
+|BLIS version|Supported CPU targets|Supported GPU targets|EESSI version|Module|
+| --- | --- | --- | --- | --- |
+|1.1|`generic`: `riscv64` Arm: AMD: Intel: |*(none)*|2025.06|`BLIS/1.1-GCC-14.2.0`|
+|2.0|`generic`: `riscv64` Arm: AMD: Intel: |*(none)*|2025.06|`BLIS/2.0-GCC-14.3.0`|
\ No newline at end of file
diff --git a/scripts/available_software/tests/test_dir_riscv/reference_detail/BamTools.md b/scripts/available_software/tests/test_dir_riscv/reference_detail/BamTools.md
new file mode 100644
index 0000000000..d6d85f06d1
--- /dev/null
+++ b/scripts/available_software/tests/test_dir_riscv/reference_detail/BamTools.md
@@ -0,0 +1,41 @@
+---
+json_ld:
+ '@context': https://schema.org
+ '@type': SoftwareApplication
+ applicationCategory: DeveloperApplication
+ description: BamTools provides both a programmer's API and an end-user's toolkit
+ for handling BAM files.
+ license: Not confirmed
+ name: BamTools
+ offers:
+ '@type': Offer
+ price: 0
+ operatingSystem: LINUX
+ review:
+ '@type': Review
+ author:
+ '@type': Organization
+ name: EESSI
+ reviewBody: Application has been successfully made available on all architectures
+ supported by EESSI
+ reviewRating:
+ '@type': Rating
+ ratingValue: 5
+ softwareRequirements: See https://www.eessi.io/docs/ for how to make EESSI available
+ on your system
+ softwareVersion: '[''2.5.3'']'
+ url: https://github.com/pezmaster31/bamtools
+---
+# BamTools
+
+
+BamTools provides both a programmer's API and an end-user's toolkit for handling BAM files.
+
+homepage: [https://github.com/pezmaster31/bamtools](https://github.com/pezmaster31/bamtools)
+
+## Available installations
+
+
+|BamTools version|Supported CPU targets|Supported GPU targets|EESSI version|Module|
+| --- | --- | --- | --- | --- |
+|2.5.3|`generic`: `riscv64` Arm: AMD: Intel: |*(none)*|2025.06|`BamTools/2.5.3-GCC-14.3.0`|
\ No newline at end of file
diff --git a/scripts/available_software/tests/test_dir_riscv/reference_detail/hatchling.md b/scripts/available_software/tests/test_dir_riscv/reference_detail/hatchling.md
new file mode 100644
index 0000000000..f270c887e1
--- /dev/null
+++ b/scripts/available_software/tests/test_dir_riscv/reference_detail/hatchling.md
@@ -0,0 +1,116 @@
+---
+json_ld:
+ '@context': https://schema.org
+ '@type': SoftwareApplication
+ applicationCategory: DeveloperApplication
+ description: 'Extensible, standards compliant build backend used by Hatch,
+
+ a modern, extensible Python project manager.'
+ license: Not confirmed
+ name: hatchling
+ offers:
+ '@type': Offer
+ price: 0
+ operatingSystem: LINUX
+ review:
+ '@type': Review
+ author:
+ '@type': Organization
+ name: EESSI
+ reviewBody: Application has been successfully made available on all architectures
+ supported by EESSI
+ reviewRating:
+ '@type': Rating
+ ratingValue: 5
+ softwareRequirements: See https://www.eessi.io/docs/ for how to make EESSI available
+ on your system
+ softwareVersion: '[''1.27.0'']'
+ url: https://hatch.pypa.io
+---
+# hatchling
+
+
+Extensible, standards compliant build backend used by Hatch,
+a modern, extensible Python project manager.
+
+homepage: [https://hatch.pypa.io](https://hatch.pypa.io)
+
+## Available installations
+
+
+|hatchling version|Supported CPU targets|Supported GPU targets|EESSI version|Module|
+| --- | --- | --- | --- | --- |
+|1.27.0|`generic`: `riscv64` Arm: AMD: Intel: |*(none)*|2025.06|`hatchling/1.27.0-GCCcore-14.2.0`|
+|1.27.0|`generic`: `riscv64` Arm: AMD: Intel: |*(none)*|2025.06|`hatchling/1.27.0-GCCcore-14.3.0`|
+
+## Extensions
+
+Overview of extensions included in hatchling installations
+
+
+### editables
+
+
+|`editables` version|hatchling modules that include it|
+| --- | --- |
+|0.5|`hatchling/1.27.0-GCCcore-14.2.0` `hatchling/1.27.0-GCCcore-14.3.0`|
+
+### hatch-docstring-description
+
+
+|`hatch-docstring-description` version|hatchling modules that include it|
+| --- | --- |
+|1.1.1|`hatchling/1.27.0-GCCcore-14.2.0` `hatchling/1.27.0-GCCcore-14.3.0`|
+
+### hatch-fancy-pypi-readme
+
+
+|`hatch-fancy-pypi-readme` version|hatchling modules that include it|
+| --- | --- |
+|24.1.0|`hatchling/1.27.0-GCCcore-14.2.0`|
+|25.1.0|`hatchling/1.27.0-GCCcore-14.3.0`|
+
+### hatch-requirements-txt
+
+
+|`hatch-requirements-txt` version|hatchling modules that include it|
+| --- | --- |
+|0.4.1|`hatchling/1.27.0-GCCcore-14.2.0` `hatchling/1.27.0-GCCcore-14.3.0`|
+
+### hatch-vcs
+
+
+|`hatch-vcs` version|hatchling modules that include it|
+| --- | --- |
+|0.4.0|`hatchling/1.27.0-GCCcore-14.2.0`|
+|0.5.0|`hatchling/1.27.0-GCCcore-14.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`|
+
+### pathspec
+
+
+|`pathspec` version|hatchling modules that include it|
+| --- | --- |
+|0.12.1|`hatchling/1.27.0-GCCcore-14.2.0` `hatchling/1.27.0-GCCcore-14.3.0`|
+
+### pluggy
+
+
+|`pluggy` version|hatchling modules that include it|
+| --- | --- |
+|1.5.0|`hatchling/1.27.0-GCCcore-14.2.0`|
+|1.6.0|`hatchling/1.27.0-GCCcore-14.3.0`|
+
+### trove-classifiers
+
+
+|`trove-classifiers` version|hatchling modules that include it|
+| --- | --- |
+|2025.2.18.16|`hatchling/1.27.0-GCCcore-14.2.0`|
+|2025.5.9.12|`hatchling/1.27.0-GCCcore-14.3.0`|
\ No newline at end of file
diff --git a/scripts/available_software/tests/test_dir_riscv/reference_detail/zstd.md b/scripts/available_software/tests/test_dir_riscv/reference_detail/zstd.md
new file mode 100644
index 0000000000..8e1ad87897
--- /dev/null
+++ b/scripts/available_software/tests/test_dir_riscv/reference_detail/zstd.md
@@ -0,0 +1,48 @@
+---
+json_ld:
+ '@context': https://schema.org
+ '@type': SoftwareApplication
+ applicationCategory: DeveloperApplication
+ description: "Zstandard is a real-time compression algorithm, providing high compression\
+ \ ratios.\n It offers a very wide range of compression/speed trade-off, while\
+ \ being backed by a very fast decoder.\n It also offers a special mode for small\
+ \ data, called dictionary compression, and can create dictionaries\n from any\
+ \ sample set."
+ license: Not confirmed
+ name: zstd
+ offers:
+ '@type': Offer
+ price: 0
+ operatingSystem: LINUX
+ review:
+ '@type': Review
+ author:
+ '@type': Organization
+ name: EESSI
+ reviewBody: Application has been successfully made available on all architectures
+ supported by EESSI
+ reviewRating:
+ '@type': Rating
+ ratingValue: 5
+ softwareRequirements: See https://www.eessi.io/docs/ for how to make EESSI available
+ on your system
+ softwareVersion: '[''1.5.7'', ''1.5.6'']'
+ url: https://facebook.github.io/zstd
+---
+# zstd
+
+
+Zstandard is a real-time compression algorithm, providing high compression ratios.
+ It offers a very wide range of compression/speed trade-off, while being backed by a very fast decoder.
+ It also offers a special mode for small data, called dictionary compression, and can create dictionaries
+ from any sample set.
+
+homepage: [https://facebook.github.io/zstd](https://facebook.github.io/zstd)
+
+## Available installations
+
+
+|zstd version|Supported CPU targets|Supported GPU targets|EESSI version|Module|
+| --- | --- | --- | --- | --- |
+|1.5.6|`generic`: `riscv64` Arm: AMD: Intel: |*(none)*|2025.06|`zstd/1.5.6-GCCcore-14.2.0`|
+|1.5.7|`generic`: `riscv64` Arm: AMD: Intel: |*(none)*|2025.06|`zstd/1.5.7-GCCcore-14.3.0`|
\ No newline at end of file
diff --git a/scripts/available_software/tests/test_md.py b/scripts/available_software/tests/test_md.py
index 1466672234..b8c5965938 100644
--- a/scripts/available_software/tests/test_md.py
+++ b/scripts/available_software/tests/test_md.py
@@ -8,7 +8,7 @@ class TestMarkdown:
# Class level setup/teardown
# ---------------------------
- path = os.path.dirname(os.path.realpath(__file__))
+ path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'test_dir')
@classmethod
def setup_class(cls):
@@ -16,20 +16,22 @@ def setup_class(cls):
@classmethod
def teardown_class(cls):
- directory = os.path.join(cls.path, "detail")
- if os.path.exists(directory):
- for file in os.listdir(directory):
- if file.endswith(".md"):
- os.remove(os.path.join(directory, file))
+ directories = [os.path.join(cls.path, "detail"), os.path.join(cls.path + '_riscv', "detail")]
+ for directory in directories:
+ if os.path.exists(directory):
+ for file in os.listdir(directory):
+ if file.endswith(".md"):
+ os.remove(os.path.join(directory, file))
# ---------------------------
# Markdown tests
# ---------------------------
def test_md_detailed_template(self):
- markdown_target = "detail"
available_software.main()
- for markdown_file in os.listdir(os.path.join(self.path, "reference_detail")):
- target_markdown_file = os.path.join(self.path, markdown_target, markdown_file)
- assert os.path.exists(target_markdown_file)
- assert filecmp.cmp(target_markdown_file, os.path.join(self.path, "reference_detail", markdown_file))
+ directories = [self.path, self.path + '_riscv']
+ for directory in directories:
+ for markdown_file in os.listdir(os.path.join(directory, "reference_detail")):
+ target_markdown_file = os.path.join(directory, 'detail', markdown_file)
+ assert os.path.exists(target_markdown_file)
+ assert filecmp.cmp(target_markdown_file, os.path.join(directory, "reference_detail", markdown_file))