diff --git a/.github/workflows/tagbot.py b/.github/workflows/tagbot.py
new file mode 100644
index 00000000000..9c9710e9a46
--- /dev/null
+++ b/.github/workflows/tagbot.py
@@ -0,0 +1,182 @@
+import os
+import git
+import requests
+import json
+import difflib
+from datetime import datetime
+from pathlib import Path
+
+
+def get_first_commit_date(repo, file_path):
+ commits = list(repo.iter_commits(paths=file_path))
+ if commits:
+ return commits[-1].committed_date
+ else:
+ print(f"{file_path} has no commit info, putting it last")
+ return datetime.datetime.min
+
+
+def sort_by_added_date(repo, file_paths):
+ files_with_dates = [(get_first_commit_date(repo, file_path), file_path) for file_path in file_paths]
+ sorted_files = sorted(files_with_dates, reverse=True)
+ return [file for date, file in sorted_files]
+
+
+def similar_easyconfigs(repo, new_file):
+ possible_neighbours = [x for x in new_file.parent.glob('*.eb') if x != new_file]
+ return sort_by_added_date(repo, possible_neighbours)
+
+
+def diff(old, new):
+ with open(old, 'r') as old_file, open(new, 'r') as new_file:
+ old_lines = list(old_file)
+ new_lines = list(new_file)
+ return ''.join(difflib.unified_diff(
+ old_lines,
+ new_lines,
+ fromfile=str(old),
+ tofile=str(new)))
+
+
+def pr_ecs(pr_diff):
+ new_ecs = []
+ changed_ecs = []
+ for item in pr_diff:
+ if item.a_path.endswith('.eb'):
+ if item.change_type == 'A':
+ new_ecs.append(Path(item.a_path))
+ else:
+ changed_ecs.append(Path(item.a_path))
+ return new_ecs, changed_ecs
+
+
+GITHUB_API_URL = 'https://api.github.com'
+event_path = os.getenv("GITHUB_EVENT_PATH")
+token = os.getenv("GH_TOKEN")
+repo = os.getenv("GITHUB_REPOSITORY")
+base_branch_name = os.getenv("GITHUB_BASE_REF")
+pr_ref_name = os.getenv("GITHUB_REF_NAME")
+
+with open(event_path) as f:
+ data = json.load(f)
+
+pr_number = data['pull_request']['number']
+
+print("PR number:", pr_number)
+print("Repo:", repo)
+print("Base branch name:", base_branch_name)
+print("PR ref:", pr_ref_name)
+
+gitrepo = git.Repo(".")
+
+
+target_commit = gitrepo.commit('origin/' + base_branch_name)
+pr_commit = gitrepo.commit('pull/' + pr_ref_name)
+pr_diff = target_commit.diff(pr_commit)
+
+new_ecs, changed_ecs = pr_ecs(pr_diff)
+
+print("Changed ECs:", changed_ecs)
+print("Newly added ECs:", new_ecs)
+
+new_software = 0
+updated_software = 0
+to_diff = dict()
+for new_file in new_ecs:
+ neighbours = similar_easyconfigs(gitrepo, new_file)
+ print(f"Found {len(neighbours)} neighbours for {new_file}")
+ if neighbours:
+ updated_software += 1
+ to_diff[new_file] = neighbours
+ else:
+ new_software += 1
+
+print(f"Generating comment for {len(to_diff)} updates softwares")
+# Limit comment size for large PRs:
+if len(to_diff) > 20: # Too much, either bad PR or some broad change. Not diffing.
+ max_diffs_per_software = 0
+elif len(to_diff) > 10:
+ max_diffs_per_software = 1
+elif len(to_diff) > 5:
+ max_diffs_per_software = 2
+else:
+ max_diffs_per_software = 3
+
+comment = ''
+if max_diffs_per_software > 0:
+ for new_file, neighbours in to_diff.items():
+ compare_neighbours = neighbours[:max_diffs_per_software]
+ if compare_neighbours:
+ print(f"Diffs for {new_file}")
+ comment += f'#### Updated software `{new_file.name}`\n\n'
+
+ for neighbour in compare_neighbours:
+ print(f"against {neighbour}")
+ comment += '\n'
+ comment += f'Diff against {neighbour.name}
\n\n'
+ comment += f'[{neighbour}](https://github.com/{repo}/blob/{base_branch_name}/{neighbour})\n\n'
+ comment += '```diff\n'
+ comment += diff(neighbour, new_file)
+ comment += '```\n \n\n'
+
+print("Adjusting labels")
+current_labels = [label['name'] for label in data['pull_request']['labels']]
+
+labels_add = []
+labels_del = []
+for condition, label in [(changed_ecs, 'change'), (new_software, 'new'), (updated_software, 'update')]:
+ if condition and label not in current_labels:
+ labels_add.append(label)
+ elif not condition and label in current_labels:
+ labels_del.append(label)
+
+url = f"{GITHUB_API_URL}/repos/{repo}/issues/{pr_number}/labels"
+
+headers = {
+ "Accept": "application/vnd.github+json",
+ "Authorization": f"Bearer {token}",
+ "X-GitHub-Api-Version": "2022-11-28",
+}
+
+if labels_add:
+ print(f"Setting labels: {labels_add} at {url}")
+ response = requests.post(url, headers=headers, json={"labels": labels_add})
+ if response.status_code == 200:
+ print(f"Labels {labels_add} added successfully.")
+ else:
+ print(f"Failed to add labels: {response.status_code}, {response.text}")
+
+for label in labels_del:
+ print(f"Removing label: {label} at {url}")
+ response = requests.delete(f'{url}/{label}', headers=headers)
+ if response.status_code == 200:
+ print(f"Label {label} removed successfully.")
+ else:
+ print(f"Failed to delete label: {response.status_code}, {response.text}")
+
+# Write comment with diff
+if updated_software:
+ # Search for comment by bot to potentially replace
+ url = f"{GITHUB_API_URL}/repos/{repo}/issues/{pr_number}/comments"
+ response = requests.get(url, headers=headers)
+ comment_id = None
+ for existing_comment in response.json():
+ if existing_comment["user"]["login"] == "github-actions[bot]": # Bot username in GitHub Actions
+ comment_id = existing_comment["id"]
+
+ if comment_id:
+ # Update existing comment
+ url = f"{GITHUB_API_URL}/repos/{repo}/issues/comments/{comment_id}"
+ response = requests.patch(url, headers=headers, json={"body": comment})
+ if response.status_code == 200:
+ print("Comment updated successfully.")
+ else:
+ print(f"Failed to update comment: {response.status_code}, {response.text}")
+ else:
+ # Post a new comment
+ url = f"{GITHUB_API_URL}/repos/{repo}/issues/{pr_number}/comments"
+ response = requests.post(url, headers=headers, json={"body": comment})
+ if response.status_code == 201:
+ print("Comment posted successfully.")
+ else:
+ print(f"Failed to post comment: {response.status_code}, {response.text}")
diff --git a/.github/workflows/tagbot.yml b/.github/workflows/tagbot.yml
new file mode 100644
index 00000000000..1d382dae51d
--- /dev/null
+++ b/.github/workflows/tagbot.yml
@@ -0,0 +1,30 @@
+name: Tagbot
+on: [pull_request]
+
+jobs:
+ tagbot:
+ runs-on: ubuntu-24.04
+ permissions:
+ pull-requests: write
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+
+ - run: |
+ # Make sure the script is unmodified
+ echo "8be2d295e8436ce557acc8a4d3b82a639913ae65de0d1a76871f21359b4e8d9f .github/workflows/tagbot.py"|sha256sum --check --status
+
+ - name: set up Python
+ uses: actions/setup-python@v5
+ with:
+ python-version: 3.12
+
+ - name: Get packages
+ run: pip install gitpython requests
+
+ - name: Tag and comment
+ env:
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ run: python .github/workflows/tagbot.py
+
diff --git a/easybuild/easyconfigs/a/at-spi2-atk/at-spi2-atk-2.38.0-GCCcore-13.3.0.eb b/easybuild/easyconfigs/a/at-spi2-atk/at-spi2-atk-2.38.0-GCCcore-13.3.0.eb
new file mode 100644
index 00000000000..6efc7996fd0
--- /dev/null
+++ b/easybuild/easyconfigs/a/at-spi2-atk/at-spi2-atk-2.38.0-GCCcore-13.3.0.eb
@@ -0,0 +1,37 @@
+easyblock = 'MesonNinja'
+
+name = 'at-spi2-atk'
+version = '2.38.0'
+
+homepage = 'https://wiki.gnome.org/Accessibility'
+description = "AT-SPI 2 toolkit bridge"
+
+toolchain = {'name': 'GCCcore', 'version': '13.3.0'}
+
+source_urls = [FTPGNOME_SOURCE]
+sources = [SOURCELOWER_TAR_XZ]
+checksums = ['cfa008a5af822b36ae6287f18182c40c91dd699c55faa38605881ed175ca464f']
+
+builddependencies = [
+ ('binutils', '2.42'),
+ ('Meson', '1.4.0'),
+ ('Ninja', '1.12.1'),
+ ('pkgconf', '2.2.0'),
+]
+
+dependencies = [
+ ('GLib', '2.80.4'),
+ ('DBus', '1.15.8'),
+ ('at-spi2-core', '2.54.0'),
+ ('libxml2', '2.12.7'),
+ ('ATK', '2.38.0'),
+]
+
+configopts = "--libdir lib "
+
+sanity_check_paths = {
+ 'files': ['lib/libatk-bridge-2.0.%s' % SHLIB_EXT],
+ 'dirs': [],
+}
+
+moduleclass = 'vis'
diff --git a/easybuild/easyconfigs/a/at-spi2-core/at-spi2-core-2.54.0-GCCcore-13.3.0.eb b/easybuild/easyconfigs/a/at-spi2-core/at-spi2-core-2.54.0-GCCcore-13.3.0.eb
new file mode 100644
index 00000000000..b1a1a4c863f
--- /dev/null
+++ b/easybuild/easyconfigs/a/at-spi2-core/at-spi2-core-2.54.0-GCCcore-13.3.0.eb
@@ -0,0 +1,40 @@
+easyblock = 'MesonNinja'
+
+name = 'at-spi2-core'
+version = '2.54.0'
+
+homepage = 'https://wiki.gnome.org/Accessibility'
+description = """
+ Assistive Technology Service Provider Interface.
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '13.3.0'}
+
+source_urls = [FTPGNOME_SOURCE]
+sources = [SOURCELOWER_TAR_XZ]
+checksums = ['d7eee7e75beddcc272cedc2b60535600f3aae6e481589ebc667afc437c0a6079']
+
+builddependencies = [
+ ('binutils', '2.42'),
+ ('Meson', '1.4.0'),
+ ('Ninja', '1.12.1'),
+ ('GObject-Introspection', '1.80.1'),
+ ('gettext', '0.22.5'),
+ ('pkgconf', '2.2.0'),
+]
+
+dependencies = [
+ ('GLib', '2.80.4'),
+ ('DBus', '1.15.8'),
+ ('X11', '20240607'),
+]
+
+# Hard disable Dbus broker detection and (potential) use of systemd
+configopts = "--libdir lib -Duse_systemd=false -Ddefault_bus=dbus-daemon"
+
+sanity_check_paths = {
+ 'files': ['lib/libatspi.%s' % SHLIB_EXT],
+ 'dirs': [],
+}
+
+moduleclass = 'vis'
diff --git a/easybuild/easyconfigs/b/BEDTools/BEDTools-2.31.1-GCC-13.3.0.eb b/easybuild/easyconfigs/b/BEDTools/BEDTools-2.31.1-GCC-13.3.0.eb
new file mode 100644
index 00000000000..8503277b570
--- /dev/null
+++ b/easybuild/easyconfigs/b/BEDTools/BEDTools-2.31.1-GCC-13.3.0.eb
@@ -0,0 +1,53 @@
+# Author: Maxime Schmitt, University of Luxembourg
+# Author: Adam Huffman, The Francis Crick Institute
+#
+# Based on the work of: Pablo Escobar Lopez
+# Swiss Institute of Bioinformatics (SIB)
+# Biozentrum - University of Basel
+
+easyblock = 'MakeCp'
+
+name = 'BEDTools'
+version = '2.31.1'
+
+homepage = 'https://bedtools.readthedocs.io/'
+description = """BEDTools: a powerful toolset for genome arithmetic.
+The BEDTools utilities allow one to address common genomics tasks such as finding feature overlaps and
+computing coverage.
+The utilities are largely based on four widely-used file formats: BED, GFF/GTF, VCF, and SAM/BAM."""
+
+toolchain = {'name': 'GCC', 'version': '13.3.0'}
+
+source_urls = ['https://github.com/arq5x/bedtools2/archive/refs/tags/']
+sources = ['v%(version)s.tar.gz']
+checksums = ['79a1ba318d309f4e74bfa74258b73ef578dccb1045e270998d7fe9da9f43a50e']
+
+builddependencies = [
+ ('Python', '3.12.3'),
+]
+dependencies = [
+ ('XZ', '5.4.5'),
+ ('zlib', '1.3.1'),
+ ('bzip2', '1.0.8'),
+ ('BamTools', '2.5.2'),
+]
+
+buildopts = 'CXX="$CXX"'
+
+files_to_copy = [
+ 'bin',
+ 'docs',
+ 'data',
+ 'genomes',
+ 'scripts',
+ 'test',
+]
+
+sanity_check_paths = {
+ 'files': ['bin/%s' % x for x in ['bedtools', 'pairToBed', 'mergeBed', 'bedToBam', 'fastaFromBed']],
+ 'dirs': files_to_copy,
+}
+
+sanity_check_commands = ['%(namelower)s --help']
+
+moduleclass = 'bio'
diff --git a/easybuild/easyconfigs/b/BamTools/BamTools-2.5.2-GCC-13.3.0.eb b/easybuild/easyconfigs/b/BamTools/BamTools-2.5.2-GCC-13.3.0.eb
new file mode 100644
index 00000000000..23e1ad0e743
--- /dev/null
+++ b/easybuild/easyconfigs/b/BamTools/BamTools-2.5.2-GCC-13.3.0.eb
@@ -0,0 +1,22 @@
+# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild
+name = 'BamTools'
+version = '2.5.2'
+
+homepage = 'https://github.com/pezmaster31/bamtools'
+description = "BamTools provides both a programmer's API and an end-user's toolkit for handling BAM files."
+
+toolchain = {'name': 'GCC', 'version': '13.3.0'}
+toolchainopts = {'pic': True}
+
+source_urls = [GITHUB_LOWER_SOURCE]
+sources = ['v%(version)s.tar.gz']
+checksums = ['4d8b84bd07b673d0ed41031348f10ca98dd6fa6a4460f9b9668d6f1d4084dfc8']
+
+builddependencies = [
+ ('CMake', '3.29.3'),
+]
+
+# https://github.com/pezmaster31/bamtools
+github_account = 'pezmaster31'
+
+moduleclass = 'bio'
diff --git a/easybuild/easyconfigs/c/CIRCE/CIRCE-0.3.4-foss-2023a.eb b/easybuild/easyconfigs/c/CIRCE/CIRCE-0.3.4-foss-2023a.eb
new file mode 100644
index 00000000000..6a41b512096
--- /dev/null
+++ b/easybuild/easyconfigs/c/CIRCE/CIRCE-0.3.4-foss-2023a.eb
@@ -0,0 +1,55 @@
+easyblock = 'PythonBundle'
+
+name = 'CIRCE'
+version = '0.3.4'
+
+homepage = 'https://github.com/cantinilab/Circe'
+description = """This repo contains a python package for inferring co-accessibility networks
+ from single-cell ATAC-seq data, using skggm for the graphical lasso and scanpy for data processing."""
+
+toolchain = {'name': 'foss', 'version': '2023a'}
+
+builddependencies = [
+ ('poetry', '1.5.1'),
+]
+
+dependencies = [
+ ('Python', '3.11.3'),
+ ('SciPy-bundle', '2023.07'),
+ ('scikit-learn', '1.3.1'),
+ ('scanpy', '1.9.8'),
+]
+
+use_pip = True
+sanity_pip_check = True
+
+# Some requirements are too strict.
+local_preinstallopts = """sed -i 's/pandas = "[^"]*"/pandas = "*"/g' pyproject.toml && """
+local_preinstallopts += """sed -i "s/'pandas>=[^']*'/'pandas'/g" setup.py && """
+
+# build the C components linking `flexiblas` instead of `lapack` and `blas`
+local_preinstallopts += """sed -i "s/lapack/flexiblas/g;s/, 'blas'//g" setup.py && """
+local_preinstallopts += """sed -i "s/lapack/flexiblas/g;/blas/d" pyquic_ext/pyquic.cpp && """
+
+exts_list = [
+ ('joblib', '1.4.2', {
+ 'source_tmpl': SOURCE_PY3_WHL,
+ 'checksums': ['06d478d5674cbc267e7496a410ee875abd68e4340feff4490bcb7afb88060ae6'],
+ }),
+ ('rich', '13.9.2', {
+ 'source_tmpl': SOURCE_PY3_WHL,
+ 'checksums': ['8c82a3d3f8dcfe9e734771313e606b39d8247bb6b826e196f4914b333b743cf1'],
+ }),
+ ('circe_py', version, {
+ 'preinstallopts': local_preinstallopts,
+ 'modulename': 'circe',
+ 'checksums': ['279004948dff84816361e857ee3fb383cdb17587f376c6f10f82a66810cba16c'],
+ }),
+]
+
+# NOTE This has been tested manually using the following script:
+# https://github.com/cantinilab/Circe/blob/a70e031f9de4760739eb3c7571277678d5e80c8a/Examples/Minimal_example.ipynb
+# with a small modification:
+# https://github.com/cantinilab/Circe/issues/5#issuecomment-2419821380
+
+moduleclass = 'bio'
diff --git a/easybuild/easyconfigs/c/CPPE/CPPE-0.3.1-GCC-12.3.0.eb b/easybuild/easyconfigs/c/CPPE/CPPE-0.3.1-GCC-12.3.0.eb
new file mode 100644
index 00000000000..06b34618eb5
--- /dev/null
+++ b/easybuild/easyconfigs/c/CPPE/CPPE-0.3.1-GCC-12.3.0.eb
@@ -0,0 +1,49 @@
+easyblock = 'CMakeMake'
+
+name = 'CPPE'
+version = '0.3.1'
+
+homepage = 'https://github.com/maxscheurer/cppe'
+description = """CPPE is an open-source, light-weight C++ and Python library for Polarizable
+Embedding (PE)1,2 calculations. It provides an easy-to-use API to implement PE
+for ground-state self-consistent field (SCF) calculations and post-SCF methods.
+A convenient Python interface is also available."""
+
+toolchain = {'name': 'GCC', 'version': '12.3.0'}
+
+github_account = 'maxscheurer'
+source_urls = [GITHUB_LOWER_SOURCE]
+sources = ['v%(version)s.tar.gz']
+checksums = ['38d4230ba3ace78936049c23ad4b1fe9e704fd250ec57cc9733cb3904b62cf7c']
+
+builddependencies = [
+ ('CMake', '3.26.3'),
+]
+
+dependencies = [
+ ('Python', '3.11.3'),
+ ('pybind11', '2.11.1'),
+]
+
+exts_defaultclass = 'PythonPackage'
+exts_default_options = {
+ 'source_urls': [PYPI_SOURCE],
+ 'download_dep_fail': True,
+ 'use_pip': True,
+ 'sanity_pip_check': True,
+}
+
+exts_list = [
+ ('cppe', version, {
+ 'checksums': ['b0aef578d6919f8c103d4d4a9fcd3db481bd73c59c157985f52bf62477425d6c'],
+ }),
+]
+
+sanity_check_paths = {
+ 'files': ['lib/libcppe.%s' % SHLIB_EXT],
+ 'dirs': ['include/cppe', 'lib/python%(pyshortver)s/site-packages', 'share/cmake'],
+}
+
+modextrapaths = {'PYTHONPATH': 'lib/python%(pyshortver)s/site-packages'}
+
+moduleclass = 'chem'
diff --git a/easybuild/easyconfigs/c/columba/columba-1.2-20240326-GCC-13.3.0.eb b/easybuild/easyconfigs/c/columba/columba-1.2-20240326-GCC-13.3.0.eb
new file mode 100644
index 00000000000..bbdb6d884b8
--- /dev/null
+++ b/easybuild/easyconfigs/c/columba/columba-1.2-20240326-GCC-13.3.0.eb
@@ -0,0 +1,29 @@
+easyblock = 'CMakeMake'
+
+name = 'columba'
+local_commit = '526b0a0'
+version = '1.2-20240326'
+
+homepage = 'https://github.com/biointec/columba'
+description = "Fast Approximate Pattern Matching using Search Schemes"
+
+toolchain = {'name': 'GCC', 'version': '13.3.0'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://github.com/biointec/columba/archive']
+sources = [{'download_filename': '%s.tar.gz' % local_commit, 'filename': SOURCE_TAR_GZ}]
+checksums = ['018898cf6ba93a974a141b397b68a7df13457e80bf92b1747f7b30c4a0d756f1']
+
+builddependencies = [
+ ('CMake', '3.29.3'),
+ ('sparsehash', '2.0.4'),
+]
+
+sanity_check_paths = {
+ 'files': ['bin/columba', 'bin/columba_build'],
+ 'dirs': [],
+}
+
+sanity_check_commands = ["columba --help"]
+
+moduleclass = 'tools'
diff --git a/easybuild/easyconfigs/d/Dask-ML/Dask-ML-2022.5.27-foss-2022a.eb b/easybuild/easyconfigs/d/Dask-ML/Dask-ML-2022.5.27-foss-2022a.eb
new file mode 100644
index 00000000000..12884bd5e3a
--- /dev/null
+++ b/easybuild/easyconfigs/d/Dask-ML/Dask-ML-2022.5.27-foss-2022a.eb
@@ -0,0 +1,51 @@
+easyblock = 'PythonBundle'
+
+name = 'Dask-ML'
+version = '2022.5.27'
+
+homepage = 'http://ml.dask.org/'
+description = """
+Dask-ML provides scalable machine learning in Python using Dask alongside popular machine
+learning libraries like Scikit-Learn, XGBoost, and others.
+"""
+
+toolchain = {'name': 'foss', 'version': '2022a'}
+
+dependencies = [
+ ('Python', '3.10.4'),
+ ('scikit-learn', '1.1.2'),
+ ('dask', '2022.10.0'),
+ ('numba', '0.56.4'),
+ ('SciPy-bundle', '2022.05'),
+]
+
+use_pip = True
+sanity_pip_check = True
+
+exts_list = [
+ ('sparse', '0.14.0', {
+ 'checksums': ['5f5827a37f6cd6f6730a541f994c95c60a3ae2329e01f4ba21ced5339aea0098'],
+ }),
+ ('dask-glm', '0.3.2', {
+ 'checksums': ['c947a566866698a01d79978ae73233cb5e838ad5ead6085143582c5e930b9a4a'],
+ }),
+ ('versioneer', '0.29', {
+ 'checksums': ['5ab283b9857211d61b53318b7c792cf68e798e765ee17c27ade9f6c924235731'],
+ }),
+ ('distributed', '2022.10.0', {
+ 'checksums': ['dcfbc9c528bcd9e4f9686e673956a90172826395ac5b258039e580777d50782f'],
+ }),
+ ('multipledispatch', '1.0.0', {
+ 'checksums': ['5c839915465c68206c3e9c473357908216c28383b425361e5d144594bf85a7e0'],
+ }),
+ ('packaging', '20.4', {
+ 'checksums': ['4357f74f47b9c12db93624a82154e9b120fa8293699949152b22065d556079f8'],
+ }),
+ (name, version, {
+ 'modulename': 'dask_ml',
+ 'sources': ['dask-ml-%(version)s.tar.gz'],
+ 'checksums': ['6369d3934192bcc1923fcee84c3fb8fbcceca102137901070ba3f1d9e386cce4'],
+ }),
+]
+
+moduleclass = 'ai'
diff --git a/easybuild/easyconfigs/d/Dask-ML/Dask-ML-2024.4.4-foss-2023a.eb b/easybuild/easyconfigs/d/Dask-ML/Dask-ML-2024.4.4-foss-2023a.eb
new file mode 100644
index 00000000000..f4bdf4425ae
--- /dev/null
+++ b/easybuild/easyconfigs/d/Dask-ML/Dask-ML-2024.4.4-foss-2023a.eb
@@ -0,0 +1,50 @@
+easyblock = 'PythonBundle'
+
+name = 'Dask-ML'
+version = '2024.4.4'
+
+homepage = 'http://ml.dask.org/'
+description = """
+Dask-ML provides scalable machine learning in Python using Dask alongside popular machine
+learning libraries like Scikit-Learn, XGBoost, and others.
+"""
+
+toolchain = {'name': 'foss', 'version': '2023a'}
+
+builddependencies = [('hatchling', '1.18.0')]
+
+dependencies = [
+ ('Python', '3.11.3'),
+ ('scikit-learn', '1.3.1'),
+ ('dask', '2023.9.2'),
+ ('numba', '0.58.1'),
+ ('SciPy-bundle', '2023.07'),
+]
+
+use_pip = True
+sanity_pip_check = True
+
+exts_list = [
+ ('sparse', '0.15.4', {
+ # replace use of 'version_file' (which requires setuptools-scm >= 8.0) with 'write_to'
+ 'preinstallopts': "sed -i 's/^version_file/write_to/' pyproject.toml && ",
+ 'checksums': ['d4b1c57d24ff0f64f2fd5b5a95b49b7fb84ed207a26d7d58ce2764dcc5c72b84'],
+ }),
+ ('dask-glm', '0.3.2', {
+ 'checksums': ['c947a566866698a01d79978ae73233cb5e838ad5ead6085143582c5e930b9a4a'],
+ }),
+ ('distributed', '2023.9.2', {
+ 'checksums': ['b76b43be6a297c6cc6dc4eac7f5a05a8c6834aaf025ed37395d1d830448d540e'],
+ }),
+ ('multipledispatch', '1.0.0', {
+ 'checksums': ['5c839915465c68206c3e9c473357908216c28383b425361e5d144594bf85a7e0'],
+ }),
+ ('packaging', '24.1', {
+ 'checksums': ['026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002'],
+ }),
+ ('dask_ml', version, {
+ 'checksums': ['7956910a49e1e31944280fdb311adf245da11ef410d67deb7a05c67c7d0c4498'],
+ }),
+]
+
+moduleclass = 'ai'
diff --git a/easybuild/easyconfigs/d/dorado/dorado-0.6.1-foss-2023a-CUDA-12.1.1.eb b/easybuild/easyconfigs/d/dorado/dorado-0.6.1-foss-2023a-CUDA-12.1.1.eb
index e292bfcc18b..378a9deec6b 100644
--- a/easybuild/easyconfigs/d/dorado/dorado-0.6.1-foss-2023a-CUDA-12.1.1.eb
+++ b/easybuild/easyconfigs/d/dorado/dorado-0.6.1-foss-2023a-CUDA-12.1.1.eb
@@ -29,6 +29,7 @@ checksums = [
builddependencies = [
('binutils', '2.40'),
('CMake', '3.26.3'),
+ ('patchelf', '0.18.0'),
]
dependencies = [
@@ -70,6 +71,22 @@ configopts += "-DDORADO_LIBTORCH_DIR=$EBROOTPYTORCH/lib "
# in function `_GLOBAL__sub_I_mutex.cc': mutex.cc:(.text.startup+0x17): undefined reference to `pthread_atfork'
configopts += '-DCMAKE_C_FLAGS="$CFLAGS -pthread" '
+# disable CMake fiddling with RPATH when EasyBuild is configured to use RPATH linking
+configopts += "$(if %(rpath_enabled)s; then "
+configopts += "echo '-DCMAKE_SKIP_INSTALL_RPATH=YES -DCMAKE_SKIP_RPATH=YES'; fi) "
+
+# CUDA libraries that are copied to installdir need to be patched to have an RPATH section
+# when EasyBuild is configured to use RPATH linking (required to pass RPATH sanity check);
+# by default, CMake sets RUNPATH to '$ORIGIN' rather than RPATH (but that's disabled above)
+postinstallcmds = [
+ "if %(rpath_enabled)s; then "
+ " for lib in $(ls %(installdir)s/lib/lib{cu,nv}*.so*); do "
+ " echo setting RPATH in $lib;"
+ " patchelf --force-rpath --set-rpath '$ORIGIN' $lib;"
+ " done;"
+ "fi",
+]
+
sanity_check_paths = {
'files': ['bin/dorado'],
'dirs': [],
diff --git a/easybuild/easyconfigs/d/dorado/dorado-0.7.3-foss-2023a-CUDA-12.1.1.eb b/easybuild/easyconfigs/d/dorado/dorado-0.7.3-foss-2023a-CUDA-12.1.1.eb
index 0e32e9616ca..9927f0492b4 100644
--- a/easybuild/easyconfigs/d/dorado/dorado-0.7.3-foss-2023a-CUDA-12.1.1.eb
+++ b/easybuild/easyconfigs/d/dorado/dorado-0.7.3-foss-2023a-CUDA-12.1.1.eb
@@ -34,6 +34,7 @@ checksums = [
builddependencies = [
('binutils', '2.40'),
('CMake', '3.26.3'),
+ ('patchelf', '0.18.0'),
]
dependencies = [
@@ -77,7 +78,23 @@ _copts = [
'-DCMAKE_C_FLAGS="$CFLAGS -pthread"',
]
-configopts = ' '.join(_copts)
+configopts = ' '.join(_copts) + ' '
+
+# disable CMake fiddling with RPATH when EasyBuild is configured to use RPATH linking
+configopts += "$(if %(rpath_enabled)s; then "
+configopts += "echo '-DCMAKE_SKIP_INSTALL_RPATH=YES -DCMAKE_SKIP_RPATH=YES'; fi) "
+
+# CUDA libraries that are copied to installdir need to be patched to have an RPATH section
+# when EasyBuild is configured to use RPATH linking (required to pass RPATH sanity check);
+# by default, CMake sets RUNPATH to '$ORIGIN' rather than RPATH (but that's disabled above)
+postinstallcmds = [
+ "if %(rpath_enabled)s; then "
+ " for lib in $(ls %(installdir)s/lib/lib{cu,nv}*.so*); do "
+ " echo setting RPATH in $lib;"
+ " patchelf --force-rpath --set-rpath '$ORIGIN' $lib;"
+ " done;"
+ "fi",
+]
sanity_check_paths = {
'files': ['bin/dorado'],
diff --git a/easybuild/easyconfigs/d/dorado/dorado-0.8.0-foss-2023a-CUDA-12.1.1.eb b/easybuild/easyconfigs/d/dorado/dorado-0.8.0-foss-2023a-CUDA-12.1.1.eb
index bf8dbf8c6a8..778c00e0d6e 100644
--- a/easybuild/easyconfigs/d/dorado/dorado-0.8.0-foss-2023a-CUDA-12.1.1.eb
+++ b/easybuild/easyconfigs/d/dorado/dorado-0.8.0-foss-2023a-CUDA-12.1.1.eb
@@ -32,6 +32,7 @@ checksums = [
builddependencies = [
('binutils', '2.40'),
('CMake', '3.26.3'),
+ ('patchelf', '0.18.0'),
]
dependencies = [
@@ -76,7 +77,23 @@ _copts = [
'-DCMAKE_C_FLAGS="$CFLAGS -pthread"',
]
-configopts = ' '.join(_copts)
+configopts = ' '.join(_copts) + ' '
+
+# disable CMake fiddling with RPATH when EasyBuild is configured to use RPATH linking
+configopts += "$(if %(rpath_enabled)s; then "
+configopts += "echo '-DCMAKE_SKIP_INSTALL_RPATH=YES -DCMAKE_SKIP_RPATH=YES'; fi) "
+
+# CUDA libraries that are copied to installdir need to be patched to have an RPATH section
+# when EasyBuild is configured to use RPATH linking (required to pass RPATH sanity check);
+# by default, CMake sets RUNPATH to '$ORIGIN' rather than RPATH (but that's disabled above)
+postinstallcmds = [
+ "if %(rpath_enabled)s; then "
+ " for lib in $(ls %(installdir)s/lib/lib{cu,nv}*.so*); do "
+ " echo setting RPATH in $lib;"
+ " patchelf --force-rpath --set-rpath '$ORIGIN' $lib;"
+ " done;"
+ "fi",
+]
sanity_check_paths = {
'files': ['bin/dorado'],
diff --git a/easybuild/easyconfigs/e/ELPA/ELPA-2024.05.001-foss-2024a.eb b/easybuild/easyconfigs/e/ELPA/ELPA-2024.05.001-foss-2024a.eb
new file mode 100644
index 00000000000..8dcbc6ed3f2
--- /dev/null
+++ b/easybuild/easyconfigs/e/ELPA/ELPA-2024.05.001-foss-2024a.eb
@@ -0,0 +1,46 @@
+# #
+# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild
+#
+# Authors:: Inge Gutheil , Alan O'Cais
+# License:: MIT/GPL
+#
+# #
+
+name = 'ELPA'
+version = '2024.05.001'
+local_version = version.replace('.', '_')
+
+homepage = 'https://elpa.mpcdf.mpg.de/'
+description = "Eigenvalue SoLvers for Petaflop-Applications."
+
+toolchain = {'name': 'foss', 'version': '2024a'}
+toolchainopts = {'openmp': True, 'usempi': True}
+
+source_urls = ['https://gitlab.mpcdf.mpg.de/elpa/elpa/-/archive/release_%s/' % local_version]
+sources = ['{}-release_{}.tar.gz'.format('%(namelower)s', local_version)]
+patches = [
+ '%(name)s-2023.05.001_fix_hardcoded_perl_path.patch',
+ '%(name)s-2023.05.001_fix_AVX512_support.patch',
+]
+checksums = [
+ {'elpa-release_2024_05_001.tar.gz': '5e0c685536869bb91c230d70cac5e779ff418575681836f240b3e64e10b23f3e'},
+ {'ELPA-2023.05.001_fix_hardcoded_perl_path.patch':
+ '0548105065777a2ed07dde306636251c4f96e555a801647564de37d1ddd7b0b5'},
+ {'ELPA-2023.05.001_fix_AVX512_support.patch': 'ecf08b64fe1da432a218040fa45d4ecfbb3269d58cb018b12da5a2d854bf96be'},
+]
+
+builddependencies = [
+ ('Autotools', '20231222'),
+ ('Python', '3.12.3'),
+ ('Perl', '5.38.2'),
+]
+
+preconfigopts = './autogen.sh && export LDFLAGS="-lm $LDFLAGS" && autoreconf && '
+
+# When building in parallel, the file test_setup_mpi.mod is sometimes
+# used before it is built, leading to an error. This must be a bug in
+# the makefile affecting parallel builds.
+maxparallel = 1
+
+
+moduleclass = 'math'
diff --git a/easybuild/easyconfigs/e/exiv2/exiv2-0.28.3-GCCcore-13.3.0.eb b/easybuild/easyconfigs/e/exiv2/exiv2-0.28.3-GCCcore-13.3.0.eb
new file mode 100644
index 00000000000..fba04816180
--- /dev/null
+++ b/easybuild/easyconfigs/e/exiv2/exiv2-0.28.3-GCCcore-13.3.0.eb
@@ -0,0 +1,38 @@
+easyblock = 'CMakeMake'
+
+name = 'exiv2'
+version = '0.28.3'
+
+homepage = 'http://www.exiv2.org'
+description = """
+ Exiv2 is a C++ library and a command line utility to manage image metadata. It provides fast and easy read and write
+ access to the Exif, IPTC and XMP metadata of digital images in various formats. Exiv2 is available as free software and
+ with a commercial license, and is used in many projects.
+"""
+
+
+toolchain = {'name': 'GCCcore', 'version': '13.3.0'}
+
+source_urls = ['https://github.com/Exiv2/exiv2/archive/refs/tags/']
+sources = ['v%(version)s.tar.gz']
+checksums = ['1315e17d454bf4da3cc0edb857b1d2c143670f3485b537d0f946d9ed31d87b70']
+
+builddependencies = [
+ ('binutils', '2.42'),
+ ('CMake', '3.29.3'),
+]
+
+dependencies = [
+ ('expat', '2.6.2'),
+ ('Brotli', '1.1.0'),
+ ('inih', '58'),
+]
+
+sanity_check_paths = {
+ 'files': ['bin/exiv2', 'lib/libexiv2.%s' % SHLIB_EXT],
+ 'dirs': []
+}
+
+sanity_check_commands = ["exiv2 --help"]
+
+moduleclass = 'vis'
diff --git a/easybuild/easyconfigs/f/FLINT/FLINT-3.1.2-gfbf-2024a.eb b/easybuild/easyconfigs/f/FLINT/FLINT-3.1.2-gfbf-2024a.eb
new file mode 100644
index 00000000000..970496a35d0
--- /dev/null
+++ b/easybuild/easyconfigs/f/FLINT/FLINT-3.1.2-gfbf-2024a.eb
@@ -0,0 +1,45 @@
+easyblock = 'CMakeMake'
+
+name = 'FLINT'
+version = '3.1.2'
+
+homepage = 'https://www.flintlib.org/'
+
+description = """FLINT (Fast Library for Number Theory) is a C library in support of computations
+ in number theory. Operations that can be performed include conversions, arithmetic, computing GCDs,
+ factoring, solving linear systems, and evaluating special functions. In addition, FLINT provides
+ various low-level routines for fast arithmetic. FLINT is extensively documented and tested."""
+
+toolchain = {'name': 'gfbf', 'version': '2024a'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://www.flintlib.org']
+sources = [SOURCELOWER_TAR_GZ]
+checksums = ['fdb3a431a37464834acff3bdc145f4fe8d0f951dd5327c4c6f93f4cbac5c2700']
+
+builddependencies = [
+ ('CMake', '3.29.3'),
+ ('Python', '3.12.3'),
+]
+
+dependencies = [
+ ('GMP', '6.3.0'),
+ ('MPFR', '4.2.1'),
+ ('NTL', '11.5.1'),
+]
+
+# Make flexiblas the first to be found and used to avoid linking openblas.
+preconfigopts = 'sed -i "s/PATH_SUFFIXES openblas/PATH_SUFFIXES flexiblas openblas/g;'
+preconfigopts += 's/accelerate openblas/accelerate flexiblas openblas/g" '
+preconfigopts += '%(builddir)s/%(namelower)s-%(version)s/CMake/FindCBLAS.cmake && '
+
+configopts = '-DWITH_NTL=on -DBUILD_TESTING=yes'
+
+runtest = 'test'
+
+sanity_check_paths = {
+ 'files': ['lib/lib%%(namelower)s.%s' % SHLIB_EXT],
+ 'dirs': ['include'],
+}
+
+moduleclass = 'math'
diff --git a/easybuild/easyconfigs/f/fmt/fmt-11.0.2-GCCcore-13.3.0.eb b/easybuild/easyconfigs/f/fmt/fmt-11.0.2-GCCcore-13.3.0.eb
new file mode 100644
index 00000000000..cfb38383787
--- /dev/null
+++ b/easybuild/easyconfigs/f/fmt/fmt-11.0.2-GCCcore-13.3.0.eb
@@ -0,0 +1,26 @@
+easyblock = 'CMakeMake'
+
+name = 'fmt'
+version = '11.0.2'
+
+homepage = 'http://fmtlib.net/'
+description = "fmt (formerly cppformat) is an open-source formatting library."
+
+toolchain = {'name': 'GCCcore', 'version': '13.3.0'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://github.com/fmtlib/fmt/releases/download/%(version)s/']
+sources = ['fmt-%(version)s.zip']
+checksums = ['40fc58bebcf38c759e11a7bd8fdc163507d2423ef5058bba7f26280c5b9c5465']
+
+builddependencies = [
+ ('binutils', '2.42'),
+ ('CMake', '3.29.3'),
+]
+
+sanity_check_paths = {
+ 'files': ['lib/libfmt.a'],
+ 'dirs': ['include/fmt', 'lib/cmake'],
+}
+
+moduleclass = 'lib'
diff --git a/easybuild/easyconfigs/g/GEOS/GEOS-3.12.2-GCC-13.3.0.eb b/easybuild/easyconfigs/g/GEOS/GEOS-3.12.2-GCC-13.3.0.eb
new file mode 100644
index 00000000000..6b174f0bf8a
--- /dev/null
+++ b/easybuild/easyconfigs/g/GEOS/GEOS-3.12.2-GCC-13.3.0.eb
@@ -0,0 +1,27 @@
+easyblock = 'CMakeMake'
+
+name = 'GEOS'
+version = '3.12.2'
+
+homepage = 'https://trac.osgeo.org/geos'
+description = """GEOS (Geometry Engine - Open Source) is a C++ port of the Java Topology Suite (JTS)"""
+
+toolchain = {'name': 'GCC', 'version': '13.3.0'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://download.osgeo.org/geos/']
+sources = [SOURCELOWER_TAR_BZ2]
+checksums = ['34c7770bf0090ee88488af98767d08e779f124fa33437e0aabec8abd4609fec6']
+
+builddependencies = [('CMake', '3.29.3')]
+
+# Build static and shared libraries
+configopts = ['', '-DBUILD_SHARED_LIBS=OFF']
+
+sanity_check_paths = {
+ 'files': ['bin/geos-config', 'lib/libgeos.%s' % SHLIB_EXT, 'lib/libgeos.a', 'lib/libgeos_c.%s' % SHLIB_EXT,
+ 'include/geos.h'],
+ 'dirs': [],
+}
+
+moduleclass = 'math'
diff --git a/easybuild/easyconfigs/g/GraphicsMagick/GraphicsMagick-1.3.45-GCCcore-13.3.0.eb b/easybuild/easyconfigs/g/GraphicsMagick/GraphicsMagick-1.3.45-GCCcore-13.3.0.eb
new file mode 100644
index 00000000000..63340e41506
--- /dev/null
+++ b/easybuild/easyconfigs/g/GraphicsMagick/GraphicsMagick-1.3.45-GCCcore-13.3.0.eb
@@ -0,0 +1,51 @@
+easyblock = 'ConfigureMake'
+
+name = 'GraphicsMagick'
+version = '1.3.45'
+
+homepage = 'http://www.graphicsmagick.org/'
+description = """GraphicsMagick is the swiss army knife of image processing."""
+
+toolchain = {'name': 'GCCcore', 'version': '13.3.0'}
+toolchainopts = {'pic': True}
+
+source_urls = [
+ SOURCEFORGE_SOURCE,
+ 'ftp://ftp.graphicsmagick.org/pub/GraphicsMagick/%(version_major_minor)s/',
+]
+sources = [SOURCE_TAR_XZ]
+patches = [
+ 'GraphicsMagick_pkgconfig_libtiff.patch'
+]
+checksums = [
+ {'GraphicsMagick-1.3.45.tar.xz': 'dcea5167414f7c805557de2d7a47a9b3147bcbf617b91f5f0f4afe5e6543026b'},
+ {'GraphicsMagick_pkgconfig_libtiff.patch': '25b4c5361f30e23c809a078ac4b26e670d2b8341496323480037e2095d969294'},
+]
+
+builddependencies = [
+ ('binutils', '2.42'),
+ ('Autotools', '20231222'),
+]
+
+dependencies = [
+ ('X11', '20240607'),
+ ('bzip2', '1.0.8'),
+ ('freetype', '2.13.2'),
+ ('libpng', '1.6.43'),
+ ('libjpeg-turbo', '3.0.1'),
+ ('LibTIFF', '4.6.0'),
+ ('libxml2', '2.12.7'),
+ ('XZ', '5.4.5'),
+ ('zlib', '1.3.1'),
+ ('Ghostscript', '10.03.1'),
+]
+
+modextrapaths = {'CPATH': ['include/GraphicsMagick']}
+
+sanity_check_paths = {
+ 'files': ['bin/gm', 'lib/libGraphicsMagick.a', 'lib/libGraphicsMagick++.a',
+ 'lib/libGraphicsMagickWand.a'],
+ 'dirs': ['include/GraphicsMagick', 'lib/pkgconfig'],
+}
+
+moduleclass = 'vis'
diff --git a/easybuild/easyconfigs/h/HDF/HDF-4.3.0-GCCcore-13.3.0.eb b/easybuild/easyconfigs/h/HDF/HDF-4.3.0-GCCcore-13.3.0.eb
new file mode 100644
index 00000000000..de3ac32380a
--- /dev/null
+++ b/easybuild/easyconfigs/h/HDF/HDF-4.3.0-GCCcore-13.3.0.eb
@@ -0,0 +1,58 @@
+easyblock = 'ConfigureMake'
+
+name = 'HDF'
+version = '4.3.0'
+
+homepage = 'https://support.hdfgroup.org/products/hdf4/'
+description = """
+ HDF (also known as HDF4) is a library and multi-object file format for
+ storing and managing data between machines.
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '13.3.0'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://github.com/HDFGroup/hdf4/archive/refs/tags/']
+sources = ['%(namelower)s%(version)s.tar.gz']
+checksums = ['a6639a556650e6ea8632a17b8188a69de844bdff54ce121a1fd5b92c8dd06cb1']
+
+builddependencies = [
+ ('binutils', '2.42'),
+ ('Bison', '3.8.2'),
+ ('flex', '2.6.4'),
+]
+
+dependencies = [
+ ('libjpeg-turbo', '3.0.1'),
+ ('Szip', '2.1.1'),
+ ('zlib', '1.3.1'),
+ ('libtirpc', '1.3.5'),
+]
+
+preconfigopts = "LIBS='-ltirpc' "
+
+local_common_configopts = '--with-szlib=$EBROOTSZIP CFLAGS="$CFLAGS -I$EBROOTLIBTIRPC/include/tirpc" '
+local_common_configopts += '--includedir=%(installdir)s/include/%(namelower)s '
+
+configopts = [
+ local_common_configopts,
+ # Cannot build shared libraries and Fortran...
+ # https://trac.osgeo.org/gdal/wiki/HDF#IncompatibilitywithNetCDFLibraries
+ # netcdf must be disabled to allow HDF to be used by GDAL
+ local_common_configopts + "--enable-shared --disable-fortran --disable-netcdf",
+]
+
+
+sanity_check_paths = {
+ 'files': ['bin/h4cc', 'bin/ncdump', 'lib/libdf.a', 'lib/libhdf4.settings', 'lib/libmfhdf.a', 'lib/libmfhdf.so'],
+ 'dirs': ['include/%(namelower)s'],
+}
+
+sanity_check_commands = [
+ "h4cc --help",
+ "ncdump -V",
+]
+
+modextrapaths = {'CPATH': 'include/%(namelower)s'}
+
+moduleclass = 'data'
diff --git a/easybuild/easyconfigs/h/HDF5/HDF5-1.14.5-iimpi-2024a.eb b/easybuild/easyconfigs/h/HDF5/HDF5-1.14.5-iimpi-2024a.eb
new file mode 100644
index 00000000000..153463a2234
--- /dev/null
+++ b/easybuild/easyconfigs/h/HDF5/HDF5-1.14.5-iimpi-2024a.eb
@@ -0,0 +1,26 @@
+name = 'HDF5'
+# Note: Odd minor releases are only RCs and should not be used.
+version = '1.14.5'
+
+homepage = 'https://portal.hdfgroup.org/display/support'
+description = """HDF5 is a data model, library, and file format for storing and managing data.
+ It supports an unlimited variety of datatypes, and is designed for flexible
+ and efficient I/O and for high volume and complex data."""
+
+toolchain = {'name': 'iimpi', 'version': '2024a'}
+toolchainopts = {'pic': True, 'usempi': True}
+
+source_urls = ['https://github.com/HDFGroup/hdf5/archive']
+sources = ['hdf5_%(version)s.tar.gz']
+checksums = ['c83996dc79080a34e7b5244a1d5ea076abfd642ec12d7c25388e2fdd81d26350']
+
+# replace src include path with installation dir for $H5BLD_CPPFLAGS
+_regex = 's, -I[^[:space:]]+H5FDsubfiling , -I%(installdir)s/include ,g'
+postinstallcmds = ['sed -i -r "%s" %%(installdir)s/bin/%s' % (_regex, x) for x in ['h5c++', 'h5pcc']]
+
+dependencies = [
+ ('zlib', '1.3.1'),
+ ('Szip', '2.1.1'),
+]
+
+moduleclass = 'data'
diff --git a/easybuild/easyconfigs/i/IPython/IPython-8.27.0-GCCcore-13.3.0.eb b/easybuild/easyconfigs/i/IPython/IPython-8.27.0-GCCcore-13.3.0.eb
new file mode 100644
index 00000000000..a85e58910e9
--- /dev/null
+++ b/easybuild/easyconfigs/i/IPython/IPython-8.27.0-GCCcore-13.3.0.eb
@@ -0,0 +1,80 @@
+easyblock = 'PythonBundle'
+
+name = 'IPython'
+version = '8.27.0'
+
+homepage = 'https://ipython.org/index.html'
+description = """IPython provides a rich architecture for interactive computing with:
+ Powerful interactive shells (terminal and Qt-based).
+ A browser-based notebook with support for code, text, mathematical expressions, inline plots and other rich media.
+ Support for interactive data visualization and use of GUI toolkits.
+ Flexible, embeddable interpreters to load into your own projects.
+ Easy to use, high performance tools for parallel computing."""
+
+toolchain = {'name': 'GCCcore', 'version': '13.3.0'}
+
+builddependencies = [
+ ('binutils', '2.42'),
+ ('hatchling', '1.24.2'),
+]
+
+dependencies = [
+ ('Python', '3.12.3'),
+ ('Python-bundle-PyPI', '2024.06'),
+ ('ZeroMQ', '4.3.5'),
+ ('lxml', '5.3.0'),
+ ('jedi', '0.19.1')
+]
+
+sanity_pip_check = True
+use_pip = True
+
+# for the matplotlib-inline required extention we avoid the import sanity check
+# as it will fail without matplotlib in the environment, but ipython devs prefer not to make
+# matplotlib a required dep (https://github.com/ipython/matplotlib-inline/issues/4)
+# we follow the same convention and we not set matplotlib as dependency
+
+# Last updated 20240917
+exts_list = [
+ ('traitlets', '5.14.3', {
+ 'checksums': ['9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7'],
+ }),
+ ('pure_eval', '0.2.3', {
+ 'checksums': ['5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42'],
+ }),
+ ('executing', '2.1.0', {
+ 'checksums': ['8ea27ddd260da8150fa5a708269c4a10e76161e2496ec3e587da9e3c0fe4b9ab'],
+ }),
+ ('asttokens', '2.4.1', {
+ 'checksums': ['b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0'],
+ }),
+ ('stack_data', '0.6.3', {
+ 'checksums': ['836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9'],
+ }),
+ ('prompt_toolkit', '3.0.47', {
+ 'checksums': ['1e1b29cb58080b1e69f207c893a1a7bf16d127a5c30c9d17a25a5d77792e5360'],
+ }),
+ ('pickleshare', '0.7.5', {
+ 'checksums': ['87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca'],
+ }),
+ ('matplotlib-inline', '0.1.6', {
+ 'modulename': False,
+ 'checksums': ['f887e5f10ba98e8d2b150ddcf4702c1e5f8b3a20005eb0f74bfdbd360ee6f304'],
+ }),
+ ('backcall', '0.2.0', {
+ 'checksums': ['5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e'],
+ }),
+ ('ipython', version, {
+ 'modulename': 'IPython',
+ 'checksums': ['0b99a2dc9f15fd68692e898e5568725c6d49c527d36a9fb5960ffbdeaa82ff7e'],
+ }),
+]
+
+sanity_check_paths = {
+ 'files': ['bin/%(namelower)s'],
+ 'dirs': ['lib/python%(pyshortver)s/site-packages/%(name)s'],
+}
+
+sanity_check_commands = ['%(namelower)s -h']
+
+moduleclass = 'tools'
diff --git a/easybuild/easyconfigs/i/inih/inih-58-GCCcore-13.3.0.eb b/easybuild/easyconfigs/i/inih/inih-58-GCCcore-13.3.0.eb
new file mode 100644
index 00000000000..0837277c267
--- /dev/null
+++ b/easybuild/easyconfigs/i/inih/inih-58-GCCcore-13.3.0.eb
@@ -0,0 +1,30 @@
+easyblock = 'MesonNinja'
+
+name = 'inih'
+version = '58'
+
+homepage = 'https://dri.freedesktop.org'
+description = """Direct Rendering Manager runtime library."""
+
+toolchain = {'name': 'GCCcore', 'version': '13.3.0'}
+
+source_urls = ['https://github.com/benhoyt/inih/archive/refs/tags/']
+sources = ['r%(version)s.tar.gz']
+checksums = ['e79216260d5dffe809bda840be48ab0eec7737b2bb9f02d2275c1b46344ea7b7']
+
+builddependencies = [
+ ('binutils', '2.42'),
+ ('pkgconf', '2.2.0'),
+ ('Meson', '1.4.0'),
+ ('Ninja', '1.12.1'),
+]
+
+# installing manpages requires an extra build dependency (docbook xsl)
+# configopts = '-Dman-pages=disabled'
+
+sanity_check_paths = {
+ 'files': ['lib/libinih.%s' % SHLIB_EXT, 'include/ini.h'],
+ 'dirs': ['include', 'lib'],
+}
+
+moduleclass = 'lib'
diff --git a/easybuild/easyconfigs/k/Kaleido/Kaleido-0.2.1-GCCcore-13.3.0.eb b/easybuild/easyconfigs/k/Kaleido/Kaleido-0.2.1-GCCcore-13.3.0.eb
new file mode 100644
index 00000000000..7413eeebb71
--- /dev/null
+++ b/easybuild/easyconfigs/k/Kaleido/Kaleido-0.2.1-GCCcore-13.3.0.eb
@@ -0,0 +1,25 @@
+easyblock = 'PythonPackage'
+
+name = 'Kaleido'
+version = '0.2.1'
+
+homepage = 'https://github.com/plotly/Kaleido'
+description = "Fast static image export for web-based visualization libraries with zero dependencies"
+
+toolchain = {'name': 'GCCcore', 'version': '13.3.0'}
+
+sources = ['%(namelower)s-%(version)s-py2.py3-none-manylinux1_%(arch)s.whl']
+checksums = ['aa21cf1bf1c78f8fa50a9f7d45e1003c387bd3d6fe0a767cfbbf344b95bdc3a8']
+
+builddependencies = [
+ ('binutils', '2.42'),
+]
+dependencies = [
+ ('Python', '3.12.3'),
+]
+
+download_dep_fail = True
+sanity_pip_check = True
+use_pip = True
+
+moduleclass = 'vis'
diff --git a/easybuild/easyconfigs/l/LERC/LERC-4.0.0-GCCcore-13.3.0.eb b/easybuild/easyconfigs/l/LERC/LERC-4.0.0-GCCcore-13.3.0.eb
new file mode 100644
index 00000000000..f4d5e9a50be
--- /dev/null
+++ b/easybuild/easyconfigs/l/LERC/LERC-4.0.0-GCCcore-13.3.0.eb
@@ -0,0 +1,45 @@
+# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild
+# Updated: Denis Kristak
+# Updated: Thomas Hoffmann (EMBL)
+easyblock = 'CMakeMake'
+
+name = 'LERC'
+version = '4.0.0'
+
+homepage = 'https://github.com/Esri/lerc'
+description = """LERC is an open-source image or raster format which supports rapid encoding and decoding
+for any pixel type (not just RGB or Byte). Users set the maximum compression error per pixel while encoding,
+so the precision of the original input image is preserved (within user defined error bounds)."""
+
+toolchain = {'name': 'GCCcore', 'version': '13.3.0'}
+
+source_urls = ['https://github.com/Esri/lerc/archive/']
+sources = ['v%(version)s.tar.gz']
+checksums = ['91431c2b16d0e3de6cbaea188603359f87caed08259a645fd5a3805784ee30a0']
+
+builddependencies = [
+ ('binutils', '2.42'),
+ ('CMake', '3.29.3'),
+]
+
+configopts = '-DCMAKE_INSTALL_LIBDIR=lib'
+
+postinstallcmds = [
+ # copy the LercTest source file to a LercTest subdir in the installation directory and compile it
+ # (needs to be done here instead of in the sanity check, else it won't work when RPATH linking is enabled)
+ "cd %(builddir)s/lerc-%(version)s/src/LercTest && sed -i -e 's@../LercLib/include/@@' main.cpp",
+ "mkdir %(installdir)s/LercTest",
+ "cp %(builddir)s/lerc-%(version)s/src/LercTest/main.cpp %(installdir)s/LercTest/main.cpp",
+ "cd %(installdir)s/LercTest && ${CXX} ${CXXFLAGS} main.cpp -o LercTest -I../include -L../lib -lLerc",
+]
+
+sanity_check_commands = [
+ "%(installdir)s/LercTest/LercTest",
+]
+
+sanity_check_paths = {
+ 'files': ['include/Lerc_c_api.h', 'include/Lerc_types.h', 'lib/libLerc.%s' % SHLIB_EXT],
+ 'dirs': [],
+}
+
+moduleclass = 'lib'
diff --git a/easybuild/easyconfigs/l/libaio/libaio-0.3.113-GCCcore-13.3.0.eb b/easybuild/easyconfigs/l/libaio/libaio-0.3.113-GCCcore-13.3.0.eb
new file mode 100644
index 00000000000..b76bc3cecc4
--- /dev/null
+++ b/easybuild/easyconfigs/l/libaio/libaio-0.3.113-GCCcore-13.3.0.eb
@@ -0,0 +1,39 @@
+easyblock = 'MakeCp'
+
+name = 'libaio'
+version = '0.3.113'
+_libversion = '1.0.2'
+
+homepage = 'https://pagure.io/libaio'
+description = "Asynchronous input/output library that uses the kernels native interface."
+
+toolchain = {'name': 'GCCcore', 'version': '13.3.0'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://pagure.io/%(name)s/archive/%(name)s-%(version)s/']
+sources = ['%(name)s-%(version)s.tar.gz']
+checksums = ['1c561c20670c5c09cc8437a622008c0693c6a7816c1f30332da3796953b2f454']
+
+builddependencies = [('binutils', '2.42')]
+
+_soname = "libaio.%s.%s" % (SHLIB_EXT, _libversion)
+
+files_to_copy = [
+ (["src/libaio.a", "src/%s" % _soname], "lib"),
+ (["src/libaio.h"], "include"),
+]
+
+# links to the shared library with generic names
+_solinks = [
+ "libaio.%s" % SHLIB_EXT,
+ "libaio.%s.1" % SHLIB_EXT,
+]
+
+postinstallcmds = ["cd %%(installdir)s/lib && ln -s %s %s" % (_soname, l) for l in _solinks]
+
+sanity_check_paths = {
+ 'files': ['lib/%s' % l for l in ['libaio.a', _soname] + _solinks] + ['include/libaio.h'],
+ 'dirs': [],
+}
+
+moduleclass = 'lib'
diff --git a/easybuild/easyconfigs/l/libcerf/libcerf-2.4-GCCcore-13.3.0.eb b/easybuild/easyconfigs/l/libcerf/libcerf-2.4-GCCcore-13.3.0.eb
new file mode 100644
index 00000000000..2714c4d2765
--- /dev/null
+++ b/easybuild/easyconfigs/l/libcerf/libcerf-2.4-GCCcore-13.3.0.eb
@@ -0,0 +1,32 @@
+easyblock = 'CMakeMake'
+
+name = 'libcerf'
+version = '2.4'
+
+homepage = 'https://jugit.fz-juelich.de/mlz/libcerf'
+
+description = """
+ libcerf is a self-contained numeric library that provides an efficient and
+ accurate implementation of complex error functions, along with Dawson,
+ Faddeeva, and Voigt functions.
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '13.3.0'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://jugit.fz-juelich.de/mlz/libcerf/-/archive/v%(version)s/']
+sources = ['libcerf-v%(version)s.tar.gz']
+checksums = ['080b30ae564c3dabe3b89264522adaf5647ec754021572bee54929697b276cdc']
+
+builddependencies = [
+ ('binutils', '2.42'),
+ ('CMake', '3.29.3'),
+ ('Perl', '5.38.2'), # required for pod2html
+]
+
+sanity_check_paths = {
+ 'files': ['lib/libcerf.%s' % SHLIB_EXT],
+ 'dirs': []
+}
+
+moduleclass = 'math'
diff --git a/easybuild/easyconfigs/l/libcroco/libcroco-0.6.13-GCCcore-13.3.0.eb b/easybuild/easyconfigs/l/libcroco/libcroco-0.6.13-GCCcore-13.3.0.eb
new file mode 100644
index 00000000000..21b015fd6ed
--- /dev/null
+++ b/easybuild/easyconfigs/l/libcroco/libcroco-0.6.13-GCCcore-13.3.0.eb
@@ -0,0 +1,32 @@
+easyblock = 'ConfigureMake'
+
+name = 'libcroco'
+version = '0.6.13'
+
+homepage = 'https://gitlab.gnome.org/Archive/libcroco'
+description = """Libcroco is a standalone css2 parsing and manipulation library."""
+
+toolchain = {'name': 'GCCcore', 'version': '13.3.0'}
+
+source_urls = ['https://download.gnome.org/sources/libcroco/%(version_major_minor)s/']
+sources = [SOURCE_TAR_XZ]
+checksums = ['767ec234ae7aa684695b3a735548224888132e063f92db585759b422570621d4']
+
+builddependencies = [
+ ('binutils', '2.42'),
+ ('pkgconf', '2.2.0'),
+]
+
+dependencies = [
+ ('zlib', '1.3.1'),
+ ('libxml2', '2.12.7'),
+ ('GLib', '2.80.4'),
+]
+
+sanity_check_paths = {
+ 'files': ['bin/csslint-%(version_major_minor)s', 'lib/libcroco-%%(version_major_minor)s.%s' % SHLIB_EXT,
+ 'lib/libcroco-%(version_major_minor)s.a'],
+ 'dirs': ['include/libcroco-%(version_major_minor)s', 'share']
+}
+
+moduleclass = 'lib'
diff --git a/easybuild/easyconfigs/l/libdap/libdap-3.21.0-27-GCCcore-13.3.0.eb b/easybuild/easyconfigs/l/libdap/libdap-3.21.0-27-GCCcore-13.3.0.eb
new file mode 100644
index 00000000000..707b32da095
--- /dev/null
+++ b/easybuild/easyconfigs/l/libdap/libdap-3.21.0-27-GCCcore-13.3.0.eb
@@ -0,0 +1,37 @@
+easyblock = 'ConfigureMake'
+
+name = 'libdap'
+version = '3.21.0-27'
+
+homepage = 'https://www.opendap.org/software/libdap'
+description = """A C++ SDK which contains an implementation of DAP 2.0 and
+ DAP4.0. This includes both Client- and Server-side support classes."""
+
+toolchain = {'name': 'GCCcore', 'version': '13.3.0'}
+
+source_urls = ['https://www.opendap.org/pub/source/']
+sources = [SOURCE_TAR_GZ]
+checksums = ['b5b8229d3aa97fea9bba4a0b11b1ee1c6446bd5f7ad2cff591f86064f465eacf']
+
+builddependencies = [
+ ('binutils', '2.42'),
+ ('Bison', '3.8.2'),
+ ('flex', '2.6.4'),
+]
+
+dependencies = [
+ ('cURL', '8.7.1'),
+ ('libxml2', '2.12.7'),
+ ('libtirpc', '1.3.5'),
+ ('PCRE', '8.45'),
+ ('util-linux', '2.40'),
+]
+
+configopts = 'TIRPC_LIBS="-ltirpc"'
+
+sanity_check_paths = {
+ 'files': ['bin/getdap', 'bin/getdap4', 'bin/dap-config', 'lib/libdap.a', 'lib/libdap.%s' % SHLIB_EXT],
+ 'dirs': ['include'],
+}
+
+moduleclass = 'lib'
diff --git a/easybuild/easyconfigs/l/libgeotiff/libgeotiff-1.7.3-GCCcore-13.3.0.eb b/easybuild/easyconfigs/l/libgeotiff/libgeotiff-1.7.3-GCCcore-13.3.0.eb
new file mode 100644
index 00000000000..41cba249999
--- /dev/null
+++ b/easybuild/easyconfigs/l/libgeotiff/libgeotiff-1.7.3-GCCcore-13.3.0.eb
@@ -0,0 +1,36 @@
+easyblock = 'ConfigureMake'
+
+name = 'libgeotiff'
+version = '1.7.3'
+
+homepage = 'https://directory.fsf.org/wiki/Libgeotiff'
+description = """Library for reading and writing coordinate system information from/to GeoTIFF files"""
+
+toolchain = {'name': 'GCCcore', 'version': '13.3.0'}
+
+source_urls = ['https://download.osgeo.org/geotiff/libgeotiff']
+sources = [SOURCE_TAR_GZ]
+checksums = ['ba23a3a35980ed3de916e125c739251f8e3266be07540200125a307d7cf5a704']
+
+builddependencies = [
+ ('binutils', '2.42'),
+]
+
+dependencies = [
+ ('PROJ', '9.4.1'),
+ ('libjpeg-turbo', '3.0.1'),
+ ('zlib', '1.3.1'),
+ ('SQLite', '3.45.3'),
+ ('LibTIFF', '4.6.0'),
+ ('cURL', '8.7.1'),
+]
+
+configopts = ' --with-libtiff=$EBROOTLIBTIFF --with-proj=$EBROOTPROJ --with-zlib=$EBROOTZLIB'
+configopts += ' --with-jpeg=$EBROOTLIBJPEGMINTURBO'
+
+sanity_check_paths = {
+ 'files': ['bin/listgeo', 'lib/libgeotiff.a', 'lib/libgeotiff.%s' % SHLIB_EXT],
+ 'dirs': ['include', 'share'],
+}
+
+moduleclass = 'lib'
diff --git a/easybuild/easyconfigs/l/libmad/libmad-0.15.1b-GCCcore-13.3.0.eb b/easybuild/easyconfigs/l/libmad/libmad-0.15.1b-GCCcore-13.3.0.eb
new file mode 100644
index 00000000000..982f59275b1
--- /dev/null
+++ b/easybuild/easyconfigs/l/libmad/libmad-0.15.1b-GCCcore-13.3.0.eb
@@ -0,0 +1,27 @@
+easyblock = 'ConfigureMake'
+
+name = 'libmad'
+version = '0.15.1b'
+
+homepage = 'https://www.underbit.com/products/mad/'
+description = """MAD is a high-quality MPEG audio decoder."""
+
+toolchain = {'name': 'GCCcore', 'version': '13.3.0'}
+
+source_urls = ['https://sourceforge.net/projects/mad/files/%(name)s/%(version)s/']
+sources = [SOURCELOWER_TAR_GZ]
+patches = ['libmad-0.15.1b-remove-depreciated-gcc-option.patch']
+checksums = [
+ 'bbfac3ed6bfbc2823d3775ebb931087371e142bb0e9bb1bee51a76a6e0078690', # libmad-0.15.1b.tar.gz
+ # libmad-0.15.1b-remove-depreciated-gcc-option.patch
+ '8f96a23a22ba66e62f32e20064d01f4c7f6a18ba0aab85d3be9ce63794b2c678',
+]
+
+builddependencies = [('binutils', '2.42')]
+
+sanity_check_paths = {
+ 'files': ['include/mad.h', 'lib/libmad.a', 'lib/libmad.la', 'lib/libmad.%s' % SHLIB_EXT],
+ 'dirs': ['include', 'lib', 'lib64']
+}
+
+moduleclass = 'lib'
diff --git a/easybuild/easyconfigs/m/MCR/MCR-R2024b.eb b/easybuild/easyconfigs/m/MCR/MCR-R2024b.eb
new file mode 100644
index 00000000000..17ad8df12f6
--- /dev/null
+++ b/easybuild/easyconfigs/m/MCR/MCR-R2024b.eb
@@ -0,0 +1,17 @@
+name = 'MCR'
+version = 'R2024b' # runtime version 24.2
+local_update = '0'
+
+homepage = 'https://www.mathworks.com/products/compiler/mcr/'
+description = """The MATLAB Runtime is a standalone set of shared libraries
+ that enables the execution of compiled MATLAB applications
+ or components on computers that do not have MATLAB installed."""
+
+toolchain = SYSTEM
+
+source_urls = ['https://ssd.mathworks.com/supportfiles/downloads/%%(version)s/Release/%s/deployment_files/'
+ 'installer/complete/glnxa64/' % local_update]
+sources = ['MATLAB_Runtime_%(version)s_glnxa64.zip']
+checksums = ['c46f4b55747aa4a8c03c1ece5bd5360c4dbb2ca402608fbd44688ba55f9b7a54']
+
+moduleclass = 'math'
diff --git a/easybuild/easyconfigs/m/MEME/MEME-5.5.7-gompi-2023b.eb b/easybuild/easyconfigs/m/MEME/MEME-5.5.7-gompi-2023b.eb
new file mode 100644
index 00000000000..08fdaab9f31
--- /dev/null
+++ b/easybuild/easyconfigs/m/MEME/MEME-5.5.7-gompi-2023b.eb
@@ -0,0 +1,63 @@
+# Contribution from the NIHR Biomedical Research Centre
+# Guy's and St Thomas' NHS Foundation Trust and King's College London
+# uploaded by J. Sassmannshausen
+
+easyblock = 'ConfigureMake'
+
+name = 'MEME'
+version = '5.5.7'
+
+homepage = 'https://meme-suite.org/meme/index.html'
+description = """The MEME Suite allows you to: * discover motifs using MEME, DREME (DNA only) or
+ GLAM2 on groups of related DNA or protein sequences, * search sequence databases with motifs using
+ MAST, FIMO, MCAST or GLAM2SCAN, * compare a motif to all motifs in a database of motifs, * associate
+ motifs with Gene Ontology terms via their putative target genes, and * analyse motif enrichment
+ using SpaMo or CentriMo."""
+
+toolchain = {'name': 'gompi', 'version': '2023b'}
+
+source_urls = ['https://%(namelower)s-suite.org/%(namelower)s/%(namelower)s-software/%(version)s']
+sources = [SOURCELOWER_TAR_GZ]
+checksums = ['1dca8d0e6d1d36570c1a88ab8dbe7e4b177733fbbeacaa2e8c4674febf57aaf4']
+
+dependencies = [
+ ('libxml2', '2.11.5'),
+ ('libxslt', '1.1.38'),
+ ('zlib', '1.2.13'),
+ ('Perl', '5.38.0'),
+ ('Python', '3.11.5'),
+ ('Ghostscript', '10.02.1'),
+ ('XML-Compile', '1.63'),
+]
+
+configopts = '--with-perl=${EBROOTPERL}/bin/perl --with-python=${EBROOTPYTHON}/bin/python '
+configopts += '--with-gs=${EBROOTGHOSTSCRIPT}/bin/gs '
+# config.log should indicate that all required/optional dependencies were found (see scripts/dependencies.pl)
+configopts += " && grep 'All required and optional Perl modules were found' config.log"
+
+pretestopts = "OMPI_MCA_rmaps_base_oversubscribe=1 "
+# test xstreme4 fails on Ubuntu 20.04, see: https://groups.google.com/g/meme-suite/c/GlfpGwApz1Y
+runtest = 'test'
+
+fix_perl_shebang_for = ['bin/*', 'libexec/meme-%(version)s/*']
+fix_python_shebang_for = ['bin/*', 'libexec/meme-%(version)s/*']
+
+sanity_check_paths = {
+ 'files': ['bin/meme', 'bin/dreme', 'bin/meme-chip', 'libexec/meme-%(version)s/meme2meme'],
+ 'dirs': ['lib'],
+}
+
+sanity_check_commands = [
+ "mpirun meme -h 2>&1 | grep 'Usage:'",
+ "meme2meme --help",
+ "perl -e 'require MemeSAX'",
+ "python -c 'import sequence_py3'",
+]
+
+modextrapaths = {
+ 'PATH': ['libexec/meme-%(version)s'],
+ 'PERL5LIB': ['lib/meme-%(version)s/perl'],
+ 'PYTHONPATH': ['lib/meme-%(version)s/python'],
+}
+
+moduleclass = 'bio'
diff --git a/easybuild/easyconfigs/m/MrBayes/MrBayes-3.2.7-gompi-2023a.eb b/easybuild/easyconfigs/m/MrBayes/MrBayes-3.2.7-gompi-2023a.eb
new file mode 100644
index 00000000000..a3537244720
--- /dev/null
+++ b/easybuild/easyconfigs/m/MrBayes/MrBayes-3.2.7-gompi-2023a.eb
@@ -0,0 +1,30 @@
+easyblock = 'ConfigureMake'
+
+name = 'MrBayes'
+version = '3.2.7'
+
+homepage = "https://nbisweden.github.io/MrBayes/"
+description = """MrBayes is a program for Bayesian inference and model choice across
+ a wide range of phylogenetic and evolutionary models."""
+
+toolchain = {'name': 'gompi', 'version': '2023a'}
+
+source_urls = ['https://github.com/NBISweden/MrBayes/releases/download/v%(version)s/']
+sources = [SOURCELOWER_TAR_GZ]
+checksums = ['39d9eb269969b501268d5c27f77687c6eaa2c71ccf15c724e6f330fc405f24b9']
+
+dependencies = [
+ ('libreadline', '8.2'),
+ ('beagle-lib', '4.0.1', '-CUDA-12.1.1'),
+]
+
+configopts = "--with-mpi --with-readline --with-beagle=$EBROOTBEAGLEMINLIB "
+
+sanity_check_paths = {
+ 'files': ['bin/mb'],
+ 'dirs': ['share'],
+}
+
+sanity_check_commands = ['mb -h']
+
+moduleclass = 'bio'
diff --git a/easybuild/easyconfigs/m/modin/modin-0.32.0-foss-2024a.eb b/easybuild/easyconfigs/m/modin/modin-0.32.0-foss-2024a.eb
new file mode 100644
index 00000000000..3d6ce8d2958
--- /dev/null
+++ b/easybuild/easyconfigs/m/modin/modin-0.32.0-foss-2024a.eb
@@ -0,0 +1,57 @@
+easyblock = 'PythonBundle'
+
+name = 'modin'
+version = '0.32.0'
+
+homepage = 'https://github.com/modin-project/modin'
+description = """Modin uses Ray, Dask or Unidist to provide an effortless way to speed up your pandas notebooks,
+scripts, and libraries. """
+
+toolchain = {'name': 'foss', 'version': '2024a'}
+
+builddependencies = [
+ ('Cython', '3.0.10'),
+ # Needed for tests
+ ('boto3', '1.35.36'),
+ ('s3fs', '2024.9.0'),
+]
+
+dependencies = [
+ ('Python', '3.12.3'),
+ ('Python-bundle-PyPI', '2024.06'),
+ ('SciPy-bundle', '2024.05'),
+ ('dask', '2024.9.1'),
+ ('OpenMPI', '5.0.3'),
+ ('Ray-project', '2.37.0'),
+ ('Arrow', '17.0.0'),
+]
+
+use_pip = True
+
+exts_list = [
+ ('unidist', '0.7.2', {
+ 'checksums': ['6386e1ad5143fe132b9f96e232fe85fc39830ed2886515440e4ba1473255e4a0'],
+ }),
+ # The oversubscription is done in their own CI as well.
+ # Ray has limitations on unix socket path length, so it is not tested here.
+ (name, version, {
+ 'patches': ['modin-0.32.0_fix-pytest-config.patch'],
+ 'runtest': (
+ "MODIN_ENGINE=unidist UNIDIST_ENGINE=mpi "
+ "mpiexec -n=1 --map-by :OVERSUBSCRIBE pytest modin/tests/pandas/test_general.py &&"
+ "MODIN_ENGINE=dask pytest modin/tests/pandas/test_general.py"
+ ),
+ 'source_tmpl': '%(version)s.tar.gz',
+ 'source_urls': ['https://github.com/modin-project/%(name)s/archive/refs/tags'],
+ 'testinstall': True,
+ 'checksums': [
+ {'0.32.0.tar.gz': 'f2ef11f384a7d47eb6680a2f6f4bbc3404fa6290163d36384032daff3837b063'},
+ {'modin-0.32.0_fix-pytest-config.patch':
+ 'c49bd5c072a87321760c7c5eebc957f4f6962763a3526a500fe6330cf3f2b765'},
+ ],
+ }),
+]
+
+sanity_pip_check = True
+
+moduleclass = 'tools'
diff --git a/easybuild/easyconfigs/m/modin/modin-0.32.0_fix-pytest-config.patch b/easybuild/easyconfigs/m/modin/modin-0.32.0_fix-pytest-config.patch
new file mode 100644
index 00000000000..990e053d328
--- /dev/null
+++ b/easybuild/easyconfigs/m/modin/modin-0.32.0_fix-pytest-config.patch
@@ -0,0 +1,20 @@
+Removes unnecessary options for pytest that induce additional dependencies.
+
+--- 0.32.0/foss-2024a/modin/modin-0.32.0/setup.cfg.orig 2024-10-17 15:56:55.245266649 +0200
++++ 0.32.0/foss-2024a/modin/modin-0.32.0/setup.cfg 2024-10-17 15:57:34.748841878 +0200
+@@ -11,15 +11,6 @@
+ tag_prefix =
+ parentdir_prefix = modin-
+
+-[tool:pytest]
+-addopts = --cov-config=setup.cfg --cov=modin --cov-append --cov-report= -m "not exclude_by_default"
+-xfail_strict=true
+-markers =
+- exclude_in_sanity
+- exclude_by_default
+-filterwarnings =
+- error:.*defaulting to pandas.*:UserWarning
+-
+ [isort]
+ profile = black
+
diff --git a/easybuild/easyconfigs/m/modkit/modkit-0.3.3-GCCcore-12.3.0.eb b/easybuild/easyconfigs/m/modkit/modkit-0.3.3-GCCcore-12.3.0.eb
new file mode 100644
index 00000000000..63e5c0110bf
--- /dev/null
+++ b/easybuild/easyconfigs/m/modkit/modkit-0.3.3-GCCcore-12.3.0.eb
@@ -0,0 +1,572 @@
+easyblock = 'Cargo'
+
+name = 'modkit'
+version = '0.3.3'
+
+homepage = 'https://github.com/nanoporetech/modkit'
+description = 'A bioinformatics tool for working with modified bases.'
+
+toolchain = {'name': 'GCCcore', 'version': '12.3.0'}
+
+source_urls = ['https://github.com/nanoporetech/modkit/archive/']
+sources = ['v%(version)s.tar.gz']
+
+builddependencies = [
+ ('binutils', '2.40'),
+ ('Rust', '1.75.0'),
+ ('Perl-bundle-CPAN', '5.36.1'),
+]
+
+sanity_check_paths = {
+ 'files': ['bin/%(namelower)s'],
+ 'dirs': [],
+}
+
+sanity_check_commands = ["%(namelower)s --help"]
+
+crates = [
+ ('adler2', '2.0.0'),
+ ('ahash', '0.8.11'),
+ ('aho-corasick', '1.1.3'),
+ ('android-tzdata', '0.1.1'),
+ ('android_system_properties', '0.1.5'),
+ ('ansi_term', '0.12.1'),
+ ('anstream', '0.6.15'),
+ ('anstyle', '1.0.8'),
+ ('anstyle-parse', '0.2.5'),
+ ('anstyle-query', '1.1.1'),
+ ('anstyle-wincon', '3.0.4'),
+ ('anyhow', '1.0.91'),
+ ('approx', '0.5.1'),
+ ('arc-swap', '1.7.1'),
+ ('assert_approx_eq', '1.1.0'),
+ ('autocfg', '1.4.0'),
+ ('bio', '1.6.0'),
+ ('bio-types', '1.0.4'),
+ ('bit-set', '0.5.3'),
+ ('bit-vec', '0.6.3'),
+ ('bitflags', '2.6.0'),
+ ('bitvec', '1.0.1'),
+ ('block-buffer', '0.10.4'),
+ ('bstr', '1.10.0'),
+ ('bumpalo', '3.16.0'),
+ ('bv', '0.11.1'),
+ ('bytecount', '0.6.8'),
+ ('bytemuck', '1.19.0'),
+ ('byteorder', '1.5.0'),
+ ('bytes', '1.8.0'),
+ ('bzip2-sys', '0.1.11+1.0.8'),
+ ('cc', '1.1.31'),
+ ('cfg-if', '1.0.0'),
+ ('charming', '0.3.1'),
+ ('chrono', '0.4.38'),
+ ('clap', '4.5.20'),
+ ('clap_builder', '4.5.20'),
+ ('clap_derive', '4.5.18'),
+ ('clap_lex', '0.7.2'),
+ ('cmake', '0.1.51'),
+ ('colorchoice', '1.0.2'),
+ ('common_macros', '0.1.1'),
+ ('console', '0.15.8'),
+ ('core-foundation-sys', '0.8.7'),
+ ('cpufeatures', '0.2.14'),
+ ('crc32fast', '1.4.2'),
+ ('crossbeam', '0.8.4'),
+ ('crossbeam-channel', '0.5.13'),
+ ('crossbeam-deque', '0.8.5'),
+ ('crossbeam-epoch', '0.9.18'),
+ ('crossbeam-queue', '0.3.11'),
+ ('crossbeam-utils', '0.8.20'),
+ ('crypto-common', '0.1.6'),
+ ('csv', '1.3.0'),
+ ('csv-core', '0.1.11'),
+ ('curl-sys', '0.4.77+curl-8.10.1'),
+ ('custom_derive', '0.1.7'),
+ ('derivative', '2.2.0'),
+ ('derive-new', '0.5.9'),
+ ('derive-new', '0.6.0'),
+ ('destructure_traitobject', '0.2.0'),
+ ('digest', '0.10.7'),
+ ('dirs-next', '2.0.0'),
+ ('dirs-sys-next', '0.1.2'),
+ ('doc-comment', '0.3.3'),
+ ('editdistancek', '1.0.2'),
+ ('either', '1.13.0'),
+ ('encode_unicode', '0.3.6'),
+ ('encode_unicode', '1.0.0'),
+ ('enum-map', '2.7.3'),
+ ('enum-map-derive', '0.17.0'),
+ ('equivalent', '1.0.1'),
+ ('errno', '0.3.9'),
+ ('fastrand', '2.1.1'),
+ ('feature-probe', '0.1.1'),
+ ('fixedbitset', '0.4.2'),
+ ('flate2', '1.0.34'),
+ ('fnv', '1.0.7'),
+ ('form_urlencoded', '1.2.1'),
+ ('fs-utils', '1.1.4'),
+ ('funty', '2.0.0'),
+ ('fxhash', '0.2.1'),
+ ('generic-array', '0.14.7'),
+ ('getrandom', '0.2.15'),
+ ('glob', '0.3.1'),
+ ('handlebars', '4.5.0'),
+ ('hashbrown', '0.13.2'),
+ ('hashbrown', '0.15.0'),
+ ('heck', '0.4.1'),
+ ('heck', '0.5.0'),
+ ('hermit-abi', '0.3.9'),
+ ('hermit-abi', '0.4.0'),
+ ('hts-sys', '2.1.4'),
+ ('humantime', '2.1.0'),
+ ('iana-time-zone', '0.1.61'),
+ ('iana-time-zone-haiku', '0.1.2'),
+ ('idna', '0.5.0'),
+ ('ieee754', '0.2.6'),
+ ('indexmap', '2.6.0'),
+ ('indicatif', '0.17.8'),
+ ('instant', '0.1.13'),
+ ('is-terminal', '0.4.13'),
+ ('is_terminal_polyfill', '1.70.1'),
+ ('itertools', '0.11.0'),
+ ('itertools', '0.12.1'),
+ ('itertools-num', '0.1.3'),
+ ('itoa', '1.0.11'),
+ ('jobserver', '0.1.32'),
+ ('js-sys', '0.3.72'),
+ ('lazy_static', '1.5.0'),
+ ('libc', '0.2.161'),
+ ('libm', '0.2.8'),
+ ('libredox', '0.1.3'),
+ ('libz-sys', '1.1.20'),
+ ('linear-map', '1.2.0'),
+ ('linux-raw-sys', '0.4.14'),
+ ('lock_api', '0.4.12'),
+ ('log', '0.4.22'),
+ ('log-mdc', '0.1.0'),
+ ('log-once', '0.4.1'),
+ ('log4rs', '1.3.0'),
+ ('lru', '0.9.0'),
+ ('lzma-sys', '0.1.20'),
+ ('matrixmultiply', '0.3.9'),
+ ('memchr', '2.7.4'),
+ ('minimal-lexical', '0.2.1'),
+ ('miniz_oxide', '0.8.0'),
+ ('multimap', '0.9.1'),
+ ('nalgebra', '0.29.0'),
+ ('nalgebra-macros', '0.1.0'),
+ ('ndarray', '0.15.6'),
+ ('newtype_derive', '0.1.6'),
+ ('nom', '7.1.3'),
+ ('noodles', '0.50.0'),
+ ('noodles-bgzf', '0.24.0'),
+ ('noodles-core', '0.12.0'),
+ ('noodles-csi', '0.24.0'),
+ ('noodles-tabix', '0.29.0'),
+ ('num', '0.4.3'),
+ ('num-bigint', '0.4.6'),
+ ('num-complex', '0.4.6'),
+ ('num-integer', '0.1.46'),
+ ('num-iter', '0.1.45'),
+ ('num-rational', '0.4.2'),
+ ('num-traits', '0.2.19'),
+ ('num_cpus', '1.16.0'),
+ ('number_prefix', '0.4.0'),
+ ('once_cell', '1.20.2'),
+ ('openssl-src', '300.4.0+3.4.0'),
+ ('openssl-sys', '0.9.104'),
+ ('order-stat', '0.1.3'),
+ ('ordered-float', '2.10.1'),
+ ('ordered-float', '3.9.2'),
+ ('parking_lot', '0.12.3'),
+ ('parking_lot_core', '0.9.10'),
+ ('paste', '1.0.15'),
+ ('percent-encoding', '2.3.1'),
+ ('peroxide', '0.32.1'),
+ ('peroxide-ad', '0.3.0'),
+ ('pest', '2.7.14'),
+ ('pest_derive', '2.7.14'),
+ ('pest_generator', '2.7.14'),
+ ('pest_meta', '2.7.14'),
+ ('petgraph', '0.6.5'),
+ ('pkg-config', '0.3.31'),
+ ('portable-atomic', '1.9.0'),
+ ('ppv-lite86', '0.2.20'),
+ ('prettytable-rs', '0.10.0'),
+ ('proc-macro2', '1.0.89'),
+ ('pulp', '0.18.22'),
+ ('puruspe', '0.2.5'),
+ ('quick-error', '1.2.3'),
+ ('quote', '1.0.37'),
+ ('radium', '0.7.0'),
+ ('rand', '0.8.5'),
+ ('rand_chacha', '0.3.1'),
+ ('rand_core', '0.6.4'),
+ ('rand_distr', '0.4.3'),
+ ('rawpointer', '0.2.1'),
+ ('rayon', '1.10.0'),
+ ('rayon-core', '1.12.1'),
+ ('reborrow', '0.5.5'),
+ ('redox_syscall', '0.5.7'),
+ ('redox_users', '0.4.6'),
+ ('regex', '1.11.0'),
+ ('regex-automata', '0.4.8'),
+ ('regex-syntax', '0.8.5'),
+ ('rust-htslib', '0.46.0'),
+ ('rust-lapper', '1.1.0'),
+ ('rustc-hash', '1.1.0'),
+ ('rustc_version', '0.1.7'),
+ ('rustix', '0.38.37'),
+ ('rustversion', '1.0.18'),
+ ('rv', '0.16.0'),
+ ('ryu', '1.0.18'),
+ ('safe_arch', '0.7.2'),
+ ('scopeguard', '1.2.0'),
+ ('semver', '0.1.20'),
+ ('serde', '1.0.213'),
+ ('serde-value', '0.7.0'),
+ ('serde_derive', '1.0.213'),
+ ('serde_json', '1.0.132'),
+ ('serde_yaml', '0.9.34+deprecated'),
+ ('sha2', '0.10.8'),
+ ('shlex', '1.3.0'),
+ ('simba', '0.6.0'),
+ ('similar', '2.6.0'),
+ ('similar-asserts', '1.6.0'),
+ ('smallvec', '1.13.2'),
+ ('special', '0.10.3'),
+ ('statrs', '0.16.1'),
+ ('strsim', '0.11.1'),
+ ('strum', '0.25.0'),
+ ('strum_macros', '0.25.3'),
+ ('strum_macros', '0.26.4'),
+ ('substring', '1.4.5'),
+ ('syn', '1.0.109'),
+ ('syn', '2.0.82'),
+ ('tap', '1.0.1'),
+ ('tempfile', '3.13.0'),
+ ('term', '0.7.0'),
+ ('terminal_size', '0.4.0'),
+ ('thiserror', '1.0.65'),
+ ('thiserror-impl', '1.0.65'),
+ ('thread-id', '4.2.2'),
+ ('thread-tree', '0.3.3'),
+ ('tinyvec', '1.8.0'),
+ ('tinyvec_macros', '0.1.1'),
+ ('triple_accel', '0.4.0'),
+ ('typemap-ors', '1.0.0'),
+ ('typenum', '1.17.0'),
+ ('ucd-trie', '0.1.7'),
+ ('unicode-bidi', '0.3.17'),
+ ('unicode-ident', '1.0.13'),
+ ('unicode-normalization', '0.1.24'),
+ ('unicode-segmentation', '1.12.0'),
+ ('unicode-width', '0.1.14'),
+ ('unsafe-any-ors', '1.0.0'),
+ ('unsafe-libyaml', '0.2.11'),
+ ('url', '2.5.2'),
+ ('utf8parse', '0.2.2'),
+ ('vcpkg', '0.2.15'),
+ ('vec_map', '0.8.2'),
+ ('version_check', '0.9.5'),
+ ('wasi', '0.11.0+wasi-snapshot-preview1'),
+ ('wasm-bindgen', '0.2.95'),
+ ('wasm-bindgen-backend', '0.2.95'),
+ ('wasm-bindgen-macro', '0.2.95'),
+ ('wasm-bindgen-macro-support', '0.2.95'),
+ ('wasm-bindgen-shared', '0.2.95'),
+ ('wide', '0.7.28'),
+ ('winapi', '0.3.9'),
+ ('winapi-i686-pc-windows-gnu', '0.4.0'),
+ ('winapi-x86_64-pc-windows-gnu', '0.4.0'),
+ ('windows-core', '0.52.0'),
+ ('windows-sys', '0.52.0'),
+ ('windows-sys', '0.59.0'),
+ ('windows-targets', '0.52.6'),
+ ('windows_aarch64_gnullvm', '0.52.6'),
+ ('windows_aarch64_msvc', '0.52.6'),
+ ('windows_i686_gnu', '0.52.6'),
+ ('windows_i686_gnullvm', '0.52.6'),
+ ('windows_i686_msvc', '0.52.6'),
+ ('windows_x86_64_gnu', '0.52.6'),
+ ('windows_x86_64_gnullvm', '0.52.6'),
+ ('windows_x86_64_msvc', '0.52.6'),
+ ('wyz', '0.5.1'),
+ ('zerocopy', '0.7.35'),
+ ('zerocopy-derive', '0.7.35'),
+]
+
+checksums = [
+ {'v0.3.3.tar.gz': 'f61674c48ef6b9e3ebd547067d693e128c1da66761ddda08d479d58d52017b2b'},
+ {'adler2-2.0.0.tar.gz': '512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627'},
+ {'ahash-0.8.11.tar.gz': 'e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011'},
+ {'aho-corasick-1.1.3.tar.gz': '8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916'},
+ {'android-tzdata-0.1.1.tar.gz': 'e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0'},
+ {'android_system_properties-0.1.5.tar.gz': '819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311'},
+ {'ansi_term-0.12.1.tar.gz': 'd52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2'},
+ {'anstream-0.6.15.tar.gz': '64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526'},
+ {'anstyle-1.0.8.tar.gz': '1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1'},
+ {'anstyle-parse-0.2.5.tar.gz': 'eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb'},
+ {'anstyle-query-1.1.1.tar.gz': '6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a'},
+ {'anstyle-wincon-3.0.4.tar.gz': '5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8'},
+ {'anyhow-1.0.91.tar.gz': 'c042108f3ed77fd83760a5fd79b53be043192bb3b9dba91d8c574c0ada7850c8'},
+ {'approx-0.5.1.tar.gz': 'cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6'},
+ {'arc-swap-1.7.1.tar.gz': '69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457'},
+ {'assert_approx_eq-1.1.0.tar.gz': '3c07dab4369547dbe5114677b33fbbf724971019f3818172d59a97a61c774ffd'},
+ {'autocfg-1.4.0.tar.gz': 'ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26'},
+ {'bio-1.6.0.tar.gz': '7a72cb93babf08c85b375c2938ac678cc637936b3ebb72266d433cec2577f6c2'},
+ {'bio-types-1.0.4.tar.gz': 'f4dcf54f8b7f51450207d54780bab09c05f30b8b0caa991545082842e466ad7e'},
+ {'bit-set-0.5.3.tar.gz': '0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1'},
+ {'bit-vec-0.6.3.tar.gz': '349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb'},
+ {'bitflags-2.6.0.tar.gz': 'b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de'},
+ {'bitvec-1.0.1.tar.gz': '1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c'},
+ {'block-buffer-0.10.4.tar.gz': '3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71'},
+ {'bstr-1.10.0.tar.gz': '40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c'},
+ {'bumpalo-3.16.0.tar.gz': '79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c'},
+ {'bv-0.11.1.tar.gz': '8834bb1d8ee5dc048ee3124f2c7c1afcc6bc9aed03f11e9dfd8c69470a5db340'},
+ {'bytecount-0.6.8.tar.gz': '5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce'},
+ {'bytemuck-1.19.0.tar.gz': '8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d'},
+ {'byteorder-1.5.0.tar.gz': '1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b'},
+ {'bytes-1.8.0.tar.gz': '9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da'},
+ {'bzip2-sys-0.1.11+1.0.8.tar.gz': '736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc'},
+ {'cc-1.1.31.tar.gz': 'c2e7962b54006dcfcc61cb72735f4d89bb97061dd6a7ed882ec6b8ee53714c6f'},
+ {'cfg-if-1.0.0.tar.gz': 'baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd'},
+ {'charming-0.3.1.tar.gz': 'f4c6b6990238a64b4ae139e7085ce2a11815cb67a0c066a3333ce40f3a329be3'},
+ {'chrono-0.4.38.tar.gz': 'a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401'},
+ {'clap-4.5.20.tar.gz': 'b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8'},
+ {'clap_builder-4.5.20.tar.gz': '19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54'},
+ {'clap_derive-4.5.18.tar.gz': '4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab'},
+ {'clap_lex-0.7.2.tar.gz': '1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97'},
+ {'cmake-0.1.51.tar.gz': 'fb1e43aa7fd152b1f968787f7dbcdeb306d1867ff373c69955211876c053f91a'},
+ {'colorchoice-1.0.2.tar.gz': 'd3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0'},
+ {'common_macros-0.1.1.tar.gz': 'f3f6d59c71e7dc3af60f0af9db32364d96a16e9310f3f5db2b55ed642162dd35'},
+ {'console-0.15.8.tar.gz': '0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb'},
+ {'core-foundation-sys-0.8.7.tar.gz': '773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b'},
+ {'cpufeatures-0.2.14.tar.gz': '608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0'},
+ {'crc32fast-1.4.2.tar.gz': 'a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3'},
+ {'crossbeam-0.8.4.tar.gz': '1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8'},
+ {'crossbeam-channel-0.5.13.tar.gz': '33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2'},
+ {'crossbeam-deque-0.8.5.tar.gz': '613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d'},
+ {'crossbeam-epoch-0.9.18.tar.gz': '5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e'},
+ {'crossbeam-queue-0.3.11.tar.gz': 'df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35'},
+ {'crossbeam-utils-0.8.20.tar.gz': '22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80'},
+ {'crypto-common-0.1.6.tar.gz': '1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3'},
+ {'csv-1.3.0.tar.gz': 'ac574ff4d437a7b5ad237ef331c17ccca63c46479e5b5453eb8e10bb99a759fe'},
+ {'csv-core-0.1.11.tar.gz': '5efa2b3d7902f4b634a20cae3c9c4e6209dc4779feb6863329607560143efa70'},
+ {'curl-sys-0.4.77+curl-8.10.1.tar.gz': 'f469e8a5991f277a208224f6c7ad72ecb5f986e36d09ae1f2c1bb9259478a480'},
+ {'custom_derive-0.1.7.tar.gz': 'ef8ae57c4978a2acd8b869ce6b9ca1dfe817bff704c220209fdef2c0b75a01b9'},
+ {'derivative-2.2.0.tar.gz': 'fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b'},
+ {'derive-new-0.5.9.tar.gz': '3418329ca0ad70234b9735dc4ceed10af4df60eff9c8e7b06cb5e520d92c3535'},
+ {'derive-new-0.6.0.tar.gz': 'd150dea618e920167e5973d70ae6ece4385b7164e0d799fe7c122dd0a5d912ad'},
+ {'destructure_traitobject-0.2.0.tar.gz': '3c877555693c14d2f84191cfd3ad8582790fc52b5e2274b40b59cf5f5cea25c7'},
+ {'digest-0.10.7.tar.gz': '9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292'},
+ {'dirs-next-2.0.0.tar.gz': 'b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1'},
+ {'dirs-sys-next-0.1.2.tar.gz': '4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d'},
+ {'doc-comment-0.3.3.tar.gz': 'fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10'},
+ {'editdistancek-1.0.2.tar.gz': '3e02df23d5b1c6f9e69fa603b890378123b93073df998a21e6e33b9db0a32613'},
+ {'either-1.13.0.tar.gz': '60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0'},
+ {'encode_unicode-0.3.6.tar.gz': 'a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f'},
+ {'encode_unicode-1.0.0.tar.gz': '34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0'},
+ {'enum-map-2.7.3.tar.gz': '6866f3bfdf8207509a033af1a75a7b08abda06bbaaeae6669323fd5a097df2e9'},
+ {'enum-map-derive-0.17.0.tar.gz': 'f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb'},
+ {'equivalent-1.0.1.tar.gz': '5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5'},
+ {'errno-0.3.9.tar.gz': '534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba'},
+ {'fastrand-2.1.1.tar.gz': 'e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6'},
+ {'feature-probe-0.1.1.tar.gz': '835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da'},
+ {'fixedbitset-0.4.2.tar.gz': '0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80'},
+ {'flate2-1.0.34.tar.gz': 'a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0'},
+ {'fnv-1.0.7.tar.gz': '3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1'},
+ {'form_urlencoded-1.2.1.tar.gz': 'e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456'},
+ {'fs-utils-1.1.4.tar.gz': '6fc7a9dc005c944c98a935e7fd626faf5bf7e5a609f94bc13e42fc4a02e52593'},
+ {'funty-2.0.0.tar.gz': 'e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c'},
+ {'fxhash-0.2.1.tar.gz': 'c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c'},
+ {'generic-array-0.14.7.tar.gz': '85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a'},
+ {'getrandom-0.2.15.tar.gz': 'c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7'},
+ {'glob-0.3.1.tar.gz': 'd2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b'},
+ {'handlebars-4.5.0.tar.gz': 'faa67bab9ff362228eb3d00bd024a4965d8231bbb7921167f0cfa66c6626b225'},
+ {'hashbrown-0.13.2.tar.gz': '43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e'},
+ {'hashbrown-0.15.0.tar.gz': '1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb'},
+ {'heck-0.4.1.tar.gz': '95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8'},
+ {'heck-0.5.0.tar.gz': '2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea'},
+ {'hermit-abi-0.3.9.tar.gz': 'd231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024'},
+ {'hermit-abi-0.4.0.tar.gz': 'fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc'},
+ {'hts-sys-2.1.4.tar.gz': 'e9f348d14cb4e50444e39fcd6b00302fe2ed2bc88094142f6278391d349a386d'},
+ {'humantime-2.1.0.tar.gz': '9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4'},
+ {'iana-time-zone-0.1.61.tar.gz': '235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220'},
+ {'iana-time-zone-haiku-0.1.2.tar.gz': 'f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f'},
+ {'idna-0.5.0.tar.gz': '634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6'},
+ {'ieee754-0.2.6.tar.gz': '9007da9cacbd3e6343da136e98b0d2df013f553d35bdec8b518f07bea768e19c'},
+ {'indexmap-2.6.0.tar.gz': '707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da'},
+ {'indicatif-0.17.8.tar.gz': '763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3'},
+ {'instant-0.1.13.tar.gz': 'e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222'},
+ {'is-terminal-0.4.13.tar.gz': '261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b'},
+ {'is_terminal_polyfill-1.70.1.tar.gz': '7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf'},
+ {'itertools-0.11.0.tar.gz': 'b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57'},
+ {'itertools-0.12.1.tar.gz': 'ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569'},
+ {'itertools-num-0.1.3.tar.gz': 'a872a22f9e6f7521ca557660adb96dd830e54f0f490fa115bb55dd69d38b27e7'},
+ {'itoa-1.0.11.tar.gz': '49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b'},
+ {'jobserver-0.1.32.tar.gz': '48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0'},
+ {'js-sys-0.3.72.tar.gz': '6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9'},
+ {'lazy_static-1.5.0.tar.gz': 'bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe'},
+ {'libc-0.2.161.tar.gz': '8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1'},
+ {'libm-0.2.8.tar.gz': '4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058'},
+ {'libredox-0.1.3.tar.gz': 'c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d'},
+ {'libz-sys-1.1.20.tar.gz': 'd2d16453e800a8cf6dd2fc3eb4bc99b786a9b90c663b8559a5b1a041bf89e472'},
+ {'linear-map-1.2.0.tar.gz': 'bfae20f6b19ad527b550c223fddc3077a547fc70cda94b9b566575423fd303ee'},
+ {'linux-raw-sys-0.4.14.tar.gz': '78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89'},
+ {'lock_api-0.4.12.tar.gz': '07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17'},
+ {'log-0.4.22.tar.gz': 'a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24'},
+ {'log-mdc-0.1.0.tar.gz': 'a94d21414c1f4a51209ad204c1776a3d0765002c76c6abcb602a6f09f1e881c7'},
+ {'log-once-0.4.1.tar.gz': '6d8a05e3879b317b1b6dbf353e5bba7062bedcc59815267bb23eaa0c576cebf0'},
+ {'log4rs-1.3.0.tar.gz': '0816135ae15bd0391cf284eab37e6e3ee0a6ee63d2ceeb659862bd8d0a984ca6'},
+ {'lru-0.9.0.tar.gz': '71e7d46de488603ffdd5f30afbc64fbba2378214a2c3a2fb83abf3d33126df17'},
+ {'lzma-sys-0.1.20.tar.gz': '5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27'},
+ {'matrixmultiply-0.3.9.tar.gz': '9380b911e3e96d10c1f415da0876389aaf1b56759054eeb0de7df940c456ba1a'},
+ {'memchr-2.7.4.tar.gz': '78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3'},
+ {'minimal-lexical-0.2.1.tar.gz': '68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a'},
+ {'miniz_oxide-0.8.0.tar.gz': 'e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1'},
+ {'multimap-0.9.1.tar.gz': 'e1a5d38b9b352dbd913288736af36af41c48d61b1a8cd34bcecd727561b7d511'},
+ {'nalgebra-0.29.0.tar.gz': 'd506eb7e08d6329505faa8a3a00a5dcc6de9f76e0c77e4b75763ae3c770831ff'},
+ {'nalgebra-macros-0.1.0.tar.gz': '01fcc0b8149b4632adc89ac3b7b31a12fb6099a0317a4eb2ebff574ef7de7218'},
+ {'ndarray-0.15.6.tar.gz': 'adb12d4e967ec485a5f71c6311fe28158e9d6f4bc4a447b474184d0f91a8fa32'},
+ {'newtype_derive-0.1.6.tar.gz': 'ac8cd24d9f185bb7223958d8c1ff7a961b74b1953fd05dba7cc568a63b3861ec'},
+ {'nom-7.1.3.tar.gz': 'd273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a'},
+ {'noodles-0.50.0.tar.gz': '86c1d34ec18d6b3d7699fae207ba766a5b969764d2cad072dc769cb6eca06b36'},
+ {'noodles-bgzf-0.24.0.tar.gz': '8f4c43ff0879c542c1d8fd570c03e368f629587721d10267f2619e36afc9c9b0'},
+ {'noodles-core-0.12.0.tar.gz': '94fbe3192fe33acacabaedd387657f39b0fc606f1996d546db0dfe14703b843a'},
+ {'noodles-csi-0.24.0.tar.gz': '1b2bb780250c88bc9ea69b56c1aa9df75decc6b79035f3f5ab10c0cd84d24fc6'},
+ {'noodles-tabix-0.29.0.tar.gz': '056e394ddb4c64bcc9806551a69833294062159600aa8ecf7167a922512bda4f'},
+ {'num-0.4.3.tar.gz': '35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23'},
+ {'num-bigint-0.4.6.tar.gz': 'a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9'},
+ {'num-complex-0.4.6.tar.gz': '73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495'},
+ {'num-integer-0.1.46.tar.gz': '7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f'},
+ {'num-iter-0.1.45.tar.gz': '1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf'},
+ {'num-rational-0.4.2.tar.gz': 'f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824'},
+ {'num-traits-0.2.19.tar.gz': '071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841'},
+ {'num_cpus-1.16.0.tar.gz': '4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43'},
+ {'number_prefix-0.4.0.tar.gz': '830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3'},
+ {'once_cell-1.20.2.tar.gz': '1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775'},
+ {'openssl-src-300.4.0+3.4.0.tar.gz': 'a709e02f2b4aca747929cca5ed248880847c650233cf8b8cdc48f40aaf4898a6'},
+ {'openssl-sys-0.9.104.tar.gz': '45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741'},
+ {'order-stat-0.1.3.tar.gz': 'efa535d5117d3661134dbf1719b6f0ffe06f2375843b13935db186cd094105eb'},
+ {'ordered-float-2.10.1.tar.gz': '68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c'},
+ {'ordered-float-3.9.2.tar.gz': 'f1e1c390732d15f1d48471625cd92d154e66db2c56645e29a9cd26f4699f72dc'},
+ {'parking_lot-0.12.3.tar.gz': 'f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27'},
+ {'parking_lot_core-0.9.10.tar.gz': '1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8'},
+ {'paste-1.0.15.tar.gz': '57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a'},
+ {'percent-encoding-2.3.1.tar.gz': 'e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e'},
+ {'peroxide-0.32.1.tar.gz': '703b5fbdc1f9018a66e2db8758633cec31d39ad3127bfd38c9b6ad510637519c'},
+ {'peroxide-ad-0.3.0.tar.gz': 'f6fba8ff3f40b67996f7c745f699babaa3e57ef5c8178ec999daf7eedc51dc8c'},
+ {'pest-2.7.14.tar.gz': '879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442'},
+ {'pest_derive-2.7.14.tar.gz': 'd214365f632b123a47fd913301e14c946c61d1c183ee245fa76eb752e59a02dd'},
+ {'pest_generator-2.7.14.tar.gz': 'eb55586734301717aea2ac313f50b2eb8f60d2fc3dc01d190eefa2e625f60c4e'},
+ {'pest_meta-2.7.14.tar.gz': 'b75da2a70cf4d9cb76833c990ac9cd3923c9a8905a8929789ce347c84564d03d'},
+ {'petgraph-0.6.5.tar.gz': 'b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db'},
+ {'pkg-config-0.3.31.tar.gz': '953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2'},
+ {'portable-atomic-1.9.0.tar.gz': 'cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2'},
+ {'ppv-lite86-0.2.20.tar.gz': '77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04'},
+ {'prettytable-rs-0.10.0.tar.gz': 'eea25e07510aa6ab6547308ebe3c036016d162b8da920dbb079e3ba8acf3d95a'},
+ {'proc-macro2-1.0.89.tar.gz': 'f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e'},
+ {'pulp-0.18.22.tar.gz': 'a0a01a0dc67cf4558d279f0c25b0962bd08fc6dec0137699eae304103e882fe6'},
+ {'puruspe-0.2.5.tar.gz': '3804877ffeba468c806c2ad9057bbbae92e4b2c410c2f108baaa0042f241fa4c'},
+ {'quick-error-1.2.3.tar.gz': 'a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0'},
+ {'quote-1.0.37.tar.gz': 'b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af'},
+ {'radium-0.7.0.tar.gz': 'dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09'},
+ {'rand-0.8.5.tar.gz': '34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404'},
+ {'rand_chacha-0.3.1.tar.gz': 'e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88'},
+ {'rand_core-0.6.4.tar.gz': 'ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c'},
+ {'rand_distr-0.4.3.tar.gz': '32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31'},
+ {'rawpointer-0.2.1.tar.gz': '60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3'},
+ {'rayon-1.10.0.tar.gz': 'b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa'},
+ {'rayon-core-1.12.1.tar.gz': '1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2'},
+ {'reborrow-0.5.5.tar.gz': '03251193000f4bd3b042892be858ee50e8b3719f2b08e5833ac4353724632430'},
+ {'redox_syscall-0.5.7.tar.gz': '9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f'},
+ {'redox_users-0.4.6.tar.gz': 'ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43'},
+ {'regex-1.11.0.tar.gz': '38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8'},
+ {'regex-automata-0.4.8.tar.gz': '368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3'},
+ {'regex-syntax-0.8.5.tar.gz': '2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c'},
+ {'rust-htslib-0.46.0.tar.gz': 'aec6f9ca4601beb4ae75ff8c99144dd15de5a873f6adf058da299962c760968e'},
+ {'rust-lapper-1.1.0.tar.gz': 'ee43d8e721ac803031dbab6a944b957b49a3b11eadbc099880c8aaaebf23ed27'},
+ {'rustc-hash-1.1.0.tar.gz': '08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2'},
+ {'rustc_version-0.1.7.tar.gz': 'c5f5376ea5e30ce23c03eb77cbe4962b988deead10910c372b226388b594c084'},
+ {'rustix-0.38.37.tar.gz': '8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811'},
+ {'rustversion-1.0.18.tar.gz': '0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248'},
+ {'rv-0.16.0.tar.gz': 'c64081d5a5cd97b60822603f9900df77d67c8258e9a8143b6aff950753f2bbe1'},
+ {'ryu-1.0.18.tar.gz': 'f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f'},
+ {'safe_arch-0.7.2.tar.gz': 'c3460605018fdc9612bce72735cba0d27efbcd9904780d44c7e3a9948f96148a'},
+ {'scopeguard-1.2.0.tar.gz': '94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49'},
+ {'semver-0.1.20.tar.gz': 'd4f410fedcf71af0345d7607d246e7ad15faaadd49d240ee3b24e5dc21a820ac'},
+ {'serde-1.0.213.tar.gz': '3ea7893ff5e2466df8d720bb615088341b295f849602c6956047f8f80f0e9bc1'},
+ {'serde-value-0.7.0.tar.gz': 'f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c'},
+ {'serde_derive-1.0.213.tar.gz': '7e85ad2009c50b58e87caa8cd6dac16bdf511bbfb7af6c33df902396aa480fa5'},
+ {'serde_json-1.0.132.tar.gz': 'd726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03'},
+ {'serde_yaml-0.9.34+deprecated.tar.gz': '6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47'},
+ {'sha2-0.10.8.tar.gz': '793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8'},
+ {'shlex-1.3.0.tar.gz': '0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64'},
+ {'simba-0.6.0.tar.gz': 'f0b7840f121a46d63066ee7a99fc81dcabbc6105e437cae43528cea199b5a05f'},
+ {'similar-2.6.0.tar.gz': '1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e'},
+ {'similar-asserts-1.6.0.tar.gz': 'cfe85670573cd6f0fa97940f26e7e6601213c3b0555246c24234131f88c5709e'},
+ {'smallvec-1.13.2.tar.gz': '3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67'},
+ {'special-0.10.3.tar.gz': 'b89cf0d71ae639fdd8097350bfac415a41aabf1d5ddd356295fdc95f09760382'},
+ {'statrs-0.16.1.tar.gz': 'b35a062dbadac17a42e0fc64c27f419b25d6fae98572eb43c8814c9e873d7721'},
+ {'strsim-0.11.1.tar.gz': '7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f'},
+ {'strum-0.25.0.tar.gz': '290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125'},
+ {'strum_macros-0.25.3.tar.gz': '23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0'},
+ {'strum_macros-0.26.4.tar.gz': '4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be'},
+ {'substring-1.4.5.tar.gz': '42ee6433ecef213b2e72f587ef64a2f5943e7cd16fbd82dbe8bc07486c534c86'},
+ {'syn-1.0.109.tar.gz': '72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237'},
+ {'syn-2.0.82.tar.gz': '83540f837a8afc019423a8edb95b52a8effe46957ee402287f4292fae35be021'},
+ {'tap-1.0.1.tar.gz': '55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369'},
+ {'tempfile-3.13.0.tar.gz': 'f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b'},
+ {'term-0.7.0.tar.gz': 'c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f'},
+ {'terminal_size-0.4.0.tar.gz': '4f599bd7ca042cfdf8f4512b277c02ba102247820f9d9d4a9f521f496751a6ef'},
+ {'thiserror-1.0.65.tar.gz': '5d11abd9594d9b38965ef50805c5e469ca9cc6f197f883f717e0269a3057b3d5'},
+ {'thiserror-impl-1.0.65.tar.gz': 'ae71770322cbd277e69d762a16c444af02aa0575ac0d174f0b9562d3b37f8602'},
+ {'thread-id-4.2.2.tar.gz': 'cfe8f25bbdd100db7e1d34acf7fd2dc59c4bf8f7483f505eaa7d4f12f76cc0ea'},
+ {'thread-tree-0.3.3.tar.gz': 'ffbd370cb847953a25954d9f63e14824a36113f8c72eecf6eccef5dc4b45d630'},
+ {'tinyvec-1.8.0.tar.gz': '445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938'},
+ {'tinyvec_macros-0.1.1.tar.gz': '1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20'},
+ {'triple_accel-0.4.0.tar.gz': '22048bc95dfb2ffd05b1ff9a756290a009224b60b2f0e7525faeee7603851e63'},
+ {'typemap-ors-1.0.0.tar.gz': 'a68c24b707f02dd18f1e4ccceb9d49f2058c2fb86384ef9972592904d7a28867'},
+ {'typenum-1.17.0.tar.gz': '42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825'},
+ {'ucd-trie-0.1.7.tar.gz': '2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971'},
+ {'unicode-bidi-0.3.17.tar.gz': '5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893'},
+ {'unicode-ident-1.0.13.tar.gz': 'e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe'},
+ {'unicode-normalization-0.1.24.tar.gz': '5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956'},
+ {'unicode-segmentation-1.12.0.tar.gz': 'f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493'},
+ {'unicode-width-0.1.14.tar.gz': '7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af'},
+ {'unsafe-any-ors-1.0.0.tar.gz': 'e0a303d30665362d9680d7d91d78b23f5f899504d4f08b3c4cf08d055d87c0ad'},
+ {'unsafe-libyaml-0.2.11.tar.gz': '673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861'},
+ {'url-2.5.2.tar.gz': '22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c'},
+ {'utf8parse-0.2.2.tar.gz': '06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821'},
+ {'vcpkg-0.2.15.tar.gz': 'accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426'},
+ {'vec_map-0.8.2.tar.gz': 'f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191'},
+ {'version_check-0.9.5.tar.gz': '0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a'},
+ {'wasi-0.11.0+wasi-snapshot-preview1.tar.gz': '9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423'},
+ {'wasm-bindgen-0.2.95.tar.gz': '128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e'},
+ {'wasm-bindgen-backend-0.2.95.tar.gz': 'cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358'},
+ {'wasm-bindgen-macro-0.2.95.tar.gz': 'e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56'},
+ {'wasm-bindgen-macro-support-0.2.95.tar.gz': '26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68'},
+ {'wasm-bindgen-shared-0.2.95.tar.gz': '65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d'},
+ {'wide-0.7.28.tar.gz': 'b828f995bf1e9622031f8009f8481a85406ce1f4d4588ff746d872043e855690'},
+ {'winapi-0.3.9.tar.gz': '5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419'},
+ {'winapi-i686-pc-windows-gnu-0.4.0.tar.gz': 'ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6'},
+ {'winapi-x86_64-pc-windows-gnu-0.4.0.tar.gz': '712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f'},
+ {'windows-core-0.52.0.tar.gz': '33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9'},
+ {'windows-sys-0.52.0.tar.gz': '282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d'},
+ {'windows-sys-0.59.0.tar.gz': '1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b'},
+ {'windows-targets-0.52.6.tar.gz': '9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973'},
+ {'windows_aarch64_gnullvm-0.52.6.tar.gz': '32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3'},
+ {'windows_aarch64_msvc-0.52.6.tar.gz': '09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469'},
+ {'windows_i686_gnu-0.52.6.tar.gz': '8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b'},
+ {'windows_i686_gnullvm-0.52.6.tar.gz': '0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66'},
+ {'windows_i686_msvc-0.52.6.tar.gz': '240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66'},
+ {'windows_x86_64_gnu-0.52.6.tar.gz': '147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78'},
+ {'windows_x86_64_gnullvm-0.52.6.tar.gz': '24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d'},
+ {'windows_x86_64_msvc-0.52.6.tar.gz': '589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec'},
+ {'wyz-0.5.1.tar.gz': '05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed'},
+ {'zerocopy-0.7.35.tar.gz': '1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0'},
+ {'zerocopy-derive-0.7.35.tar.gz': 'fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e'},
+]
+
+moduleclass = 'bio'
diff --git a/easybuild/easyconfigs/m/modkit/modkit-0.4.1-GCCcore-13.3.0.eb b/easybuild/easyconfigs/m/modkit/modkit-0.4.1-GCCcore-13.3.0.eb
new file mode 100644
index 00000000000..cae76ec0a45
--- /dev/null
+++ b/easybuild/easyconfigs/m/modkit/modkit-0.4.1-GCCcore-13.3.0.eb
@@ -0,0 +1,586 @@
+easyblock = 'Cargo'
+
+name = 'modkit'
+version = '0.4.1'
+
+homepage = 'https://github.com/nanoporetech/modkit'
+description = 'A bioinformatics tool for working with modified bases.'
+
+toolchain = {'name': 'GCCcore', 'version': '13.3.0'}
+
+source_urls = ['https://github.com/nanoporetech/modkit/archive/']
+sources = ['v%(version)s.tar.gz']
+
+builddependencies = [
+ ('binutils', '2.42'),
+ ('Rust', '1.78.0'),
+ ('Perl-bundle-CPAN', '5.38.2'),
+]
+
+sanity_check_paths = {
+ 'files': ['bin/%(namelower)s'],
+ 'dirs': [],
+}
+
+sanity_check_commands = ["%(namelower)s --help"]
+
+crates = [
+ ('adler2', '2.0.0'),
+ ('ahash', '0.8.11'),
+ ('aho-corasick', '1.1.3'),
+ ('android-tzdata', '0.1.1'),
+ ('android_system_properties', '0.1.5'),
+ ('ansi_term', '0.12.1'),
+ ('anstream', '0.6.15'),
+ ('anstyle', '1.0.8'),
+ ('anstyle-parse', '0.2.5'),
+ ('anstyle-query', '1.1.1'),
+ ('anstyle-wincon', '3.0.4'),
+ ('anyhow', '1.0.90'),
+ ('approx', '0.5.1'),
+ ('arc-swap', '1.7.1'),
+ ('assert_approx_eq', '1.1.0'),
+ ('autocfg', '1.4.0'),
+ ('bio', '1.6.0'),
+ ('bio-types', '1.0.4'),
+ ('bit-set', '0.5.3'),
+ ('bit-vec', '0.6.3'),
+ ('bitflags', '2.6.0'),
+ ('bitvec', '1.0.1'),
+ ('block-buffer', '0.10.4'),
+ ('bstr', '1.10.0'),
+ ('bumpalo', '3.16.0'),
+ ('bv', '0.11.1'),
+ ('bytecount', '0.6.8'),
+ ('bytemuck', '1.19.0'),
+ ('byteorder', '1.5.0'),
+ ('bytes', '1.8.0'),
+ ('bzip2-sys', '0.1.11+1.0.8'),
+ ('cc', '1.1.31'),
+ ('cfg-if', '1.0.0'),
+ ('charming', '0.3.1'),
+ ('chrono', '0.4.38'),
+ ('clap', '4.5.20'),
+ ('clap_builder', '4.5.20'),
+ ('clap_derive', '4.5.18'),
+ ('clap_lex', '0.7.2'),
+ ('cmake', '0.1.51'),
+ ('colorchoice', '1.0.2'),
+ ('common_macros', '0.1.1'),
+ ('console', '0.15.8'),
+ ('core-foundation-sys', '0.8.7'),
+ ('core_affinity', '0.8.1'),
+ ('cpufeatures', '0.2.14'),
+ ('crc32fast', '1.4.2'),
+ ('crossbeam', '0.8.4'),
+ ('crossbeam-channel', '0.5.13'),
+ ('crossbeam-deque', '0.8.5'),
+ ('crossbeam-epoch', '0.9.18'),
+ ('crossbeam-queue', '0.3.11'),
+ ('crossbeam-utils', '0.8.20'),
+ ('crypto-common', '0.1.6'),
+ ('csv', '1.3.0'),
+ ('csv-core', '0.1.11'),
+ ('curl-sys', '0.4.77+curl-8.10.1'),
+ ('custom_derive', '0.1.7'),
+ ('derivative', '2.2.0'),
+ ('derive-new', '0.5.9'),
+ ('derive-new', '0.6.0'),
+ ('destructure_traitobject', '0.2.0'),
+ ('digest', '0.10.7'),
+ ('dirs-next', '2.0.0'),
+ ('dirs-sys-next', '0.1.2'),
+ ('doc-comment', '0.3.3'),
+ ('editdistancek', '1.0.2'),
+ ('either', '1.13.0'),
+ ('encode_unicode', '0.3.6'),
+ ('encode_unicode', '1.0.0'),
+ ('enum-map', '2.7.3'),
+ ('enum-map-derive', '0.17.0'),
+ ('equivalent', '1.0.1'),
+ ('errno', '0.3.9'),
+ ('fastrand', '2.1.1'),
+ ('feature-probe', '0.1.1'),
+ ('fixedbitset', '0.4.2'),
+ ('flate2', '1.0.34'),
+ ('flume', '0.10.14'),
+ ('fnv', '1.0.7'),
+ ('form_urlencoded', '1.2.1'),
+ ('fs-utils', '1.1.4'),
+ ('funty', '2.0.0'),
+ ('futures-core', '0.3.31'),
+ ('futures-sink', '0.3.31'),
+ ('fxhash', '0.2.1'),
+ ('generic-array', '0.14.7'),
+ ('getrandom', '0.2.15'),
+ ('glob', '0.3.1'),
+ ('gzp', '0.11.3'),
+ ('handlebars', '4.5.0'),
+ ('hashbrown', '0.13.2'),
+ ('hashbrown', '0.15.0'),
+ ('heck', '0.4.1'),
+ ('heck', '0.5.0'),
+ ('hermit-abi', '0.3.9'),
+ ('hermit-abi', '0.4.0'),
+ ('hts-sys', '2.1.4'),
+ ('humantime', '2.1.0'),
+ ('iana-time-zone', '0.1.61'),
+ ('iana-time-zone-haiku', '0.1.2'),
+ ('idna', '0.5.0'),
+ ('ieee754', '0.2.6'),
+ ('indexmap', '2.6.0'),
+ ('indicatif', '0.17.8'),
+ ('instant', '0.1.13'),
+ ('is-terminal', '0.4.13'),
+ ('is_terminal_polyfill', '1.70.1'),
+ ('itertools', '0.11.0'),
+ ('itertools', '0.12.1'),
+ ('itertools-num', '0.1.3'),
+ ('itoa', '1.0.11'),
+ ('jobserver', '0.1.32'),
+ ('js-sys', '0.3.72'),
+ ('lazy_static', '1.5.0'),
+ ('libc', '0.2.161'),
+ ('libdeflate-sys', '0.12.0'),
+ ('libdeflater', '0.12.0'),
+ ('libm', '0.2.8'),
+ ('libredox', '0.1.3'),
+ ('libz-sys', '1.1.20'),
+ ('linear-map', '1.2.0'),
+ ('linux-raw-sys', '0.4.14'),
+ ('lock_api', '0.4.12'),
+ ('log', '0.4.22'),
+ ('log-mdc', '0.1.0'),
+ ('log-once', '0.4.1'),
+ ('log4rs', '1.3.0'),
+ ('lru', '0.9.0'),
+ ('lzma-sys', '0.1.20'),
+ ('matrixmultiply', '0.3.9'),
+ ('memchr', '2.7.4'),
+ ('minimal-lexical', '0.2.1'),
+ ('miniz_oxide', '0.8.0'),
+ ('multimap', '0.9.1'),
+ ('nalgebra', '0.29.0'),
+ ('nalgebra-macros', '0.1.0'),
+ ('nanorand', '0.7.0'),
+ ('ndarray', '0.15.6'),
+ ('newtype_derive', '0.1.6'),
+ ('nom', '7.1.3'),
+ ('num', '0.4.3'),
+ ('num-bigint', '0.4.6'),
+ ('num-complex', '0.4.6'),
+ ('num-integer', '0.1.46'),
+ ('num-iter', '0.1.45'),
+ ('num-rational', '0.4.2'),
+ ('num-traits', '0.2.19'),
+ ('num_cpus', '1.16.0'),
+ ('number_prefix', '0.4.0'),
+ ('once_cell', '1.20.2'),
+ ('openssl-src', '300.3.2+3.3.2'),
+ ('openssl-sys', '0.9.104'),
+ ('order-stat', '0.1.3'),
+ ('ordered-float', '2.10.1'),
+ ('ordered-float', '3.9.2'),
+ ('parking_lot', '0.12.3'),
+ ('parking_lot_core', '0.9.10'),
+ ('paste', '1.0.15'),
+ ('percent-encoding', '2.3.1'),
+ ('peroxide', '0.32.1'),
+ ('peroxide-ad', '0.3.0'),
+ ('pest', '2.7.14'),
+ ('pest_derive', '2.7.14'),
+ ('pest_generator', '2.7.14'),
+ ('pest_meta', '2.7.14'),
+ ('petgraph', '0.6.5'),
+ ('pin-project', '1.1.6'),
+ ('pin-project-internal', '1.1.6'),
+ ('pkg-config', '0.3.31'),
+ ('portable-atomic', '1.9.0'),
+ ('ppv-lite86', '0.2.20'),
+ ('prettytable-rs', '0.10.0'),
+ ('proc-macro2', '1.0.88'),
+ ('pulp', '0.18.22'),
+ ('puruspe', '0.2.5'),
+ ('quick-error', '1.2.3'),
+ ('quote', '1.0.37'),
+ ('radium', '0.7.0'),
+ ('rand', '0.8.5'),
+ ('rand_chacha', '0.3.1'),
+ ('rand_core', '0.6.4'),
+ ('rand_distr', '0.4.3'),
+ ('random_color', '1.0.0'),
+ ('rawpointer', '0.2.1'),
+ ('rayon', '1.10.0'),
+ ('rayon-core', '1.12.1'),
+ ('reborrow', '0.5.5'),
+ ('redox_syscall', '0.5.7'),
+ ('redox_users', '0.4.6'),
+ ('regex', '1.11.0'),
+ ('regex-automata', '0.4.8'),
+ ('regex-syntax', '0.8.5'),
+ ('rust-htslib', '0.46.0'),
+ ('rust-lapper', '1.1.0'),
+ ('rustc-hash', '1.1.0'),
+ ('rustc_version', '0.1.7'),
+ ('rustix', '0.38.37'),
+ ('rustversion', '1.0.18'),
+ ('rv', '0.16.0'),
+ ('ryu', '1.0.18'),
+ ('safe_arch', '0.7.2'),
+ ('scopeguard', '1.2.0'),
+ ('semver', '0.1.20'),
+ ('serde', '1.0.211'),
+ ('serde-value', '0.7.0'),
+ ('serde_derive', '1.0.211'),
+ ('serde_json', '1.0.132'),
+ ('serde_yaml', '0.9.34+deprecated'),
+ ('sha2', '0.10.8'),
+ ('shlex', '1.3.0'),
+ ('simba', '0.6.0'),
+ ('similar', '2.6.0'),
+ ('similar-asserts', '1.6.0'),
+ ('smallvec', '1.13.2'),
+ ('special', '0.10.3'),
+ ('spin', '0.9.8'),
+ ('statrs', '0.16.1'),
+ ('strsim', '0.11.1'),
+ ('strum', '0.25.0'),
+ ('strum_macros', '0.25.3'),
+ ('strum_macros', '0.26.4'),
+ ('substring', '1.4.5'),
+ ('syn', '1.0.109'),
+ ('syn', '2.0.82'),
+ ('tap', '1.0.1'),
+ ('tempfile', '3.13.0'),
+ ('term', '0.7.0'),
+ ('terminal_size', '0.4.0'),
+ ('thiserror', '1.0.64'),
+ ('thiserror-impl', '1.0.64'),
+ ('thread-id', '4.2.2'),
+ ('thread-tree', '0.3.3'),
+ ('tinyvec', '1.8.0'),
+ ('tinyvec_macros', '0.1.1'),
+ ('triple_accel', '0.4.0'),
+ ('typemap-ors', '1.0.0'),
+ ('typenum', '1.17.0'),
+ ('ucd-trie', '0.1.7'),
+ ('unicode-bidi', '0.3.17'),
+ ('unicode-ident', '1.0.13'),
+ ('unicode-normalization', '0.1.24'),
+ ('unicode-segmentation', '1.12.0'),
+ ('unicode-width', '0.1.14'),
+ ('unsafe-any-ors', '1.0.0'),
+ ('unsafe-libyaml', '0.2.11'),
+ ('url', '2.5.2'),
+ ('utf8parse', '0.2.2'),
+ ('vcpkg', '0.2.15'),
+ ('vec_map', '0.8.2'),
+ ('version_check', '0.9.5'),
+ ('wasi', '0.11.0+wasi-snapshot-preview1'),
+ ('wasm-bindgen', '0.2.95'),
+ ('wasm-bindgen-backend', '0.2.95'),
+ ('wasm-bindgen-macro', '0.2.95'),
+ ('wasm-bindgen-macro-support', '0.2.95'),
+ ('wasm-bindgen-shared', '0.2.95'),
+ ('wide', '0.7.28'),
+ ('winapi', '0.3.9'),
+ ('winapi-i686-pc-windows-gnu', '0.4.0'),
+ ('winapi-x86_64-pc-windows-gnu', '0.4.0'),
+ ('windows-core', '0.52.0'),
+ ('windows-sys', '0.52.0'),
+ ('windows-sys', '0.59.0'),
+ ('windows-targets', '0.52.6'),
+ ('windows_aarch64_gnullvm', '0.52.6'),
+ ('windows_aarch64_msvc', '0.52.6'),
+ ('windows_i686_gnu', '0.52.6'),
+ ('windows_i686_gnullvm', '0.52.6'),
+ ('windows_i686_msvc', '0.52.6'),
+ ('windows_x86_64_gnu', '0.52.6'),
+ ('windows_x86_64_gnullvm', '0.52.6'),
+ ('windows_x86_64_msvc', '0.52.6'),
+ ('wyz', '0.5.1'),
+ ('zerocopy', '0.7.35'),
+ ('zerocopy-derive', '0.7.35'),
+]
+
+checksums = [
+ {'v0.4.1.tar.gz': '45cd7d4ee69092db7412a15f02799c3118bf5fa4e40e193e30e8c65c4f762f79'},
+ {'adler2-2.0.0.tar.gz': '512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627'},
+ {'ahash-0.8.11.tar.gz': 'e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011'},
+ {'aho-corasick-1.1.3.tar.gz': '8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916'},
+ {'android-tzdata-0.1.1.tar.gz': 'e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0'},
+ {'android_system_properties-0.1.5.tar.gz': '819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311'},
+ {'ansi_term-0.12.1.tar.gz': 'd52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2'},
+ {'anstream-0.6.15.tar.gz': '64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526'},
+ {'anstyle-1.0.8.tar.gz': '1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1'},
+ {'anstyle-parse-0.2.5.tar.gz': 'eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb'},
+ {'anstyle-query-1.1.1.tar.gz': '6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a'},
+ {'anstyle-wincon-3.0.4.tar.gz': '5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8'},
+ {'anyhow-1.0.90.tar.gz': '37bf3594c4c988a53154954629820791dde498571819ae4ca50ca811e060cc95'},
+ {'approx-0.5.1.tar.gz': 'cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6'},
+ {'arc-swap-1.7.1.tar.gz': '69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457'},
+ {'assert_approx_eq-1.1.0.tar.gz': '3c07dab4369547dbe5114677b33fbbf724971019f3818172d59a97a61c774ffd'},
+ {'autocfg-1.4.0.tar.gz': 'ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26'},
+ {'bio-1.6.0.tar.gz': '7a72cb93babf08c85b375c2938ac678cc637936b3ebb72266d433cec2577f6c2'},
+ {'bio-types-1.0.4.tar.gz': 'f4dcf54f8b7f51450207d54780bab09c05f30b8b0caa991545082842e466ad7e'},
+ {'bit-set-0.5.3.tar.gz': '0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1'},
+ {'bit-vec-0.6.3.tar.gz': '349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb'},
+ {'bitflags-2.6.0.tar.gz': 'b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de'},
+ {'bitvec-1.0.1.tar.gz': '1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c'},
+ {'block-buffer-0.10.4.tar.gz': '3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71'},
+ {'bstr-1.10.0.tar.gz': '40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c'},
+ {'bumpalo-3.16.0.tar.gz': '79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c'},
+ {'bv-0.11.1.tar.gz': '8834bb1d8ee5dc048ee3124f2c7c1afcc6bc9aed03f11e9dfd8c69470a5db340'},
+ {'bytecount-0.6.8.tar.gz': '5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce'},
+ {'bytemuck-1.19.0.tar.gz': '8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d'},
+ {'byteorder-1.5.0.tar.gz': '1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b'},
+ {'bytes-1.8.0.tar.gz': '9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da'},
+ {'bzip2-sys-0.1.11+1.0.8.tar.gz': '736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc'},
+ {'cc-1.1.31.tar.gz': 'c2e7962b54006dcfcc61cb72735f4d89bb97061dd6a7ed882ec6b8ee53714c6f'},
+ {'cfg-if-1.0.0.tar.gz': 'baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd'},
+ {'charming-0.3.1.tar.gz': 'f4c6b6990238a64b4ae139e7085ce2a11815cb67a0c066a3333ce40f3a329be3'},
+ {'chrono-0.4.38.tar.gz': 'a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401'},
+ {'clap-4.5.20.tar.gz': 'b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8'},
+ {'clap_builder-4.5.20.tar.gz': '19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54'},
+ {'clap_derive-4.5.18.tar.gz': '4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab'},
+ {'clap_lex-0.7.2.tar.gz': '1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97'},
+ {'cmake-0.1.51.tar.gz': 'fb1e43aa7fd152b1f968787f7dbcdeb306d1867ff373c69955211876c053f91a'},
+ {'colorchoice-1.0.2.tar.gz': 'd3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0'},
+ {'common_macros-0.1.1.tar.gz': 'f3f6d59c71e7dc3af60f0af9db32364d96a16e9310f3f5db2b55ed642162dd35'},
+ {'console-0.15.8.tar.gz': '0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb'},
+ {'core-foundation-sys-0.8.7.tar.gz': '773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b'},
+ {'core_affinity-0.8.1.tar.gz': '622892f5635ce1fc38c8f16dfc938553ed64af482edb5e150bf4caedbfcb2304'},
+ {'cpufeatures-0.2.14.tar.gz': '608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0'},
+ {'crc32fast-1.4.2.tar.gz': 'a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3'},
+ {'crossbeam-0.8.4.tar.gz': '1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8'},
+ {'crossbeam-channel-0.5.13.tar.gz': '33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2'},
+ {'crossbeam-deque-0.8.5.tar.gz': '613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d'},
+ {'crossbeam-epoch-0.9.18.tar.gz': '5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e'},
+ {'crossbeam-queue-0.3.11.tar.gz': 'df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35'},
+ {'crossbeam-utils-0.8.20.tar.gz': '22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80'},
+ {'crypto-common-0.1.6.tar.gz': '1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3'},
+ {'csv-1.3.0.tar.gz': 'ac574ff4d437a7b5ad237ef331c17ccca63c46479e5b5453eb8e10bb99a759fe'},
+ {'csv-core-0.1.11.tar.gz': '5efa2b3d7902f4b634a20cae3c9c4e6209dc4779feb6863329607560143efa70'},
+ {'curl-sys-0.4.77+curl-8.10.1.tar.gz': 'f469e8a5991f277a208224f6c7ad72ecb5f986e36d09ae1f2c1bb9259478a480'},
+ {'custom_derive-0.1.7.tar.gz': 'ef8ae57c4978a2acd8b869ce6b9ca1dfe817bff704c220209fdef2c0b75a01b9'},
+ {'derivative-2.2.0.tar.gz': 'fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b'},
+ {'derive-new-0.5.9.tar.gz': '3418329ca0ad70234b9735dc4ceed10af4df60eff9c8e7b06cb5e520d92c3535'},
+ {'derive-new-0.6.0.tar.gz': 'd150dea618e920167e5973d70ae6ece4385b7164e0d799fe7c122dd0a5d912ad'},
+ {'destructure_traitobject-0.2.0.tar.gz': '3c877555693c14d2f84191cfd3ad8582790fc52b5e2274b40b59cf5f5cea25c7'},
+ {'digest-0.10.7.tar.gz': '9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292'},
+ {'dirs-next-2.0.0.tar.gz': 'b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1'},
+ {'dirs-sys-next-0.1.2.tar.gz': '4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d'},
+ {'doc-comment-0.3.3.tar.gz': 'fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10'},
+ {'editdistancek-1.0.2.tar.gz': '3e02df23d5b1c6f9e69fa603b890378123b93073df998a21e6e33b9db0a32613'},
+ {'either-1.13.0.tar.gz': '60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0'},
+ {'encode_unicode-0.3.6.tar.gz': 'a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f'},
+ {'encode_unicode-1.0.0.tar.gz': '34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0'},
+ {'enum-map-2.7.3.tar.gz': '6866f3bfdf8207509a033af1a75a7b08abda06bbaaeae6669323fd5a097df2e9'},
+ {'enum-map-derive-0.17.0.tar.gz': 'f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb'},
+ {'equivalent-1.0.1.tar.gz': '5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5'},
+ {'errno-0.3.9.tar.gz': '534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba'},
+ {'fastrand-2.1.1.tar.gz': 'e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6'},
+ {'feature-probe-0.1.1.tar.gz': '835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da'},
+ {'fixedbitset-0.4.2.tar.gz': '0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80'},
+ {'flate2-1.0.34.tar.gz': 'a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0'},
+ {'flume-0.10.14.tar.gz': '1657b4441c3403d9f7b3409e47575237dac27b1b5726df654a6ecbf92f0f7577'},
+ {'fnv-1.0.7.tar.gz': '3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1'},
+ {'form_urlencoded-1.2.1.tar.gz': 'e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456'},
+ {'fs-utils-1.1.4.tar.gz': '6fc7a9dc005c944c98a935e7fd626faf5bf7e5a609f94bc13e42fc4a02e52593'},
+ {'funty-2.0.0.tar.gz': 'e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c'},
+ {'futures-core-0.3.31.tar.gz': '05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e'},
+ {'futures-sink-0.3.31.tar.gz': 'e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7'},
+ {'fxhash-0.2.1.tar.gz': 'c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c'},
+ {'generic-array-0.14.7.tar.gz': '85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a'},
+ {'getrandom-0.2.15.tar.gz': 'c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7'},
+ {'glob-0.3.1.tar.gz': 'd2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b'},
+ {'gzp-0.11.3.tar.gz': 'e7c65d1899521a11810501b50b898464d133e1afc96703cff57726964cfa7baf'},
+ {'handlebars-4.5.0.tar.gz': 'faa67bab9ff362228eb3d00bd024a4965d8231bbb7921167f0cfa66c6626b225'},
+ {'hashbrown-0.13.2.tar.gz': '43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e'},
+ {'hashbrown-0.15.0.tar.gz': '1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb'},
+ {'heck-0.4.1.tar.gz': '95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8'},
+ {'heck-0.5.0.tar.gz': '2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea'},
+ {'hermit-abi-0.3.9.tar.gz': 'd231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024'},
+ {'hermit-abi-0.4.0.tar.gz': 'fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc'},
+ {'hts-sys-2.1.4.tar.gz': 'e9f348d14cb4e50444e39fcd6b00302fe2ed2bc88094142f6278391d349a386d'},
+ {'humantime-2.1.0.tar.gz': '9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4'},
+ {'iana-time-zone-0.1.61.tar.gz': '235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220'},
+ {'iana-time-zone-haiku-0.1.2.tar.gz': 'f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f'},
+ {'idna-0.5.0.tar.gz': '634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6'},
+ {'ieee754-0.2.6.tar.gz': '9007da9cacbd3e6343da136e98b0d2df013f553d35bdec8b518f07bea768e19c'},
+ {'indexmap-2.6.0.tar.gz': '707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da'},
+ {'indicatif-0.17.8.tar.gz': '763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3'},
+ {'instant-0.1.13.tar.gz': 'e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222'},
+ {'is-terminal-0.4.13.tar.gz': '261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b'},
+ {'is_terminal_polyfill-1.70.1.tar.gz': '7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf'},
+ {'itertools-0.11.0.tar.gz': 'b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57'},
+ {'itertools-0.12.1.tar.gz': 'ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569'},
+ {'itertools-num-0.1.3.tar.gz': 'a872a22f9e6f7521ca557660adb96dd830e54f0f490fa115bb55dd69d38b27e7'},
+ {'itoa-1.0.11.tar.gz': '49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b'},
+ {'jobserver-0.1.32.tar.gz': '48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0'},
+ {'js-sys-0.3.72.tar.gz': '6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9'},
+ {'lazy_static-1.5.0.tar.gz': 'bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe'},
+ {'libc-0.2.161.tar.gz': '8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1'},
+ {'libdeflate-sys-0.12.0.tar.gz': 'e1f7b0817f85e2ba608892f30fbf4c9d03f3ebf9db0c952d1b7c8f7387b54785'},
+ {'libdeflater-0.12.0.tar.gz': '671e63282f642c7bcc7d292b212d5a4739fef02a77fe98429a75d308f96e7931'},
+ {'libm-0.2.8.tar.gz': '4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058'},
+ {'libredox-0.1.3.tar.gz': 'c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d'},
+ {'libz-sys-1.1.20.tar.gz': 'd2d16453e800a8cf6dd2fc3eb4bc99b786a9b90c663b8559a5b1a041bf89e472'},
+ {'linear-map-1.2.0.tar.gz': 'bfae20f6b19ad527b550c223fddc3077a547fc70cda94b9b566575423fd303ee'},
+ {'linux-raw-sys-0.4.14.tar.gz': '78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89'},
+ {'lock_api-0.4.12.tar.gz': '07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17'},
+ {'log-0.4.22.tar.gz': 'a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24'},
+ {'log-mdc-0.1.0.tar.gz': 'a94d21414c1f4a51209ad204c1776a3d0765002c76c6abcb602a6f09f1e881c7'},
+ {'log-once-0.4.1.tar.gz': '6d8a05e3879b317b1b6dbf353e5bba7062bedcc59815267bb23eaa0c576cebf0'},
+ {'log4rs-1.3.0.tar.gz': '0816135ae15bd0391cf284eab37e6e3ee0a6ee63d2ceeb659862bd8d0a984ca6'},
+ {'lru-0.9.0.tar.gz': '71e7d46de488603ffdd5f30afbc64fbba2378214a2c3a2fb83abf3d33126df17'},
+ {'lzma-sys-0.1.20.tar.gz': '5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27'},
+ {'matrixmultiply-0.3.9.tar.gz': '9380b911e3e96d10c1f415da0876389aaf1b56759054eeb0de7df940c456ba1a'},
+ {'memchr-2.7.4.tar.gz': '78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3'},
+ {'minimal-lexical-0.2.1.tar.gz': '68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a'},
+ {'miniz_oxide-0.8.0.tar.gz': 'e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1'},
+ {'multimap-0.9.1.tar.gz': 'e1a5d38b9b352dbd913288736af36af41c48d61b1a8cd34bcecd727561b7d511'},
+ {'nalgebra-0.29.0.tar.gz': 'd506eb7e08d6329505faa8a3a00a5dcc6de9f76e0c77e4b75763ae3c770831ff'},
+ {'nalgebra-macros-0.1.0.tar.gz': '01fcc0b8149b4632adc89ac3b7b31a12fb6099a0317a4eb2ebff574ef7de7218'},
+ {'nanorand-0.7.0.tar.gz': '6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3'},
+ {'ndarray-0.15.6.tar.gz': 'adb12d4e967ec485a5f71c6311fe28158e9d6f4bc4a447b474184d0f91a8fa32'},
+ {'newtype_derive-0.1.6.tar.gz': 'ac8cd24d9f185bb7223958d8c1ff7a961b74b1953fd05dba7cc568a63b3861ec'},
+ {'nom-7.1.3.tar.gz': 'd273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a'},
+ {'num-0.4.3.tar.gz': '35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23'},
+ {'num-bigint-0.4.6.tar.gz': 'a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9'},
+ {'num-complex-0.4.6.tar.gz': '73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495'},
+ {'num-integer-0.1.46.tar.gz': '7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f'},
+ {'num-iter-0.1.45.tar.gz': '1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf'},
+ {'num-rational-0.4.2.tar.gz': 'f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824'},
+ {'num-traits-0.2.19.tar.gz': '071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841'},
+ {'num_cpus-1.16.0.tar.gz': '4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43'},
+ {'number_prefix-0.4.0.tar.gz': '830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3'},
+ {'once_cell-1.20.2.tar.gz': '1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775'},
+ {'openssl-src-300.3.2+3.3.2.tar.gz': 'a211a18d945ef7e648cc6e0058f4c548ee46aab922ea203e0d30e966ea23647b'},
+ {'openssl-sys-0.9.104.tar.gz': '45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741'},
+ {'order-stat-0.1.3.tar.gz': 'efa535d5117d3661134dbf1719b6f0ffe06f2375843b13935db186cd094105eb'},
+ {'ordered-float-2.10.1.tar.gz': '68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c'},
+ {'ordered-float-3.9.2.tar.gz': 'f1e1c390732d15f1d48471625cd92d154e66db2c56645e29a9cd26f4699f72dc'},
+ {'parking_lot-0.12.3.tar.gz': 'f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27'},
+ {'parking_lot_core-0.9.10.tar.gz': '1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8'},
+ {'paste-1.0.15.tar.gz': '57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a'},
+ {'percent-encoding-2.3.1.tar.gz': 'e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e'},
+ {'peroxide-0.32.1.tar.gz': '703b5fbdc1f9018a66e2db8758633cec31d39ad3127bfd38c9b6ad510637519c'},
+ {'peroxide-ad-0.3.0.tar.gz': 'f6fba8ff3f40b67996f7c745f699babaa3e57ef5c8178ec999daf7eedc51dc8c'},
+ {'pest-2.7.14.tar.gz': '879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442'},
+ {'pest_derive-2.7.14.tar.gz': 'd214365f632b123a47fd913301e14c946c61d1c183ee245fa76eb752e59a02dd'},
+ {'pest_generator-2.7.14.tar.gz': 'eb55586734301717aea2ac313f50b2eb8f60d2fc3dc01d190eefa2e625f60c4e'},
+ {'pest_meta-2.7.14.tar.gz': 'b75da2a70cf4d9cb76833c990ac9cd3923c9a8905a8929789ce347c84564d03d'},
+ {'petgraph-0.6.5.tar.gz': 'b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db'},
+ {'pin-project-1.1.6.tar.gz': 'baf123a161dde1e524adf36f90bc5d8d3462824a9c43553ad07a8183161189ec'},
+ {'pin-project-internal-1.1.6.tar.gz': 'a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8'},
+ {'pkg-config-0.3.31.tar.gz': '953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2'},
+ {'portable-atomic-1.9.0.tar.gz': 'cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2'},
+ {'ppv-lite86-0.2.20.tar.gz': '77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04'},
+ {'prettytable-rs-0.10.0.tar.gz': 'eea25e07510aa6ab6547308ebe3c036016d162b8da920dbb079e3ba8acf3d95a'},
+ {'proc-macro2-1.0.88.tar.gz': '7c3a7fc5db1e57d5a779a352c8cdb57b29aa4c40cc69c3a68a7fedc815fbf2f9'},
+ {'pulp-0.18.22.tar.gz': 'a0a01a0dc67cf4558d279f0c25b0962bd08fc6dec0137699eae304103e882fe6'},
+ {'puruspe-0.2.5.tar.gz': '3804877ffeba468c806c2ad9057bbbae92e4b2c410c2f108baaa0042f241fa4c'},
+ {'quick-error-1.2.3.tar.gz': 'a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0'},
+ {'quote-1.0.37.tar.gz': 'b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af'},
+ {'radium-0.7.0.tar.gz': 'dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09'},
+ {'rand-0.8.5.tar.gz': '34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404'},
+ {'rand_chacha-0.3.1.tar.gz': 'e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88'},
+ {'rand_core-0.6.4.tar.gz': 'ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c'},
+ {'rand_distr-0.4.3.tar.gz': '32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31'},
+ {'random_color-1.0.0.tar.gz': '38803f546aaf7a3bd5af56b139d7b432d3eb43318bf4a91342eff8a125b4fe06'},
+ {'rawpointer-0.2.1.tar.gz': '60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3'},
+ {'rayon-1.10.0.tar.gz': 'b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa'},
+ {'rayon-core-1.12.1.tar.gz': '1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2'},
+ {'reborrow-0.5.5.tar.gz': '03251193000f4bd3b042892be858ee50e8b3719f2b08e5833ac4353724632430'},
+ {'redox_syscall-0.5.7.tar.gz': '9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f'},
+ {'redox_users-0.4.6.tar.gz': 'ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43'},
+ {'regex-1.11.0.tar.gz': '38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8'},
+ {'regex-automata-0.4.8.tar.gz': '368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3'},
+ {'regex-syntax-0.8.5.tar.gz': '2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c'},
+ {'rust-htslib-0.46.0.tar.gz': 'aec6f9ca4601beb4ae75ff8c99144dd15de5a873f6adf058da299962c760968e'},
+ {'rust-lapper-1.1.0.tar.gz': 'ee43d8e721ac803031dbab6a944b957b49a3b11eadbc099880c8aaaebf23ed27'},
+ {'rustc-hash-1.1.0.tar.gz': '08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2'},
+ {'rustc_version-0.1.7.tar.gz': 'c5f5376ea5e30ce23c03eb77cbe4962b988deead10910c372b226388b594c084'},
+ {'rustix-0.38.37.tar.gz': '8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811'},
+ {'rustversion-1.0.18.tar.gz': '0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248'},
+ {'rv-0.16.0.tar.gz': 'c64081d5a5cd97b60822603f9900df77d67c8258e9a8143b6aff950753f2bbe1'},
+ {'ryu-1.0.18.tar.gz': 'f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f'},
+ {'safe_arch-0.7.2.tar.gz': 'c3460605018fdc9612bce72735cba0d27efbcd9904780d44c7e3a9948f96148a'},
+ {'scopeguard-1.2.0.tar.gz': '94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49'},
+ {'semver-0.1.20.tar.gz': 'd4f410fedcf71af0345d7607d246e7ad15faaadd49d240ee3b24e5dc21a820ac'},
+ {'serde-1.0.211.tar.gz': '1ac55e59090389fb9f0dd9e0f3c09615afed1d19094284d0b200441f13550793'},
+ {'serde-value-0.7.0.tar.gz': 'f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c'},
+ {'serde_derive-1.0.211.tar.gz': '54be4f245ce16bc58d57ef2716271d0d4519e0f6defa147f6e081005bcb278ff'},
+ {'serde_json-1.0.132.tar.gz': 'd726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03'},
+ {'serde_yaml-0.9.34+deprecated.tar.gz': '6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47'},
+ {'sha2-0.10.8.tar.gz': '793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8'},
+ {'shlex-1.3.0.tar.gz': '0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64'},
+ {'simba-0.6.0.tar.gz': 'f0b7840f121a46d63066ee7a99fc81dcabbc6105e437cae43528cea199b5a05f'},
+ {'similar-2.6.0.tar.gz': '1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e'},
+ {'similar-asserts-1.6.0.tar.gz': 'cfe85670573cd6f0fa97940f26e7e6601213c3b0555246c24234131f88c5709e'},
+ {'smallvec-1.13.2.tar.gz': '3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67'},
+ {'special-0.10.3.tar.gz': 'b89cf0d71ae639fdd8097350bfac415a41aabf1d5ddd356295fdc95f09760382'},
+ {'spin-0.9.8.tar.gz': '6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67'},
+ {'statrs-0.16.1.tar.gz': 'b35a062dbadac17a42e0fc64c27f419b25d6fae98572eb43c8814c9e873d7721'},
+ {'strsim-0.11.1.tar.gz': '7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f'},
+ {'strum-0.25.0.tar.gz': '290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125'},
+ {'strum_macros-0.25.3.tar.gz': '23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0'},
+ {'strum_macros-0.26.4.tar.gz': '4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be'},
+ {'substring-1.4.5.tar.gz': '42ee6433ecef213b2e72f587ef64a2f5943e7cd16fbd82dbe8bc07486c534c86'},
+ {'syn-1.0.109.tar.gz': '72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237'},
+ {'syn-2.0.82.tar.gz': '83540f837a8afc019423a8edb95b52a8effe46957ee402287f4292fae35be021'},
+ {'tap-1.0.1.tar.gz': '55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369'},
+ {'tempfile-3.13.0.tar.gz': 'f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b'},
+ {'term-0.7.0.tar.gz': 'c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f'},
+ {'terminal_size-0.4.0.tar.gz': '4f599bd7ca042cfdf8f4512b277c02ba102247820f9d9d4a9f521f496751a6ef'},
+ {'thiserror-1.0.64.tar.gz': 'd50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84'},
+ {'thiserror-impl-1.0.64.tar.gz': '08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3'},
+ {'thread-id-4.2.2.tar.gz': 'cfe8f25bbdd100db7e1d34acf7fd2dc59c4bf8f7483f505eaa7d4f12f76cc0ea'},
+ {'thread-tree-0.3.3.tar.gz': 'ffbd370cb847953a25954d9f63e14824a36113f8c72eecf6eccef5dc4b45d630'},
+ {'tinyvec-1.8.0.tar.gz': '445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938'},
+ {'tinyvec_macros-0.1.1.tar.gz': '1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20'},
+ {'triple_accel-0.4.0.tar.gz': '22048bc95dfb2ffd05b1ff9a756290a009224b60b2f0e7525faeee7603851e63'},
+ {'typemap-ors-1.0.0.tar.gz': 'a68c24b707f02dd18f1e4ccceb9d49f2058c2fb86384ef9972592904d7a28867'},
+ {'typenum-1.17.0.tar.gz': '42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825'},
+ {'ucd-trie-0.1.7.tar.gz': '2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971'},
+ {'unicode-bidi-0.3.17.tar.gz': '5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893'},
+ {'unicode-ident-1.0.13.tar.gz': 'e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe'},
+ {'unicode-normalization-0.1.24.tar.gz': '5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956'},
+ {'unicode-segmentation-1.12.0.tar.gz': 'f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493'},
+ {'unicode-width-0.1.14.tar.gz': '7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af'},
+ {'unsafe-any-ors-1.0.0.tar.gz': 'e0a303d30665362d9680d7d91d78b23f5f899504d4f08b3c4cf08d055d87c0ad'},
+ {'unsafe-libyaml-0.2.11.tar.gz': '673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861'},
+ {'url-2.5.2.tar.gz': '22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c'},
+ {'utf8parse-0.2.2.tar.gz': '06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821'},
+ {'vcpkg-0.2.15.tar.gz': 'accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426'},
+ {'vec_map-0.8.2.tar.gz': 'f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191'},
+ {'version_check-0.9.5.tar.gz': '0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a'},
+ {'wasi-0.11.0+wasi-snapshot-preview1.tar.gz': '9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423'},
+ {'wasm-bindgen-0.2.95.tar.gz': '128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e'},
+ {'wasm-bindgen-backend-0.2.95.tar.gz': 'cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358'},
+ {'wasm-bindgen-macro-0.2.95.tar.gz': 'e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56'},
+ {'wasm-bindgen-macro-support-0.2.95.tar.gz': '26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68'},
+ {'wasm-bindgen-shared-0.2.95.tar.gz': '65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d'},
+ {'wide-0.7.28.tar.gz': 'b828f995bf1e9622031f8009f8481a85406ce1f4d4588ff746d872043e855690'},
+ {'winapi-0.3.9.tar.gz': '5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419'},
+ {'winapi-i686-pc-windows-gnu-0.4.0.tar.gz': 'ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6'},
+ {'winapi-x86_64-pc-windows-gnu-0.4.0.tar.gz': '712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f'},
+ {'windows-core-0.52.0.tar.gz': '33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9'},
+ {'windows-sys-0.52.0.tar.gz': '282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d'},
+ {'windows-sys-0.59.0.tar.gz': '1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b'},
+ {'windows-targets-0.52.6.tar.gz': '9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973'},
+ {'windows_aarch64_gnullvm-0.52.6.tar.gz': '32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3'},
+ {'windows_aarch64_msvc-0.52.6.tar.gz': '09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469'},
+ {'windows_i686_gnu-0.52.6.tar.gz': '8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b'},
+ {'windows_i686_gnullvm-0.52.6.tar.gz': '0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66'},
+ {'windows_i686_msvc-0.52.6.tar.gz': '240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66'},
+ {'windows_x86_64_gnu-0.52.6.tar.gz': '147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78'},
+ {'windows_x86_64_gnullvm-0.52.6.tar.gz': '24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d'},
+ {'windows_x86_64_msvc-0.52.6.tar.gz': '589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec'},
+ {'wyz-0.5.1.tar.gz': '05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed'},
+ {'zerocopy-0.7.35.tar.gz': '1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0'},
+ {'zerocopy-derive-0.7.35.tar.gz': 'fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e'},
+]
+
+moduleclass = 'bio'
diff --git a/easybuild/easyconfigs/m/mpl-ascii/mpl-ascii-0.10.0-gfbf-2023b.eb b/easybuild/easyconfigs/m/mpl-ascii/mpl-ascii-0.10.0-gfbf-2023b.eb
new file mode 100644
index 00000000000..f17a99eb068
--- /dev/null
+++ b/easybuild/easyconfigs/m/mpl-ascii/mpl-ascii-0.10.0-gfbf-2023b.eb
@@ -0,0 +1,29 @@
+easyblock = 'PythonBundle'
+
+name = 'mpl-ascii'
+version = '0.10.0'
+
+homepage = 'https://github.com/chriscave/mpl_ascii'
+description = "A matplotlib backend that produces plots using only ASCII characters"
+
+toolchain = {'name': 'gfbf', 'version': '2023b'}
+
+dependencies = [
+ ('Python', '3.11.5'),
+ ('Python-bundle-PyPI', '2023.10'),
+ ('matplotlib', '3.8.2'),
+]
+
+use_pip = True
+sanity_pip_check = True
+
+exts_list = [
+ (name, version, {
+ 'source_tmpl': 'mpl_ascii-%(version)s.tar.gz',
+ 'checksums': ['8e4ae770d5a612dab0e8055c7677c6c3d271da4f5127cce46a60ce3ce4a4e72c'],
+ # relax version constraint for rich
+ 'preinstallopts': """sed -i 's/"rich>=.*"/"rich"/g' pyproject.toml && """,
+ }),
+]
+
+moduleclass = 'vis'
diff --git a/easybuild/easyconfigs/n/NTL/NTL-11.5.1-GCC-13.3.0.eb b/easybuild/easyconfigs/n/NTL/NTL-11.5.1-GCC-13.3.0.eb
new file mode 100644
index 00000000000..29fdd6e848f
--- /dev/null
+++ b/easybuild/easyconfigs/n/NTL/NTL-11.5.1-GCC-13.3.0.eb
@@ -0,0 +1,44 @@
+# contributed by Guilherme Peretti-Pezzi (CSCS)
+# updated by Alex Domingo (Vrije Universiteit Brussel)
+# updated by Åke Sandgren(Umeå University)
+# Update: Petr Král (INUITS)
+easyblock = 'ConfigureMake'
+
+name = 'NTL'
+version = '11.5.1'
+
+homepage = 'https://shoup.net/ntl/'
+
+description = """NTL is a high-performance, portable C++ library providing data structures and
+algorithms for manipulating signed, arbitrary length integers, and for vectors,
+matrices, and polynomials over the integers and over finite fields."""
+
+toolchain = {'name': 'GCC', 'version': '13.3.0'}
+toolchainopts = {'pic': True}
+
+github_account = 'libntl'
+source_urls = [GITHUB_LOWER_SOURCE]
+sources = ['v%(version)s.tar.gz']
+checksums = ['ef578fa8b6c0c64edd1183c4c303b534468b58dd3eb8df8c9a5633f984888de5']
+
+builddependencies = [
+ ('Perl', '5.38.2'),
+]
+
+dependencies = [
+ ('GMP', '6.3.0'),
+]
+
+start_dir = 'src'
+
+prefix_opt = 'PREFIX='
+configopts = 'CXX="$CXX" CXXFLAGS="$CXXFLAGS" GMP_PREFIX="$EBROOTGMP" SHARED=on'
+
+runtest = 'check'
+
+sanity_check_paths = {
+ 'files': ['lib/libntl.%s' % e for e in ['a', SHLIB_EXT]],
+ 'dirs': ['include/NTL', 'share/doc'],
+}
+
+moduleclass = 'math'
diff --git a/easybuild/easyconfigs/p/PCRE/PCRE-8.45-GCCcore-13.3.0.eb b/easybuild/easyconfigs/p/PCRE/PCRE-8.45-GCCcore-13.3.0.eb
new file mode 100644
index 00000000000..c378f2e1bab
--- /dev/null
+++ b/easybuild/easyconfigs/p/PCRE/PCRE-8.45-GCCcore-13.3.0.eb
@@ -0,0 +1,43 @@
+easyblock = 'ConfigureMake'
+
+name = 'PCRE'
+version = '8.45'
+
+homepage = 'https://www.pcre.org/'
+description = """
+ The PCRE library is a set of functions that implement regular expression
+ pattern matching using the same syntax and semantics as Perl 5.
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '13.3.0'}
+toolchainopts = {'pic': True}
+
+source_urls = [
+ SOURCEFORGE_SOURCE,
+ 'https://ftp.%(namelower)s.org/pub/%(namelower)s/',
+]
+sources = [SOURCELOWER_TAR_GZ]
+checksums = ['4e6ce03e0336e8b4a3d6c2b70b1c5e18590a5673a98186da90d4f33c23defc09']
+
+builddependencies = [
+ ('binutils', '2.42'),
+]
+dependencies = [
+ ('bzip2', '1.0.8'),
+ ('zlib', '1.3.1'),
+]
+
+configopts = "--enable-utf --enable-unicode-properties --enable-pcre16 --enable-pcre32"
+
+
+sanity_check_paths = {
+ 'files': [
+ 'bin/%(namelower)s-config',
+ 'include/%(namelower)s.h',
+ 'share/man/man3/%(namelower)s.3',
+ 'lib/libpcre32.%s' % SHLIB_EXT
+ ],
+ 'dirs': ['lib/pkgconfig', 'share/doc/%(namelower)s/html', 'share/man/man1'],
+}
+
+moduleclass = 'devel'
diff --git a/easybuild/easyconfigs/p/PoPoolation-TE2/PoPoolation-TE2-1.10.03-GCCcore-12.3.0.eb b/easybuild/easyconfigs/p/PoPoolation-TE2/PoPoolation-TE2-1.10.03-GCCcore-12.3.0.eb
new file mode 100644
index 00000000000..e93f4a079c6
--- /dev/null
+++ b/easybuild/easyconfigs/p/PoPoolation-TE2/PoPoolation-TE2-1.10.03-GCCcore-12.3.0.eb
@@ -0,0 +1,60 @@
+easyblock = 'JAR'
+
+name = 'PoPoolation-TE2'
+version = '1.10.03'
+
+homepage = 'https://sourceforge.net/p/popoolation-te2/wiki/Home/'
+description = """
+PoPoolationTE2: enables comparative population genomics of transposable elements (TE). As a
+major innovation PoPoolation TE2 introduces the physical pileup file which allows to
+homogenize the power to identify TEs and thus enables an unbiased comparison of TE abundance
+between samples, where samples could be pooled populations, tissues or sequenced individuals.
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '12.3.0'}
+
+builddependencies = [('binutils', '2.40')]
+
+dependencies = [
+ ('BWA', '0.7.17'),
+ ('Java', '11', '', SYSTEM),
+]
+
+source_urls = ['https://sourceforge.net/projects/popoolation-te2/files/']
+sources = [
+ {
+ 'filename': 'popte2.jar',
+ 'download_filename': 'popte2-v%(version)s.jar',
+ },
+ 'walkthrough-refgenome.zip',
+ 'walkthrough-reads.zip',
+
+]
+checksums = [
+ {'popte2.jar': '95eca422a6d295277d20ec1cbbcb9000bad1f380ae7cba9005f20ff211907e32'},
+ {'walkthrough-refgenome.zip': 'ce3cb0b952a99fcae6b348cd888ee6f4c3a45d7e0b208e211ecb290cacde618c'},
+ {'walkthrough-reads.zip': '909a8f1d507bb20518f6ef1ac313a59b8e8b02b70fc911e2d6d6efdce2e258f3'},
+]
+
+postinstallcmds = [
+ "cd %(installdir)s && unzip walkthrough-refgenome.zip",
+ "cd %(installdir)s && unzip walkthrough-reads.zip",
+ "cd %(installdir)s && rm walkthrough-refgenome.zip walkthrough-reads.zip",
+]
+
+sanity_check_commands = [
+ 'java -jar $EBROOTPOPOOLATIONMINTE2/popte2.jar --help 2>&1 | grep "Usage: java"',
+]
+
+sanity_check_paths = {
+ 'files': ['popte2.jar'],
+ 'dirs': ['walkthrough-refgenome', 'walkthrough-reads'],
+}
+
+modloadmsg = """
+To execute PoPoolation-TE2 run: java -jar $EBROOTPOPOOLATIONMINTE2/popte2.jar
+The reference genome and the Te-hierachy can be found in $EBROOTPOPOOLATIONMINTE2/walkthrough-refgenome
+Reads provided by the developer can be found under $EBROOTPOPOOLATIONMINTE2/walkthrough-reads
+"""
+
+moduleclass = 'bio'
diff --git a/easybuild/easyconfigs/p/PyBioLib/PyBioLib-1.2.205-GCCcore-12.3.0.eb b/easybuild/easyconfigs/p/PyBioLib/PyBioLib-1.2.205-GCCcore-12.3.0.eb
new file mode 100644
index 00000000000..fe4e8b0e393
--- /dev/null
+++ b/easybuild/easyconfigs/p/PyBioLib/PyBioLib-1.2.205-GCCcore-12.3.0.eb
@@ -0,0 +1,68 @@
+easyblock = "PythonBundle"
+
+name = 'PyBioLib'
+version = '1.2.205'
+
+homepage = 'https://biolib.com/'
+description = """PyBioLib is a Python package for running BioLib applications from Python
+scripts and the command line.
+BioLib is a library of biological data science applications. Applications on
+BioLib range from small bioinformatics utilities to state-of-the-art machine
+learning algorithms for predicting characteristics of biological molecules."""
+
+toolchain = {'name': 'GCCcore', 'version': '12.3.0'}
+
+builddependencies = [
+ ('binutils', '2.40'),
+]
+
+dependencies = [
+ ('Python', '3.11.3'),
+ ('Flask', '2.3.3'),
+ ('PyYAML', '6.0'),
+]
+
+use_pip = True
+
+exts_list = [
+ ('commonmark', '0.9.1', {
+ 'source_tmpl': SOURCE_WHL,
+ 'checksums': ['da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9'],
+ }),
+ ('rich', '13.9.2', {
+ 'source_tmpl': SOURCE_PY3_WHL,
+ 'checksums': ['8c82a3d3f8dcfe9e734771313e606b39d8247bb6b826e196f4914b333b743cf1'],
+ }),
+ ('pycryptodome', '3.21.0', {
+ 'modulename': 'Crypto.PublicKey.RSA',
+ 'checksums': ['f7787e0d469bdae763b876174cf2e6c0f7be79808af26b1da96f1a64bcf47297'],
+ }),
+ ('websocket_client', '1.8.0', {
+ 'modulename': 'websocket',
+ 'source_tmpl': SOURCE_PY3_WHL,
+ 'checksums': ['17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526'],
+ }),
+ ('docker', '7.1.0', {
+ 'source_tmpl': SOURCE_PY3_WHL,
+ 'checksums': ['c96b93b7f0a746f9e77d325bcfb87422a3d8bd4f03136ae8a85b37f1898d5fc0'],
+ }),
+ ('PyJWT', '2.9.0', {
+ 'modulename': 'jwt',
+ 'source_tmpl': SOURCE_PY3_WHL,
+ 'checksums': ['3b02fb0f44517787776cf48f2ae25d8e14f300e6d7545a4315cee571a415e850'],
+ }),
+ ('gunicorn', '23.0.0', {
+ 'source_tmpl': SOURCE_PY3_WHL,
+ 'checksums': ['ec400d38950de4dfd418cff8328b2c8faed0edb0d517d3394e457c317908ca4d'],
+ }),
+ ('pybiolib', version, {
+ 'modulename': 'biolib',
+ # 'preinstallopts': "sed -i 's/< 8.1.0/< 8.2.0/' pyproject.toml &",
+ 'source_tmpl': SOURCE_PY3_WHL,
+ 'checksums': ['56030cdeec254ac751b47dab4f9418caa0c8af3d2604cc2daaa5cea2ab61312a'],
+ }),
+]
+
+sanity_pip_check = True
+
+moduleclass = 'tools'
diff --git a/easybuild/easyconfigs/p/parallel/parallel-20230722-GCCcore-12.3.0.eb b/easybuild/easyconfigs/p/parallel/parallel-20230722-GCCcore-12.3.0.eb
index 7725cf4990a..32a4662d685 100644
--- a/easybuild/easyconfigs/p/parallel/parallel-20230722-GCCcore-12.3.0.eb
+++ b/easybuild/easyconfigs/p/parallel/parallel-20230722-GCCcore-12.3.0.eb
@@ -14,13 +14,19 @@ checksums = ['55f991ad195a72f0abfaf1ede8fc1d03dd255cac91bc5eb900f9aa2873d1ff87']
builddependencies = [('binutils', '2.40')]
-dependencies = [('Perl', '5.36.1')]
+dependencies = [
+ ('Perl', '5.36.1'),
+ ('Perl-bundle-CPAN', '5.36.1'),
+]
sanity_check_paths = {
'files': ['bin/parallel'],
'dirs': []
}
-sanity_check_commands = ["parallel --help"]
+sanity_check_commands = [
+ 'parallel --help',
+ 'time parallel --csv echo < <(echo -e "task1\ntask2\ntask3")',
+]
moduleclass = 'tools'
diff --git a/easybuild/easyconfigs/p/parallel/parallel-20240322-GCCcore-13.2.0.eb b/easybuild/easyconfigs/p/parallel/parallel-20240322-GCCcore-13.2.0.eb
index 53acb414c76..4673651a654 100644
--- a/easybuild/easyconfigs/p/parallel/parallel-20240322-GCCcore-13.2.0.eb
+++ b/easybuild/easyconfigs/p/parallel/parallel-20240322-GCCcore-13.2.0.eb
@@ -14,13 +14,19 @@ checksums = ['0b17029a203dabf7ba6ca7e52c2d3910fff46b2979476e12a9110920b79e6a95']
builddependencies = [('binutils', '2.40')]
-dependencies = [('Perl', '5.38.0')]
+dependencies = [
+ ('Perl', '5.38.0'),
+ ('Perl-bundle-CPAN', '5.38.0'),
+]
sanity_check_paths = {
'files': ['bin/parallel'],
'dirs': []
}
-sanity_check_commands = ["parallel --help"]
+sanity_check_commands = [
+ 'parallel --help',
+ 'time parallel --csv echo < <(echo -e "task1\ntask2\ntask3")',
+]
moduleclass = 'tools'
diff --git a/easybuild/easyconfigs/p/parallel/parallel-20240722-GCCcore-13.3.0.eb b/easybuild/easyconfigs/p/parallel/parallel-20240722-GCCcore-13.3.0.eb
index 92658cc24b7..e3f60b06f2c 100644
--- a/easybuild/easyconfigs/p/parallel/parallel-20240722-GCCcore-13.3.0.eb
+++ b/easybuild/easyconfigs/p/parallel/parallel-20240722-GCCcore-13.3.0.eb
@@ -14,13 +14,19 @@ checksums = ['c7335471f776af28bea9464ad85a50f2ed120f78fbf75ead6647aeea8e0e53f0']
builddependencies = [('binutils', '2.42')]
-dependencies = [('Perl', '5.38.2')]
+dependencies = [
+ ('Perl', '5.38.2'),
+ ('Perl-bundle-CPAN', '5.38.2'),
+]
sanity_check_paths = {
'files': ['bin/parallel'],
'dirs': []
}
-sanity_check_commands = ["parallel --help"]
+sanity_check_commands = [
+ 'parallel --help',
+ 'time parallel --csv echo < <(echo -e "task1\ntask2\ntask3")',
+]
moduleclass = 'tools'
diff --git a/easybuild/easyconfigs/p/plotly.py/plotly.py-5.24.1-GCCcore-13.3.0.eb b/easybuild/easyconfigs/p/plotly.py/plotly.py-5.24.1-GCCcore-13.3.0.eb
new file mode 100644
index 00000000000..97bb6e12c8d
--- /dev/null
+++ b/easybuild/easyconfigs/p/plotly.py/plotly.py-5.24.1-GCCcore-13.3.0.eb
@@ -0,0 +1,39 @@
+easyblock = 'PythonBundle'
+
+name = 'plotly.py'
+version = '5.24.1'
+
+homepage = 'https://plot.ly/python'
+description = "An open-source, interactive graphing library for Python"
+
+toolchain = {'name': 'GCCcore', 'version': '13.3.0'}
+
+builddependencies = [
+ ('binutils', '2.42'),
+]
+dependencies = [
+ ('Python', '3.12.3'),
+]
+
+use_pip = True
+
+exts_list = [
+ ('tenacity', '9.0.0', {
+ 'patches': ['tenacity-9.0.0_fix_version.patch'],
+ 'preinstallopts': "sed -i 's/EB_TENACITY_VERSION/%(version)s/' setup.cfg && ",
+ 'checksums': [
+ {'tenacity-9.0.0.tar.gz': '807f37ca97d62aa361264d497b0e31e92b8027044942bfa756160d908320d73b'},
+ {'tenacity-9.0.0_fix_version.patch': '71a533470f03aab802439bda078494ab98804439afdb16f8287337bd3e0c8a82'},
+ ],
+ }),
+ ('packaging', '24.1', {
+ 'checksums': ['026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002'],
+ }),
+ ('plotly', version, {
+ 'checksums': ['dbc8ac8339d248a4bcc36e08a5659bacfe1b079390b8953533f4eb22169b4bae'],
+ }),
+]
+
+sanity_pip_check = True
+
+moduleclass = 'vis'
diff --git a/easybuild/easyconfigs/p/plotly.py/tenacity-9.0.0_fix_version.patch b/easybuild/easyconfigs/p/plotly.py/tenacity-9.0.0_fix_version.patch
new file mode 100644
index 00000000000..9bd6e65af16
--- /dev/null
+++ b/easybuild/easyconfigs/p/plotly.py/tenacity-9.0.0_fix_version.patch
@@ -0,0 +1,15 @@
+# What: Putting a manually typed version in setup.cfg, as it wouldnt resolve automatically.
+# Author: Denis Kristak (Inuits)diff -ruN tenacity-8.2.3_orig/setup.cfg tenacity-8.2.3/setup.cfg
+# Updated for v9.0.0 by maxim-masterov (SURF)
+# Updated with magic string to avoid having to update the patch for every version by Samuel Moors (Vrije Universiteit Brussel)
+diff -Nru tenacity-9.0.0.orig/setup.cfg tenacity-9.0.0/setup.cfg
+--- tenacity-9.0.0.orig/setup.cfg 2024-10-10 16:50:28.669538307 +0200
++++ tenacity-9.0.0/setup.cfg 2024-10-10 16:50:54.881500726 +0200
+@@ -1,6 +1,7 @@
+ [metadata]
+ name = tenacity
+ license = Apache 2.0
++version = 'EB_TENACITY_VERSION'
+ url = https://github.com/jd/tenacity
+ summary = Retry code until it succeeds
+ long_description = Tenacity is a general-purpose retrying library to simplify the task of adding retry behavior to just about anything.
diff --git a/easybuild/easyconfigs/q/QCG-PilotJob/QCG-PilotJob-0.14.1-gfbf-2024a.eb b/easybuild/easyconfigs/q/QCG-PilotJob/QCG-PilotJob-0.14.1-gfbf-2024a.eb
new file mode 100644
index 00000000000..ae1b1f87ea1
--- /dev/null
+++ b/easybuild/easyconfigs/q/QCG-PilotJob/QCG-PilotJob-0.14.1-gfbf-2024a.eb
@@ -0,0 +1,70 @@
+easyblock = 'PythonBundle'
+
+name = 'QCG-PilotJob'
+version = '0.14.1'
+
+homepage = 'https://qcg-pilotjob.readthedocs.org'
+description = "A python service for easy execution of many tasks inside a single allocation."
+
+toolchain = {'name': 'gfbf', 'version': '2024a'}
+
+dependencies = [
+ ('Python', '3.12.3'),
+ ('SciPy-bundle', '2024.05'),
+ ('PyZMQ', '26.2.0'),
+ ('Kaleido', '0.2.1'),
+ ('statsmodels', '0.14.4'),
+ ('plotly.py', '5.24.1'),
+ ('hatchling', '1.24.2'),
+]
+
+use_pip = True
+
+exts_list = [
+ ('patsy', '0.5.6', {
+ 'checksums': ['95c6d47a7222535f84bff7f63d7303f2e297747a598db89cf5c67f0c0c7d2cdb'],
+ }),
+ ('plotly_express', '0.4.1', {
+ 'checksums': ['ff73a41ce02fb43d1d8e8fa131ef3e6589857349ca216b941b8f3f862bce0278'],
+ }),
+ ('prompt_toolkit', '3.0.48', {
+ 'checksums': ['d6623ab0477a80df74e646bdbc93621143f5caf104206aa29294d53de1a03d90'],
+ }),
+ ('trove-classifiers', '2024.10.13', {
+ 'patches': ['trove-classifiers-2024.10.13_fix_setup.patch'],
+ 'source_tmpl': 'trove_classifiers-2024.10.13.tar.gz',
+ 'checksums': [
+ {'trove_classifiers-2024.10.13.tar.gz': 'b820fc6f9544543afa15e5d9cfc426cde3b20fc2246dff6f019b835731508cef'},
+ {'trove-classifiers-2024.10.13_fix_setup.patch':
+ 'c90cace5dd0b8a98c60c68681fe453aea97c99038df21c8ad10e11c6816d84af'},
+ ],
+ }),
+ ('hatch_vcs', '0.4.0', {
+ 'checksums': ['093810748fe01db0d451fabcf2c1ac2688caefd232d4ede967090b1c1b07d9f7'],
+ }),
+ ('setuptools-scm', '8.1.0', {
+ 'source_tmpl': 'setuptools_scm-8.1.0.tar.gz',
+ 'checksums': ['42dea1b65771cba93b7a515d65a65d8246e560768a66b9106a592c8e7f26c8a7'],
+ }),
+ ('termcolor', '2.5.0', {
+ 'checksums': ['998d8d27da6d48442e8e1f016119076b690d962507531df4890fcd2db2ef8a6f'],
+ }),
+ ('qcg-pilotjob', version, {
+ 'modulename': 'qcg.pilotjob',
+ 'checksums': [
+ {'qcg-pilotjob-0.14.1.tar.gz': 'f7e162851dce8d94ee424113bc528bfd0d8cc4668e33a3fd9f058ffce9ef409b'},
+ ],
+ }),
+ ('qcg-pilotjob-cmds', version, {
+ 'modulename': 'qcg.pilotjob.cmds',
+ 'checksums': ['58b2b14a278fc255cad0cec308316242b82cb3a08d6e6a517206af1930b09fe3'],
+ }),
+ ('qcg-pilotjob-executor-api', version, {
+ 'modulename': 'qcg.pilotjob.api',
+ 'checksums': ['66277105b31d5a6ee3cf87d980ce63298d05f466dd102c2ec65ecdb30545e154'],
+ }),
+]
+
+sanity_pip_check = True
+
+moduleclass = 'tools'
diff --git a/easybuild/easyconfigs/q/QCG-PilotJob/trove-classifiers-2024.10.13_fix_setup.patch b/easybuild/easyconfigs/q/QCG-PilotJob/trove-classifiers-2024.10.13_fix_setup.patch
new file mode 100644
index 00000000000..b1a4d34af27
--- /dev/null
+++ b/easybuild/easyconfigs/q/QCG-PilotJob/trove-classifiers-2024.10.13_fix_setup.patch
@@ -0,0 +1,13 @@
+# What: Put manually typed version in setup.py
+# Author: maxim-masterov (SURF)
+diff -Nru trove_classifiers-2024.10.13.orig/setup.py trove_classifiers-2024.10.13/setup.py
+--- trove_classifiers-2024.10.13.orig/setup.py 2024-10-14 23:32:23.824712949 +0200
++++ trove_classifiers-2024.10.13/setup.py 2024-10-14 23:33:35.655405794 +0200
+@@ -12,6 +12,7 @@
+ setup(
+ name="trove-classifiers",
+ description="Canonical source for classifiers on PyPI (pypi.org).",
++ version="2024.10.13",
+ long_description=long_description,
+ long_description_content_type="text/markdown",
+ url="https://github.com/pypa/trove-classifiers",
diff --git a/easybuild/easyconfigs/s/SIONlib/SIONlib-1.7.7-GCCcore-11.2.0-tools.eb b/easybuild/easyconfigs/s/SIONlib/SIONlib-1.7.7-GCCcore-11.2.0-tools.eb
index 7cb1689c5c2..30b9729414a 100644
--- a/easybuild/easyconfigs/s/SIONlib/SIONlib-1.7.7-GCCcore-11.2.0-tools.eb
+++ b/easybuild/easyconfigs/s/SIONlib/SIONlib-1.7.7-GCCcore-11.2.0-tools.eb
@@ -31,12 +31,18 @@ toolchain = {'name': 'GCCcore', 'version': '11.2.0'}
source_urls = ['https://apps.fz-juelich.de/jsc/%(namelower)s/download.php?version=%(version)sl']
sources = ['%(namelower)s-%(version)sl.tar.gz']
-checksums = ['3b5072d8a32a9e9858d85dfe4dc01e7cfdbf54cdaa60660e760b634ee08d8a4c']
+# 1.7.7 was rereleased with code changes. Old checksum was:
+# 3b5072d8a32a9e9858d85dfe4dc01e7cfdbf54cdaa60660e760b634ee08d8a4c
+checksums = ['e37c42975b47dead4649d34fbcaf5a95d2257240039756a0d7f3c1ff312aebcc']
builddependencies = [
('binutils', '2.37'),
]
+# remove -m64 flag from PFLAG variable in Makefiles for CPU architectures that don't support it
+if ARCH != 'x86_64':
+ preconfigopts = 'sed -i "s|PFLAG = -m\\$(PREC)|PFLAG = |" mf/Makefile.defs.linux-gomp* && '
+
configopts = '--disable-cxx --disable-fortran --disable-ompi '
# Comment it out if you have Xeon Phi:
diff --git a/easybuild/easyconfigs/s/SIONlib/SIONlib-1.7.7-GCCcore-11.3.0-tools.eb b/easybuild/easyconfigs/s/SIONlib/SIONlib-1.7.7-GCCcore-11.3.0-tools.eb
index 9d094c2cb89..f948c852c2d 100644
--- a/easybuild/easyconfigs/s/SIONlib/SIONlib-1.7.7-GCCcore-11.3.0-tools.eb
+++ b/easybuild/easyconfigs/s/SIONlib/SIONlib-1.7.7-GCCcore-11.3.0-tools.eb
@@ -31,12 +31,18 @@ toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
source_urls = ['https://apps.fz-juelich.de/jsc/%(namelower)s/download.php?version=%(version)sl']
sources = ['%(namelower)s-%(version)sl.tar.gz']
-checksums = ['3b5072d8a32a9e9858d85dfe4dc01e7cfdbf54cdaa60660e760b634ee08d8a4c']
+# 1.7.7 was rereleased with code changes. Old checksum was:
+# 3b5072d8a32a9e9858d85dfe4dc01e7cfdbf54cdaa60660e760b634ee08d8a4c
+checksums = ['e37c42975b47dead4649d34fbcaf5a95d2257240039756a0d7f3c1ff312aebcc']
builddependencies = [
('binutils', '2.38'),
]
+# remove -m64 flag from PFLAG variable in Makefiles for CPU architectures that don't support it
+if ARCH != 'x86_64':
+ preconfigopts = 'sed -i "s|PFLAG = -m\\$(PREC)|PFLAG = |" mf/Makefile.defs.linux-gomp* && '
+
configopts = '--disable-cxx --disable-fortran --disable-ompi '
# Comment it out if you have Xeon Phi:
diff --git a/easybuild/easyconfigs/s/SIONlib/SIONlib-1.7.7-GCCcore-12.2.0-tools.eb b/easybuild/easyconfigs/s/SIONlib/SIONlib-1.7.7-GCCcore-12.2.0-tools.eb
index 5bf659a141a..3921083e94f 100644
--- a/easybuild/easyconfigs/s/SIONlib/SIONlib-1.7.7-GCCcore-12.2.0-tools.eb
+++ b/easybuild/easyconfigs/s/SIONlib/SIONlib-1.7.7-GCCcore-12.2.0-tools.eb
@@ -31,12 +31,18 @@ toolchain = {'name': 'GCCcore', 'version': '12.2.0'}
source_urls = ['https://apps.fz-juelich.de/jsc/%(namelower)s/download.php?version=%(version)sl']
sources = ['%(namelower)s-%(version)sl.tar.gz']
-checksums = ['3b5072d8a32a9e9858d85dfe4dc01e7cfdbf54cdaa60660e760b634ee08d8a4c']
+# 1.7.7 was rereleased with code changes. Old checksum was:
+# 3b5072d8a32a9e9858d85dfe4dc01e7cfdbf54cdaa60660e760b634ee08d8a4c
+checksums = ['e37c42975b47dead4649d34fbcaf5a95d2257240039756a0d7f3c1ff312aebcc']
builddependencies = [
('binutils', '2.39'),
]
+# remove -m64 flag from PFLAG variable in Makefiles for CPU architectures that don't support it
+if ARCH != 'x86_64':
+ preconfigopts = 'sed -i "s|PFLAG = -m\\$(PREC)|PFLAG = |" mf/Makefile.defs.linux-gomp* && '
+
configopts = '--disable-cxx --disable-fortran --disable-ompi '
# Comment it out if you have Xeon Phi:
diff --git a/easybuild/easyconfigs/s/SIONlib/SIONlib-1.7.7-GCCcore-12.3.0-tools.eb b/easybuild/easyconfigs/s/SIONlib/SIONlib-1.7.7-GCCcore-12.3.0-tools.eb
index 7cae952e521..2a1c723de5a 100644
--- a/easybuild/easyconfigs/s/SIONlib/SIONlib-1.7.7-GCCcore-12.3.0-tools.eb
+++ b/easybuild/easyconfigs/s/SIONlib/SIONlib-1.7.7-GCCcore-12.3.0-tools.eb
@@ -31,12 +31,18 @@ toolchain = {'name': 'GCCcore', 'version': '12.3.0'}
source_urls = ['https://apps.fz-juelich.de/jsc/%(namelower)s/download.php?version=%(version)sl']
sources = ['%(namelower)s-%(version)sl.tar.gz']
-checksums = ['3b5072d8a32a9e9858d85dfe4dc01e7cfdbf54cdaa60660e760b634ee08d8a4c']
+# 1.7.7 was rereleased with code changes. Old checksum was:
+# 3b5072d8a32a9e9858d85dfe4dc01e7cfdbf54cdaa60660e760b634ee08d8a4c
+checksums = ['e37c42975b47dead4649d34fbcaf5a95d2257240039756a0d7f3c1ff312aebcc']
builddependencies = [
('binutils', '2.40'),
]
+# remove -m64 flag from PFLAG variable in Makefiles for CPU architectures that don't support it
+if ARCH != 'x86_64':
+ preconfigopts = 'sed -i "s|PFLAG = -m\\$(PREC)|PFLAG = |" mf/Makefile.defs.linux-gomp* && '
+
configopts = '--disable-cxx --disable-fortran --disable-ompi '
# Comment it out if you have Xeon Phi:
diff --git a/easybuild/easyconfigs/s/SIONlib/SIONlib-1.7.7-GCCcore-13.2.0-tools.eb b/easybuild/easyconfigs/s/SIONlib/SIONlib-1.7.7-GCCcore-13.2.0-tools.eb
index 4ac7b2ae50d..90f04ab5dff 100644
--- a/easybuild/easyconfigs/s/SIONlib/SIONlib-1.7.7-GCCcore-13.2.0-tools.eb
+++ b/easybuild/easyconfigs/s/SIONlib/SIONlib-1.7.7-GCCcore-13.2.0-tools.eb
@@ -31,12 +31,18 @@ toolchain = {'name': 'GCCcore', 'version': '13.2.0'}
source_urls = ['https://apps.fz-juelich.de/jsc/%(namelower)s/download.php?version=%(version)sl']
sources = ['%(namelower)s-%(version)sl.tar.gz']
-checksums = ['3b5072d8a32a9e9858d85dfe4dc01e7cfdbf54cdaa60660e760b634ee08d8a4c']
+# 1.7.7 was rereleased with code changes. Old checksum was:
+# 3b5072d8a32a9e9858d85dfe4dc01e7cfdbf54cdaa60660e760b634ee08d8a4c
+checksums = ['e37c42975b47dead4649d34fbcaf5a95d2257240039756a0d7f3c1ff312aebcc']
builddependencies = [
('binutils', '2.40'),
]
+# remove -m64 flag from PFLAG variable in Makefiles for CPU architectures that don't support it
+if ARCH != 'x86_64':
+ preconfigopts = 'sed -i "s|PFLAG = -m\\$(PREC)|PFLAG = |" mf/Makefile.defs.linux-gomp* && '
+
configopts = '--disable-cxx --disable-fortran --disable-ompi '
# Comment it out if you have Xeon Phi:
diff --git a/easybuild/easyconfigs/s/SIONlib/SIONlib-1.7.7-GCCcore-13.3.0-tools.eb b/easybuild/easyconfigs/s/SIONlib/SIONlib-1.7.7-GCCcore-13.3.0-tools.eb
index 9d2584de1bb..ff0762c0c4e 100644
--- a/easybuild/easyconfigs/s/SIONlib/SIONlib-1.7.7-GCCcore-13.3.0-tools.eb
+++ b/easybuild/easyconfigs/s/SIONlib/SIONlib-1.7.7-GCCcore-13.3.0-tools.eb
@@ -31,12 +31,18 @@ toolchain = {'name': 'GCCcore', 'version': '13.3.0'}
source_urls = ['https://apps.fz-juelich.de/jsc/%(namelower)s/download.php?version=%(version)sl']
sources = ['%(namelower)s-%(version)sl.tar.gz']
-checksums = ['3b5072d8a32a9e9858d85dfe4dc01e7cfdbf54cdaa60660e760b634ee08d8a4c']
+# 1.7.7 was rereleased with code changes. Old checksum was:
+# 3b5072d8a32a9e9858d85dfe4dc01e7cfdbf54cdaa60660e760b634ee08d8a4c
+checksums = ['e37c42975b47dead4649d34fbcaf5a95d2257240039756a0d7f3c1ff312aebcc']
builddependencies = [
('binutils', '2.42'),
]
+# remove -m64 flag from PFLAG variable in Makefiles for CPU architectures that don't support it
+if ARCH != 'x86_64':
+ preconfigopts = 'sed -i "s|PFLAG = -m\\$(PREC)|PFLAG = |" mf/Makefile.defs.linux-gomp* && '
+
configopts = '--disable-cxx --disable-fortran --disable-ompi '
# Comment it out if you have Xeon Phi:
diff --git a/easybuild/easyconfigs/s/SNPTEST/SNPTEST-2.5.6.eb b/easybuild/easyconfigs/s/SNPTEST/SNPTEST-2.5.6.eb
new file mode 100644
index 00000000000..a404d99e468
--- /dev/null
+++ b/easybuild/easyconfigs/s/SNPTEST/SNPTEST-2.5.6.eb
@@ -0,0 +1,33 @@
+easyblock = 'Tarball'
+
+name = 'SNPTEST'
+version = '2.5.6'
+
+homepage = 'https://www.chg.ox.ac.uk/~gav/snptest/'
+description = """SNPTEST is a program for the analysis of single SNP association in genome-wide studies.
+ The tests implemented include
+
+ Binary (case-control) phenotypes, single and multiple quantitative phenotypes
+ Bayesian and Frequentist tests
+ Ability to condition upon an arbitrary set of covariates and/or SNPs.
+ Various different methods for the dealing with imputed SNPs.
+"""
+
+toolchain = SYSTEM
+
+source_urls = ['https://www.well.ox.ac.uk/~gav/resources/']
+sources = ['snptest_v2.5.6_CentOS_Linux7.8-x86_64_dynamic.tgz']
+checksums = ['c2c829def961dd2f6377c388d8aa22cab17945961c47e39c4a94493466c0a52e']
+
+postinstallcmds = ["cd %(installdir)s && ln -s snptest_v2.5.6 snptest"]
+
+sanity_check_paths = {
+ 'files': ['LICENCE'],
+ 'dirs': ['doc', 'example'],
+}
+
+modextrapaths = {'PATH': ''}
+
+sanity_check_commands = ["snptest -help"]
+
+moduleclass = 'bio'
diff --git a/easybuild/easyconfigs/s/SciANN/SciANN-0.7.0.1-foss-2022a.eb b/easybuild/easyconfigs/s/SciANN/SciANN-0.7.0.1-foss-2022a.eb
new file mode 100644
index 00000000000..9b14f9ce1be
--- /dev/null
+++ b/easybuild/easyconfigs/s/SciANN/SciANN-0.7.0.1-foss-2022a.eb
@@ -0,0 +1,37 @@
+easyblock = 'PythonBundle'
+
+name = 'SciANN'
+version = '0.7.0.1'
+
+homepage = 'https://github.com/ehsanhaghighat/sciann'
+description = """
+A Keras/Tensorflow wrapper for scientific computations and physics-informed deep learning
+using artificial neural networks.
+"""
+
+toolchain = {'name': 'foss', 'version': '2022a'}
+
+dependencies = [
+ ('Python', '3.10.4'),
+ ('SciPy-bundle', '2022.05'),
+ ('PyYAML', '6.0'),
+ ('h5py', '3.7.0'),
+ ('scikit-learn', '1.1.2'),
+ ('TensorFlow', '2.11.0'),
+ ('pymatgen', '2023.3.10'), # for pybtex and latexcodec
+ ('matplotlib', '3.5.2'),
+ ('pygraphviz', '1.10'),
+ ('pydot', '1.4.2'),
+]
+
+use_pip = True
+sanity_pip_check = True
+
+exts_list = [
+ (name, version, {
+ 'modulename': 'sciann',
+ 'checksums': ['7d7acf61346b4201628c5656e2c904e9a9c7cda78086e76d075b5c7bb90adf3c'],
+ }),
+]
+
+moduleclass = 'ai'
diff --git a/easybuild/easyconfigs/s/SciKeras/SciKeras-0.12.0-foss-2022a.eb b/easybuild/easyconfigs/s/SciKeras/SciKeras-0.12.0-foss-2022a.eb
new file mode 100644
index 00000000000..7ef8def71d7
--- /dev/null
+++ b/easybuild/easyconfigs/s/SciKeras/SciKeras-0.12.0-foss-2022a.eb
@@ -0,0 +1,30 @@
+easyblock = 'PythonBundle'
+
+name = 'SciKeras'
+version = '0.12.0'
+
+homepage = 'https://adriangb.com/scikeras'
+description = """
+Scikit-Learn API wrapper for Keras. The goal of scikeras is to make it possible to use
+Keras/TensorFlow with sklearn. This is achieved by providing a wrapper around Keras that has
+an Scikit-Learn interface.
+"""
+
+toolchain = {'name': 'foss', 'version': '2022a'}
+
+dependencies = [
+ ('Python', '3.10.4'),
+ ('scikit-learn', '1.1.2'),
+ ('TensorFlow', '2.11.0'),
+]
+
+use_pip = True
+sanity_pip_check = True
+
+exts_list = [
+ ('scikeras', version, {
+ 'checksums': ['f60d81255a8904671bd33cbff060926cfa5ddd52fa234b12290afe3cb69dcc6c'],
+ }),
+]
+
+moduleclass = 'ai'
diff --git a/easybuild/easyconfigs/s/Shapely/Shapely-2.0.6-gfbf-2024a.eb b/easybuild/easyconfigs/s/Shapely/Shapely-2.0.6-gfbf-2024a.eb
new file mode 100644
index 00000000000..4488ff1f7e4
--- /dev/null
+++ b/easybuild/easyconfigs/s/Shapely/Shapely-2.0.6-gfbf-2024a.eb
@@ -0,0 +1,31 @@
+# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild
+# Updated: Denis Kristak
+easyblock = 'PythonPackage'
+
+name = 'Shapely'
+version = '2.0.6'
+
+homepage = 'https://github.com/Toblerity/Shapely'
+description = """Shapely is a BSD-licensed Python package for manipulation and analysis of planar geometric objects.
+It is based on the widely deployed GEOS (the engine of PostGIS) and JTS (from which GEOS is ported) libraries."""
+
+toolchain = {'name': 'gfbf', 'version': '2024a'}
+
+sources = [SOURCELOWER_TAR_GZ]
+checksums = ['997f6159b1484059ec239cacaa53467fd8b5564dabe186cd84ac2944663b0bf6']
+
+builddependencies = [
+ ('Cython', '3.0.10'),
+]
+
+dependencies = [
+ ('Python', '3.12.3'),
+ ('SciPy-bundle', '2024.05'),
+ ('GEOS', '3.12.2'),
+]
+
+download_dep_fail = True
+sanity_pip_check = True
+use_pip = True
+
+moduleclass = 'math'
diff --git a/easybuild/easyconfigs/s/SoX/SoX-14.4.2-GCCcore-13.3.0.eb b/easybuild/easyconfigs/s/SoX/SoX-14.4.2-GCCcore-13.3.0.eb
new file mode 100644
index 00000000000..747709683fb
--- /dev/null
+++ b/easybuild/easyconfigs/s/SoX/SoX-14.4.2-GCCcore-13.3.0.eb
@@ -0,0 +1,34 @@
+easyblock = 'ConfigureMake'
+
+name = 'SoX'
+version = '14.4.2'
+
+homepage = 'http://sox.sourceforge.net/'
+docurls = 'http://sox.sourceforge.net/Docs/Documentation'
+description = """Sound eXchange, the Swiss Army knife of audio manipulation"""
+
+toolchain = {'name': 'GCCcore', 'version': '13.3.0'}
+
+source_urls = [SOURCEFORGE_SOURCE]
+sources = [SOURCELOWER_TAR_GZ]
+checksums = ['b45f598643ffbd8e363ff24d61166ccec4836fea6d3888881b8df53e3bb55f6c']
+
+builddependencies = [('binutils', '2.42')]
+
+dependencies = [
+ ('FLAC', '1.4.3'),
+ ('LAME', '3.100'),
+ ('libmad', '0.15.1b'),
+ ('libvorbis', '1.3.7'),
+ ('FFmpeg', '7.0.2'),
+]
+
+sanity_check_paths = {
+ 'files': ['bin/play', 'bin/rec', 'bin/sox', 'bin/soxi', 'include/sox.h',
+ 'lib/libsox.la', 'lib/libsox.a', 'lib/pkgconfig/sox.pc', 'lib/libsox.%s' % SHLIB_EXT],
+ 'dirs': ['bin', 'include', 'lib', 'lib/pkgconfig', 'share/man'],
+}
+
+sanity_check_commands = ['sox --help']
+
+moduleclass = 'data'
diff --git a/easybuild/easyconfigs/s/Solids4foam/Solids4foam-2.1-foss-2023a.eb b/easybuild/easyconfigs/s/Solids4foam/Solids4foam-2.1-foss-2023a.eb
new file mode 100644
index 00000000000..9c203d21c27
--- /dev/null
+++ b/easybuild/easyconfigs/s/Solids4foam/Solids4foam-2.1-foss-2023a.eb
@@ -0,0 +1,45 @@
+easyblock = 'Binary'
+
+name = 'Solids4foam'
+version = '2.1'
+
+homepage = 'https://www.solids4foam.com/'
+description = 'A toolbox for performing solid mechanics and fluid-solid interactions in OpenFOAM.'
+
+toolchain = {'name': 'foss', 'version': '2023a'}
+
+source_urls = ['https://github.com/solids4foam/solids4foam/archive/']
+sources = [{'download_filename': 'v%(version)s.tar.gz', 'filename': '%(name)s-%(version)s.tar.gz'}]
+checksums = ['354dad483f8b086d64bf294829cf6fdf1e5784fd615578acff753791f2f391ca']
+
+builddependencies = [('Eigen', '3.4.0')]
+dependencies = [
+ ('OpenFOAM', 'v2312'),
+ ('gnuplot', '5.4.8'),
+ ('M4', '1.4.19'),
+]
+
+extract_sources = True
+
+# build + install cmds:
+install_cmd = 'source $FOAM_BASH && '
+install_cmd += 'export WM_PROJECT_USER_DIR=%(installdir)s && '
+install_cmd += 'export FOAM_USER_APPBIN=%(installdir)s/bin && '
+install_cmd += 'export FOAM_USER_LIBBIN=%(installdir)s/lib && '
+install_cmd += 'export LD_LIBRARY_PATH=%(installdir)s/lib:$LD_LIBRARY_PATH && '
+install_cmd += 'export EIGEN_DIR=$EBROOTEIGEN && '
+install_cmd += 'export S4F_NO_FILE_FIXES=1 && ./Allwmake -j %(parallel)s'
+# copy tests
+install_cmd += ' && cp -av tutorials %(installdir)s'
+
+sanity_check_paths = {
+ 'files': ['bin/solids4Foam'],
+ 'dirs': ['lib'],
+}
+sanity_check_commands = [
+ 'source $FOAM_BASH && cd %(installdir)s/tutorials && ./Alltest'
+]
+
+modloadmsg = "Please run 'source $FOAM_BASH' before using Solids4foam."
+
+moduleclass = 'chem'
diff --git a/easybuild/easyconfigs/s/SuiteSparse/SuiteSparse-7.8.2-foss-2024a-METIS-5.1.0.eb b/easybuild/easyconfigs/s/SuiteSparse/SuiteSparse-7.8.2-foss-2024a-METIS-5.1.0.eb
new file mode 100644
index 00000000000..7bcd3143b6f
--- /dev/null
+++ b/easybuild/easyconfigs/s/SuiteSparse/SuiteSparse-7.8.2-foss-2024a-METIS-5.1.0.eb
@@ -0,0 +1,29 @@
+name = 'SuiteSparse'
+version = '7.8.2'
+local_metis_ver = '5.1.0'
+versionsuffix = '-METIS-%s' % local_metis_ver
+
+homepage = 'https://faculty.cse.tamu.edu/davis/suitesparse.html'
+description = """SuiteSparse is a collection of libraries to manipulate sparse matrices."""
+
+toolchain = {'name': 'foss', 'version': '2024a'}
+toolchainopts = {'unroll': True, 'pic': True}
+
+source_urls = ['https://github.com/DrTimothyAldenDavis/SuiteSparse/archive']
+sources = ['v%(version)s.tar.gz']
+checksums = ['996c48c87baaeb5fc04bd85c7e66d3651a56fe749c531c60926d75b4db5d2181']
+
+builddependencies = [
+ ('CMake', '3.29.3'),
+ ('M4', '1.4.19'),
+]
+
+dependencies = [
+ ('METIS', local_metis_ver),
+ ('MPFR', '4.2.1'),
+]
+
+# make sure that bin/demo can find libsuitesparseconfig.so.5 during build
+prebuildopts = "export LD_LIBRARY_PATH=%(builddir)s/SuiteSparse-%(version)s/lib:$LD_LIBRARY_PATH && "
+
+moduleclass = 'numlib'
diff --git a/easybuild/easyconfigs/s/Szip/Szip-2.1.1-GCCcore-13.3.0.eb b/easybuild/easyconfigs/s/Szip/Szip-2.1.1-GCCcore-13.3.0.eb
new file mode 100644
index 00000000000..6ac6fb2e784
--- /dev/null
+++ b/easybuild/easyconfigs/s/Szip/Szip-2.1.1-GCCcore-13.3.0.eb
@@ -0,0 +1,29 @@
+easyblock = 'ConfigureMake'
+
+name = 'Szip'
+version = '2.1.1'
+
+homepage = 'https://docs.hdfgroup.org/archive/support/doc_resource/SZIP/index.html'
+
+description = """
+ Szip compression software, providing lossless compression of scientific data
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '13.3.0'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://support.hdfgroup.org/ftp/lib-external/szip/%(version)s/src']
+sources = [SOURCELOWER_TAR_GZ]
+checksums = ['21ee958b4f2d4be2c9cabfa5e1a94877043609ce86fde5f286f105f7ff84d412']
+
+builddependencies = [
+ ('binutils', '2.42'),
+]
+
+sanity_check_paths = {
+ 'files': ["lib/libsz.a", "lib/libsz.%s" % SHLIB_EXT] +
+ ["include/%s" % x for x in ["ricehdf.h", "szip_adpt.h", "szlib.h"]],
+ 'dirs': [],
+}
+
+moduleclass = 'tools'
diff --git a/easybuild/easyconfigs/s/sparsehash/sparsehash-2.0.4-GCCcore-13.3.0.eb b/easybuild/easyconfigs/s/sparsehash/sparsehash-2.0.4-GCCcore-13.3.0.eb
new file mode 100644
index 00000000000..66056138103
--- /dev/null
+++ b/easybuild/easyconfigs/s/sparsehash/sparsehash-2.0.4-GCCcore-13.3.0.eb
@@ -0,0 +1,36 @@
+# Updated from previous easyconfig
+# Author: Pavel Grochal (INUITS)
+# Update: Pavel Tománek (INUITS)
+# License: GPLv2
+# Updated to GCCcore-12.3.0
+# Author: J. Sassmannshausen (Imperial College London/UK)
+
+easyblock = 'ConfigureMake'
+
+name = 'sparsehash'
+version = '2.0.4'
+
+homepage = 'https://github.com/sparsehash/sparsehash'
+description = """
+ An extremely memory-efficient hash_map implementation. 2 bits/entry overhead!
+ The SparseHash library contains several hash-map implementations, including
+ implementations that optimize for space or speed.
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '13.3.0'}
+toolchainopts = {'pic': True}
+
+source_urls = [GITHUB_SOURCE]
+sources = [SOURCELOWER_TAR_GZ]
+checksums = ['8cd1a95827dfd8270927894eb77f62b4087735cbede953884647f16c521c7e58']
+
+builddependencies = [
+ ('binutils', '2.42'),
+]
+
+sanity_check_paths = {
+ 'files': ['include/google/type_traits.h'],
+ 'dirs': [],
+}
+
+moduleclass = 'devel'
diff --git a/easybuild/easyconfigs/s/statsmodels/statsmodels-0.14.4-gfbf-2024a.eb b/easybuild/easyconfigs/s/statsmodels/statsmodels-0.14.4-gfbf-2024a.eb
new file mode 100644
index 00000000000..ee5cb197a7d
--- /dev/null
+++ b/easybuild/easyconfigs/s/statsmodels/statsmodels-0.14.4-gfbf-2024a.eb
@@ -0,0 +1,35 @@
+easyblock = 'PythonBundle'
+
+name = 'statsmodels'
+version = '0.14.4'
+
+homepage = 'https://www.statsmodels.org/'
+description = """Statsmodels is a Python module that allows users to explore data, estimate statistical models,
+and perform statistical tests."""
+
+toolchain = {'name': 'gfbf', 'version': '2024a'}
+
+builddependencies = [('Cython', '3.0.10')]
+
+dependencies = [
+ ('Python', '3.12.3'),
+ ('SciPy-bundle', '2024.05'),
+]
+
+sanity_pip_check = True
+use_pip = True
+
+exts_list = [
+ ('patsy', '0.5.6', {
+ 'checksums': ['95c6d47a7222535f84bff7f63d7303f2e297747a598db89cf5c67f0c0c7d2cdb'],
+ }),
+ (name, version, {
+ 'patches': ['statsmodels-0.14.4_fix_setup.patch'],
+ 'checksums': [
+ {'statsmodels-0.14.4.tar.gz': '5d69e0f39060dc72c067f9bb6e8033b6dccdb0bae101d76a7ef0bcc94e898b67'},
+ {'statsmodels-0.14.4_fix_setup.patch': 'd24bedb6382945ac415927faa9279d75d0a71dad56fce7032a58485981b44fe5'},
+ ],
+ }),
+]
+
+moduleclass = 'math'
diff --git a/easybuild/easyconfigs/s/statsmodels/statsmodels-0.14.4_fix_setup.patch b/easybuild/easyconfigs/s/statsmodels/statsmodels-0.14.4_fix_setup.patch
new file mode 100644
index 00000000000..56e9c5f3e2c
--- /dev/null
+++ b/easybuild/easyconfigs/s/statsmodels/statsmodels-0.14.4_fix_setup.patch
@@ -0,0 +1,13 @@
+# What: Put manually typed version in setup.py
+# Author: maxim-masterov (SURF)
+diff -Nru statsmodels-0.14.4.orig/setup.py statsmodels-0.14.4/setup.py
+--- statsmodels-0.14.4.orig/setup.py 2024-10-10 16:20:53.020145000 +0200
++++ statsmodels-0.14.4/setup.py 2024-10-10 16:21:08.330504032 +0200
+@@ -353,6 +353,7 @@
+ ext_modules=extensions,
+ maintainer_email=MAINTAINER_EMAIL,
+ description=DESCRIPTION,
++ version="0.14.1",
+ license=LICENSE,
+ url=URL,
+ download_url=DOWNLOAD_URL,
diff --git a/easybuild/easyconfigs/t/tbl2asn/tbl2asn-20230713-GCCcore-12.3.0.eb b/easybuild/easyconfigs/t/tbl2asn/tbl2asn-20230713-GCCcore-12.3.0.eb
new file mode 100644
index 00000000000..dcf4c39e8d0
--- /dev/null
+++ b/easybuild/easyconfigs/t/tbl2asn/tbl2asn-20230713-GCCcore-12.3.0.eb
@@ -0,0 +1,64 @@
+# This file is an EasyBuild reciPY as per https://easybuilders.github.io/easybuild/
+# Author: Pablo Escobar Lopez
+# sciCORE - University of Basel
+# SIB Swiss Institute of Bioinformatics
+# revised by Ariel Lozano
+
+easyblock = 'Bundle'
+
+name = 'tbl2asn'
+version = '20230713'
+
+homepage = 'https://www.ncbi.nlm.nih.gov/genbank/tbl2asn2/'
+description = """Tbl2asn is a command-line program that automates the creation of
+ sequence records for submission to GenBank"""
+
+toolchain = {'name': 'GCCcore', 'version': '12.3.0'}
+builddependencies = [
+ ('binutils', '2.40'),
+ ('patchelf', '0.18.0'),
+]
+
+# libraries that are copied to installdir need to be patched to have an RPATH section
+# when EasyBuild is configured to use RPATH linking (required to pass RPATH sanity check);
+
+default_easyblock = 'CmdCp'
+
+# It is not entirely clean how long NCBI keeps "older" versions. At April 29, 2022, we had six timestamps/versions,
+# reporiting the same verion (tbl2asn --help -> 25.8) but 5 out of 6 (gunzipped) executables have different sha256
+# checksums.
+
+components = [
+ ('libidn', '1.34', {
+ 'easyblock': 'ConfigureMake',
+ 'source_urls': [GNU_SOURCE],
+ 'sources': [SOURCELOWER_TAR_GZ],
+ 'start_dir': '%(namelower)s-%(version)s',
+ 'checksums': ['3719e2975f2fb28605df3479c380af2cf4ab4e919e1506527e4c7670afff6e3c'],
+ }),
+ (name, version, {
+ 'source_urls': ['https://ftp.ncbi.nih.gov/toolbox/ncbi_tools/converters/versions/%s/all/' %
+ (version[:4] + '-' + version[4:6] + '-' + version[6:])],
+ 'sources': [{'download_filename': 'tbl2asn.linux64.gz',
+ 'filename': '%(name)s-%(version)s%(versionsuffix)s.gz'}],
+ 'checksums': ['544c4a2a53f2121fd21c44778fc61980a701ce852ea0142979241c0465c38a0c'],
+ 'cmds_map': [('.*', "cp %(name)s-%(version)s%(versionsuffix)s tbl2asn")],
+ 'files_to_copy': [(['tbl2asn'], 'bin')],
+ }),
+]
+
+postinstallcmds = [
+ "if %(rpath_enabled)s; then "
+ " patchelf --force-rpath --set-rpath %(installdir)s/lib %(installdir)s/bin/tbl2asn;"
+ "fi",
+ "chmod +x %(installdir)s/bin/tbl2asn",
+]
+
+sanity_check_paths = {
+ 'files': ['bin/tbl2asn', 'bin/idn', 'lib/libidn.%s' % SHLIB_EXT],
+ 'dirs': ['include'],
+}
+
+sanity_check_commands = ['tbl2asn --help']
+
+moduleclass = 'bio'
diff --git a/easybuild/easyconfigs/t/trimesh/trimesh-4.4.9-gfbf-2024a.eb b/easybuild/easyconfigs/t/trimesh/trimesh-4.4.9-gfbf-2024a.eb
new file mode 100644
index 00000000000..a25c1a4ac0f
--- /dev/null
+++ b/easybuild/easyconfigs/t/trimesh/trimesh-4.4.9-gfbf-2024a.eb
@@ -0,0 +1,33 @@
+easyblock = 'PythonPackage'
+
+name = 'trimesh'
+version = '4.4.9'
+
+homepage = 'https://trimsh.org/'
+description = """Trimesh is a Python (2.7- 3.3+) library for loading and using triangular meshes with an emphasis on
+watertight meshes. The goal of the library is to provide a fully featured Trimesh object which allows for easy
+manipulation and analysis, in the style of the excellent Polygon object in the Shapely library."""
+
+
+toolchain = {'name': 'gfbf', 'version': '2024a'}
+
+sources = [SOURCE_TAR_GZ]
+checksums = ['e9f54cb4ef70f9db49446cad3845b7a8043fc7d62d9192b241741f3fb0d813ac']
+
+use_pip = True
+download_dep_fail = True
+sanity_pip_check = True
+
+
+dependencies = [
+ ('Python', '3.12.3'),
+ ('SciPy-bundle', '2024.05'), # numpy required
+]
+
+sanity_check_paths = {
+ 'files': [],
+ 'dirs': ['lib/python%(pyshortver)s/site-packages'],
+}
+
+
+moduleclass = 'lib'
diff --git a/easybuild/easyconfigs/v/Voro++/Voro++-0.4.6-GCCcore-13.3.0.eb b/easybuild/easyconfigs/v/Voro++/Voro++-0.4.6-GCCcore-13.3.0.eb
new file mode 100644
index 00000000000..9f6458281b3
--- /dev/null
+++ b/easybuild/easyconfigs/v/Voro++/Voro++-0.4.6-GCCcore-13.3.0.eb
@@ -0,0 +1,43 @@
+##
+# Author: Robert Mijakovic
+##
+easyblock = 'ConfigureMake'
+
+name = 'Voro++'
+version = '0.4.6'
+
+homepage = 'http://math.lbl.gov/voro++/'
+description = """Voro++ is a software library for carrying out three-dimensional computations of the Voronoi
+tessellation. A distinguishing feature of the Voro++ library is that it carries out cell-based calculations,
+computing the Voronoi cell for each particle individually. It is particularly well-suited for applications that
+rely on cell-based statistics, where features of Voronoi cells (eg. volume, centroid, number of faces) can be used
+to analyze a system of particles."""
+
+toolchain = {'name': 'GCCcore', 'version': '13.3.0'}
+toolchainopts = {'pic': True}
+
+source_urls = [
+ 'http://math.lbl.gov/voro++/download/dir/',
+ 'https://download.lammps.org/thirdparty',
+]
+sources = [SOURCELOWER_TAR_GZ]
+checksums = ['ef7970071ee2ce3800daa8723649ca069dc4c71cc25f0f7d22552387f3ea437e']
+
+builddependencies = [('binutils', '2.42')]
+
+
+# No configure
+skipsteps = ['configure']
+
+# Override CXX and CFLAGS variables from Makefile
+buildopts = 'CXX="$CXX" CFLAGS="$CXXFLAGS"'
+
+# Override PREFIX variable from Makefile
+installopts = "PREFIX=%(installdir)s"
+
+sanity_check_paths = {
+ 'files': ['bin/voro++', 'lib/libvoro++.a', 'include/voro++/voro++.hh'],
+ 'dirs': [],
+}
+
+moduleclass = 'math'
diff --git a/easybuild/easyconfigs/x/XML-Compile/XML-Compile-1.63-GCCcore-13.2.0.eb b/easybuild/easyconfigs/x/XML-Compile/XML-Compile-1.63-GCCcore-13.2.0.eb
new file mode 100644
index 00000000000..7c564210edb
--- /dev/null
+++ b/easybuild/easyconfigs/x/XML-Compile/XML-Compile-1.63-GCCcore-13.2.0.eb
@@ -0,0 +1,61 @@
+easyblock = 'Bundle'
+
+name = 'XML-Compile'
+version = '1.63'
+
+homepage = 'https://metacpan.org/pod/XML::Compile'
+description = "Perl module for compilation based XML processing"
+
+toolchain = {'name': 'GCCcore', 'version': '13.2.0'}
+
+builddependencies = [
+ ('pkgconf', '2.0.3'),
+ ('binutils', '2.40'),
+]
+
+dependencies = [
+ ('Perl', '5.38.0'),
+ ('XML-LibXML', '2.0210'),
+]
+
+exts_defaultclass = 'PerlModule'
+exts_filter = ("perl -e 'require %(ext_name)s'", '')
+
+exts_list = [
+ ('XML::LibXML::Simple', '1.01', {
+ 'source_tmpl': 'XML-LibXML-Simple-%(version)s.tar.gz',
+ 'source_urls': ['https://cpan.metacpan.org/authors/id/M/MA/MARKOV/'],
+ 'checksums': ['cd98c8104b70d7672bfa26b4513b78adf2b4b9220e586aa8beb1a508500365a6'],
+ }),
+ ('XML::Compile', version, {
+ 'source_tmpl': 'XML-Compile-%(version)s.tar.gz',
+ 'source_urls': ['https://cpan.metacpan.org/authors/id/M/MA/MARKOV/'],
+ 'checksums': ['4b0871ef4a70bff37266d531bebcd1d065b109e8f5c5e996f87189a9f92d595f'],
+ }),
+ ('XML::Compile::Cache', '1.06', {
+ 'source_tmpl': 'XML-Compile-Cache-%(version)s.tar.gz',
+ 'source_urls': ['https://cpan.metacpan.org/authors/id/M/MA/MARKOV/'],
+ 'checksums': ['591b136bd92842c81a5176082503f47df6d5cc4d8e0d78953ef1557f747038a0'],
+ }),
+ ('XML::Compile::SOAP', '3.28', {
+ 'source_tmpl': 'XML-Compile-SOAP-%(version)s.tar.gz',
+ 'source_urls': ['https://cpan.metacpan.org/authors/id/M/MA/MARKOV/'],
+ 'checksums': ['0921699c4522537f7930e14fac056492de7801a9b9140d0e1faf33414ae6998f'],
+ }),
+ ('XML::Compile::WSDL11', '3.08', {
+ 'source_tmpl': 'XML-Compile-WSDL11-%(version)s.tar.gz',
+ 'source_urls': ['https://cpan.metacpan.org/authors/id/M/MA/MARKOV/'],
+ 'checksums': ['dd687ccf5083fe98fce1dd18540e1d0175042437a986e33eec105eca248f8d42'],
+ }),
+]
+
+modextrapaths = {
+ 'PERL5LIB': 'lib/perl5/site_perl/%(perlver)s/',
+}
+
+sanity_check_paths = {
+ 'files': [],
+ 'dirs': ['lib/perl5/site_perl/%(perlver)s/XML/Compile'],
+}
+
+moduleclass = 'data'
diff --git a/easybuild/easyconfigs/x/XML-LibXML/XML-LibXML-2.0210-GCCcore-13.2.0.eb b/easybuild/easyconfigs/x/XML-LibXML/XML-LibXML-2.0210-GCCcore-13.2.0.eb
new file mode 100644
index 00000000000..9e8ac11247f
--- /dev/null
+++ b/easybuild/easyconfigs/x/XML-LibXML/XML-LibXML-2.0210-GCCcore-13.2.0.eb
@@ -0,0 +1,65 @@
+# updated toolchain, version, and dependency versions
+# Thomas Eylenbosch 5-Jun-23
+
+easyblock = 'Bundle'
+
+name = 'XML-LibXML'
+version = '2.0210'
+
+homepage = 'https://metacpan.org/pod/distribution/XML-LibXML/LibXML.pod'
+description = "Perl binding for libxml2"
+
+toolchain = {'name': 'GCCcore', 'version': '13.2.0'}
+
+builddependencies = [
+ ('binutils', '2.40'),
+ ('pkgconf', '2.0.3'),
+]
+
+dependencies = [
+ ('Perl', '5.38.0'),
+ ('Perl-bundle-CPAN', '5.38.0'),
+ ('libxml2', '2.11.5'),
+]
+
+exts_defaultclass = 'PerlModule'
+exts_filter = ("perldoc -lm %(ext_name)s ", "")
+
+exts_list = [
+ ('File::chdir', '0.1011', {
+ 'source_tmpl': 'File-chdir-%(version)s.tar.gz',
+ 'source_urls': ['https://cpan.metacpan.org/authors/id/D/DA/DAGOLDEN'],
+ 'checksums': ['31ebf912df48d5d681def74b9880d78b1f3aca4351a0ed1fe3570b8e03af6c79'],
+ }),
+ ('Alien::Base', '2.83', {
+ 'source_tmpl': 'Alien-Build-%(version)s.tar.gz',
+ 'source_urls': ['https://cpan.metacpan.org/authors/id/P/PL/PLICEASE/'],
+ 'checksums': ['4817270314431350ff397125547f55641dcff98bdde213b9e5efc613f7c8b85a'],
+ }),
+ ('Alien::Build::Plugin::Download::GitLab', '0.01', {
+ 'source_tmpl': 'Alien-Build-Plugin-Download-GitLab-%(version)s.tar.gz',
+ 'source_urls': ['https://cpan.metacpan.org/authors/id/P/PL/PLICEASE'],
+ 'checksums': ['c1f089c8ea152a789909d48a83dbfcf2626f773daf30431c8622582b26aba902'],
+ }),
+ ('Alien::Libxml2', '0.19', {
+ 'source_tmpl': 'Alien-Libxml2-%(version)s.tar.gz',
+ 'source_urls': ['https://cpan.metacpan.org/authors/id/P/PL/PLICEASE'],
+ 'checksums': ['f4a674099bbd5747c0c3b75ead841f3b244935d9ef42ba35368024bd611174c9'],
+ }),
+ ('XML::LibXML', version, {
+ 'source_tmpl': 'XML-LibXML-%(version)s.tar.gz',
+ 'source_urls': ['https://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/'],
+ 'checksums': ['a29bf3f00ab9c9ee04218154e0afc8f799bf23674eb99c1a9ed4de1f4059a48d'],
+ }),
+]
+
+modextrapaths = {
+ 'PERL5LIB': 'lib/perl5/site_perl/%(perlver)s/',
+}
+
+sanity_check_paths = {
+ 'files': [],
+ 'dirs': ['lib/perl5/site_perl/%(perlver)s/%(arch)s-linux-thread-multi/XML/LibXML'],
+}
+
+moduleclass = 'data'
diff --git a/easybuild/easyconfigs/x/Xerces-C++/Xerces-C++-3.2.5-GCCcore-13.3.0.eb b/easybuild/easyconfigs/x/Xerces-C++/Xerces-C++-3.2.5-GCCcore-13.3.0.eb
new file mode 100644
index 00000000000..d9cb7a779c7
--- /dev/null
+++ b/easybuild/easyconfigs/x/Xerces-C++/Xerces-C++-3.2.5-GCCcore-13.3.0.eb
@@ -0,0 +1,39 @@
+easyblock = 'CMakeMake'
+
+name = 'Xerces-C++'
+version = '3.2.5'
+
+homepage = 'https://xerces.apache.org/xerces-c/'
+
+description = """Xerces-C++ is a validating XML parser written in a portable
+subset of C++. Xerces-C++ makes it easy to give your application the ability to
+read and write XML data. A shared library is provided for parsing, generating,
+manipulating, and validating XML documents using the DOM, SAX, and SAX2
+APIs."""
+
+toolchain = {'name': 'GCCcore', 'version': '13.3.0'}
+
+source_urls = ['https://archive.apache.org/dist/xerces/c/%(version_major)s/sources/']
+sources = ['xerces-c-%(version)s.tar.gz']
+checksums = ['545cfcce6c4e755207bd1f27e319241e50e37c0c27250f11cda116018f1ef0f5']
+
+builddependencies = [
+ ('pkgconf', '2.2.0'),
+ ('binutils', '2.42'),
+ ('CMake', '3.29.3'),
+]
+
+dependencies = [
+ ('cURL', '8.7.1'),
+]
+
+runtest = 'test'
+
+sanity_check_paths = {
+ 'files': ['bin/XInclude',
+ 'include/xercesc/xinclude/XIncludeUtils.hpp',
+ 'lib/libxerces-c-3.2.%s' % SHLIB_EXT],
+ 'dirs': ['bin', 'include', 'lib']
+}
+
+moduleclass = 'lib'
diff --git a/easybuild/easyconfigs/z/zsh/zsh-5.9-GCCcore-13.3.0.eb b/easybuild/easyconfigs/z/zsh/zsh-5.9-GCCcore-13.3.0.eb
new file mode 100644
index 00000000000..2f5aa6a9ca5
--- /dev/null
+++ b/easybuild/easyconfigs/z/zsh/zsh-5.9-GCCcore-13.3.0.eb
@@ -0,0 +1,39 @@
+easyblock = 'ConfigureMake'
+
+name = 'zsh'
+
+version = '5.9'
+
+homepage = 'http://www.zsh.org/'
+description = """
+Zsh is a shell designed for interactive use, although it is also a powerful scripting language.
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '13.3.0'}
+
+source_urls = ['http://prdownloads.sourceforge.net/%(namelower)s']
+sources = [SOURCELOWER_TAR_XZ]
+checksums = ['9b8d1ecedd5b5e81fbf1918e876752a7dd948e05c1a0dba10ab863842d45acd5']
+
+configopts = '--without-tcsetpgrp'
+
+builddependencies = [
+ ('binutils', '2.42'),
+]
+
+dependencies = [
+ ('ncurses', '6.5'),
+]
+
+modextrapaths = {
+ 'FPATH': 'share/zsh/%(version)s/functions'
+}
+
+sanity_check_paths = {
+ 'files': ['bin/zsh'],
+ 'dirs': ['lib/zsh/%(version)s', 'share'],
+}
+
+sanity_check_commands = ['zsh --version']
+
+moduleclass = 'tools'
diff --git a/test/easyconfigs/easyconfigs.py b/test/easyconfigs/easyconfigs.py
index 0626f94e5f3..eca5c4e2add 100644
--- a/test/easyconfigs/easyconfigs.py
+++ b/test/easyconfigs/easyconfigs.py
@@ -1365,6 +1365,51 @@ def test_pr_patch_descr(self):
self.assertFalse(no_descr_patches, "No description found in patches: %s" % ', '.join(no_descr_patches))
+def verify_patch(specdir, patch_spec, checksum_idx, patch_checksums, extension_name=None):
+ """Verify existance and checksum of the given patch.
+
+ specdir - Directory of the easyconfig
+ patch_spec - Patch entry
+ checksum_idx - Expected index in the checksum list
+ patch_checksums - List of checksums for patches
+ extension_name - Name of the extensions this patch is for if any
+
+ Return a (possibly empty) list of failure messages
+ """
+ patch_dir = specdir
+ if isinstance(patch_spec, str):
+ patch_name = patch_spec
+ elif isinstance(patch_spec, (tuple, list)):
+ patch_name = patch_spec[0]
+ elif isinstance(patch_spec, dict):
+ patch_name = patch_spec['name']
+ alt_location = patch_spec.get('alt_location')
+ if alt_location:
+ basedir = os.path.dirname(os.path.dirname(specdir))
+ patch_dir = os.path.join(basedir, letter_dir_for(alt_location), alt_location)
+ else:
+ # Should have already been verified
+ raise RuntimeError('Patch spec is not a string, tuple, list or dict: %s\nType: %s' % (patch_spec,
+ type(patch_spec)))
+
+ patch_path = os.path.join(patch_dir, patch_name)
+ patch_descr = "patch file " + patch_name
+ if extension_name:
+ patch_descr += "of extension " + extension_name
+
+ # only check actual patch files, not other files being copied via the patch functionality
+ if patch_path.endswith('.patch'):
+ if not os.path.isfile(patch_path):
+ return [patch_descr + "is missing"]
+
+ if checksum_idx < len(patch_checksums):
+ checksum = patch_checksums[checksum_idx]
+ if not verify_checksum(patch_path, checksum):
+ return ["Invalid checksum for %s: %s" % (patch_descr, checksum)]
+
+ return [] # No error
+
+
def template_easyconfig_test(self, spec):
"""Tests for an individual easyconfig: parsing, instantiating easyblock, check patches, ..."""
@@ -1516,27 +1561,9 @@ def template_easyconfig_test(self, spec):
# make sure all patch files are available
specdir = os.path.dirname(spec)
- basedir = os.path.dirname(os.path.dirname(specdir))
+
for idx, patch in enumerate(patches):
- patch_dir = specdir
- if isinstance(patch, str):
- patch_name = patch
- elif isinstance(patch, (tuple, list)):
- patch_name = patch[0]
- elif isinstance(patch, dict):
- patch_name = patch['name']
- if patch['alt_location']:
- patch_dir = os.path.join(basedir, letter_dir_for(patch['alt_location']), patch['alt_location'])
-
- # only check actual patch files, not other files being copied via the patch functionality
- patch_full = os.path.join(patch_dir, patch_name)
- if patch_name.endswith('.patch') and not os.path.isfile(patch_full):
- failing_checks.append("Patch file %s is missing" % patch_full)
- # verify checksum for each patch file
- elif idx < len(patch_checksums) and (os.path.exists(patch_full) or patch_name.endswith('.patch')):
- checksum = patch_checksums[idx]
- if not verify_checksum(patch_full, checksum):
- failing_checks.append("Invalid checksum for patch file %s: %s" % (patch_name, checksum))
+ failing_checks.extend(verify_patch(specdir, patch, idx, patch_checksums))
# make sure 'source' step is not being skipped,
# since that implies not verifying the checksum
@@ -1566,21 +1593,7 @@ def template_easyconfig_test(self, spec):
patch_checksums = checksums[src_cnt:]
for idx, ext_patch in enumerate(ext.get('patches', [])):
- if isinstance(ext_patch, (tuple, list)):
- ext_patch = ext_patch[0]
-
- # only check actual patch files, not other files being copied via the patch functionality
- ext_patch_full = os.path.join(specdir, ext_patch['name'])
- if ext_patch_full.endswith('.patch') and not os.path.isfile(ext_patch_full):
- failing_checks.append("Patch file %s for extension %s is missing." % (ext_patch['name'], ext_name))
- continue
-
- # verify checksum for each patch file
- if idx < len(patch_checksums) and os.path.exists(ext_patch_full):
- checksum = patch_checksums[idx]
- if not verify_checksum(ext_patch_full, checksum):
- failing_checks.append("Invalid checksum for patch %s for extension %s: %s."
- % (ext_patch['name'], ext_name, checksum))
+ failing_checks.extend(verify_patch(specdir, ext_patch, idx, patch_checksums, extension_name=ext_name))
# check whether all extra_options defined for used easyblock are defined
extra_opts = app.extra_options()