diff --git a/RELEASE_NOTES b/RELEASE_NOTES index 3a655a1b5b3..45d27a2e696 100644 --- a/RELEASE_NOTES +++ b/RELEASE_NOTES @@ -3,10 +3,199 @@ For more detailed information, please see the git log. These release notes can also be consulted at https://docs.easybuild.io/en/latest/Release_notes.html. -The latest version of easybuild-easyconfig provides 18,752 easyconfig files, for 3,369 different software packages, +The latest version of easybuild-easyconfig provides 19,487 easyconfig files, for 3,470 different software packages, incl. 40 different (compiler) toolchains. +v4.9.1 (5 April 2024) +--------------------- + +update/bugfix release + +- added example easyconfig files for 101 new software packages: + - AMICA (#19842), AreTomo2 (#19681), btllib (#19779), bwa-mem2 (#20217), CENSO (#19826), Circlator (#19847), Clarabel.rs (#20149), + code-cli (#19645), Concorde (#19768), contextily (#19807), CUTLASS (#19304), DeepLoc (#19514), Delft3D (#19869), DeltaLake (#19758), + denseweight (#20139), desktop-file-utils (#19701), devbio-napari (#19586), DjVuLibre (#19701), Elmer (#19448), + EnergyPlus (#19565), EpiSCORE (#18618), evince (#19701), ExpressBetaDiversity (#19938), ExtremeLy (#19870), f90nml (#19171), + FFAVES (#19822), fugue (#19694), gcsfs (#20042), GenomeComb (#19749), GI-DocGen (#19701), GKlib-METIS (#20096), GRASP-suite (#19665), + gspell (#19701), GUIDANCE (#20063), hdWGCNA (#20124), HF-Datasets (#20166), IDG (#18924), igvShiny (#19714), inflection (#20036), + InterOp (#19303), IonQuant (#19812), Lab-Streaming-Layer (#19945), Levenshtein (#19771), libfyaml (#19856), libgxps (#19701), + libhandy (#19701), libspectre (#19701), lit (#20252), lmoments3 (#19870), Markdown (#20239), MetaDecoder (#20123), mfqe (#19781), + Miniforge3 (#20227), MLflow (#19893), MODFLOW (#20142), morphosamplers (#20000), MotionCor3 (#19681), MSFragger (#19811), + multiprocess (#19986), nf-core (#19107), noise (#20048), OpenMEEG (#19853), OpenSlide-Java (#19962), PAGAN2 (#19618), PASA (#19570), + pblat (#19570), PBZIP2 (#19677), PDM (#20012), Philosopher (#19383), phyluce (#19779), poppunk (#17402), PSASS (#20160), psycopg (#19107), + PyInstaller (#19519), PyQt-builder (#16703), pytest-workflow (#19107), python-casacore (#20089), pytorch-3dunet (#19290), pyXDF (#19916), + q2-krona (#19633), QuPath (#19962), radian (#19484), remake (#19581), rethinking (#19755), RHEIA (#19496), s3fs (#19576), + safestringlib (#20217), scikit-extremes (#19870), SemiBin (#19767), semla (#19747), Sentence-Transformers (#19509), sinto (#13846), + sktime (#19692), SQLAlchemy (#20242), tiny-cuda-nn (#19304), tox (#16178), Vamb (#17457), xpdf (#20024), yt (#20263), Zeo++ (#19555), + zUMIs (#19949) +- added additional easyconfigs for various supported software packages, including: + - Abseil 20240116.1, ABySS 2.3.7, AMS 2023.104, Anaconda3 2024.02, anndata 0.10.5.post1, anvio 8, ArchR 1.0.2, + archspec 0.2.2, Armadillo 12.8.0, arpack-ng 3.9.1, arrow-R 14.0.0.2, ASAP3 3.13.3, assimp 5.3.1, autopep8 2.0.4, + basemap 1.3.9, BerkeleyGW 3.1.0 + 4.0, BiG-SCAPE 1.1.5, Biopython 1.83, Blosc 1.21.5, Blosc2 2.13.2, Boost.MPI 1.82.0, + Boost.Python 1.83.0, Braindecode 0.8.1, Brotli-python 1.1.0, build 1.0.3, buildenv-default foss-2023b + intel-2023b, + bx-python 0.10.0, CapnProto 1.0.1.1, c-ares 1.27.0, Cartopy 0.22.0, casacore 3.5.0, Cbc 2.10.11, ccache 4.9, cclib 1.8, + CellBender 0.3.1, CellTypist 1.6.2, CFITSIO 4.3.1, Cgl 0.60.8, Clang-Python-bindings 16.0.6, Clp 1.17.9, CmdStanR 0.7.1, + COBRApy 0.29.0, code-server 4.22.1, CoinUtils 2.11.10, CoordgenLibs 3.0.2, CREST 2.12, cryoCARE 0.3.0, CSBLAST 2.2.4, + CUDA 12.3.2 + 12.4.0, cuDNN 8.9.7.29, CuPy 13.0.0, cuSPARSELt 0.6.0.6, cuTENSOR 2.0.1.2, CVXPY 1.4.2, Cython 3.0.8, + dask 2023.12.1, datalad 0.19.5, DB_File 1.859, deepdiff 6.7.1, DeepLabCut 2.3.6, DendroPy 4.6.1, Deprecated 1.2.14, + DFT-D4 3.6.0, DIAMOND 2.1.9, Dice 20240101, dlb 3.4, DLPack 0.8, dorado 0.5.1, EggLib 3.3.0, einops 0.7.0, ELPA 2023.11.001, + enchant-2 2.6.5, ESMF 8.4.2, eSpeak-NG 1.51, ETE 3.1.3, expecttest 0.2.1, fastjet 3.4.2, fastjet-contrib 1.053, FDS 6.8.0, + fineRADstructure 20210514, fio 3.36, Fiona 1.9.5, Flask 3.0.0, FLINT 3.1.1, Flye 2.9.3, fmt 10.2.0, freebayes 1.3.7, + GATK 4.5.0.0, gawk 5.3.0, geocube 0.4.3, geopandas 0.14.2, geopy 2.4.1, GHC 9.4.6, Ghostscript 10.02.1, GIMIC 2.2.1, + git-lfs 3.5.1, GitPython 3.1.42, GLFW 3.4, Go 1.22.1, GPAW 24.1.0, GPAW-setups 24.1.0, gperftools 2.14, Gradle 8.6, + graph-tool 2.55, Greenlet 3.0.3, GROMACS 2024.1, gRPC 1.62.1, GTK3 3.24.39, Gurobi 11.0.0, HDF5 1.14.3, HeFFTe 2.4.0, + HepMC3 3.2.6, hunspell 1.7.2, igraph 0.10.10, infercnvpy 0.4.3, iperf 3.16, IQ-TREE 2.2.2.7, ISA-L 2.31.0, Java/19 (19.0.2), + Java/21 (21.0.2), json-c 0.17, Julia 1.10.0, KaHIP 3.16, LAMMPS 2Aug2023_update2, LASTZ 1.04.22, LDC 1.36.0, leidenalg 0.10.2, + libcint 5.5.0, libgit2 1.7.2, librosa 0.10.1, librsvg 2.58.0, libSBML 5.19.7, libsigsegv 2.14, libtirpc 1.3.4, + libxml2-python 2.11.4, likwid 5.3.0, LLVM 14.0.6, MACS3 3.0.1, maeparser 1.3.1, Mamba 23.11.0-0, MATIO 1.5.26, + matplotlib 3.8.2, maturin 1.5.0, MCR R2023a, MDAnalysis 2.7.0, MDI 1.4.26, medaka 1.11.3, Meson 1.3.1, MiXCR 4.6.0, + MNE-Python-1.6., MOABB 1.0.0, molmod 1.4.8, MONAI 1.3.0, mpi4py 3.1.5, mrcfile 1.5.0, NCCL 2.20.5, NCO 5.1.9, NECI 20230620, + netcdf4-python-1.6.5, networkx 3.2.1, NGSpeciesID 0.3.0, NiBabel 5.2.0, nichenetr 2.0.4, Nilearn 0.10.3, + nlohmann_json 3.11.3, NLTK 3.8.1, ntCard 1.2.2, numba 0.58.1, NVHPC 24.1, OBITools3 3.0.1b26, OCaml 4.14.0, occt 7.8.0, + onedrive 2.4.25, ONNX 1.15.0, ONNX-Runtime 1.16.3, ont-fast5-api 4.1.2, OPARI2 2.0.8, OpenFOAM v2306 + v2312, OpenSSL/3, + Optuna 3.5.0, Osi 0.108.9, PAPI 7.1.0, Parallel-Hashmap 1.3.12, ParaView 5.12.0, PDT 3.25.2, PETSc 3.20.3, PGPLOT 5.2.2, + phonemizer 3.2.1, phono3py 2.7.0, Pillow 10.2.0, Pint 0.23, plotly.py 5.18.0, poetry 1.7.1, presto-1.0.0 20230501, + PROJ 9.3.1, prompt-toolkit 3.0.36, protobuf 25.3, protobuf-python 4.25.3, psmc 0.6.5_20221121, pstoedit 3.78, + psycopg2 2.9.9, PuLP 2.8.0, PyCheMPS2 1.8.12, pycodestyle 2.11.1, pydantic 1.10.13 + 2.5.3 2.6.4, pydicom 2.4.4, pydot 2.0.0, + pyfaidx 0.8.1.1, PyFrag 2023-dev.20240220, pymatgen 2023.12.18, PyOpenCL 2023.1.4, PyOpenGL 3.1.7, pyparsing 3.1.1, + PyQt5 5.15.10, Pysam 0.22.0, PySCF 2.4.0, pyspoa 0.2.1, PyTables 3.9.2, pytest-rerunfailures 14.0, python-igraph 0.11.4, + python-irodsclient 2.0.0, python-isal 1.6.1, python-libsbml 5.20.2, python-xxhash 3.4.1, PyTorch-Ignite 0.4.13, + PyTorch-Lightning 2.2.1, PyZMQ 25.1.2, QIIME2 2023.7.0, Qt5 5.15.13, Qt6 6.6.3, Qtconsole 5.5.1, QtPy 2.4.1, + QuantumESPRESSO 7.3, R 4.3.3, rasterio 1.3.9, R-bundle-Bioconductor 3.18, rclone 1.66.0, RE2 2024-03-01, Redis 7.2.4, + redis-py 5.0.1, rioxarray 0.15.0, Rivet 3.1.9, rMATS-turbo 4.2.0, RNA-Bloom 2.0.1, rocm-smi 5.6.0, rpy2 3.5.15, + ruamel.yaml 0.18.6, Ruby 3.3.0, Rust 1.75.0 + 1.76.0, Salmon 1.10.1, Sambamba 1.0.1, Saxon-HE 12.4, SBCL 2.4.1, + ScaFaCoS 1.0.4, Scalene 1.5.35, scanpy 1.9.8, scib 1.1.4, scikit-bio 0.5.9, scikit-learn 1.4.0, scikit-lego 0.7.4, + scikit-misc 0.3.1, SCons 4.6.0, Score-P 8.4, scVelo 0.3.1, Seaborn 0.13.2, SentencePiece 0.1.99, Seqmagick 0.8.6, + Seurat 5.0.1, SIP 6.8.1, siscone 3.0.6, skorch 0.15.0, SLEPc 3.20.1, snakemake 8.4.2, SNAPE-pooled 20150707, + SOAPdenovo-Trans 1.0.5, Spark 3.5.1, spdlog 1.12.0, spoa 4.1.0, SRA-Toolkit 3.0.10, Stack 2.13.1, STAR 2.7.11b, + statsmodels 0.14.1, tensorboard 2.15.1, tensorboardX 2.6.2.2, tensorflow-probability 0.20.0, texinfo 7.1, timm 0.9.7, + torchvision 0.16.0, tqdm 4.66.2, TRIQS 3.2.0, TRIQS-cthyb 3.2.1, TRIQS-dft_tools 3.2.0, TRIQS-tprf 3.2.1, + typing-extensions 4.9.0, UCX 1.16.0, UDUNITS 2.2.28, umap-learn 0.5.5, UMI-tools 1.1.4, Vala 0.56.14, VEP 111, + Vim 9.1.0004, vsc-mympirun 5.4.0, WFA2 2.3.4, wget 1.21.4, WhatsHap 2.2, WIEN2k 23.2, wrf-python 1.3.4.1, + Xerces-C++ 3.2.5, XlsxWriter 3.1.9, XML-LibXML v2.0209, xxHash 0.8.2, yaff 1.6.0, YAXT 0.10.0, Yices 2.6.4, YODA 1.9.9 +- minor enhancements, including: + - add build info message to easyconfig for NLTK 3.7 (#18550) + - enable KLU and CUDA solvers in SUNDIALS v6.6.0 (#19490) + - add extensions to R-bundle-CRAN v2023.12: tidybayes (#19712), spdep (#19729), fixest (#20055) + - add plyranges extension to R-bundle-Bioconductor (for zUMIs) (#19949) + - add PyOpenGL-accelerate extension to PyOpenGL v3.1.7 (#20007) + - use system architecture template in DB_File (#20014), GD (#20015), and GDGraph (#20016) + - add support for Vulkan software rendering in Mesa v23.1.9 by adding Wayland dependency (#20069) + - add MODIStsp extension (+ required dependencies) to R 4.2.2 (#20113) + - enable LittleCMS2 and WebP support in recent Pillow (#20195) + - improve test for validity of easyconfig files (#20205) + - add easyconfig test that checks if backdoored XZ versions are introduced (#20267) +- various bug fixes, including: + - add patch for Bison 3.7.1 to fix build error on old OS versions (#12291) + - add missing pkg-config build dependency for recent p11-kit easyconfigs (#16318) + - fix dependencies and configure flags of GnuTLS 3.7.x (#19070) + - remove numa configure option from hwloc 2.5+ (#19085) + - add patches for OpenBLAS v0.3.21 to disable -ftree-vectorize for netlib LAPACK (#19280) + - add patch to fix flaky scipy build in SciPy-bundle v2023.11 (#19481) + - add missing SciPy-bundle dependency to TensorRT easyconfig (#19486) + - fix lapack test failures in OpenBLAS 0.3.23/24 (#19495) + - add patch for Arrow v8.0.0 - v11.0.0 to add missing `__arrow_ext_class__` method to `BaseExtensionType` class (#19532) + - change homepage for argtable (#19551) + - add patches for PyTorch v2.1.2 with `foss/2022a` (#19571), `foss/2022b` (#19572), and `foss/2023a` (#19573) to fix test failures on non-x86 platforms + - use pocl with CUDA support as dependency for PyOpenCL v2023.1.4 (#19584) + - remove `osdependencies` from ccache easyconfigs using GCCcore toolchain (#19600) + - use https source URL for alsa-lib (#19628) + - add missing dm-tree dependency for dm-reverb 0.2.0 (#19653) + - add libyaml import check to PyYAML and fix builds since split to minimal Python (#19662) + - demote meson-python to a build dependency in recent matplotlib easyconfigs (#19670) + - add patch to fix upb CopyFrom error in protobuf-python 4.24.0 (#19671) + - demote poetry to build dep in expecttest (#19675) + - add zlib dependency to YODA and Rivet (#19679) + - fix missing spaces in Graphviz configure options (#19687) + - strip iconv from pkgconfig file for libarchive v3.6.2 (#19698) + - use separate bcrypt easyconfig (using CargoPythonPackage) as dependency for JupyterHub v4.0.2 (#19703) + - use maturin easyconfig using CargoPythonPackage as a dependency for fastparquet v2023.4.0 (#19704) + - add patches for Perl-bundle-CPAN v5.36.1 to fix installation of `Sys::Info::Driver::Linux*` extensions on Debian Bookworm (#19727) + - explicitly specify Fortran compiler for recent CDO versions to fix issues on non-x86_64 architectures (#19735) + - add patch for `jupyter_core` extension in `jupyter-server` to set jupyter path by `$EB_ENV_JUPYTER_ROOT` (#19737) + - add Python build dependency to 1.9.x Doxygen (#19743) + - fix Arrow v14.0.1 to install pyarrow as an extension (#19758) + - fix homepage + source URL for Gblocks 0.91b (#19797) + - make sure that Brunsli libraries are installed into `lib` (#19805) + - fix dependency with `libidn.so.11` in tbl2asn v20220427 and v20230713 easyconfigs (#19821) + - add missing dependencies for fslpy in easyconfig for FSL v6.0.5.1 (#19829) + - remove numa configure option from hwloc 2+ (#19833) + - avoid spurious test failure when enabling RPATH for Perl (#19835) + - add missing Python deps and packages in PSI4 1.7 (#19836) + - add patch to fix `MS_RDONLY` error in OpenMPI 3.1.x and 4.0.0 (#20140), 4.0.3 (#19944), and 4.0.5 (#19837) + - demote meson-python to build dependency for matplotlib v3.7.2 w/ `iimkl/2023a` (#19892) + - demote hatchling to build dependency in easyconfig for einops 0.7.0 (#19915) + - add patch for adding a write memory barrier to all OpenMPI 4.1.x easyconfigs (#19940) + - stop using non-existent `--disable-libdeflate` option for LibTIFF 4.1.0 (#19951) + - add patch to remove git version check and fix test command for molmod 1.4.8 (#19952) + - replace SYSTEM-level GCC dependency in git-annex with binutils (#19956) + - stop using non-existing `--with-doc` configure option for groff 1.23 (#19969) + - fix test failures of Perl-bundle-CPAN-5.38 in non-English locales (#19971) + - add patch to fix tree-optimization bug in GCC 12.3.0 + 13.1.0 + 13.2.0 for ARM architectures with SVE support (#19974, #20218) + - drop checksum from easyconfig for VSCode 1.85.0 since tarball are not stable (#19995) + - respect `sysroot` in recent Pillow-SIMD easyconfigs, when in use (#19996) + - remove `--disable-docs` configure option from FriBidi 1.0.5+ (#19998) + - fix geotiff configure option in GDAL (#19999) + - unpack SCG database to 'db' subdirectory for DAS_Tool (#20008) + - remove Jasper dependency and configure option from GDAL 3.5+ (#20009) + - update homepage and source URLs for SPAdes (#20018) + - fix GDAL 3.5.0 install on high-core-count machines (#20027) + - remove disable-visibility configure flag from GTK3 (#20028) + - remove mpi configure option from libfdf 0.2.2 (#20034) + - add patch to fix multiarch support for RISC-V to all GCCcore 12.x and 13.x easyconfigs (#20035) + - fix invocation typo and unneeded folder change on invocation in fgbio 1.3.0 easyconfig (#20039) + - remove hdf5 configure option from MDSplus 7.96.12 (#20041) + - fix python configure option of MEME (#20043) + - fix configure options of FFLAS-FFPACK (#20052) + - find the correct Python in xtensor (#20056) + - fix geotiff configure option in GDAL 2.2.3 (#20057) + - fix configure option and remove gperftools dependency for MIRA 5.0 (#20061) + - fix confgure options in GRASS (#20062) + - fix configure of LinBox 1.7.0 (#20064) + - remove unknown configure option from GnuTLS 3.7.2 (#20065) + - use 32-bit indexing for SUNDIALS 6.6.0 (with foss/2023a) to enable sunmatrix-cusparse (#20075) + - find correct Python for MDI (#20083) + - add `pixman` and `FriBidi` dependencies to recent ImageMagick easyconfigs (#20086) + - add patch to fix failing tests with OpenSSL 3.x for Net-SSLeay v1.92 extension in Perl-bundle-CPAN v5.36.1 (#20090) and v5.38.0 (#20118) + - add patches for minimus2 in AMOS-3.1.0 (#20114) + - fix download url for cuSPARSELt 0.3.0.3 (#20129) + - add patches to fix test issues for PyTorch 2.1.2 with `foss/2023a` + CUDA 12.1.1 (#20156) + - remove easyconfig for UCX-CUDA 1.15.0 using incompatible combo of CUDA 12.3.0 + GCC 13.2.0 (#20158) + - remove flake8 suppressions for invalid escape sequences (#20161) + - fix post-install command for SuperLU_DIST in case library prefix is `lib` instead of `lib64` (#20162) + - switch to gitlab source URL for libxc + add alternative checksum (#20163) + - enable `download_dep_fail` in Pythonpackage easyconfigs where it was wrongly disabled (#20174) + - add patch to fix PyTorch 1.12.x and 1.13.x for Linux 6+ (#20176, #20177, #20178, #20179, #20180, #20181, #20182) + - disable tests for `Time::HiRes` extension in Perl-bundle-CPAN v5.36.1 (#20187) + - fix several typos in GlobalArrays 5.8 configure step (#20188) + - fix broken homepage from older SCOTCH easyconfigs (#20192) + - remove dead URL for ISL from `source_urls` in easyconfigs for GCCcore 10.3.0, 11.1.0, 11.2.0 (#20193) + - fix package installation in easyconfigs for Python 2.7.15 and 3.7.2 (using `GCCcore/8.2.0`) (#20194) + - add missing zlib + OpenSSL deps to Ruby easyconfigs + promote binutils to runtime dependency (#20214) + - fix cuSPARSELt easyconfigs for aarch64 (#20216) + - fix python shebang in napari easyconfigs (#20219) + - add patch to fix scipy test failure for SciPy-bundle 2023.02 with `gfbf/2022b` (#20235) + - fix `incompatible types` errors when building the R extension `dbarts` on Arm (#20238) + - add patch to fix for libarchive to fix error reporting in tar (#20254) + - add patch for GCCcore 13.2.0 to fix unguarded use of is_convertible builtin (#20260) + - fix download for python-parasail 1.3.4 by adding missing source URL (#20263) +- other changes: + - update DualSPHysics easyconfig to use custom easyblock (#19400) + - fix name for DETONATE in existing easyconfig (was `detonate`) (#19569) + - rename `VSCode` to `code-cli` (to match with existing `code-server`) (#19585, #19645) + - remove urllib3 extension from wandb easyconfig, not neeed since Python-bundle-PyPI dependency already provides it (#19725) + - stop using custom easyblock for Doxygen (#19742) + - move `setuptools_scm` extension from hatchling to Python easyconfig (#19777, #20200) + - move xtb v6.6.1 to gfbf/2023a (#19826) + - unify Z3 4.12.2 easyconfigs into a single one with Python bindings (and fix Z3 dependency for PyTorch 2.1.2 accordingly) (#20050) + - use GPAW-setups v24.1.0 in existing GPAW easyconfigs (#20117) + - fix duplicate dict entries and enable fatal error checking for easyconfigs via `flake8` (#20173) + - move Greenlet 2.0.2 to GCCcore toolchain (#20241) + - update Java/8 wrapper to Java 8.402 (#20261) + - update copyright lines to 2024 (#20276) + + v4.9.0 (30 December 2023) ------------------------- diff --git a/easybuild/easyconfigs/a/AFNI/AFNI-24.0.02-foss-2023a.eb b/easybuild/easyconfigs/a/AFNI/AFNI-24.0.02-foss-2023a.eb new file mode 100644 index 00000000000..a1b2860e3fa --- /dev/null +++ b/easybuild/easyconfigs/a/AFNI/AFNI-24.0.02-foss-2023a.eb @@ -0,0 +1,67 @@ +# Updated to version 24.0.02 +# Author: J. Sassmannshausen (Imperial College London/UK) + +easyblock = 'CMakeMake' + +name = 'AFNI' +version = '24.0.02' + +homepage = 'http://afni.nimh.nih.gov/' +description = """AFNI is a set of C programs for processing, analyzing, and displaying functional MRI (FMRI) data - + a technique for mapping human brain activity.""" + +toolchain = {'name': 'foss', 'version': '2023a'} +toolchainopts = {'openmp': True, 'pic': True} + +source_urls = ['https://github.com/afni/afni/archive/'] +sources = ['AFNI_%(version)s.tar.gz'] +checksums = ['2915ed5bf98712abe3373bfc285f946fdee6cf1367e23ba80575dd6eedb3529a'] + +builddependencies = [ + ('CMake', '3.26.3'), +] + +dependencies = [ + ('tcsh', '6.24.10'), + ('Python', '3.11.3'), + ('X11', '20230603'), + ('motif', '2.3.8'), + ('R', '4.3.2'), + ('PyQt5', '5.15.10'), + ('expat', '2.5.0'), + ('libpng', '1.6.39'), + ('libjpeg-turbo', '2.1.5.1'), + ('GSL', '2.7'), + ('GLib', '2.77.1'), + ('zlib', '1.2.13'), + ('freeglut', '3.4.0'), + ('Pillow', '10.0.0'), + ('matplotlib', '3.7.2'), + ('SciPy-bundle', '2023.07'), + ('Xvfb', '21.1.8'), + ('FFmpeg', '6.0'), # required for running the program +] + +# Make sure stuff does not get installed in .local +configopts = '-DSTANDARD_PYTHON_INSTALL=OFF ' + +# Changing permissions of some files +postinstallcmds = ['chmod a+x %(installdir)s/bin/afni_system_check.py ;'] +postinstallcmds += ['chmod a+x %(installdir)s/bin/uber_subject.py ; '] +postinstallcmds += ['chmod a+x %(installdir)s/bin/init_user_dotfiles.py ; '] +# Copying apparently missing files over +postinstallcmds += ['cp -f %(start_dir)s/src/discoraj/ClusterExplorer/ClustExp_HistTable.py %(installdir)s/bin ; '] +postinstallcmds += ['cp -f %(start_dir)s/src/discoraj/ClusterExplorer/ClustExp_StatParse.py %(installdir)s/bin ; '] +postinstallcmds += ['cp -rf %(start_dir)s/src/scripts_for_r %(installdir)s/bin ; '] +postinstallcmds += ['cp -rf %(start_dir)s/src/R_scripts %(installdir)s/bin/scripts_for_r ; '] + +sanity_check_commands = ["afni -help"] + +sanity_check_paths = { + 'files': ['bin/afni', 'lib/libgts.%s' % SHLIB_EXT, 'lib/libnifti2.%s' % SHLIB_EXT], + 'dirs': ['include', 'share'], +} + +modextrapaths = {'PATH': ['bin/scripts_for_r']} + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/a/AreTomo2/AreTomo2-1.0.0-GCCcore-12.3.0-CUDA-12.1.1.eb b/easybuild/easyconfigs/a/AreTomo2/AreTomo2-1.0.0-GCCcore-12.3.0-CUDA-12.1.1.eb new file mode 100644 index 00000000000..4864dbcbee3 --- /dev/null +++ b/easybuild/easyconfigs/a/AreTomo2/AreTomo2-1.0.0-GCCcore-12.3.0-CUDA-12.1.1.eb @@ -0,0 +1,55 @@ +# Thomas Hoffmann, EMBL Heidelberg, structures-it@embl.de, 2024/1 +easyblock = 'MakeCp' + +name = 'AreTomo2' +version = '1.0.0' +versionsuffix = '-CUDA-%(cudaver)s' + +homepage = 'https://github.com/czimaginginstitute/AreTomo2' + +description = """AreTomo2, a multi-GPU accelerated software package that fully automates motion- +corrected marker-free tomographic alignment and reconstruction, now includes +robust GPU-accelerated CTF (Contrast Transfer Function) estimation in a single +package. AreTomo2 is part of our endeavor to build a fully-automated high- +throughput processing pipeline that enables real-time reconstruction of +tomograms in parallel with tomographic data collection. It strives to be fast +and accurate, as well as provides for easy integration into subtomogram +processing workflows by generating IMod compatible files containing alignment +and CTF parameters needed to bootstrap subtomogram averaging. AreTomo2 can also +be used for on-the-fly reconstruction of tomograms and CTF estimation in +parallel with tilt series collection, enabling real-time assessment of sample +quality and adjustment of collection parameters""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} +toolchainopts = {'cstd': 'c++11'} + +source_urls = [GITHUB_SOURCE] +sources = ['v%(version)s.tar.gz'] +patches = ['%(name)s-%(version)s_makefile.patch'] +checksums = [ + {'v1.0.0.tar.gz': '5518cd5d7bc13a6dbb6d9310b22c301e73a0c91dc059da403445d79ca0ff8892'}, + {'AreTomo2-1.0.0_makefile.patch': '8595b2fc55e0b5e1bf7c077c93c09503b4e8f95123c6aaf0a5fbe44dda871c73'}, +] + +github_account = 'czimaginginstitute' + +build_cmd = 'make exe -f makefile11 CUDAHOME=$CUDA_HOME CUDACC="%(cuda_cc_cmake)s"' + +builddependencies = [ + ('binutils', '2.40') +] + +dependencies = [ + ('CUDA', '12.1.1', '', SYSTEM), +] + +files_to_copy = [(['%(name)s'], 'bin')] + +sanity_check_paths = { + 'files': ['bin/%(name)s'], + 'dirs': ['bin'], +} + +sanity_check_commands = ['%(name)s -h'] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/a/AreTomo2/AreTomo2-1.0.0_makefile.patch b/easybuild/easyconfigs/a/AreTomo2/AreTomo2-1.0.0_makefile.patch new file mode 100644 index 00000000000..ebef90dd5d2 --- /dev/null +++ b/easybuild/easyconfigs/a/AreTomo2/AreTomo2-1.0.0_makefile.patch @@ -0,0 +1,46 @@ +# Thomas Hoffmann, EBML Heidelberg, structures-it@embl.de, 2023/10 +# allow to inject cuda compute capabilities and cfalgs +diff -ru AreTomo2-1.0.0/makefile11 AreTomo2-1.0.0_makefile/makefile11 +--- AreTomo2-1.0.0/makefile11 2023-10-26 19:49:07.000000000 +0200 ++++ AreTomo2-1.0.0_makefile/makefile11 2023-10-30 19:00:07.212270395 +0100 +@@ -156,18 +156,21 @@ + $(CUCPPS) + OBJS = $(patsubst %.cpp, %.o, $(SRCS)) + #------------------------------------- +-CC = g++ -std=c++11 +-CFLAG = -c -g -pthread -m64 ++#CC = g++ -std=c++11 ++CFLAG = -c -g -pthread -m64 $(CFLAGS) + NVCC = $(CUDAHOME)/bin/nvcc -std=c++11 +-CUFLAG = -Xptxas -dlcm=ca -O2 \ +- -gencode arch=compute_80,code=sm_80 \ +- -gencode arch=compute_75,code=sm_75 \ +- -gencode arch=compute_70,code=sm_70 \ +- -gencode arch=compute_61,code=sm_61 \ +- -gencode arch=compute_60,code=sm_60 \ +- -gencode arch=compute_53,code=sm_53 \ +- -gencode arch=compute_52,code=sm_52 \ +- -gencode arch=compute_86,code=sm_86 ++SPACE= ' ' ++SEMI= ; ++GENCODES = $(foreach x,$(subst $(SEMI),$(SPACE),$(CUDACC)),-gencode arch=compute_$x,code=sm_$x) ++CUFLAG = -Xptxas -dlcm=ca -O2 $(GENCODES) ++# -gencode arch=compute_80,code=sm_80 \ ++# -gencode arch=compute_75,code=sm_75 \ ++# -gencode arch=compute_70,code=sm_70 \ ++# -gencode arch=compute_61,code=sm_61 \ ++# -gencode arch=compute_60,code=sm_60 \ ++# -gencode arch=compute_53,code=sm_53 \ ++# -gencode arch=compute_52,code=sm_52 \ ++# -gencode arch=compute_86,code=sm_86 + #------------------------------------------ + cuda: $(CUCPPS) + +@@ -183,6 +186,7 @@ + -lcufft -lcudart -lcuda -lc -lm -lpthread \ + -o AreTomo2 + @echo AreTomo2 has been generated. ++ @echo used cuda gencodes: $(GENCODES) + + %.o: %.cu + @$(NVCC) -c $(CUFLAG) -I$(PRJINC) -I$(CUPRJINC) $< -o $@ diff --git a/easybuild/easyconfigs/a/ant/ant-1.10.14-Java-21.eb b/easybuild/easyconfigs/a/ant/ant-1.10.14-Java-21.eb new file mode 100644 index 00000000000..815383ca5c0 --- /dev/null +++ b/easybuild/easyconfigs/a/ant/ant-1.10.14-Java-21.eb @@ -0,0 +1,27 @@ +easyblock = 'PackedBinary' + +name = 'ant' +version = '1.10.14' +versionsuffix = '-Java-%(javaver)s' + +homepage = 'https://ant.apache.org/' +description = """Apache Ant is a Java library and command-line tool whose mission is to drive processes described in + build files as targets and extension points dependent upon each other. The main known usage of Ant is the build of + Java applications.""" + +toolchain = SYSTEM + +source_urls = ['https://archive.apache.org/dist/ant/binaries/'] +sources = ['apache-%(name)s-%(version)s-bin.tar.gz'] +checksums = ['e2852fddaaddc1ab76a099ca0d7b2ee47a907b8a91a64f70f6aa9e6a3d0dd504'] + +dependencies = [('Java', '21')] + +sanity_check_paths = { + 'files': ['bin/ant', 'lib/ant.jar'], + 'dirs': [], +} + +modextravars = {'ANT_HOME': '%(installdir)s'} + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/a/argtable/argtable-2.13-GCCcore-11.2.0.eb b/easybuild/easyconfigs/a/argtable/argtable-2.13-GCCcore-11.2.0.eb new file mode 100644 index 00000000000..0eb9df1a37a --- /dev/null +++ b/easybuild/easyconfigs/a/argtable/argtable-2.13-GCCcore-11.2.0.eb @@ -0,0 +1,30 @@ +# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild +# Author: Pablo Escobar Lopez +# Swiss Institute of Bioinformatics +# Biozentrum - University of Basel +# Modified by: Adam Huffman +# The Francis Crick Institute + +easyblock = 'ConfigureMake' + +name = 'argtable' +version = '2.13' + +homepage = 'https://argtable.sourceforge.io/' +description = """ Argtable is an ANSI C library for parsing GNU style + command line options with a minimum of fuss. """ + +toolchain = {'name': 'GCCcore', 'version': '11.2.0'} + +source_urls = [SOURCEFORGE_SOURCE] +sources = ['%s%s.tar.gz' % (name, version.replace('.', '-'))] +checksums = ['8f77e8a7ced5301af6e22f47302fdbc3b1ff41f2b83c43c77ae5ca041771ddbf'] + +builddependencies = [('binutils', '2.37')] + +sanity_check_paths = { + 'files': ['include/argtable2.h', 'lib/libargtable2.%s' % SHLIB_EXT, 'lib/libargtable2.a'], + 'dirs': ['share'], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/a/assimp/assimp-5.3.1-GCCcore-13.2.0.eb b/easybuild/easyconfigs/a/assimp/assimp-5.3.1-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..6d89f82e89f --- /dev/null +++ b/easybuild/easyconfigs/a/assimp/assimp-5.3.1-GCCcore-13.2.0.eb @@ -0,0 +1,36 @@ +# Authors:: Richard Lawrence - TAMU HPRC - https://hprc.tamu.edu + +easyblock = 'CMakeMake' + +name = 'assimp' +version = '5.3.1' + +homepage = 'https://github.com/assimp/assimp' + +description = """ + Open Asset Import Library (assimp) is a library to import and export various + 3d-model-formats including scene-post-processing to generate missing render data. +""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +source_urls = ['https://github.com/%(name)s/%(name)s/archive'] +sources = ['v%(version)s.tar.gz'] +checksums = ['a07666be71afe1ad4bc008c2336b7c688aca391271188eb9108d0c6db1be53f1'] + +builddependencies = [ + ('binutils', '2.40'), + ('pkgconf', '2.0.3'), + ('CMake', '3.27.6'), + ('zlib', '1.2.13'), +] + +# workaround bug with GCC13 https://github.com/assimp/assimp/issues/5315 +configopts = '-DASSIMP_WARNINGS_AS_ERRORS=OFF ' + +sanity_check_paths = { + 'files': ['include/assimp/types.h', 'lib/libassimp.%s' % SHLIB_EXT], + 'dirs': [], +} + +moduleclass = 'vis' diff --git a/easybuild/easyconfigs/b/biom-format/biom-format-2.1.15-foss-2023a.eb b/easybuild/easyconfigs/b/biom-format/biom-format-2.1.15-foss-2023a.eb new file mode 100644 index 00000000000..31cb032f102 --- /dev/null +++ b/easybuild/easyconfigs/b/biom-format/biom-format-2.1.15-foss-2023a.eb @@ -0,0 +1,44 @@ +## +# This is a contribution from DeepThought HPC Service, Flinders University, Adelaide, Australia +# Homepage: https://staff.flinders.edu.au/research/deep-thought +# +# Authors:: Robert Qiao +# License:: Revised BSD +# +# Notes:: updated by Kenneth Hoste (HPC-UGent) for foss/2021b +## +# Updated: Petr Král (INUITS) + +easyblock = 'PythonPackage' + +name = 'biom-format' +version = '2.1.15' + +homepage = 'https://biom-format.org' +description = """ +The BIOM file format (canonically pronounced biome) is designed to be + a general-use format for representing biological sample by observation + contingency tables. BIOM is a recognized standard for the Earth Microbiome + Project and is a Genomics Standards Consortium supported project. +""" + +toolchain = {'name': 'foss', 'version': '2023a'} +toolchainopts = {'usempi': True} + +sources = [SOURCE_TAR_GZ] +checksums = ['3bda2096e663dc1cb6f90f51b394da0838b9be5164a44370c134ce5b3b2a4dd3'] + +dependencies = [ + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), + ('h5py', '3.9.0'), +] + +sanity_check_paths = { + 'files': ['bin/biom'], + 'dirs': ['lib'], +} + +options = {'modulename': 'biom'} + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/c/Clustal-Omega/Clustal-Omega-1.2.4-GCC-11.2.0.eb b/easybuild/easyconfigs/c/Clustal-Omega/Clustal-Omega-1.2.4-GCC-11.2.0.eb new file mode 100644 index 00000000000..1784c84bab0 --- /dev/null +++ b/easybuild/easyconfigs/c/Clustal-Omega/Clustal-Omega-1.2.4-GCC-11.2.0.eb @@ -0,0 +1,35 @@ +# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild +# Author: Pablo Escobar Lopez +# Swiss Institute of Bioinformatics +# Biozentrum - University of Basel +# Modified by Adam Huffman +# Francis Crick Institute + +easyblock = 'ConfigureMake' + +name = 'Clustal-Omega' +version = '1.2.4' + +homepage = 'http://www.clustal.org/omega/' +description = """ Clustal Omega is a multiple sequence alignment + program for proteins. It produces biologically meaningful multiple + sequence alignments of divergent sequences. Evolutionary relationships + can be seen via viewing Cladograms or Phylograms """ + +toolchain = {'name': 'GCC', 'version': '11.2.0'} +toolchainopts = {'openmp': True} + +source_urls = [homepage] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['8683d2286d663a46412c12a0c789e755e7fd77088fb3bc0342bb71667f05a3ee'] + +dependencies = [('argtable', '2.13')] + +sanity_check_paths = { + 'files': ['bin/clustalo'], + 'dirs': [], +} + +sanity_check_commands = ["clustalo --help"] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/c/contextily/contextily-1.5.0-foss-2023a.eb b/easybuild/easyconfigs/c/contextily/contextily-1.5.0-foss-2023a.eb new file mode 100644 index 00000000000..bb1578723b5 --- /dev/null +++ b/easybuild/easyconfigs/c/contextily/contextily-1.5.0-foss-2023a.eb @@ -0,0 +1,35 @@ +easyblock = 'PythonBundle' + +name = 'contextily' +version = '1.5.0' + +homepage = 'https://contextily.readthedocs.io/' +description = """contextily is a small Python 3 package to retrieve tile maps from the internet. +It can add those tiles as basemap to matplotlib figures or write tile maps to +disk into geospatial raster files. Bounding boxes can be passed in both WGS84 +(EPSG:4326) and Spheric Mercator (EPSG:3857).""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +dependencies = [ + ('Python', '3.11.3'), + ('Python-bundle-PyPI', '2023.06'), + ('geopy', '2.4.1'), + ('matplotlib', '3.7.2'), + ('Pillow', '10.0.0'), + ('rasterio', '1.3.9'), +] + +exts_list = [ + ('xyzservices', '2023.7.0', { + 'checksums': ['0ec928742227d6f5d4367ea7b457fcfed943429f4de2949b5b02a82cdf5569d6'], + }), + ('mercantile', '1.2.1', { + 'checksums': ['fa3c6db15daffd58454ac198b31887519a19caccee3f9d63d17ae7ff61b3b56b'], + }), + (name, version, { + 'checksums': ['295b2d8097f8f6e80e1cb5e6e77538d1cdf729f827ec54eedc57f613c0a3ce0e'], + }), +] + +moduleclass = 'geo' diff --git a/easybuild/easyconfigs/c/coverage/coverage-7.4.4-GCCcore-13.2.0.eb b/easybuild/easyconfigs/c/coverage/coverage-7.4.4-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..719be8ace95 --- /dev/null +++ b/easybuild/easyconfigs/c/coverage/coverage-7.4.4-GCCcore-13.2.0.eb @@ -0,0 +1,27 @@ +easyblock = 'PythonBundle' + +name = 'coverage' +version = '7.4.4' + +homepage = 'https://coverage.readthedocs.io' +description = """ Coverage.py is a tool for measuring code coverage of Python programs. + It monitors your program, noting which parts of the code have been executed, + then analyzes the source to identify code that could have been executed but was not. """ + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +builddependencies = [('binutils', '2.40')] +dependencies = [('Python', '3.11.5')] + +exts_list = [ + (name, version, { + 'checksums': ['c901df83d097649e257e803be22592aedfd5182f07b3cc87d640bbb9afd50f49'], + }), +] + +sanity_check_paths = { + 'files': ['bin/coverage%s' % x for x in ['', '3', '-%(pyshortver)s']], + 'dirs': ['lib/python%(pyshortver)s/site-packages/%(name)s'], +} + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/c/cuDNN/cuDNN-8.5.0.96-CUDA-11.7.0.eb b/easybuild/easyconfigs/c/cuDNN/cuDNN-8.5.0.96-CUDA-11.7.0.eb new file mode 100644 index 00000000000..8ea684fedc1 --- /dev/null +++ b/easybuild/easyconfigs/c/cuDNN/cuDNN-8.5.0.96-CUDA-11.7.0.eb @@ -0,0 +1,40 @@ +name = 'cuDNN' +version = '8.5.0.96' +versionsuffix = '-CUDA-%(cudaver)s' + +homepage = 'https://developer.nvidia.com/cudnn' +description = """The NVIDIA CUDA Deep Neural Network library (cuDNN) is +a GPU-accelerated library of primitives for deep neural networks.""" + +toolchain = SYSTEM + +# note: cuDNN is tied to specific to CUDA versions, +# see also https://docs.nvidia.com/deeplearning/cudnn/support-matrix/index.html#cudnn-cuda-hardware-versions +local_short_ver = '.'.join(version.split('.')[:3]) +source_urls = ['https://developer.download.nvidia.com/compute/redist/cudnn/' + 'v%s/local_installers/%%(cudashortver)s/' % local_short_ver] +sources = ['%(namelower)s-linux-%(cudnnarch)s-%(version)s_cuda%(cudamajver)s-archive.tar.xz'] +checksums = [ + { + '%(namelower)s-linux-x86_64-%(version)s_cuda%(cudamajver)s-archive.tar.xz': + '5454a6fd94f008728caae9adad993c4e85ef36302e26bce43bea7d458a5e7b6d', + '%(namelower)s-linux-ppc64le-%(version)s_cuda%(cudamajver)s-archive.tar.xz': + '00373c3d5e0b536a5557d0d0eb50706777f213a222b4030e1b71b1bec43d205f', + '%(namelower)s-linux-sbsa-%(version)s_cuda%(cudamajver)s-archive.tar.xz': + '86780abbecd4634e7363fad1d000ae23b7905a5f8383bddbf7332c6934791dde', + } +] + +dependencies = [('CUDA', '11.7.0')] + +sanity_check_paths = { + 'files': [ + 'include/cudnn.h', 'lib64/libcudnn_adv_infer_static.a', 'lib64/libcudnn_adv_train_static.a', + 'lib64/libcudnn_cnn_infer_static.a', 'lib64/libcudnn_cnn_train_static.a', + 'lib64/libcudnn_ops_infer_static.a', 'lib64/libcudnn_ops_train_static.a', + 'lib64/libcudnn.%s' % SHLIB_EXT + ], + 'dirs': ['include', 'lib64'], +} + +moduleclass = 'numlib' diff --git a/easybuild/easyconfigs/d/dorado/dorado-0.5.3-foss-2022a-CUDA-11.7.0.eb b/easybuild/easyconfigs/d/dorado/dorado-0.5.3-foss-2022a-CUDA-11.7.0.eb new file mode 100644 index 00000000000..62d6434a9e1 --- /dev/null +++ b/easybuild/easyconfigs/d/dorado/dorado-0.5.3-foss-2022a-CUDA-11.7.0.eb @@ -0,0 +1,74 @@ +easyblock = 'CMakeMake' + +name = 'dorado' +version = '0.5.3' +versionsuffix = '-CUDA-%(cudaver)s' + +homepage = 'https://github.com/nanoporetech/dorado' +description = """Dorado is a high-performance, easy-to-use, open source basecaller for Oxford Nanopore reads.""" + +toolchain = {'name': 'foss', 'version': '2022a'} +# -Wno-error option is required to fix: +# error: void {anonymous}::convert_f32_to_f16_impl(c10::Half*, const float*, std::size_t) defined but not used +toolchainopts = {'usempi': True, 'extra_cxxflags': "-Wno-error=unused-function"} + +source_urls = ['https://github.com/nanoporetech/dorado/archive/'] +sources = [{ + 'git_config': { + 'url': 'https://github.com/nanoporetech', + 'repo_name': name, + 'tag': 'v%(version)s', + 'recursive': True, + }, + 'filename': SOURCE_TAR_GZ, +}] +checksums = [None] + +builddependencies = [ + ('binutils', '2.38'), + ('CMake', '3.24.3'), +] + +dependencies = [ + ('CUDA', '11.7.0', '', SYSTEM), + ('OpenSSL', '1.1', '', SYSTEM), + ('PyTorch', '1.12.0', '-CUDA-%(cudaver)s'), + ('HDF5', '1.12.2'), + ('zstd', '1.5.2'), + ('HTSlib', '1.15.1'), + ('kineto', '0.4.0'), + ('libaec', '1.0.6'), +] + +# don't link to OpenSSL static libraries +# fix for CMake Error "missing: OPENSSL_CRYPTO_LIBRARY" (if only shared OpenSSL libraries are available) +preconfigopts = "sed -i '/OPENSSL_USE_STATIC_LIBS TRUE/d' ../dorado/cmake/OpenSSL.cmake && " +preconfigopts += "export OPENSSL_ROOT_DIR=$EBROOTOPENSSL && " +# link in the ssl and crypto libs, to fix: +# undefined reference to symbol 'SSL_get_peer_certificate@@OPENSSL_1_1_0' +preconfigopts += "sed -i 's/OpenSSL::SSL/ssl\\n crypto/g' ../dorado/dorado/utils/CMakeLists.txt && " + +# don't use vendored HTSlib, use provided HTSlib dependency +preconfigopts += "rm -r ../dorado/dorado/3rdparty/htslib/ && " +preconfigopts += "sed -i '/add_dependencies.*htslib_project/d' ../dorado/CMakeLists.txt && " +preconfigopts += "sed -i '/add_dependencies.*htslib_project/d' ../dorado/dorado/utils/CMakeLists.txt && " +preconfigopts += "sed -i '/Htslib.cmake/d' ../dorado/CMakeLists.txt && " +# link with -lhts, not -lhtslib +preconfigopts += "sed -i 's/htslib/hts/g' ../dorado/CMakeLists.txt && " +preconfigopts += "sed -i 's/htslib/hts/g' ../dorado/dorado/utils/CMakeLists.txt && " + +configopts = "-DDORADO_INSTALL_PATH=%(installdir)s " +configopts += "-DCUDA_TOOLKIT_ROOT_DIR=$EBROOTCUDA -DCMAKE_CUDA_COMPILER=$EBROOTCUDA/bin/nvcc " +configopts += "-DDORADO_LIBTORCH_DIR=$EBROOTPYTORCH/lib " +# add -pthread flag (in addition to -lpthread) to avoid linking error: +# in function `_GLOBAL__sub_I_mutex.cc': mutex.cc:(.text.startup+0x17): undefined reference to `pthread_atfork' +configopts += '-DCMAKE_C_FLAGS="$CFLAGS -pthread" ' + +sanity_check_paths = { + 'files': ['bin/dorado'], + 'dirs': [], +} + +sanity_check_commands = ["dorado basecaller --help"] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/e/EasyBuild/EasyBuild-4.9.1.eb b/easybuild/easyconfigs/e/EasyBuild/EasyBuild-4.9.1.eb new file mode 100644 index 00000000000..5b5053253a3 --- /dev/null +++ b/easybuild/easyconfigs/e/EasyBuild/EasyBuild-4.9.1.eb @@ -0,0 +1,44 @@ +easyblock = 'EB_EasyBuildMeta' + +name = 'EasyBuild' +version = '4.9.1' + +homepage = 'https://easybuilders.github.io/easybuild' +description = """EasyBuild is a software build and installation framework + written in Python that allows you to install software in a structured, + repeatable and robust way.""" + +toolchain = SYSTEM + +source_urls = [ + # easybuild-framework + 'https://files.pythonhosted.org/packages/39/52/e61195776d676e96289b2956f6a1045c0577d836c776c04bc3694c6b4b89/', + # easybuild-easyblocks + 'https://files.pythonhosted.org/packages/ec/bd/c6117c19a49711752e095f425937d3405d90b1a60089d953f688ee89e6a8/', + # easybuild-easyconfigs + 'https://files.pythonhosted.org/packages/2d/78/a9357a9ef22703bb982427a25989dc9f563f21073f08cba5dc914c13a182/', +] +sources = [ + 'easybuild-framework-%(version)s.tar.gz', + 'easybuild-easyblocks-%(version)s.tar.gz', + 'easybuild-easyconfigs-%(version)s.tar.gz', +] +checksums = [ + {'easybuild-framework-4.9.1.tar.gz': '8f0448d32fab13019e06dba80fa3e13681574df302452184e5f8543c13ff2123'}, + {'easybuild-easyblocks-4.9.1.tar.gz': 'da5adfa25356f62d28b170368c0d342bef08e18d843da713e011d7c344ad665e'}, + {'easybuild-easyconfigs-4.9.1.tar.gz': '86b4abe118ea85b82ad981b63ccf03a0539664b8797327f060fe655216da26c8'}, +] + +# order matters a lot, to avoid having dependencies auto-resolved (--no-deps easy_install option doesn't work?) +# EasyBuild is a (set of) Python packages, so it depends on Python +# usually, we want to use the system Python, so no actual Python dependency is listed +allow_system_deps = [('Python', SYS_PYTHON_VERSION)] + +local_pyshortver = '.'.join(SYS_PYTHON_VERSION.split('.')[:2]) + +sanity_check_paths = { + 'files': ['bin/eb'], + 'dirs': ['lib/python%s/site-packages' % local_pyshortver], +} + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/e/EpiSCORE/EpiSCORE-0.9.5-20220621-foss-2022a-R-4.2.1.eb b/easybuild/easyconfigs/e/EpiSCORE/EpiSCORE-0.9.5-20220621-foss-2022a-R-4.2.1.eb new file mode 100644 index 00000000000..0f291cf4317 --- /dev/null +++ b/easybuild/easyconfigs/e/EpiSCORE/EpiSCORE-0.9.5-20220621-foss-2022a-R-4.2.1.eb @@ -0,0 +1,30 @@ +easyblock = 'RPackage' + +name = 'EpiSCORE' +local_commit = '4f7daef' +# see DESCRIPTION to determine version, +# but also take date of last commit into account (since version isn't always bumped) +version = '0.9.5-20220621' +versionsuffix = '-R-%(rver)s' + +homepage = 'https://github.com/aet21/EpiSCORE' +description = "Epigenetic cell-type deconvolution from Single-Cell Omic Reference profiles" + +toolchain = {'name': 'foss', 'version': '2022a'} + +source_urls = ['https://github.com/aet21/EpiSCORE/archive/'] +sources = [{'download_filename': '%s.tar.gz' % local_commit, 'filename': SOURCE_TAR_GZ}] +checksums = ['85ce52efe0555295ceaab79518244bcbea8c3b7d454f84c74b99e577f56e1481'] + +dependencies = [ + ('R', '4.2.1'), + ('R-bundle-Bioconductor', '3.15', versionsuffix), + ('presto', '1.0.0-20230113', versionsuffix), +] + +sanity_check_paths = { + 'files': [], + 'dirs': [name], +} + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/e/e3nn/e3nn-0.3.3-foss-2022a-PyTorch-1.13.1-CUDA-11.7.0.eb b/easybuild/easyconfigs/e/e3nn/e3nn-0.3.3-foss-2022a-PyTorch-1.13.1-CUDA-11.7.0.eb new file mode 100644 index 00000000000..f02d387b895 --- /dev/null +++ b/easybuild/easyconfigs/e/e3nn/e3nn-0.3.3-foss-2022a-PyTorch-1.13.1-CUDA-11.7.0.eb @@ -0,0 +1,36 @@ +easyblock = 'PythonBundle' + +name = 'e3nn' +version = '0.3.3' +local_pytorch_version = '1.13.1' +versionsuffix = '-PyTorch-' + local_pytorch_version + '-CUDA-%(cudaver)s' + +homepage = 'https://e3nn.org/' +description = """ +Euclidean neural networks (e3nn) is a python library based on pytorch to create equivariant +neural networks for the group O(3). +""" + +toolchain = {'name': 'foss', 'version': '2022a'} + +dependencies = [ + ('Python', '3.10.4'), + ('SciPy-bundle', '2022.05'), + ('CUDA', '11.7.0', '', SYSTEM), + ('PyTorch', local_pytorch_version, '-CUDA-%(cudaver)s'), + ('sympy', '1.10.1'), +] + +exts_list = [ + ('opt_einsum', '3.3.0', { + 'checksums': ['59f6475f77bbc37dcf7cd748519c0ec60722e91e63ca114e68821c0c54a46549'], + }), + ('opt_einsum_fx', '0.1.4', { + 'checksums': ['7eeb7f91ecb70be65e6179c106ea7f64fc1db6319e3d1289a4518b384f81e74f'], + }), + (name, version, { + 'checksums': ['532b34a5644153659253c59943fe4224cd9c3c46ce8a79f1dc7c00afccb44ecb'], + }), +] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/g/GCCcore/GCCcore-13.2.0.eb b/easybuild/easyconfigs/g/GCCcore/GCCcore-13.2.0.eb index 12f599fdd8f..2876160159d 100644 --- a/easybuild/easyconfigs/g/GCCcore/GCCcore-13.2.0.eb +++ b/easybuild/easyconfigs/g/GCCcore/GCCcore-13.2.0.eb @@ -37,6 +37,7 @@ patches = [ 'GCCcore-12.2.0_fix-avx512-misoptimization.patch', 'GCCcore-13.2.0_fix_slp_and_loop_mask_len.patch', 'GCCcore-12.x_riscv_multiarch_support.patch', + 'GCCcore-13.2.0_fix-unguarded-is_convertible-builtin.patch', ] checksums = [ {'gcc-13.2.0.tar.gz': '8cb4be3796651976f94b9356fa08d833524f62420d6292c5033a9a26af315078'}, @@ -54,6 +55,8 @@ checksums = [ {'GCCcore-13.2.0_fix_slp_and_loop_mask_len.patch': 'e1d63e04bf494a2f79346ac7454372f117b63288cc18c68876a5b8bdc453cf88'}, {'GCCcore-12.x_riscv_multiarch_support.patch': '92fc2b17b6943611a657904500fbf3db8160eddbcea320828d4a50a885e2778f'}, + {'GCCcore-13.2.0_fix-unguarded-is_convertible-builtin.patch': + '8650d6d4f41e32e9f5f23272d27a6d6adce3cd46ff44483f160b1d3bd92b1dbd'}, ] builddependencies = [ diff --git a/easybuild/easyconfigs/g/GCCcore/GCCcore-13.2.0_fix-unguarded-is_convertible-builtin.patch b/easybuild/easyconfigs/g/GCCcore/GCCcore-13.2.0_fix-unguarded-is_convertible-builtin.patch new file mode 100644 index 00000000000..4e752516115 --- /dev/null +++ b/easybuild/easyconfigs/g/GCCcore/GCCcore-13.2.0_fix-unguarded-is_convertible-builtin.patch @@ -0,0 +1,43 @@ +Source: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113241 + +From 4c66513656775d551db36b53c253cf236f0eeba8 Mon Sep 17 00:00:00 2001 +From: Jonathan Wakely +Date: Fri, 5 Jan 2024 12:03:22 +0000 +Subject: [PATCH] libstdc++: Do not use __is_convertible unconditionally + [PR113241] + +The new __is_convertible built-in should only be used after checking +that it's supported. + +libstdc++-v3/ChangeLog: + + PR libstdc++/113241 + * include/std/type_traits (is_convertible_v): Guard use of + built-in with preprocessor check. + +(cherry picked from commit 57fa5b60bbbf8038b8a699d2bcebd2a9b2e29aa4) +--- + libstdc++-v3/include/std/type_traits | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits +index 2bd607a8b8f..2b05e371953 100644 +--- a/libstdc++-v3/include/std/type_traits ++++ b/libstdc++-v3/include/std/type_traits +@@ -3359,8 +3359,13 @@ template + #endif + template + inline constexpr bool is_base_of_v = __is_base_of(_Base, _Derived); ++#if __has_builtin(__is_convertible) + template + inline constexpr bool is_convertible_v = __is_convertible(_From, _To); ++#else ++template ++ inline constexpr bool is_convertible_v = is_convertible<_From, _To>::value; ++#endif + template + inline constexpr bool is_invocable_v = is_invocable<_Fn, _Args...>::value; + template +-- +2.39.3 + diff --git a/easybuild/easyconfigs/g/GKlib-METIS/GKlib-METIS-5.1.1-GCCcore-11.3.0.eb b/easybuild/easyconfigs/g/GKlib-METIS/GKlib-METIS-5.1.1-GCCcore-11.3.0.eb new file mode 100644 index 00000000000..c5aade36177 --- /dev/null +++ b/easybuild/easyconfigs/g/GKlib-METIS/GKlib-METIS-5.1.1-GCCcore-11.3.0.eb @@ -0,0 +1,42 @@ +# This is needed to install newer versions of DGL. +# The main reason is that the specific version of METIS used in DGL needs is as a +# third party software and newer versions of DGL don't have that included any more. +# Author: J. Sassmannshausen (Imperial College Londoni/UK) + +easyblock = 'CMakeMake' + +name = 'GKlib-METIS' +version = '5.1.1' + +homepage = 'https://github.com/KarypisLab/GKlib' +description = """A library of various helper routines and frameworks used by +many of the lab's software""" + +toolchain = {'name': 'GCCcore', 'version': '11.3.0'} + +sources = [ + { + 'source_urls': ['https://github.com/KarypisLab/GKlib/archive'], + 'download_filename': 'METIS-v%(version)s-DistDGL-0.5.tar.gz', + 'filename': '%(name)s-v%(version)s-DistDGL-0.5.tar.gz', + } +] +checksums = ['52aa0d383d42360f4faa0ae9537ba2ca348eeab4db5f2dfd6343192d0ff4b833'] + +builddependencies = [ + ('CMake', '3.24.3'), + ('binutils', '2.38'), +] + +dependencies = [ + ('Python', '3.10.4'), +] + +sanity_check_commands = ['gkgraph -help'] + +sanity_check_paths = { + 'files': ['bin/gkgraph'], + 'dirs': ['lib', 'include'], +} + +moduleclass = 'ai' diff --git a/easybuild/easyconfigs/g/GitPython/GitPython-3.1.42-GCCcore-13.2.0.eb b/easybuild/easyconfigs/g/GitPython/GitPython-3.1.42-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..2da69d4ec16 --- /dev/null +++ b/easybuild/easyconfigs/g/GitPython/GitPython-3.1.42-GCCcore-13.2.0.eb @@ -0,0 +1,31 @@ +easyblock = 'PythonBundle' + +name = 'GitPython' +version = '3.1.42' + +homepage = 'https://gitpython.readthedocs.org' +description = """ GitPython is a python library used to interact with Git repositories """ + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +builddependencies = [('binutils', '2.40')] + +dependencies = [ + ('Python', '3.11.5'), + ('git', '2.42.0'), +] + +exts_list = [ + ('smmap', '5.0.1', { + 'checksums': ['dceeb6c0028fdb6734471eb07c0cd2aae706ccaecab45965ee83f11c8d3b1f62'], + }), + ('gitdb', '4.0.11', { + 'checksums': ['bf5421126136d6d0af55bc1e7c1af1c397a34f5b7bd79e776cd3e89785c2b04b'], + }), + (name, version, { + 'modulename': 'git', + 'checksums': ['2d99869e0fef71a73cbd242528105af1d6c1b108c60dfabd994bf292f76c3ceb'], + }), +] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/g/Greenlet/Greenlet-2.0.2-foss-2022a.eb b/easybuild/easyconfigs/g/Greenlet/Greenlet-2.0.2-GCCcore-11.3.0.eb similarity index 89% rename from easybuild/easyconfigs/g/Greenlet/Greenlet-2.0.2-foss-2022a.eb rename to easybuild/easyconfigs/g/Greenlet/Greenlet-2.0.2-GCCcore-11.3.0.eb index 087d012ef33..55bf8f72484 100644 --- a/easybuild/easyconfigs/g/Greenlet/Greenlet-2.0.2-foss-2022a.eb +++ b/easybuild/easyconfigs/g/Greenlet/Greenlet-2.0.2-GCCcore-11.3.0.eb @@ -12,8 +12,9 @@ A "greenlet", on the other hand, is a still more primitive notion of micro-threa scheduling; coroutines, in other words. This is useful when you want to control exactly when your code runs. """ -toolchain = {'name': 'foss', 'version': '2022a'} +toolchain = {'name': 'GCCcore', 'version': '11.3.0'} +builddependencies = [('binutils', '2.38')] dependencies = [('Python', '3.10.4')] source_urls = [PYPI_LOWER_SOURCE] diff --git a/easybuild/easyconfigs/g/Greenlet/Greenlet-2.0.2-foss-2022b.eb b/easybuild/easyconfigs/g/Greenlet/Greenlet-2.0.2-GCCcore-12.2.0.eb similarity index 89% rename from easybuild/easyconfigs/g/Greenlet/Greenlet-2.0.2-foss-2022b.eb rename to easybuild/easyconfigs/g/Greenlet/Greenlet-2.0.2-GCCcore-12.2.0.eb index 0051a41964a..7459fde3234 100644 --- a/easybuild/easyconfigs/g/Greenlet/Greenlet-2.0.2-foss-2022b.eb +++ b/easybuild/easyconfigs/g/Greenlet/Greenlet-2.0.2-GCCcore-12.2.0.eb @@ -12,8 +12,9 @@ A "greenlet", on the other hand, is a still more primitive notion of micro-threa scheduling; coroutines, in other words. This is useful when you want to control exactly when your code runs. """ -toolchain = {'name': 'foss', 'version': '2022b'} +toolchain = {'name': 'GCCcore', 'version': '12.2.0'} +builddependencies = [('binutils', '2.39')] dependencies = [('Python', '3.10.8')] source_urls = [PYPI_LOWER_SOURCE] diff --git a/easybuild/easyconfigs/g/Greenlet/Greenlet-2.0.2-foss-2023a.eb b/easybuild/easyconfigs/g/Greenlet/Greenlet-2.0.2-GCCcore-12.3.0.eb similarity index 89% rename from easybuild/easyconfigs/g/Greenlet/Greenlet-2.0.2-foss-2023a.eb rename to easybuild/easyconfigs/g/Greenlet/Greenlet-2.0.2-GCCcore-12.3.0.eb index 21fac6c20a3..a374fe10635 100644 --- a/easybuild/easyconfigs/g/Greenlet/Greenlet-2.0.2-foss-2023a.eb +++ b/easybuild/easyconfigs/g/Greenlet/Greenlet-2.0.2-GCCcore-12.3.0.eb @@ -12,8 +12,9 @@ A "greenlet", on the other hand, is a still more primitive notion of micro-threa scheduling; coroutines, in other words. This is useful when you want to control exactly when your code runs. """ -toolchain = {'name': 'foss', 'version': '2023a'} +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} +builddependencies = [('binutils', '2.40')] dependencies = [('Python', '3.11.3')] source_urls = [PYPI_LOWER_SOURCE] diff --git a/easybuild/easyconfigs/g/Greenlet/Greenlet-3.0.2-GCCcore-12.3.0.eb b/easybuild/easyconfigs/g/Greenlet/Greenlet-3.0.2-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..5f83669b471 --- /dev/null +++ b/easybuild/easyconfigs/g/Greenlet/Greenlet-3.0.2-GCCcore-12.3.0.eb @@ -0,0 +1,23 @@ +easyblock = 'PythonPackage' + +name = 'Greenlet' +version = '3.0.2' + +homepage = 'https://github.com/python-greenlet/greenlet' + +description = """The greenlet package is a spin-off of Stackless, a version of CPython that +supports micro-threads called "tasklets". Tasklets run pseudo-concurrently (typically in a single +or a few OS-level threads) and are synchronized with data exchanges on "channels". +A "greenlet", on the other hand, is a still more primitive notion of micro-thread with no implicit +scheduling; coroutines, in other words. This is useful when you want to control exactly when your code runs. +""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} +builddependencies = [('binutils', '2.40')] +dependencies = [('Python', '3.11.3')] + +source_urls = [PYPI_LOWER_SOURCE] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['1c1129bc47266d83444c85a8e990ae22688cf05fb20d7951fd2866007c2ba9bc'] + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/g/Greenlet/Greenlet-3.0.3-GCCcore-13.2.0.eb b/easybuild/easyconfigs/g/Greenlet/Greenlet-3.0.3-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..7ef5f027a69 --- /dev/null +++ b/easybuild/easyconfigs/g/Greenlet/Greenlet-3.0.3-GCCcore-13.2.0.eb @@ -0,0 +1,24 @@ +easyblock = 'PythonPackage' + +name = 'Greenlet' +version = '3.0.3' + +homepage = 'https://github.com/python-greenlet/greenlet' + +description = """The greenlet package is a spin-off of Stackless, a version of CPython that +supports micro-threads called "tasklets". Tasklets run pseudo-concurrently (typically in a single +or a few OS-level threads) and are synchronized with data exchanges on "channels". +A "greenlet", on the other hand, is a still more primitive notion of micro-thread with no implicit +scheduling; coroutines, in other words. This is useful when you want to control exactly when your code runs. +""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +builddependencies = [('binutils', '2.40')] +dependencies = [('Python', '3.11.5')] + +source_urls = [PYPI_LOWER_SOURCE] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491'] + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/g/geocube/geocube-0.4.3-foss-2023a.eb b/easybuild/easyconfigs/g/geocube/geocube-0.4.3-foss-2023a.eb new file mode 100644 index 00000000000..5b8301da4ae --- /dev/null +++ b/easybuild/easyconfigs/g/geocube/geocube-0.4.3-foss-2023a.eb @@ -0,0 +1,38 @@ +easyblock = 'PythonBundle' + +name = 'geocube' +version = '0.4.3' + +homepage = 'https://corteva.github.io/geocube' +description = "Tool to convert geopandas vector data into rasterized xarray data." + +toolchain = {'name': 'foss', 'version': '2023a'} + +dependencies = [ + ('Python', '3.11.3'), + ('Python-bundle-PyPI', '2023.06'), + ('SciPy-bundle', '2023.07'), + ('geopandas', '0.14.2'), + ('rasterio', '1.3.9'), + ('rioxarray', '0.15.0'), +] + +exts_list = [ + ('cachetools', '5.3.1', { + 'checksums': ['dce83f2d9b4e1f732a8cd44af8e8fab2dbe46201467fc98b3ef8f269092bf62b'], + }), + ('odc-geo', '0.4.1', { + 'modulename': 'odc.geo', + 'checksums': ['0b04d0835e783685f128453e4b4169d86d322632887bfee9c7dbde364a3c324d'], + }), + (name, version, { + 'checksums': ['d0deebbcd2cd169d466ef8f9e6419c8ee23914d10e00b8f7bd73f9bed468a0fb'], + }), +] + +sanity_check_paths = { + 'files': ['bin/%(name)s'], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +moduleclass = 'geo' diff --git a/easybuild/easyconfigs/g/geopy/geopy-2.4.1-GCCcore-12.3.0.eb b/easybuild/easyconfigs/g/geopy/geopy-2.4.1-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..9403d1651f8 --- /dev/null +++ b/easybuild/easyconfigs/g/geopy/geopy-2.4.1-GCCcore-12.3.0.eb @@ -0,0 +1,31 @@ +easyblock = 'PythonBundle' + +name = 'geopy' +version = '2.4.1' + +homepage = 'https://geopy.readthedocs.io/' +description = """geopy is a Python client for several popular geocoding web services. +geopy makes it easy for Python developers to locate the coordinates of +addresses, cities, countries, and landmarks across the globe using third-party +geocoders and other data sources.""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +builddependencies = [ + ('binutils', '2.40'), +] + +dependencies = [ + ('Python', '3.11.3'), +] + +exts_list = [ + ('geographiclib', '2.0', { + 'checksums': ['f7f41c85dc3e1c2d3d935ec86660dc3b2c848c83e17f9a9e51ba9d5146a15859'], + }), + (name, version, { + 'checksums': ['50283d8e7ad07d89be5cb027338c6365a32044df3ae2556ad3f52f4840b3d0d1'], + }), +] + +moduleclass = 'geo' diff --git a/easybuild/easyconfigs/h/HDF/HDF-4.2.16-2-GCCcore-13.2.0.eb b/easybuild/easyconfigs/h/HDF/HDF-4.2.16-2-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..6f54f50d488 --- /dev/null +++ b/easybuild/easyconfigs/h/HDF/HDF-4.2.16-2-GCCcore-13.2.0.eb @@ -0,0 +1,60 @@ +easyblock = 'ConfigureMake' + +name = 'HDF' +version = '4.2.16-2' + +homepage = 'https://www.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.2.0'} +toolchainopts = {'pic': True} + +source_urls = ['http://www.hdfgroup.org/ftp/%(name)s/releases/%(name)s%(version)s/src/'] +sources = [SOURCELOWER_TAR_GZ] + +checksums = [ + 'a24b18312d421686031c2d66635f7d5abb2fe879f8a182b7e02797b0da8d1f6c', # %(namelower)s-%(version)s.tar.gz +] + +builddependencies = [ + ('binutils', '2.40'), + ('Bison', '3.8.2'), + ('flex', '2.6.4'), +] +dependencies = [ + ('libjpeg-turbo', '3.0.1'), + ('Szip', '2.1.1'), + ('zlib', '1.2.13'), + ('libtirpc', '1.3.4'), +] + +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/HiGHS/HiGHS-1.7.0-gfbf-2023b.eb b/easybuild/easyconfigs/h/HiGHS/HiGHS-1.7.0-gfbf-2023b.eb new file mode 100644 index 00000000000..a7228b77ec0 --- /dev/null +++ b/easybuild/easyconfigs/h/HiGHS/HiGHS-1.7.0-gfbf-2023b.eb @@ -0,0 +1,46 @@ +easyblock = 'CMakeMake' + +name = 'HiGHS' +version = '1.7.0' + +homepage = 'https://ergo-code.github.io/HiGHS' +description = """Open source serial and parallel solvers for large-scale sparse linear programming (LP), +mixed-integer programming (MIP), and quadratic programming (QP) models.""" + +toolchain = {'name': 'gfbf', 'version': '2023b'} + +source_urls = ['https://github.com/ERGO-Code/HiGHS/archive/'] +sources = [{'download_filename': 'v%(version)s.tar.gz', 'filename': '%(name)s-%(version)s.tar.gz'}] +checksums = ['d10175ad66e7f113ac5dc00c9d6650a620663a6884fbf2942d6eb7a3d854604f'] + +builddependencies = [ + ('CMake', '3.27.6'), +] + +dependencies = [ + ('Python', '3.11.5'), + ('SciPy-bundle', '2023.11'), +] + +exts_defaultclass = 'PythonPackage' +exts_default_options = { + 'source_urls': [PYPI_SOURCE], + 'installopts': '', +} + +exts_list = [ + ('highspy', version, { + 'source_urls': ['https://github.com/ERGO-Code/HiGHS/archive/'], + 'sources': [{'download_filename': 'v%(version)s.tar.gz', 'filename': '%(name)s-%(version)s.tar.gz'}], + 'checksums': ['d10175ad66e7f113ac5dc00c9d6650a620663a6884fbf2942d6eb7a3d854604f'], + }), +] + +modextrapaths = {'PYTHONPATH': 'lib/python%(pyshortver)s/site-packages'} + +sanity_check_paths = { + 'files': ['bin/highs'], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/i/ISA-L/ISA-L-2.31.0-GCCcore-13.2.0.eb b/easybuild/easyconfigs/i/ISA-L/ISA-L-2.31.0-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..6ea1385fff1 --- /dev/null +++ b/easybuild/easyconfigs/i/ISA-L/ISA-L-2.31.0-GCCcore-13.2.0.eb @@ -0,0 +1,46 @@ +# Author: Jasper Grimm (UoY) + +easyblock = 'ConfigureMake' + +name = 'ISA-L' +version = '2.31.0' + +homepage = 'https://github.com/intel/isa-l' +description = "Intelligent Storage Acceleration Library" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +github_account = 'intel' +source_urls = [GITHUB_LOWER_SOURCE] +sources = ['v%(version)s.tar.gz'] +checksums = ['e218b7b2e241cfb8e8b68f54a6e5eed80968cc387c4b1af03708b54e9fb236f1'] + +builddependencies = [ + ('Autotools', '20220317'), + ('binutils', '2.40'), + ('pkgconf', '2.0.3'), +] + +dependencies = [('NASM', '2.16.01')] + +preconfigopts = 'autoreconf -i -f &&' + +runtest = 'check' + +local_bins = ['bin/igzip'] +local_includes = ['include/%(namelower)s.h'] +local_includes += ['include/isa-l/%s.h' % i for i in ['crc64', 'crc', 'erasure_code', 'gf_vect_mul', 'igzip_lib', + 'mem_routines', 'raid', 'test']] +local_libs = ['lib/libisal.%s' % k for k in ['a', 'la', SHLIB_EXT]] + +sanity_check_paths = { + 'files': local_bins + local_includes + local_libs, + 'dirs': ['bin', 'include', 'lib', 'share'], +} + +sanity_check_commands = [ + "igzip --help", + "igzip --version", +] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/i/inflection/inflection-1.3.5-foss-2023a-R-4.3.2.eb b/easybuild/easyconfigs/i/inflection/inflection-1.3.5-foss-2023a-R-4.3.2.eb new file mode 100644 index 00000000000..af8c45ca393 --- /dev/null +++ b/easybuild/easyconfigs/i/inflection/inflection-1.3.5-foss-2023a-R-4.3.2.eb @@ -0,0 +1,27 @@ +easyblock = 'RPackage' + +name = 'inflection' +version = '1.3.5' +versionsuffix = '-R-%(rver)s' + +homepage = 'https://github.com/dchristop/inflection' +description = """inflection is a package that finds the inflection point of a planar curve which is given as a data frame + of discrete (xi,yi) points""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +source_urls = ['https://github.com/dchristop/inflection/archive/'] +sources = ['%(version)s.tar.gz'] +checksums = ['8087db8d60310e7a73956f9c8b1e305a917ce67d47a74acf41dbe16b466dd3a4'] + +dependencies = [ + ('R', '4.3.2'), + ('R-bundle-CRAN', '2023.12'), +] + +sanity_check_paths = { + 'files': [], + 'dirs': ['%(namelower)s'], +} + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/i/intervaltree-python/intervaltree-python-3.1.0-GCCcore-12.3.0.eb b/easybuild/easyconfigs/i/intervaltree-python/intervaltree-python-3.1.0-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..f38b8b49f84 --- /dev/null +++ b/easybuild/easyconfigs/i/intervaltree-python/intervaltree-python-3.1.0-GCCcore-12.3.0.eb @@ -0,0 +1,30 @@ +# Author: Jasper Grimm (UoY) +# Update: Petr Král (INUITS) + +easyblock = 'PythonPackage' + +name = 'intervaltree-python' +_modname = 'intervaltree' +version = '3.1.0' + +homepage = 'https://github.com/chaimleib/intervaltree' +description = """A mutable, self-balancing interval tree. Queries may be by + point, by range overlap, or by range containment. +""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +source_urls = ['https://pypi.python.org/packages/source/i/%s' % _modname] +sources = ['%s-%s.tar.gz' % (_modname, version)] +checksums = ['902b1b88936918f9b2a19e0e5eb7ccb430ae45cde4f39ea4b36932920d33952d'] + +builddependencies = [('binutils', '2.40')] + +dependencies = [ + ('Python', '3.11.3'), + ('Python-bundle-PyPI', '2023.06'), +] + +options = {'modulename': _modname} + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/j/Java/Java-19.0.2.eb b/easybuild/easyconfigs/j/Java/Java-19.0.2.eb new file mode 100644 index 00000000000..f856b0a1fd7 --- /dev/null +++ b/easybuild/easyconfigs/j/Java/Java-19.0.2.eb @@ -0,0 +1,30 @@ +name = 'Java' +version = '19.0.2' +local_build = '7' + +homepage = 'https://openjdk.org' +description = """Java Platform, Standard Edition (Java SE) lets you develop and deploy +Java applications on desktops and servers.""" + +toolchain = SYSTEM + +local_tarball_tmpl = 'OpenJDK%%(version_major)sU-jdk_%s_linux_hotspot_%%(version)s_%s.tar.gz' + +# Using the Adoptium Eclipse Temurin builds, recommended by https://whichjdk.com/#distributions + +source_urls = ['https://github.com/adoptium/temurin%%(version_major)s-binaries/releases/download/jdk-%%(version)s+%s/' + % local_build] +sources = [local_tarball_tmpl % ('%(jdkarch)s', local_build)] + +checksums = [ + { + local_tarball_tmpl % ('x64', local_build): + '3a3ba7a3f8c3a5999e2c91ea1dca843435a0d1c43737bd2f6822b2f02fc52165', + local_tarball_tmpl % ('aarch64', local_build): + '1c4be9aa173cb0deb0d215643d9509c8900e5497290b29eee4bee335fa57984f', + local_tarball_tmpl % ('ppc64le', local_build): + '173d1256dfb9d13d309b5390e6bdf72d143b512201b0868f9d349d5ed3d64072', + } +] + +moduleclass = 'lang' diff --git a/easybuild/easyconfigs/j/Java/Java-19.eb b/easybuild/easyconfigs/j/Java/Java-19.eb new file mode 100644 index 00000000000..0738b439179 --- /dev/null +++ b/easybuild/easyconfigs/j/Java/Java-19.eb @@ -0,0 +1,14 @@ +easyblock = 'ModuleRC' + +name = 'Java' +version = '19' + +homepage = 'https://java.com/' +description = """Java Platform, Standard Edition (Java SE) lets you develop and deploy +Java applications on desktops and servers.""" + +toolchain = SYSTEM + +dependencies = [('Java', '%(version)s.0.2')] + +moduleclass = 'lang' diff --git a/easybuild/easyconfigs/j/Java/Java-8.402.eb b/easybuild/easyconfigs/j/Java/Java-8.402.eb new file mode 100644 index 00000000000..d130041813b --- /dev/null +++ b/easybuild/easyconfigs/j/Java/Java-8.402.eb @@ -0,0 +1,31 @@ +name = 'Java' +version = '8.402' +local_build = 'b06' + +homepage = 'http://openjdk.java.net' +description = """Java Platform, Standard Edition (Java SE) lets you develop and deploy +Java applications on desktops and servers.""" + +toolchain = SYSTEM + +local_tarball_tmpl = 'OpenJDK8U-jdk_%s_linux_hotspot_%%(version_major)su%%(version_minor)s%s.tar.gz' + +# Using the Adoptium Eclipse Temurin builds, recommended by https://whichjdk.com/#distributions + +source_urls = ['https://github.com/adoptium/temurin8-binaries/releases/download/' + 'jdk%%(version_major)su%%(version_minor)s-%s/' % local_build] +sources = [local_tarball_tmpl % ('%(jdkarch)s', local_build)] + +checksums = [ + { + local_tarball_tmpl % ('x64', local_build): + 'fcfd08abe39f18e719e391f2fc37b8ac1053075426d10efac4cbf8969e7aa55e', + local_tarball_tmpl % ('aarch64', local_build): + '241a72d6f0051de30c71e7ade95b34cd85a249c8e5925bcc7a95872bee81fd84', + local_tarball_tmpl % ('ppc64le', local_build): + '64bc05cdffe827c84000177dca2eb4ff0a8ff0021889bb75abff3639d4f51838', + + } +] + +moduleclass = 'lang' diff --git a/easybuild/easyconfigs/j/Java/Java-8.eb b/easybuild/easyconfigs/j/Java/Java-8.eb index 854eccb56cb..759f3e84bbe 100644 --- a/easybuild/easyconfigs/j/Java/Java-8.eb +++ b/easybuild/easyconfigs/j/Java/Java-8.eb @@ -9,6 +9,6 @@ Java applications on desktops and servers.""" toolchain = SYSTEM -dependencies = [('Java', '%(version)s.362')] +dependencies = [('Java', '%(version)s.402')] moduleclass = 'lang' diff --git a/easybuild/easyconfigs/j/json-c/json-c-0.17-GCCcore-13.2.0.eb b/easybuild/easyconfigs/j/json-c/json-c-0.17-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..03fa34a87b9 --- /dev/null +++ b/easybuild/easyconfigs/j/json-c/json-c-0.17-GCCcore-13.2.0.eb @@ -0,0 +1,32 @@ +easyblock = 'CMakeMake' + +name = 'json-c' +version = '0.17' +local_suff = '-20230812' + +homepage = 'https://github.com/json-c/json-c' +description = """JSON-C implements a reference counting object model that allows you to easily construct JSON objects + in C, output them as JSON formatted strings and parse JSON formatted strings back into the C representation of JSON +objects.""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +source_urls = ['https://github.com/json-c/json-c/archive/'] +sources = ['json-c-%%(version)s%s.tar.gz' % local_suff] +checksums = ['024d302a3aadcbf9f78735320a6d5aedf8b77876c8ac8bbb95081ca55054c7eb'] + +builddependencies = [ + ('binutils', '2.40'), + ('CMake', '3.27.6'), +] + +# disable using Valgrind during the tests to avoid failures caused by using an OS Valgrind +pretestopts = 'USE_VALGRIND=0 ' +runtest = 'test' + +sanity_check_paths = { + 'files': ['lib/libjson-c.a', 'lib/libjson-c.%s' % SHLIB_EXT, 'lib/pkgconfig/json-c.pc'], + 'dirs': ['include/json-c'], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/l/LERC/LERC-4.0.0-GCCcore-13.2.0.eb b/easybuild/easyconfigs/l/LERC/LERC-4.0.0-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..160bcf96383 --- /dev/null +++ b/easybuild/easyconfigs/l/LERC/LERC-4.0.0-GCCcore-13.2.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.2.0'} + +source_urls = ['https://github.com/Esri/lerc/archive/'] +sources = ['v%(version)s.tar.gz'] +checksums = ['91431c2b16d0e3de6cbaea188603359f87caed08259a645fd5a3805784ee30a0'] + +builddependencies = [ + ('binutils', '2.40'), + ('CMake', '3.27.6'), +] + +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/libarchive/libarchive-3.6.0_fix-tar-error-reporting.patch b/easybuild/easyconfigs/l/libarchive/libarchive-3.6.0_fix-tar-error-reporting.patch new file mode 100644 index 00000000000..57857d416a2 --- /dev/null +++ b/easybuild/easyconfigs/l/libarchive/libarchive-3.6.0_fix-tar-error-reporting.patch @@ -0,0 +1,27 @@ +see https://github.com/libarchive/libarchive/pull/2101 +From e200fd8abfb4cf895a1cab4d89b67e6eefe83942 Mon Sep 17 00:00:00 2001 +From: Ed Maste +Date: Fri, 29 Mar 2024 16:38:11 -0400 +Subject: [PATCH] tar: make error reporting more robust and use correct errno + +As discussed in #1609. +--- + tar/read.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/tar/read.c b/tar/read.c +index af3d3f423..a7f14a07b 100644 +--- a/tar/read.c ++++ b/tar/read.c +@@ -371,8 +371,9 @@ read_archive(struct bsdtar *bsdtar, char mode, struct archive *writer) + if (r != ARCHIVE_OK) { + if (!bsdtar->verbose) + safe_fprintf(stderr, "%s", archive_entry_pathname(entry)); +- fprintf(stderr, ": %s: ", archive_error_string(a)); +- fprintf(stderr, "%s", strerror(errno)); ++ safe_fprintf(stderr, ": %s: %s", ++ archive_error_string(a), ++ strerror(archive_errno(a))); + if (!bsdtar->verbose) + fprintf(stderr, "\n"); + bsdtar->return_value = 1; diff --git a/easybuild/easyconfigs/l/libarchive/libarchive-3.6.1-GCCcore-11.3.0.eb b/easybuild/easyconfigs/l/libarchive/libarchive-3.6.1-GCCcore-11.3.0.eb index 2f0d0841e1b..770e79b1663 100644 --- a/easybuild/easyconfigs/l/libarchive/libarchive-3.6.1-GCCcore-11.3.0.eb +++ b/easybuild/easyconfigs/l/libarchive/libarchive-3.6.1-GCCcore-11.3.0.eb @@ -13,7 +13,12 @@ toolchain = {'name': 'GCCcore', 'version': '11.3.0'} source_urls = ['https://www.libarchive.org/downloads/'] sources = [SOURCE_TAR_GZ] -checksums = ['c676146577d989189940f1959d9e3980d28513d74eedfbc6b7f15ea45fe54ee2'] +patches = ['libarchive-3.6.0_fix-tar-error-reporting.patch'] +checksums = [ + {'libarchive-3.6.1.tar.gz': 'c676146577d989189940f1959d9e3980d28513d74eedfbc6b7f15ea45fe54ee2'}, + {'libarchive-3.6.0_fix-tar-error-reporting.patch': + 'cf11f2d6e403cbb700f8ad1f67141f2a54884fa25e07d6a7919b0b6865d2cba2'}, +] builddependencies = [ ('binutils', '2.38'), diff --git a/easybuild/easyconfigs/l/libarchive/libarchive-3.6.1-GCCcore-12.2.0.eb b/easybuild/easyconfigs/l/libarchive/libarchive-3.6.1-GCCcore-12.2.0.eb index 8cc05cbcb01..aa2a9c42b8d 100644 --- a/easybuild/easyconfigs/l/libarchive/libarchive-3.6.1-GCCcore-12.2.0.eb +++ b/easybuild/easyconfigs/l/libarchive/libarchive-3.6.1-GCCcore-12.2.0.eb @@ -13,7 +13,12 @@ toolchain = {'name': 'GCCcore', 'version': '12.2.0'} source_urls = ['https://www.libarchive.org/downloads/'] sources = [SOURCE_TAR_GZ] -checksums = ['c676146577d989189940f1959d9e3980d28513d74eedfbc6b7f15ea45fe54ee2'] +patches = ['libarchive-3.6.0_fix-tar-error-reporting.patch'] +checksums = [ + {'libarchive-3.6.1.tar.gz': 'c676146577d989189940f1959d9e3980d28513d74eedfbc6b7f15ea45fe54ee2'}, + {'libarchive-3.6.0_fix-tar-error-reporting.patch': + 'cf11f2d6e403cbb700f8ad1f67141f2a54884fa25e07d6a7919b0b6865d2cba2'}, +] builddependencies = [ ('binutils', '2.39'), diff --git a/easybuild/easyconfigs/l/libarchive/libarchive-3.6.2-GCCcore-12.3.0.eb b/easybuild/easyconfigs/l/libarchive/libarchive-3.6.2-GCCcore-12.3.0.eb index 8460682342f..0e1fd34ce1f 100644 --- a/easybuild/easyconfigs/l/libarchive/libarchive-3.6.2-GCCcore-12.3.0.eb +++ b/easybuild/easyconfigs/l/libarchive/libarchive-3.6.2-GCCcore-12.3.0.eb @@ -13,7 +13,12 @@ toolchain = {'name': 'GCCcore', 'version': '12.3.0'} source_urls = ['https://www.libarchive.org/downloads/'] sources = [SOURCE_TAR_GZ] -checksums = ['ba6d02f15ba04aba9c23fd5f236bb234eab9d5209e95d1c4df85c44d5f19b9b3'] +patches = ['libarchive-3.6.0_fix-tar-error-reporting.patch'] +checksums = [ + {'libarchive-3.6.2.tar.gz': 'ba6d02f15ba04aba9c23fd5f236bb234eab9d5209e95d1c4df85c44d5f19b9b3'}, + {'libarchive-3.6.0_fix-tar-error-reporting.patch': + 'cf11f2d6e403cbb700f8ad1f67141f2a54884fa25e07d6a7919b0b6865d2cba2'}, +] builddependencies = [ ('binutils', '2.40'), diff --git a/easybuild/easyconfigs/l/libarchive/libarchive-3.6.2-GCCcore-13.1.0.eb b/easybuild/easyconfigs/l/libarchive/libarchive-3.6.2-GCCcore-13.1.0.eb index f0260cb95ae..086b414eec2 100644 --- a/easybuild/easyconfigs/l/libarchive/libarchive-3.6.2-GCCcore-13.1.0.eb +++ b/easybuild/easyconfigs/l/libarchive/libarchive-3.6.2-GCCcore-13.1.0.eb @@ -13,7 +13,12 @@ toolchain = {'name': 'GCCcore', 'version': '13.1.0'} source_urls = ['https://www.libarchive.org/downloads/'] sources = [SOURCE_TAR_GZ] -checksums = ['ba6d02f15ba04aba9c23fd5f236bb234eab9d5209e95d1c4df85c44d5f19b9b3'] +patches = ['libarchive-3.6.0_fix-tar-error-reporting.patch'] +checksums = [ + {'libarchive-3.6.2.tar.gz': 'ba6d02f15ba04aba9c23fd5f236bb234eab9d5209e95d1c4df85c44d5f19b9b3'}, + {'libarchive-3.6.0_fix-tar-error-reporting.patch': + 'cf11f2d6e403cbb700f8ad1f67141f2a54884fa25e07d6a7919b0b6865d2cba2'}, +] builddependencies = [ ('binutils', '2.40'), diff --git a/easybuild/easyconfigs/l/libarchive/libarchive-3.7.2-GCCcore-13.2.0.eb b/easybuild/easyconfigs/l/libarchive/libarchive-3.7.2-GCCcore-13.2.0.eb index c31b668a246..8cfed22355c 100644 --- a/easybuild/easyconfigs/l/libarchive/libarchive-3.7.2-GCCcore-13.2.0.eb +++ b/easybuild/easyconfigs/l/libarchive/libarchive-3.7.2-GCCcore-13.2.0.eb @@ -13,7 +13,12 @@ toolchain = {'name': 'GCCcore', 'version': '13.2.0'} source_urls = ['https://www.libarchive.org/downloads/'] sources = [SOURCE_TAR_GZ] -checksums = ['df404eb7222cf30b4f8f93828677890a2986b66ff8bf39dac32a804e96ddf104'] +patches = ['libarchive-3.6.0_fix-tar-error-reporting.patch'] +checksums = [ + {'libarchive-3.7.2.tar.gz': 'df404eb7222cf30b4f8f93828677890a2986b66ff8bf39dac32a804e96ddf104'}, + {'libarchive-3.6.0_fix-tar-error-reporting.patch': + 'cf11f2d6e403cbb700f8ad1f67141f2a54884fa25e07d6a7919b0b6865d2cba2'}, +] builddependencies = [ ('binutils', '2.40'), diff --git a/easybuild/easyconfigs/l/lit/lit-18.1.2-GCCcore-12.3.0.eb b/easybuild/easyconfigs/l/lit/lit-18.1.2-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..6a3a7a89851 --- /dev/null +++ b/easybuild/easyconfigs/l/lit/lit-18.1.2-GCCcore-12.3.0.eb @@ -0,0 +1,28 @@ +easyblock = 'PythonBundle' + +name = 'lit' +version = '18.1.2' + +homepage = 'https://llvm.org/docs/CommandGuide/lit.html' +description = """lit is a portable tool for executing LLVM and Clang style test suites, summarizing their results, and +providing indication of failures.""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +builddependencies = [ + ('binutils', '2.40'), +] + +dependencies = [ + ('Python', '3.11.3'), +] + +exts_list = [ + (name, version, { + 'checksums': ['fdead6e464f9d975d31a937b82e1162d0768d61a0e5d8ee55991a33ed4aa7128'], + }), +] + +sanity_check_commands = ['lit -h'] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/l/loomR/loomR-0.2.0-20180425-foss-2023a-R-4.3.2.eb b/easybuild/easyconfigs/l/loomR/loomR-0.2.0-20180425-foss-2023a-R-4.3.2.eb new file mode 100644 index 00000000000..6cdcc1ed066 --- /dev/null +++ b/easybuild/easyconfigs/l/loomR/loomR-0.2.0-20180425-foss-2023a-R-4.3.2.eb @@ -0,0 +1,29 @@ +easyblock = 'RPackage' + +name = 'loomR' +local_commit = 'df0144b' +# see DESCRIPTION to determine version, +# but add date stamp of commit since version is not always bumped +version = '0.2.0-20180425' +versionsuffix = '-R-%(rver)s' + +homepage = 'https://github.com/mojaveazure/loomR' +description = "An R interface for loom files" + +toolchain = {'name': 'foss', 'version': '2023a'} + +source_urls = ['https://github.com/mojaveazure/loomR/archive/'] +sources = [{'download_filename': '%s.tar.gz' % local_commit, 'filename': SOURCE_TAR_GZ}] +checksums = ['6264448baf4fd9a569eb5a832598c4a224382ef26c0a7fbd061a8c901672f0ac'] + +dependencies = [ + ('R', '4.3.2'), + ('R-bundle-Bioconductor', '3.18', versionsuffix), +] + +sanity_check_paths = { + 'files': [], + 'dirs': [name], +} + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/m/MICOM/MICOM-0.33.2-foss-2023b.eb b/easybuild/easyconfigs/m/MICOM/MICOM-0.33.2-foss-2023b.eb new file mode 100644 index 00000000000..9d3fce89c32 --- /dev/null +++ b/easybuild/easyconfigs/m/MICOM/MICOM-0.33.2-foss-2023b.eb @@ -0,0 +1,41 @@ +easyblock = 'PythonBundle' + +name = 'MICOM' +version = '0.33.2' + +homepage = 'https://github.com/micom-dev/micom' +description = "Python package to study microbial communities using metabolic modeling." + +toolchain = {'name': 'foss', 'version': '2023b'} + +builddependencies = [ + ('CMake', '3.27.6'), + ('hatchling', '1.18.0'), + ('SWIG', '4.1.1'), +] + +dependencies = [ + ('Python', '3.11.5'), + ('Python-bundle-PyPI', '2023.10'), + ('SciPy-bundle', '2023.11'), + ('COBRApy', '0.29.0'), + ('scikit-learn', '1.4.0'), + ('SymEngine-python', '0.11.0'), + ('PyYAML', '6.0.1'), + ('coverage', '7.4.4'), + ('HiGHS', '1.7.0'), +] + +exts_list = [ + ('qdldl', '0.1.7.post0', { + 'checksums': ['f346a114c8342ee6d4dbd6471eef314199fb268d3bf7b95885ca351fde2b023f'], + }), + ('osqp', '0.6.5', { + 'checksums': ['b2810aee7be2373add8b6c0be5ad99b810288774abca421751cb032d6a5aedef'], + }), + ('micom', version, { + 'checksums': ['0fd335b178badcd9a1d96d1b6f2568b15da922be2fa57e8a6004971510f3708b'], + }), +] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/m/Markdown/Markdown-3.6-GCCcore-12.2.0.eb b/easybuild/easyconfigs/m/Markdown/Markdown-3.6-GCCcore-12.2.0.eb new file mode 100644 index 00000000000..a2a83aca388 --- /dev/null +++ b/easybuild/easyconfigs/m/Markdown/Markdown-3.6-GCCcore-12.2.0.eb @@ -0,0 +1,20 @@ +easyblock = 'PythonPackage' + +name = 'Markdown' +version = '3.6' + +homepage = 'https://python-markdown.github.io/' +description = """This is a Python implementation of John Gruber's Markdown. +It is almost completely compliant with the reference implementation, though there are a few known issues. +Additional features are supported by the Available Extensions. +""" + +toolchain = {'name': 'GCCcore', 'version': '12.2.0'} + +sources = [SOURCE_TAR_GZ] +checksums = ['ed4f41f6daecbeeb96e576ce414c41d2d876daa9a16cb35fa8ed8c2ddfad0224'] + +builddependencies = [('binutils', '2.39')] +dependencies = [('Python', '3.10.8')] + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/m/Markdown/Markdown-3.6-GCCcore-13.2.0.eb b/easybuild/easyconfigs/m/Markdown/Markdown-3.6-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..5b55773a95b --- /dev/null +++ b/easybuild/easyconfigs/m/Markdown/Markdown-3.6-GCCcore-13.2.0.eb @@ -0,0 +1,25 @@ +easyblock = 'PythonPackage' + +name = 'Markdown' +version = '3.6' + +homepage = 'https://python-markdown.github.io/' +description = """This is a Python implementation of John Gruber's Markdown. +It is almost completely compliant with the reference implementation, though there are a few known issues. +Additional features are supported by the Available Extensions. +""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +sources = [SOURCE_TAR_GZ] +checksums = ['ed4f41f6daecbeeb96e576ce414c41d2d876daa9a16cb35fa8ed8c2ddfad0224'] + +builddependencies = [ + ('binutils', '2.40'), +] + +dependencies = [ + ('Python', '3.11.5'), +] + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/m/Miniforge3/Miniforge3-24.1.2-0.eb b/easybuild/easyconfigs/m/Miniforge3/Miniforge3-24.1.2-0.eb new file mode 100644 index 00000000000..5ab8d2c7a11 --- /dev/null +++ b/easybuild/easyconfigs/m/Miniforge3/Miniforge3-24.1.2-0.eb @@ -0,0 +1,26 @@ +easyblock = 'EB_Mamba' + +name = 'Miniforge3' +version = '24.1.2-0' + +homepage = 'https://github.com/conda-forge/miniforge' +description = """Miniforge is a free minimal installer for conda and Mamba specific + to conda-forge.""" + +toolchain = SYSTEM + +source_urls = ['https://github.com/conda-forge/miniforge/releases/download/%(version)s'] +local_arch = {'arm64': 'aarch64'}.get(ARCH, ARCH) +sources = ['%%(name)s-%%(version)s-Linux-%s.sh' % local_arch] +checksums = [ + { + '%(name)s-%(version)s-Linux-x86_64.sh': + 'dbadb808edf4da00af35d888d3eeebbfdce71972b60bf4b16dbacaee2ab57f28', + '%(name)s-%(version)s-Linux-ppc64le.sh': + '858b9acbcca1e3f67298a56095f547f2c540d79e1020918cf0d8d6a8af407542', + '%(name)s-py312_%(version)s-Linux-aarch64.sh': + 'f881e2fa24aa898c25fac3250ccb213e8b892fdd95851f000dce93c419e8f89a', + } +] + +moduleclass = 'lang' diff --git a/easybuild/easyconfigs/m/MotionCor3/MotionCor3-1.0.1-GCCcore-12.3.0-CUDA-12.1.1.eb b/easybuild/easyconfigs/m/MotionCor3/MotionCor3-1.0.1-GCCcore-12.3.0-CUDA-12.1.1.eb new file mode 100644 index 00000000000..fc4fec158f3 --- /dev/null +++ b/easybuild/easyconfigs/m/MotionCor3/MotionCor3-1.0.1-GCCcore-12.3.0-CUDA-12.1.1.eb @@ -0,0 +1,57 @@ +# Thomas Hoffmann, EMBL Heidelberg, structures-it@embl.de, 2024/1 +easyblock = 'MakeCp' + +name = 'MotionCor3' +version = '1.0.1' +versionsuffix = '-CUDA-%(cudaver)s' + +homepage = 'https://github.com/czimaginginstitute/MotionCor3' + +description = """Anisotropic correction of beam induced motion for cryo-electron microscopy and +cryo-electron tomography images. +MotionCor3, an improved implementation of MotionCor2 with addition of CTF +(Contrast Transfer Function) estimation, is a multi-GPU accelerated software +package that enables single-pixel level correction of anisotropic beam induced +sample motion for cryo-electron microscopy and cryo-electron tomography images. +The iterative, patch-based motion detection combined with spatial and temporal +constraints and dose weighting provides robust and accurate correction. By +refining the measurement of early motion, MotionCor3 further improves correction +on tilted samples. The efficiency achieved by multi-GPU acceleration and +parallelization enables correction to keep pace with automated data collection. +The recent addition of a very robust GPU-accelerated CTF estimation makes +MotionCor3 more versatile in cryoEM and cryoET processing pipeline.""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} +toolchainopts = {'cstd': 'c++11'} + +source_urls = [GITHUB_SOURCE] +sources = ['v%(version)s.tar.gz'] +patches = ['%(name)s-%(version)s_makefile.patch'] +checksums = [ + {'v1.0.1.tar.gz': '9b1eaa43f67c6ca54c1cea6ad53ee78726a14a87a3c5d91e7820786ebe0786a3'}, + {'MotionCor3-1.0.1_makefile.patch': 'd047c1f097eead3173a60fd3ae821ee7b285728bf8470f496021580f11875d12'}, +] + +github_account = 'czimaginginstitute' + +build_cmd = 'make exe -f makefile11 CUDAHOME=$CUDA_HOME CUDACC="%(cuda_cc_cmake)s"' + +builddependencies = [ + ('binutils', '2.40') +] + +dependencies = [ + ('CUDA', '12.1.1', '', SYSTEM), + ('LibTIFF', '4.5.0'), +] + +files_to_copy = [(['%(name)s'], 'bin')] + +sanity_check_paths = { + 'files': ['bin/%(name)s'], + 'dirs': ['bin'], +} + +sanity_check_commands = ['%(name)s --help'] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/m/MotionCor3/MotionCor3-1.0.1_makefile.patch b/easybuild/easyconfigs/m/MotionCor3/MotionCor3-1.0.1_makefile.patch new file mode 100644 index 00000000000..0a99204e2dd --- /dev/null +++ b/easybuild/easyconfigs/m/MotionCor3/MotionCor3-1.0.1_makefile.patch @@ -0,0 +1,54 @@ +# Thomas Hoffmann, EBML Heidelberg, structures-it@embl.de, 2023/10 +# allow to inject cuda compute capabilities and cfalgs +diff -ru MotionCor3-1.0.1/makefile11 MotionCor3-1.0.1_makefile/makefile11 +--- MotionCor3-1.0.1/makefile11 2023-10-25 23:59:50.000000000 +0200 ++++ MotionCor3-1.0.1_makefile/makefile11 2023-10-31 14:24:25.377992618 +0100 +@@ -1,6 +1,6 @@ + PRJHOME = $(shell pwd) + CONDA = $(HOME)/miniconda3 +-CUDAHOME = $(HOME)/nvidia/cuda-12.1 ++#CUDAHOME = $(HOME)/nvidia/cuda-12.1 + CUDAINC = $(CUDAHOME)/include + CUDALIB = $(CUDAHOME)/lib64 + PRJINC = $(PRJHOME)/Include +@@ -139,18 +139,21 @@ + $(CUCPPS) + OBJS = $(patsubst %.cpp, %.o, $(SRCS)) + #------------------------------------- +-CC = g++ -std=c++11 +-CFLAG = -c -g -pthread -m64 ++#CC = g++ -std=c++11 ++CFLAG = -c -g -pthread -m64 $(CFLAGS) + NVCC = $(CUDAHOME)/bin/nvcc -std=c++11 +-CUFLAG = -Xptxas -dlcm=ca -O2 \ +- -gencode arch=compute_86,code=sm_86 \ +- -gencode arch=compute_80,code=sm_80 \ +- -gencode arch=compute_75,code=sm_75 \ +- -gencode arch=compute_70,code=sm_70 \ +- -gencode arch=compute_52,code=sm_52 \ +- -gencode arch=compute_53,code=sm_53 \ +- -gencode arch=compute_60,code=sm_60 \ +- -gencode arch=compute_61,code=sm_61 ++SPACE= ' ' ++SEMI= ; ++GENCODES = $(foreach x,$(subst $(SEMI),$(SPACE),$(CUDACC)),-gencode arch=compute_$x,code=sm_$x) ++CUFLAG = -Xptxas -dlcm=ca -O2 $(GENCODES) ++# -gencode arch=compute_86,code=sm_86 \ ++# -gencode arch=compute_80,code=sm_80 \ ++# -gencode arch=compute_75,code=sm_75 \ ++# -gencode arch=compute_70,code=sm_70 \ ++# -gencode arch=compute_52,code=sm_52 \ ++# -gencode arch=compute_53,code=sm_53 \ ++# -gencode arch=compute_60,code=sm_60 \ ++# -gencode arch=compute_61,code=sm_61 + #------------------------------------------ + cuda: $(CUCPPS) + +@@ -165,6 +168,7 @@ + -lcufft -lcudart -lcuda -lnvToolsExt -ltiff -lc -lm -lpthread \ + -o MotionCor3 + @echo MotionCor3 has been generated. ++ @echo used cuda gencodes: $(GENCODES) + + %.cpp: %.cu + @echo "-----------------------------------------------" diff --git a/easybuild/easyconfigs/m/magma/magma-2.7.1-foss-2022b-CUDA-11.7.0.eb b/easybuild/easyconfigs/m/magma/magma-2.7.1-foss-2022b-CUDA-11.7.0.eb new file mode 100644 index 00000000000..6ac5dc2ddce --- /dev/null +++ b/easybuild/easyconfigs/m/magma/magma-2.7.1-foss-2022b-CUDA-11.7.0.eb @@ -0,0 +1,40 @@ +easyblock = 'CMakeMake' + +name = 'magma' +version = '2.7.1' +versionsuffix = '-CUDA-%(cudaver)s' + +homepage = 'https://icl.cs.utk.edu/magma/' +description = """The MAGMA project aims to develop a dense linear algebra library similar to + LAPACK but for heterogeneous/hybrid architectures, starting with current Multicore+GPU systems.""" + +toolchain = {'name': 'foss', 'version': '2022b'} +toolchainopts = {'pic': True, 'openmp': True} + +source_urls = ['https://icl.cs.utk.edu/projectsfiles/%(name)s/downloads/'] +sources = [SOURCE_TAR_GZ] +checksums = ['d9c8711c047a38cae16efde74bee2eb3333217fd2711e1e9b8606cbbb4ae1a50'] + +builddependencies = [ + ('CMake', '3.24.3'), +] +dependencies = [ + ('CUDA', '11.7.0', '', SYSTEM), + ('UCX-CUDA', '1.13.1', versionsuffix), +] + +# default CUDA compute capabilities to use (override via --cuda-compute-capabilities) +cuda_compute_capabilities = ['3.5', '5.0', '6.0', '7.0', '7.5', '8.0', '8.6'] + +# make sure both static and shared libs are built +local_common_opts = '-DCMAKE_CUDA_FLAGS=-allow-unsupported-compiler -DGPU_TARGET="%%(cuda_sm_space_sep)s"' +configopts = [ + (local_common_opts + ' -DBUILD_SHARED_LIBS=%s ') % local_shared for local_shared in ('ON', 'OFF') +] + +sanity_check_paths = { + 'files': ['lib/libmagma.%s' % SHLIB_EXT, 'lib/libmagma.a'], + 'dirs': ['include'], +} + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/m/medaka/medaka-1.11.3-foss-2023a.eb b/easybuild/easyconfigs/m/medaka/medaka-1.11.3-foss-2023a.eb new file mode 100644 index 00000000000..57408658cea --- /dev/null +++ b/easybuild/easyconfigs/m/medaka/medaka-1.11.3-foss-2023a.eb @@ -0,0 +1,74 @@ +# This is a contribution from HPCNow! (http://hpcnow.com) +# Copyright:: HPCNow! +# Authors:: Danilo Gonzalez +# License:: GPL-v3.0 +# Updated to foss-2020b to use with artic tool +# J. Sassmannshausen (GSTT/NHS UK) +# Updated to 1.5.0 +# Jasper Grimm (UoY) +# Updated: Petr Král (INUITS) + +easyblock = 'PythonBundle' + +name = 'medaka' +version = '1.11.3' + +homepage = 'https://github.com/nanoporetech/medaka' +description = "medaka is a tool to create a consensus sequence from nanopore sequencing data." + +toolchain = {'name': 'foss', 'version': '2023a'} +toolchainopts = {'pic': True} + +builddependencies = [('Autotools', '20220317')] + +_minimap_ver = '2.26' +dependencies = [ + ('Python', '3.11.3'), + ('Python-bundle-PyPI', '2023.06'), # includes cffi + # tensorflow~=2.10.0 required by medaka 1.9.1, see requirements.txt + ('TensorFlow', '2.13.0'), + ('Pysam', '0.22.0'), + ('SAMtools', '1.18'), + ('minimap2', _minimap_ver), + ('HTSlib', '1.18'), # for tabix, bgzip + ('Racon', '1.5.0'), + ('edlib', '1.3.9'), + ('pyspoa', '0.2.1'), + ('python-parasail', '1.3.4'), + ('ont-fast5-api', '4.1.2'), + ('WhatsHap', '2.2'), + ('intervaltree-python', '3.1.0'), + ('BCFtools', '1.18'), +] + +local_sed_commands = [ + "sed -i 's/tensorflow.*/tensorflow/g;s/cffi==1.15.0/cffi/g' requirements.txt pyproject.toml", + # Python 3.11 support + "sed -i 's/8, 9, 10/8, 9, 10, 11/g;s/,<3.11//g' setup.py", +] + +exts_list = [ + ('mappy', _minimap_ver, { + 'checksums': ['e53fbe9a3ea8762a64b8103f4f779c9fb16d418eaa0a731f45cebc83867a9b71'], + }), + ('wurlitzer', '3.0.3', { + 'checksums': ['224f5fe70618be3872c05dfddc8c457191ec1870654596279fcc1edadebe3e5b'], + }), + (name, version, { + 'checksums': ['940568212d152f573270967b02f6e841561cc43138b6aa15783c371457fef7b9'], + # Some requirements are too strict. + 'preinstallopts': " && ".join(local_sed_commands) + " && ", + }), +] + +sanity_check_paths = { + 'files': ['bin/medaka', 'bin/medaka_consensus', 'bin/medaka_version_report'], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +sanity_check_commands = [ + "medaka --help", + "medaka_version_report", +] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/n/NCCL/NCCL-2.16.2-GCCcore-12.2.0-CUDA-11.7.0.eb b/easybuild/easyconfigs/n/NCCL/NCCL-2.16.2-GCCcore-12.2.0-CUDA-11.7.0.eb new file mode 100644 index 00000000000..ebbd8221383 --- /dev/null +++ b/easybuild/easyconfigs/n/NCCL/NCCL-2.16.2-GCCcore-12.2.0-CUDA-11.7.0.eb @@ -0,0 +1,33 @@ +name = 'NCCL' +version = '2.16.2' +versionsuffix = '-CUDA-%(cudaver)s' + +homepage = 'https://developer.nvidia.com/nccl' +description = """The NVIDIA Collective Communications Library (NCCL) implements multi-GPU and multi-node collective +communication primitives that are performance optimized for NVIDIA GPUs.""" + +toolchain = {'name': 'GCCcore', 'version': '12.2.0'} + +github_account = 'NVIDIA' +source_urls = [GITHUB_SOURCE] +sources = ['v%(version)s-1.tar.gz'] +patches = ['NCCL-2.16.2_fix-cpuid.patch'] +checksums = [ + {'v2.16.2-1.tar.gz': '7f7c738511a8876403fc574d13d48e7c250d934d755598d82e14bab12236fc64'}, + {'NCCL-2.16.2_fix-cpuid.patch': '0459ecadcd32b2a7a000a2ce4f675afba908b2c0afabafde585330ff4f83e277'}, +] + +builddependencies = [('binutils', '2.39')] + +dependencies = [ + ('CUDA', '11.7.0', '', SYSTEM), + ('UCX-CUDA', '1.13.1', versionsuffix), +] + +prebuildopts = "sed -i 's/NVCUFLAGS := /NVCUFLAGS := -allow-unsupported-compiler /' makefiles/common.mk && " +buildopts = "VERBOSE=1" + +# default CUDA compute capabilities to use (override via --cuda-compute-capabilities) +cuda_compute_capabilities = ['3.5', '5.0', '6.0', '7.0', '7.5', '8.0', '8.6'] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/n/NGSpeciesID/NGSpeciesID-0.3.0-foss-2023a.eb b/easybuild/easyconfigs/n/NGSpeciesID/NGSpeciesID-0.3.0-foss-2023a.eb new file mode 100644 index 00000000000..6c1562dccaa --- /dev/null +++ b/easybuild/easyconfigs/n/NGSpeciesID/NGSpeciesID-0.3.0-foss-2023a.eb @@ -0,0 +1,37 @@ +easyblock = 'PythonPackage' + +name = 'NGSpeciesID' +version = '0.3.0' + +homepage = 'https://github.com/ksahlin/NGSpeciesID' +description = "NGSpeciesID is a tool for clustering and consensus forming of targeted ONT reads." + +toolchain = {'name': 'foss', 'version': '2023a'} + +sources = [SOURCE_TAR_GZ] +checksums = ['71663ce280220d4e692cc6c3aea44f91e40b3143ed09a9462bdf2feb1d94aa9f'] + +dependencies = [ + ('Python', '3.11.3'), + ('python-parasail', '1.3.4'), + ('edlib', '1.3.9'), + ('medaka', '1.11.3'), + ('spoa', '4.1.0'), + ('Racon', '1.5.0'), + ('minimap2', '2.26'), +] + +# no proper namespace for NGSpeciesID +options = {'modulename': 'modules.consensus'} + +# parasail requirements are too strict +preinstallopts = "sed -i 's/parasail==/parasail>=/g' setup.py && " + +sanity_check_paths = { + 'files': ['bin/NGSpeciesID'], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +sanity_check_commands = ["NGSpeciesID --help"] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/n/NSS/NSS-3.89.1-GCCcore-12.3.0.eb b/easybuild/easyconfigs/n/NSS/NSS-3.89.1-GCCcore-12.3.0.eb index 7b9beb5c086..9e06f5845d3 100644 --- a/easybuild/easyconfigs/n/NSS/NSS-3.89.1-GCCcore-12.3.0.eb +++ b/easybuild/easyconfigs/n/NSS/NSS-3.89.1-GCCcore-12.3.0.eb @@ -22,7 +22,10 @@ checksums = [ '15768297c5dd6918132af281531afcfe3e358f45a00bc2655d20a6cbe4310a9b'}, ] -builddependencies = [('binutils', '2.40')] +builddependencies = [ + ('binutils', '2.40'), + ('Perl', '5.36.1'), +] dependencies = [ ('NSPR', '4.35'), diff --git a/easybuild/easyconfigs/n/NSS/NSS-3.94-GCCcore-13.2.0.eb b/easybuild/easyconfigs/n/NSS/NSS-3.94-GCCcore-13.2.0.eb index 98dcf8eb5b5..bc0a97c325d 100644 --- a/easybuild/easyconfigs/n/NSS/NSS-3.94-GCCcore-13.2.0.eb +++ b/easybuild/easyconfigs/n/NSS/NSS-3.94-GCCcore-13.2.0.eb @@ -22,7 +22,10 @@ checksums = [ '15768297c5dd6918132af281531afcfe3e358f45a00bc2655d20a6cbe4310a9b'}, ] -builddependencies = [('binutils', '2.40')] +builddependencies = [ + ('binutils', '2.40'), + ('Perl', '5.38.0'), +] dependencies = [ ('NSPR', '4.35'), diff --git a/easybuild/easyconfigs/n/nf-core/nf-core-2.10-foss-2022b.eb b/easybuild/easyconfigs/n/nf-core/nf-core-2.10-foss-2022b.eb new file mode 100644 index 00000000000..82fa7128bce --- /dev/null +++ b/easybuild/easyconfigs/n/nf-core/nf-core-2.10-foss-2022b.eb @@ -0,0 +1,106 @@ +easyblock = 'PythonBundle' + +name = 'nf-core' +version = '2.10' + +homepage = 'https://github.com/nf-core/tools' +description = """Python package with helper tools for the nf-core community.""" + +toolchain = {'name': 'foss', 'version': '2022b'} + +dependencies = [ + ('Python', '3.10.8'), + ('SciPy-bundle', '2023.02'), + ('GitPython', '3.1.31'), + ('Markdown', '3.6'), + ('prompt-toolkit', '3.0.36'), + ('pydantic', '2.5.3'), + ('pyfaidx', '0.7.2.1'), + ('pytest-workflow', '2.0.1'), + ('PyYAML', '6.0'), + ('tqdm', '4.64.1'), +] + +exts_list = [ + ('mdurl', '0.1.2', { + 'checksums': ['bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba'], + }), + ('markdown-it-py', '3.0.0', { + 'modulename': 'markdown_it', + 'checksums': ['e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb'], + }), + ('url-normalize', '1.4.3', { + 'checksums': ['d23d3a070ac52a67b83a1c59a0e68f8608d1cd538783b401bc9de2c0fac999b2'], + }), + ('cattrs', '23.1.2', { + 'checksums': ['db1c821b8c537382b2c7c66678c3790091ca0275ac486c76f3c8f3920e83c657'], + }), + ('requests-cache', '1.1.0', { + 'source_tmpl': 'requests_cache-%(version)s.tar.gz', + 'checksums': ['41b79166aa8e300cc4de982f7ab7c52af914a785160be1eda25c6e9265969a67'], + }), + ('ubiquerg', '0.6.3', { + 'checksums': ['025509c4ec77a5cde8e8be66dabfef2ca6e3cd99da3cb15066c66a6f2bc3b9b5'], + }), + ('oyaml', '1.0', { + 'checksums': ['ed8fc096811f4763e1907dce29c35895d6d5936c4d0400fe843a91133d4744ed'], + }), + ('attmap', '0.13.2', { + 'checksums': ['fdffa45f8671c13428eb8c3a1702bfdd1123badb99f7af14d72ad53cc7e770de'], + }), + ('yacman', '0.9.2', { + 'checksums': ['a98fee7ebf936330a9c249190f1f36eff9444cc744822800fe15f077e46ca867'], + }), + ('refgenconf', '0.12.2', { + 'checksums': ['6c9f9ecd8b91b4f75a535cfbdbdfb136f2dc9e9864142d07aa0352c61cf0cf78'], + }), + ('logmuse', '0.2.7', { + 'checksums': ['a4692c44ddfa912c3cb149ca4c7545f80119aa7485868fd1412e7c647e9a7e7e'], + }), + ('peppy', '0.35.7', { + 'checksums': ['a7227ebb394f2af59e3efcd2f639928966654ad305cc113bedc67e20e2422687'], + }), + ('eido', '0.2.1', { + 'checksums': ['3e4cf582e854482980e4f54dee6e0259b7b866e677818d877573a6d3d2684fe2'], + }), + ('pipestat', '0.6.0', { + 'checksums': ['8dbb05e483663e7135a6c58faeaa8ca7a7ed95532202abfc240cc9324d9bfd9d'], + }), + ('piper', '0.13.2', { + 'modulename': 'pypiper', + 'checksums': ['edc68583bf7925a44ed0cf439cd059bec51499cd70b4ff8a81ed67a9b0093867'], + }), + ('refgenie', '0.12.1', { + 'checksums': ['cfd007ed0981e00d019deb49aaea896952341096494165cb8378488850eec451'], + }), + ('questionary', '2.0.1', { + 'checksums': ['bcce898bf3dbb446ff62830c86c5c6fb9a22a54146f0f5597d3da43b10d8fc8b'], + }), + ('nodeenv', '1.8.0', { + 'checksums': ['d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2'], + }), + ('identify', '2.5.30', { + 'checksums': ['f302a4256a15c849b91cfcdcec052a8ce914634b2f77ae87dad29cd749f2d88d'], + }), + ('cfgv', '3.4.0', { + 'checksums': ['e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560'], + }), + ('pre-commit', '3.5.0', { + 'source_tmpl': 'pre_commit-%(version)s.tar.gz', + 'checksums': ['5804465c675b659b0862f07907f96295d490822a450c4c40e747d0b1c6ebcb32'], + }), + ('filetype', '1.2.0', { + 'checksums': ['66b56cd6474bf41d8c54660347d37afcc3f7d1970648de365c102ef77548aadb'], + }), + ('rich', '13.6.0', { + 'checksums': ['5c14d22737e6d5084ef4771b62d5d4363165b403455a30a1c8ca39dc7b644bef'], + }), + ('rich-click', '1.7.0', { + 'checksums': ['ab34e5d9f7733c4e6072f4de79eb3b35ac9ae78e692ea8a543f3b2828b30fee4'], + }), + (name, version, { + 'checksums': ['5d3b3d51844fd5b2cec73b84aa736980daac54eb548796243db39680ae39980d'], + }), +] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/n/nf-core/nf-core-2.13.1-foss-2023b.eb b/easybuild/easyconfigs/n/nf-core/nf-core-2.13.1-foss-2023b.eb new file mode 100644 index 00000000000..abb32c5903d --- /dev/null +++ b/easybuild/easyconfigs/n/nf-core/nf-core-2.13.1-foss-2023b.eb @@ -0,0 +1,104 @@ +easyblock = 'PythonBundle' + +name = 'nf-core' +version = '2.13.1' + +homepage = 'https://github.com/nf-core/tools' +description = """Python package with helper tools for the nf-core community.""" + +toolchain = {'name': 'foss', 'version': '2023b'} + +builddependencies = [('poetry', '1.6.1')] +dependencies = [ + ('Python', '3.11.5'), + ('SciPy-bundle', '2023.11'), + ('GitPython', '3.1.42'), + ('Markdown', '3.6'), + ('Pillow', '10.2.0'), + ('prompt-toolkit', '3.0.36'), + ('pydantic', '2.6.4'), + ('pyfaidx', '0.8.1.1'), + ('pytest-workflow', '2.1.0'), + ('PyYAML', '6.0.1'), + ('tqdm', '4.66.2'), +] + +exts_list = [ + ('pdiff', '1.1.4', { + 'checksums': ['9d8f6f8e7ed2ee61aa2f2526106c0047a2bd80eab7d1237f7086139a6e921c45'], + }), + ('textual', '0.54.0', { + 'checksums': ['0cfd134dde5ae49d64dd73bb32a2fb5a86d878d9caeacecaa1d640082f31124e'], + }), + ('trogon', '0.5.0', { + 'checksums': ['61a57f0f1a38227d90601cd020f46960be8e36947b5e56c6932c2e01ecc5042a'], + }), + ('url-normalize', '1.4.3', { + 'checksums': ['d23d3a070ac52a67b83a1c59a0e68f8608d1cd538783b401bc9de2c0fac999b2'], + }), + ('cattrs', '23.2.3', { + 'checksums': ['a934090d95abaa9e911dac357e3a8699e0b4b14f8529bcc7d2b1ad9d51672b9f'], + }), + ('requests-cache', '1.2.0', { + 'source_tmpl': 'requests_cache-%(version)s.tar.gz', + 'checksums': ['db1c709ca343cc1cd5b6c8b1a5387298eceed02306a6040760db538c885e3838'], + }), + ('ubiquerg', '0.7.0', { + 'checksums': ['b873ff87651e500fb32ac24a7850abe6261fde65c4c07bf6e0b5f14e32cd9387'], + }), + ('oyaml', '1.0', { + 'checksums': ['ed8fc096811f4763e1907dce29c35895d6d5936c4d0400fe843a91133d4744ed'], + }), + ('attmap', '0.13.2', { + 'checksums': ['fdffa45f8671c13428eb8c3a1702bfdd1123badb99f7af14d72ad53cc7e770de'], + }), + ('yacman', '0.9.3', { + 'checksums': ['91f29ecad7abf32425be034619bd5b00a50fe2be23447b1827c34e1fd68c055d'], + }), + ('refgenconf', '0.12.2', { + 'checksums': ['6c9f9ecd8b91b4f75a535cfbdbdfb136f2dc9e9864142d07aa0352c61cf0cf78'], + }), + ('logmuse', '0.2.7', { + 'checksums': ['a4692c44ddfa912c3cb149ca4c7545f80119aa7485868fd1412e7c647e9a7e7e'], + }), + ('peppy', '0.40.1', { + 'checksums': ['22ed51ae042ec2e1fbfa213205967133319fa498a7f09aa438eccfebfae5e78f'], + }), + ('eido', '0.2.2', { + 'checksums': ['3966c8e91296189d5827d6415843eb300d204c9da9b8a780807ebc5403be2800'], + }), + ('pipestat', '0.8.2', { + 'checksums': ['b1bf52bc6f47a617a597d674e1a0d9a5c66d9771a6fcd8f115039c017021b9c7'], + }), + ('piper', '0.14.0', { + 'modulename': 'pypiper', + 'checksums': ['2d2b226689f2e992da0735f25ea432f16f230bfaef51e732ef50b1b495ce153c'], + }), + ('refgenie', '0.12.1', { + 'checksums': ['cfd007ed0981e00d019deb49aaea896952341096494165cb8378488850eec451'], + }), + ('questionary', '2.0.1', { + 'checksums': ['bcce898bf3dbb446ff62830c86c5c6fb9a22a54146f0f5597d3da43b10d8fc8b'], + }), + ('nodeenv', '1.8.0', { + 'checksums': ['d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2'], + }), + ('identify', '2.5.35', { + 'checksums': ['10a7ca245cfcd756a554a7288159f72ff105ad233c7c4b9c6f0f4d108f5f6791'], + }), + ('cfgv', '3.4.0', { + 'checksums': ['e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560'], + }), + ('pre-commit', '3.7.0', { + 'source_tmpl': 'pre_commit-%(version)s.tar.gz', + 'checksums': ['e209d61b8acdcf742404408531f0c37d49d2c734fd7cff2d6076083d191cb060'], + }), + ('filetype', '1.2.0', { + 'checksums': ['66b56cd6474bf41d8c54660347d37afcc3f7d1970648de365c102ef77548aadb'], + }), + (name, version, { + 'checksums': ['297bb52144a0651b3b718325726b10a14bef0b1b3a1d65a0eadb4badb47c8a6f'], + }), +] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/o/OpenMolcas/OpenMolcas-23.06-intel-2023a.eb b/easybuild/easyconfigs/o/OpenMolcas/OpenMolcas-23.06-intel-2023a.eb index 907f553c656..fea8d5f3c37 100644 --- a/easybuild/easyconfigs/o/OpenMolcas/OpenMolcas-23.06-intel-2023a.eb +++ b/easybuild/easyconfigs/o/OpenMolcas/OpenMolcas-23.06-intel-2023a.eb @@ -13,8 +13,11 @@ source_urls = ['https://gitlab.com/Molcas/OpenMolcas/-/archive/v%(version)s/'] sources = ["%(name)s-v%(version)s.tar.gz"] patches = ['%(name)s-%(version)s_mcpdft_deps.patch'] checksums = [ - {'%(name)s-v%(version)s.tar.gz': 'fe0299ed39af6e84f249f91452c411f9845c9ae4a0ce78641c867dea8056f280'}, - {'%(name)s-%(version)s_mcpdft_deps.patch': 'a798ec6f93a19539aa2211a978da461d4ecd31c5521b9dab6f2a9b1c2fa65f0e'}, + # OpenMolcas-v23.06.tar.gz + ('fe0299ed39af6e84f249f91452c411f9845c9ae4a0ce78641c867dea8056f280', + 'c3c8f31c22e028e1ac3bd8fb405cea83e8a6fcf21f00e71e81a92941cb026415'), + # OpenMolcas-23.06_mcpdft_deps.patch + 'a798ec6f93a19539aa2211a978da461d4ecd31c5521b9dab6f2a9b1c2fa65f0e', ] builddependencies = [('CMake', '3.26.3')] diff --git a/easybuild/easyconfigs/o/Optuna/Optuna-3.5.0-foss-2023a.eb b/easybuild/easyconfigs/o/Optuna/Optuna-3.5.0-foss-2023a.eb new file mode 100644 index 00000000000..51fe9287b7a --- /dev/null +++ b/easybuild/easyconfigs/o/Optuna/Optuna-3.5.0-foss-2023a.eb @@ -0,0 +1,53 @@ +easyblock = 'PythonBundle' + +name = 'Optuna' +version = '3.5.0' + +homepage = "https://optuna.org/" +description = """Optuna is an automatic hyperparameter optimization software framework, +particularly designed for machine learning. It features an imperative, +define-by-run style user API. Thanks to our define-by-run API, the code written +with Optuna enjoys high modularity, and the user of Optuna can dynamically +construct the search spaces for the hyperparameters.""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +dependencies = [ + ('Python', '3.11.3'), + ('PyYAML', '6.0'), + ('SciPy-bundle', '2023.07'), + ('tqdm', '4.66.1'), + ('matplotlib', '3.7.2'), # optional + ('plotly.py', '5.16.0'), # optional + ('redis-py', '5.0.1'), # optional + ('scikit-learn', '1.3.1'), # optional + ('Mako', '1.2.4'), + ('Greenlet', '3.0.2'), +] + +exts_list = [ + ('alembic', '1.13.0', { + 'checksums': ['ab4b3b94d2e1e5f81e34be8a9b7b7575fc9dd5398fccb0bef351ec9b14872623'], + }), + ('cmaes', '0.10.0', { + 'checksums': ['48afc70df027114739872b50489ae6b32461c307b92d084a63c7090a9742faf9'], + }), + ('colorlog', '6.8.0', { + 'checksums': ['fbb6fdf9d5685f2517f388fb29bb27d54e8654dd31f58bc2a3b217e967a95ca6'], + }), + ('SQLAlchemy', '2.0.23', { + 'checksums': ['c1bda93cbbe4aa2aa0aa8655c5aeda505cd219ff3e8da91d1d329e143e4aff69'], + }), + ('optuna', version, { + 'use_pip_extras': 'optional', + 'checksums': ['ca9e1ce16aa6c6a5af0e1cc1d0cbcd98eb1c75b6a2f06be6bd9c0c5ab0698724'], + }), +] + +sanity_check_paths = { + 'files': ['bin/optuna'], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} +sanity_check_commands = [('optuna', '--help')] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/p/ParaView/ParaView-5.12.0-foss-2023b.eb b/easybuild/easyconfigs/p/ParaView/ParaView-5.12.0-foss-2023b.eb new file mode 100644 index 00000000000..018edd70431 --- /dev/null +++ b/easybuild/easyconfigs/p/ParaView/ParaView-5.12.0-foss-2023b.eb @@ -0,0 +1,73 @@ +easyblock = 'CMakeMake' + +name = 'ParaView' +version = '5.12.0' + +homepage = 'https://www.paraview.org' +description = "ParaView is a scientific parallel visualizer." + +toolchain = {'name': 'foss', 'version': '2023b'} +toolchainopts = {'pic': True, 'usempi': True} + +local_download_suffix = 'download.php?submit=Download&version=v%(version_major_minor)s&type=source&os=all&downloadFile=' +source_urls = ['https://www.paraview.org/paraview-downloads/%s' % local_download_suffix] +sources = ["%(name)s-v%(version)s.tar.gz"] +patches = ['ParaView-5.11.1-remove_glew_init_warning.patch'] +checksums = [ + {'ParaView-v5.12.0.tar.gz': '2cc5733608fd508e2da8fc5d4ee693523d350dc1e1f89f9a89a78dc63107f70e'}, + {'ParaView-5.11.1-remove_glew_init_warning.patch': + 'dd86134f3a5b2c1b834224c69665dd31f99ef7d367688fe77dbaada212758710'}, +] + +builddependencies = [('CMake', '3.27.6')] + +dependencies = [ + ('Python', '3.11.5'), + ('SciPy-bundle', '2023.11'), + ('Boost', '1.83.0'), + ('XZ', '5.4.4'), + ('HDF5', '1.14.3'), + ('netCDF', '4.9.2'), + ('libdrm', '2.4.117'), + ('Mesa', '23.1.9'), + ('Qt6', '6.6.3'), + ('zlib', '1.2.13'), + ('FFmpeg', '6.0'), + ('Szip', '2.1.1'), +] + +_copts = [ + # Basic configuration + # Embedded docs not supported with Qt6 https://gitlab.kitware.com/paraview/paraview/-/issues/19742 + '-DPARAVIEW_ENABLE_EMBEDDED_DOCUMENTATION=OFF', + '-DCMAKE_AUTOMOC=OFF', # err Qt6? + '-DPARAVIEW_INSTALL_DEVELOPMENT_FILES=ON', + '-DPARAVIEW_BUILD_SHARED_LIBS=ON', + '-DPARAVIEW_USE_MPI=ON', + '-DPARAVIEW_ENABLE_FFMPEG=ON', + '-DPARAVIEW_USE_PYTHON=ON', + '-DPython3_ROOT_DIR=$EBROOTPYTHON', + # Useful input formats + '-DPARAVIEW_ENABLE_XDMF2=ON', + '-DPARAVIEW_ENABLE_XDMF3=ON', + # EGL, X and Mesa + '-DOPENGL_glu_LIBRARY=$EBROOTLIBGLU/lib/libGLU.%s' % SHLIB_EXT, + '-DOPENGL_INCLUDE_DIR=$EBROOTMESA/include', + '-DEGL_INCLUDE_DIR=$EBROOTLIBGLVND/include', + '-DEGL_LIBRARY=$EBROOTLIBGLVND/lib/libEGL.%s' % SHLIB_EXT, + '-DEGL_opengl_LIBRARY=$EBROOTLIBGLVND/libOpenGL.%s' % SHLIB_EXT, + '-DVTK_OPENGL_HAS_EGL=ON', + '-DVTK_USE_X=ON', + '-DVTK_OPENGL_HAS_OSMESA=OFF'] +configopts = ' '.join(_copts) + +sanity_check_paths = { + 'files': ['bin/paraview', 'bin/pvserver', 'bin/pvpython'], + 'dirs': ['include/paraview-%(version_major_minor)s', 'lib/python%(pyshortver)s/site-packages'], +} + +sanity_check_commands = ['python -c "import paraview"'] + +modextrapaths = {'PYTHONPATH': 'lib/python%(pyshortver)s/site-packages'} + +moduleclass = 'vis' diff --git a/easybuild/easyconfigs/p/PyTorch/PyTorch-1.13.1-foss-2022b-CUDA-11.7.0.eb b/easybuild/easyconfigs/p/PyTorch/PyTorch-1.13.1-foss-2022b-CUDA-11.7.0.eb new file mode 100644 index 00000000000..74ad2dc9d34 --- /dev/null +++ b/easybuild/easyconfigs/p/PyTorch/PyTorch-1.13.1-foss-2022b-CUDA-11.7.0.eb @@ -0,0 +1,197 @@ +name = 'PyTorch' +version = '1.13.1' +versionsuffix = '-CUDA-%(cudaver)s' + +homepage = 'https://pytorch.org/' +description = """Tensors and Dynamic neural networks in Python with strong GPU acceleration. +PyTorch is a deep learning framework that puts Python first.""" + +toolchain = {'name': 'foss', 'version': '2022b'} + +source_urls = [GITHUB_RELEASE] +sources = ['%(namelower)s-v%(version)s.tar.gz'] +patches = [ + 'PyTorch-1.7.0_disable-dev-shm-test.patch', + 'PyTorch-1.10.0_fix-kineto-crash.patch', + 'PyTorch-1.11.0_fix-fp16-quantization-without-fbgemm.patch', + 'PyTorch-1.11.1_skip-test_init_from_local_shards.patch', + 'PyTorch-1.12.0_fix-EmbeddingBag-without-fbgemm.patch', + 'PyTorch-1.12.1_add-hypothesis-suppression.patch', + 'PyTorch-1.12.1_fix-skip-decorators.patch', + 'PyTorch-1.12.1_fix-test_cpp_extensions_jit.patch', + 'PyTorch-1.12.1_fix-test_wishart_log_prob.patch', + 'PyTorch-1.12.1_fix-TestTorch.test_to.patch', + 'PyTorch-1.12.1_fix-use-after-free-in-tensorpipe-agent.patch', + 'PyTorch-1.12.1_fix-vsx-loadu.patch', + 'PyTorch-1.12.1_fix-vsx-vector-funcs.patch', + 'PyTorch-1.12.1_skip-test_round_robin.patch', + 'PyTorch-1.13.1_allow-GCC-12-for-CUDA-11.7.patch', + 'PyTorch-1.13.1_disable-test-sharding.patch', + 'PyTorch-1.13.1_fix-duplicate-kDefaultTimeout-definition.patch', + 'PyTorch-1.13.1_fix-flaky-jit-test.patch', + 'PyTorch-1.13.1_fix-fsdp-fp16-test.patch', + 'PyTorch-1.13.1_fix-fsdp-tp-integration-test.patch', + 'PyTorch-1.13.1_fix-gcc-12-missing-includes.patch', + 'PyTorch-1.13.1_fix-gcc-12-warning-in-fbgemm.patch', + 'PyTorch-1.13.1_fix-kineto-crash-on-exit.patch', + 'PyTorch-1.13.1_fix-numpy-deprecations.patch', + 'PyTorch-1.13.1_fix-protobuf-dependency.patch', + 'PyTorch-1.13.1_fix-pytest-args.patch', + 'PyTorch-1.13.1_fix-python-3.11-compat.patch', + 'PyTorch-1.13.1_fix-test-ops-conf.patch', + 'PyTorch-1.13.1_fix-warning-in-test-cpp-api.patch', + 'PyTorch-1.13.1_fix-wrong-check-in-fsdp-tests.patch', + 'PyTorch-1.13.1_increase-tolerance-test_jit.patch', + 'PyTorch-1.13.1_increase-tolerance-test_ops.patch', + 'PyTorch-1.13.1_increase-tolerance-test_optim.patch', + 'PyTorch-1.13.1_install-vsx-vec-headers.patch', + 'PyTorch-1.13.1_no-cuda-stubs-rpath.patch', + 'PyTorch-1.13.1_remove-flaky-test-in-testnn.patch', + 'PyTorch-1.13.1_skip-failing-grad-test.patch', + 'PyTorch-1.13.1_skip-failing-singular-grad-test.patch', + 'PyTorch-1.13.1_skip-test_find_unused_parameters-detail.patch', + 'PyTorch-1.13.1_skip-test-requiring-online-access.patch', + 'PyTorch-1.13.1_skip-tests-without-fbgemm.patch', + 'PyTorch-1.13.1_workaround-gcc12-destructor-exception-bug.patch', + 'PyTorch-2.0.1_avoid-test_quantization-failures.patch', +] +checksums = [ + {'pytorch-v1.13.1.tar.gz': 'dbc229ee9750b02b514937d017744443a269ea0241ed3f32b9af0703589d25d4'}, + {'PyTorch-1.7.0_disable-dev-shm-test.patch': '622cb1eaeadc06e13128a862d9946bcc1f1edd3d02b259c56a9aecc4d5406b8a'}, + {'PyTorch-1.10.0_fix-kineto-crash.patch': 'dc467333b28162149af8f675929d8c6bf219f23230bfc0d39af02ba4f6f882eb'}, + {'PyTorch-1.11.0_fix-fp16-quantization-without-fbgemm.patch': + 'cc526130b6446bbbf5f0f7372d3aeee3e7d4c4d6e471524dff028b430b152934'}, + {'PyTorch-1.11.1_skip-test_init_from_local_shards.patch': + '4aeb1b0bc863d4801b0095cbce69f8794066748f0df27c6aaaf729c5ecba04b7'}, + {'PyTorch-1.12.0_fix-EmbeddingBag-without-fbgemm.patch': + '090598592283e3fc46ee08a68b6a6afe07be41b26514afba51834408bf1c98ed'}, + {'PyTorch-1.12.1_add-hypothesis-suppression.patch': + 'e71ffb94ebe69f580fa70e0de84017058325fdff944866d6bd03463626edc32c'}, + {'PyTorch-1.12.1_fix-skip-decorators.patch': 'e3ca6e42b2fa592ea095939fb59ab875668a058479407db3f3684cc5c6f4146c'}, + {'PyTorch-1.12.1_fix-test_cpp_extensions_jit.patch': + '1efc9850c431d702e9117d4766277d3f88c5c8b3870997c9974971bce7f2ab83'}, + {'PyTorch-1.12.1_fix-test_wishart_log_prob.patch': + 'cf475ae6e6234b96c8d1bf917597c5176c94b3ccd940b72f2e1cd0c979580f45'}, + {'PyTorch-1.12.1_fix-TestTorch.test_to.patch': '75f27987c3f25c501e719bd2b1c70a029ae0ee28514a97fe447516aee02b1535'}, + {'PyTorch-1.12.1_fix-use-after-free-in-tensorpipe-agent.patch': + '0bd7e88b92c4c6f0fecf01746009858ba19f2df68b10b88c41485328a531875d'}, + {'PyTorch-1.12.1_fix-vsx-loadu.patch': '8bfe3c94ada1dd1f7974a1261a8b576fb7ae944050fa1c7830fca033831123b2'}, + {'PyTorch-1.12.1_fix-vsx-vector-funcs.patch': 'caccbf60f62eac313896c1eaec78b08f5d0fdfcb907079087490bb13d1561aa2'}, + {'PyTorch-1.12.1_skip-test_round_robin.patch': '63d4849b78605aa088fdff695637d9473ea60dee603a3ff7f788690d70c55349'}, + {'PyTorch-1.13.1_allow-GCC-12-for-CUDA-11.7.patch': + '4c9a4247dcf6e0f62fda2e7283f7de6f7c801d5e61c39d27a91a287f9d363d68'}, + {'PyTorch-1.13.1_disable-test-sharding.patch': 'df2074adeba47998ce2993d99ca64eb6f1c79ab7057f553b436efdec264d3572'}, + {'PyTorch-1.13.1_fix-duplicate-kDefaultTimeout-definition.patch': + '882f8cfaf33490a4372928fb6673cbbfa40e5be1b64bf7e0cc2924d73cf872e8'}, + {'PyTorch-1.13.1_fix-flaky-jit-test.patch': '71efdeb29b5e5b4982c9f5cb2182733654a34d52f85bb5487bc4d7d99b86101b'}, + {'PyTorch-1.13.1_fix-fsdp-fp16-test.patch': '8ae68e60d6e1f92f50322b7f0381c7e65251fba32d7606e3a238a36a2f55b5cf'}, + {'PyTorch-1.13.1_fix-fsdp-tp-integration-test.patch': + '31e2d63b54ae1a8c554575f46db79bf8bbda851b6ca0ffe623c4911207a3c2bc'}, + {'PyTorch-1.13.1_fix-gcc-12-missing-includes.patch': + '18df8c61ecaa9fb659346c1e172828bca6b069f0145bb8f6a36b0a23b7bef0a6'}, + {'PyTorch-1.13.1_fix-gcc-12-warning-in-fbgemm.patch': + '5c7be91a6096083a0b1315efe0001537499c600f1f569953c6a2c7f4cc1d0910'}, + {'PyTorch-1.13.1_fix-kineto-crash-on-exit.patch': + 'f1e6808ee8d91a2ad76e0caedb4685e5aec3008d5e2e3c3c3e88cbb25cbd71b4'}, + {'PyTorch-1.13.1_fix-numpy-deprecations.patch': 'f461b570efe0434ddd806bf2fa7020eb213e3ed89d0eb4403e076f4276ba2a46'}, + {'PyTorch-1.13.1_fix-protobuf-dependency.patch': + '8bd755a0cab7233a243bc65ca57c9630dfccdc9bf8c9792f0de4e07a644fcb00'}, + {'PyTorch-1.13.1_fix-pytest-args.patch': 'd3e3c841cf8d73683750f29326f2be56ee0bb5df7ff522baf7d7c3f301a91ec2'}, + {'PyTorch-1.13.1_fix-python-3.11-compat.patch': 'fa4eb0e27e00a90bb217b77c0023089c4659c03f37d781ab4a681bdcb4f0432f'}, + {'PyTorch-1.13.1_fix-test-ops-conf.patch': 'df652eec7753864ebebbfeca546929a53e3fb8f24259d5c9b964266a8551198c'}, + {'PyTorch-1.13.1_fix-warning-in-test-cpp-api.patch': + 'bdde0f2105215c95a54de64ec4b1a4520528510663174fef6d5b900eb1db3937'}, + {'PyTorch-1.13.1_fix-wrong-check-in-fsdp-tests.patch': + 'cbb5ca9ad668a504a456a2cc02d7254b79ddfd9a971a1648f0508fb103a9fc89'}, + {'PyTorch-1.13.1_increase-tolerance-test_jit.patch': + 'b97913754a0ae0887b8137db0b0d57caff8c3d7bd96fe555ea27ea01ff14527a'}, + {'PyTorch-1.13.1_increase-tolerance-test_ops.patch': + 'c909fdfc2b12df457e1eb5514265ffec3eab653994949416f3f048668421e223'}, + {'PyTorch-1.13.1_increase-tolerance-test_optim.patch': + 'a079d824085eab89794f5ecfc67792f735ed8cfd3fe7db52e4dea62e583cfe06'}, + {'PyTorch-1.13.1_install-vsx-vec-headers.patch': + '7b678f54bb947afd4767f5877ac424b4b94ce5db609ea20f5a869ccf4027035f'}, + {'PyTorch-1.13.1_no-cuda-stubs-rpath.patch': '4c636059850fc9d1ecb27ce275f8aad5d5b6fdc19e35aff0c25b86cb3201352a'}, + {'PyTorch-1.13.1_remove-flaky-test-in-testnn.patch': + 'be83ff61fe2dedab6d49c232936d5622df81ab49154264490021c6c828e53315'}, + {'PyTorch-1.13.1_skip-failing-grad-test.patch': '6681200f9509893cb9231b5c93ac9bc5e6d9d9ae4febefca52e7cbc843ba8f51'}, + {'PyTorch-1.13.1_skip-failing-singular-grad-test.patch': + '72688a57b2bb617665ad1a1d5e362c5111ae912c10936bb38a089c0204729f48'}, + {'PyTorch-1.13.1_skip-test_find_unused_parameters-detail.patch': + 'c71a3385ce5fc447f908a3df78ade2143d97e2538cf03b530db4f6cc8b32c22b'}, + {'PyTorch-1.13.1_skip-test-requiring-online-access.patch': + '61c3b7859dc06a9969981b07aa2789630de110d6d1d3633d27364be47af74712'}, + {'PyTorch-1.13.1_skip-tests-without-fbgemm.patch': + '481e595f673baf8ae58b41697a6792b83048b0264aa79b422f48cd8c22948bb7'}, + {'PyTorch-1.13.1_workaround-gcc12-destructor-exception-bug.patch': + 'a09a2d7ebd428c65988729578bb3fa372565ba176ab9ed7abf11f6fcb15e903e'}, + {'PyTorch-2.0.1_avoid-test_quantization-failures.patch': + '02e3f47e4ed1d7d6077e26f1ae50073dc2b20426269930b505f4aefe5d2f33cd'}, +] + +osdependencies = [OS_PKG_IBVERBS_DEV] + +builddependencies = [ + ('CMake', '3.24.3'), + ('hypothesis', '6.68.2'), + # For tests + ('pytest-rerunfailures', '12.0'), + ('pytest-shard', '0.1.2'), +] + +dependencies = [ + ('CUDA', '11.7.0', '', SYSTEM), + ('Ninja', '1.11.1'), # Required for JIT compilation of C++ extensions + ('Python', '3.10.8'), + ('protobuf', '23.0'), + ('protobuf-python', '4.23.0'), + ('pybind11', '2.10.3'), + ('SciPy-bundle', '2023.02'), + ('PyYAML', '6.0'), + ('MPFR', '4.2.0'), + ('GMP', '6.2.1'), + ('numactl', '2.0.16'), + ('FFmpeg', '5.1.2'), + ('Pillow', '9.4.0'), + ('cuDNN', '8.5.0.96', '-CUDA-%(cudaver)s', SYSTEM), + ('magma', '2.7.1', '-CUDA-%(cudaver)s'), + ('NCCL', '2.16.2', '-CUDA-%(cudaver)s'), + ('expecttest', '0.1.3'), +] + +custom_opts = ['CMAKE_CUDA_FLAGS=-allow-unsupported-compiler'] + +excluded_tests = { + '': [ + # This test seems to take too long on NVIDIA Ampere at least. + 'distributed/test_distributed_spawn', + # Broken on CUDA 11.6/11.7: https://github.com/pytorch/pytorch/issues/75375 + 'distributions/test_constraints', + # no xdoctest + 'doctests', + # failing on broadwell + # See https://github.com/easybuilders/easybuild-easyconfigs/issues/17712 + 'test_native_mha', + # intermittent failures on various systems + # See https://github.com/easybuilders/easybuild-easyconfigs/issues/17712 + 'distributed/rpc/test_tensorpipe_agent', + ] +} + +runtest = 'cd test && PYTHONUNBUFFERED=1 %(python)s run_test.py --continue-through-error --verbose %(excluded_tests)s' + +# The readelf sanity check command can be taken out once the TestRPATH test from +# https://github.com/pytorch/pytorch/pull/87593 is accepted, since it is then checked as part of the PyTorch test suite +local_libcaffe2 = "$EBROOTPYTORCH/lib/python%%(pyshortver)s/site-packages/torch/lib/libcaffe2_nvrtc.%s" % SHLIB_EXT +sanity_check_commands = [ + "readelf -d %s | egrep 'RPATH|RUNPATH' | grep -v stubs" % local_libcaffe2, +] + +# Especially test_quantization has a few corner cases that are triggered by the random input values, +# those cannot be easily avoided, see https://github.com/pytorch/pytorch/issues/107030 +# So allow a low number of tests to fail as the tests "usually" succeed +max_failed_tests = 2 + +tests = ['PyTorch-check-cpp-extension.py'] + +moduleclass = 'ai' diff --git a/easybuild/easyconfigs/p/PyTorch/PyTorch-1.13.1_allow-GCC-12-for-CUDA-11.7.patch b/easybuild/easyconfigs/p/PyTorch/PyTorch-1.13.1_allow-GCC-12-for-CUDA-11.7.patch new file mode 100644 index 00000000000..568c4b57e9c --- /dev/null +++ b/easybuild/easyconfigs/p/PyTorch/PyTorch-1.13.1_allow-GCC-12-for-CUDA-11.7.patch @@ -0,0 +1,29 @@ +The JIT generator for CUDA fails as GCC 12 isn't officially compatible with CUDA 11.7. +We can make it compatible by passing `-allow-unsupported-compiler` +but also need to tell the PyTorch code about the raised maximum compiler version. + +Author: Alexander Grund (TU Dresden) + +diff --git a/torch/utils/cpp_extension.py b/torch/utils/cpp_extension.py +index 9ab43e5ccdd..15da97619be 100644 +--- a/torch/utils/cpp_extension.py ++++ b/torch/utils/cpp_extension.py +@@ -56,7 +56,7 @@ CUDA_GCC_VERSIONS = { + '11.4': ((6, 0, 0), (11, 5, 0)), + '11.5': ((6, 0, 0), (11, 5, 0)), + '11.6': ((6, 0, 0), (11, 5, 0)), +- '11.7': ((6, 0, 0), (11, 5, 0)), ++ '11.7': ((6, 0, 0), (12, 3, 0)), + } + + CUDA_CLANG_VERSIONS = { +@@ -227,7 +227,8 @@ COMMON_NVCC_FLAGS = [ + '-D__CUDA_NO_HALF_CONVERSIONS__', + '-D__CUDA_NO_BFLOAT16_CONVERSIONS__', + '-D__CUDA_NO_HALF2_OPERATORS__', +- '--expt-relaxed-constexpr' ++ '--expt-relaxed-constexpr', ++ '-allow-unsupported-compiler', + ] + + COMMON_HIP_FLAGS = [ diff --git a/easybuild/easyconfigs/p/PyTorch/PyTorch-1.13.1_skip-test_find_unused_parameters-detail.patch b/easybuild/easyconfigs/p/PyTorch/PyTorch-1.13.1_skip-test_find_unused_parameters-detail.patch new file mode 100644 index 00000000000..fb1436b254e --- /dev/null +++ b/easybuild/easyconfigs/p/PyTorch/PyTorch-1.13.1_skip-test_find_unused_parameters-detail.patch @@ -0,0 +1,48 @@ +In distributed/test_c10d_nccl the tests +test_find_unused_parameters_kwarg_debug_detail and +test_find_unused_parameters_kwarg_grad_is_view_debug_detail +are failing often on some systems with the root error seemingly being +> terminate called after throwing an instance of 'c10::Error' +> what(): CUDA error: driver shutting down + +Stacktrace: +frame #0: c10::Error::Error() + 0x8d (0x2ae861eff2cd in /torch/lib/libc10.so) +frame #1: c10::detail::torchCheckFail() + 0xd0 (0x2ae861ec64d1 in /torch/lib/libc10.so) +frame #2: c10::cuda::c10_cuda_check_implementation() + 0x352 (0x2ae861e948c2 in /torch/lib/libc10_cuda.so) +frame #3: c10d::ProcessGroupNCCL::WorkNCCL::startedGPUExecutionInternal() const + 0x140 (0x2ae848587e80 in /torch/lib/libtorch_cuda.so) +frame #4: c10d::ProcessGroupNCCL::WorkNCCL::isStarted() + 0x58 (0x2ae84858a1b8 in /torch/lib/libtorch_cuda.so) +frame #5: c10d::ProcessGroupNCCL::workCleanupLoop() + 0x3c8 (0x2ae84858ee18 in /torch/lib/libtorch_cuda.so) + +Just skip the tests to avoid failing the testsuite. + +Author: Alexander Grund (TU Dresden) + +diff --git a/test/distributed/test_c10d_nccl.py b/test/distributed/test_c10d_nccl.py +index 6a0858eebf8..7340a89db82 100644 +--- a/test/distributed/test_c10d_nccl.py ++++ b/test/distributed/test_c10d_nccl.py +@@ -12,7 +12,7 @@ import time + from contextlib import contextmanager + from datetime import timedelta + from itertools import product +-from unittest import mock ++from unittest import mock, skip + + import torch + import torch.distributed as c10d +@@ -1460,6 +1460,7 @@ class DistributedDataParallelTest( + + # TODO: Combine the following tests once https://github.com/pytorch/pytorch/issues/55967 + # is resolved. ++ @skip("Debug level DETAIL fails on some systems/CUDA versions") + @requires_nccl() + @skip_if_lt_x_gpu(2) + @with_dist_debug_levels(levels=["DETAIL"]) +@@ -1478,6 +1479,7 @@ class DistributedDataParallelTest( + def test_find_unused_parameters_kwarg_debug_off(self): + self._test_find_unused_parameters_kwarg() + ++ @skip("Debug level DETAIL fails on some systems/CUDA versions") + @requires_nccl() + @skip_if_lt_x_gpu(2) + @with_dist_debug_levels(levels=["DETAIL"]) diff --git a/easybuild/easyconfigs/p/prompt-toolkit/prompt-toolkit-3.0.36-GCCcore-12.2.0.eb b/easybuild/easyconfigs/p/prompt-toolkit/prompt-toolkit-3.0.36-GCCcore-12.2.0.eb new file mode 100644 index 00000000000..1d5a624d949 --- /dev/null +++ b/easybuild/easyconfigs/p/prompt-toolkit/prompt-toolkit-3.0.36-GCCcore-12.2.0.eb @@ -0,0 +1,21 @@ +easyblock = 'PythonPackage' + +name = 'prompt-toolkit' +version = '3.0.36' + +homepage = 'https://github.com/jonathanslenders/python-prompt-toolkit' +description = """prompt_toolkit is a Python library for building powerful interactive command lines and + terminal applications.""" + +toolchain = {'name': 'GCCcore', 'version': '12.2.0'} + +builddependencies = [('binutils', '2.39')] + +dependencies = [('Python', '3.10.8')] + +sources = ['prompt_toolkit-%(version)s-py3-none-any.whl'] +checksums = ['aa64ad242a462c5ff0363a7b9cfe696c20d55d9fc60c11fd8e632d064804d305'] + +options = {'modulename': 'prompt_toolkit'} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/p/prompt-toolkit/prompt-toolkit-3.0.36-GCCcore-13.2.0.eb b/easybuild/easyconfigs/p/prompt-toolkit/prompt-toolkit-3.0.36-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..ba7cd9f6c97 --- /dev/null +++ b/easybuild/easyconfigs/p/prompt-toolkit/prompt-toolkit-3.0.36-GCCcore-13.2.0.eb @@ -0,0 +1,24 @@ +easyblock = 'PythonPackage' + +name = 'prompt-toolkit' +version = '3.0.36' + +homepage = 'https://github.com/jonathanslenders/python-prompt-toolkit' +description = """prompt_toolkit is a Python library for building powerful interactive command lines and + terminal applications.""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +builddependencies = [('binutils', '2.40')] + +dependencies = [ + ('Python', '3.11.5'), + ('Python-bundle-PyPI', '2023.10'), +] + +sources = ['prompt_toolkit-%(version)s-py3-none-any.whl'] +checksums = ['aa64ad242a462c5ff0363a7b9cfe696c20d55d9fc60c11fd8e632d064804d305'] + +options = {'modulename': 'prompt_toolkit'} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/p/psycopg/psycopg-3.1.18-GCCcore-12.2.0.eb b/easybuild/easyconfigs/p/psycopg/psycopg-3.1.18-GCCcore-12.2.0.eb new file mode 100644 index 00000000000..e0722f74ea0 --- /dev/null +++ b/easybuild/easyconfigs/p/psycopg/psycopg-3.1.18-GCCcore-12.2.0.eb @@ -0,0 +1,20 @@ +easyblock = 'PythonPackage' + +name = 'psycopg' +version = '3.1.18' + +homepage = 'https://psycopg.org/' +description = "Psycopg is the most popular PostgreSQL adapter for the Python programming language." + +toolchain = {'name': 'GCCcore', 'version': '12.2.0'} + +sources = [SOURCE_TAR_GZ] +checksums = ['31144d3fb4c17d78094d9e579826f047d4af1da6a10427d91dfcfb6ecdf6f12b'] + +builddependencies = [('binutils', '2.39')] +dependencies = [ + ('Python', '3.10.8'), + ('PostgreSQL', '15.2'), +] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/p/psycopg/psycopg-3.1.18-GCCcore-13.2.0.eb b/easybuild/easyconfigs/p/psycopg/psycopg-3.1.18-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..00f0e2e3b81 --- /dev/null +++ b/easybuild/easyconfigs/p/psycopg/psycopg-3.1.18-GCCcore-13.2.0.eb @@ -0,0 +1,20 @@ +easyblock = 'PythonPackage' + +name = 'psycopg' +version = '3.1.18' + +homepage = 'https://psycopg.org/' +description = "Psycopg is the most popular PostgreSQL adapter for the Python programming language." + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +sources = [SOURCE_TAR_GZ] +checksums = ['31144d3fb4c17d78094d9e579826f047d4af1da6a10427d91dfcfb6ecdf6f12b'] + +builddependencies = [('binutils', '2.40')] +dependencies = [ + ('Python', '3.11.5'), + ('PostgreSQL', '16.1'), +] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/p/pySCENIC/pySCENIC-0.12.1-20240311-foss-2023a.eb b/easybuild/easyconfigs/p/pySCENIC/pySCENIC-0.12.1-20240311-foss-2023a.eb new file mode 100644 index 00000000000..dcb035f60cd --- /dev/null +++ b/easybuild/easyconfigs/p/pySCENIC/pySCENIC-0.12.1-20240311-foss-2023a.eb @@ -0,0 +1,73 @@ +easyblock = 'PythonBundle' + +name = 'pySCENIC' +version = '0.12.1-20240311' +local_commit = '31d51a1' + +homepage = 'https://github.com/aertslab/pySCENIC' +description = """pySCENIC is a lightning-fast python implementation of the SCENIC +pipeline (Single-Cell rEgulatory Network Inference and Clustering) which enables +biologists to infer transcription factors, gene regulatory networks and +cell types from single-cell RNA-seq data.""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +dependencies = [ + ('Python', '3.11.3'), + ('PyYAML', '6.0'), + ('Arrow', '14.0.1'), + ('scikit-learn', '1.3.1'), + ('tqdm', '4.66.1'), + ('networkx', '3.1'), + ('dask', '2023.9.2'), + ('aiohttp', '3.8.5'), + ('dill', '0.3.7'), + ('loompy', '3.0.7'), + ('umap-learn', '0.5.5'), +] + +exts_list = [ + ('cytoolz', '0.12.3', { + 'checksums': ['4503dc59f4ced53a54643272c61dc305d1dbbfbd7d6bdf296948de9f34c3a282'], + }), + ('multiprocessing_on_dill', '3.5.0a4', { + 'checksums': ['d6d50c300ff4bd408bb71eb78725e60231039ee9b3d0d9bb7697b9d0e15045e7'], + }), + ('frozendict', '2.4.0', { + 'checksums': ['c26758198e403337933a92b01f417a8240c954f553e1d4b5e0f8e39d9c8e3f0a'], + }), + ('arboreto', '0.1.6', { + 'source_urls': ['https://github.com/aertslab/arboreto/archive/refs/tags/'], + 'sources': [{'download_filename': '%(version)s.tar.gz', 'filename': '%(name)s-%(version)s.tar.gz'}], + 'checksums': ['f94c0bc084ca61422e8b74ecdb80585a45b168ac682f18dd3c52c9097ee29caa'], + }), + ('boltons', '23.1.1', { + 'checksums': ['d2cb2fa83cf2ebe791be1e284183e8a43a1031355156a968f8e0a333ad2448fc'], + }), + ('interlap', '0.2.7', { + 'checksums': ['31e4f30c54b067c4939049f5d8131ae5e2fa682ec71aa56f89c0e5b900806ec9'], + }), + ('ctxcore', '0.2.0', { + 'sources': ['ctxcore-0.2.0-py3-none-any.whl'], + 'checksums': ['b90570377e26280c4861ebad1f4cee2fe598167c5d4bd12c1b713f03c9682627'], + }), + ('pyscenic', '0.12.1', { + # download from commit to get fix for numpy error + # https://github.com/aertslab/pySCENIC/issues/518 + 'source_urls': ['https://github.com/aertslab/pySCENIC/archive/'], + 'sources': [{ + 'download_filename': '31d51a1625f12fb3c6e92bc48ecc9d401524c22a.tar.gz', + 'filename': '%%(name)s-%%(version)s-%s.tar.gz' % local_commit + }], + 'checksums': ['9dac1aa1672e310838ab47838206c075f2a2af2eefe6d3b7d56b4492d42fcf47'], + }), +] + +sanity_check_paths = { + 'files': ['bin/pyscenic'], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +sanity_check_commands = ["pyscenic --help"] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/p/pyfaidx/pyfaidx-0.8.1.1-GCCcore-13.2.0.eb b/easybuild/easyconfigs/p/pyfaidx/pyfaidx-0.8.1.1-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..41dbcff100d --- /dev/null +++ b/easybuild/easyconfigs/p/pyfaidx/pyfaidx-0.8.1.1-GCCcore-13.2.0.eb @@ -0,0 +1,27 @@ +easyblock = 'PythonPackage' + +name = 'pyfaidx' +version = '0.8.1.1' + +homepage = 'https://pypi.python.org/pypi/pyfaidx' +description = "pyfaidx: efficient pythonic random access to fasta subsequences" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +builddependencies = [('binutils', '2.40')] +dependencies = [ + ('Python', '3.11.5'), + ('Python-bundle-PyPI', '2023.10'), +] + +sources = [SOURCE_PY3_WHL] +checksums = ['2694af8e3f35f1890a03f04c0f89ba245caf24ff9e435f2c494b132f537e70f6'] + +sanity_check_paths = { + 'files': ['bin/faidx'], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +sanity_check_commands = ["faidx --help"] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/p/pytest-workflow/pytest-workflow-2.0.1-GCCcore-12.2.0.eb b/easybuild/easyconfigs/p/pytest-workflow/pytest-workflow-2.0.1-GCCcore-12.2.0.eb new file mode 100644 index 00000000000..71d567b010c --- /dev/null +++ b/easybuild/easyconfigs/p/pytest-workflow/pytest-workflow-2.0.1-GCCcore-12.2.0.eb @@ -0,0 +1,26 @@ +easyblock = 'PythonPackage' + +name = 'pytest-workflow' +version = '2.0.1' + +homepage = 'https://github.com/LUMC/pytest-workflow' +description = """Configure workflow/pipeline tests using yaml files. + +pytest-workflow is a workflow-system agnostic testing framework that aims to make pipeline/workflow testing easy by +using YAML files for the test configuration. +Whether you write your pipelines in WDL, snakemake, nextflow, bash or any other workflow framework, +pytest-workflow makes testing easy. +pytest-workflow is build on top of the pytest test framework.""" + +toolchain = {'name': 'GCCcore', 'version': '12.2.0'} + +builddependencies = [('binutils', '2.39')] +dependencies = [ + ('Python', '3.10.8'), + ('PyYAML', '6.0'), +] + +sources = [SOURCE_TAR_GZ] +checksums = ['c4968baf2f3c5ff301e59e1f72dd2814c8dc7db950df7fcafbf358b495da7fa8'] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/p/pytest-workflow/pytest-workflow-2.1.0-GCCcore-13.2.0.eb b/easybuild/easyconfigs/p/pytest-workflow/pytest-workflow-2.1.0-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..d768057f34b --- /dev/null +++ b/easybuild/easyconfigs/p/pytest-workflow/pytest-workflow-2.1.0-GCCcore-13.2.0.eb @@ -0,0 +1,39 @@ +easyblock = 'PythonBundle' + +name = 'pytest-workflow' +version = '2.1.0' + +homepage = 'https://github.com/LUMC/pytest-workflow' +description = """Configure workflow/pipeline tests using yaml files. + +pytest-workflow is a workflow-system agnostic testing framework that aims to make pipeline/workflow testing easy by +using YAML files for the test configuration. +Whether you write your pipelines in WDL, snakemake, nextflow, bash or any other workflow framework, +pytest-workflow makes testing easy. +pytest-workflow is build on top of the pytest test framework.""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +builddependencies = [('binutils', '2.40')] +dependencies = [ + ('Python', '3.11.5'), + ('PyYAML', '6.0.1'), + ('python-isal', '1.6.1'), +] + +exts_list = [ + ('zlib-ng', '0.4.1', { + 'checksums': ['153183724143711c92bd243528b97fdd3b2426c778079498b882fce445a68421'], + }), + ('zstandard', '0.22.0', { + 'checksums': ['8226a33c542bcb54cd6bd0a366067b610b41713b64c9abec1bc4533d69f51e70'], + }), + ('xopen', '1.9.0', { + 'checksums': ['01daaefd18875b1e555183f9641de892cc245eaca6893546e91f48182b6d6ab1'], + }), + (name, version, { + 'checksums': ['dc86ad9a5f94482aec14926788f6b78b428be68ee0428cbca22f89b6326f8b7a'], + }), +] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/p/python-isal/python-isal-1.6.1-GCCcore-13.2.0.eb b/easybuild/easyconfigs/p/python-isal/python-isal-1.6.1-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..bf10b6d990f --- /dev/null +++ b/easybuild/easyconfigs/p/python-isal/python-isal-1.6.1-GCCcore-13.2.0.eb @@ -0,0 +1,29 @@ +# Author: Jasper Grimm (UoY) + +easyblock = 'PythonPackage' + +name = 'python-isal' +version = '1.6.1' + +homepage = 'https://github.com/pycompression/python-isal' +description = """Faster zlib and gzip compatible compression and decompression + by providing python bindings for the isa-l library. +""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +builddependencies = [('binutils', '2.40')] +dependencies = [ + ('Python', '3.11.5'), + ('ISA-L', '2.31.0'), +] + +source_urls = [PYPI_SOURCE.replace('%(name)s', 'isal')] +sources = ['isal-%s.tar.gz' % version] +checksums = ['7b64b75d260b544beea3f59cb25a6f520c04768818ef4ac316ee9a1f2ebf18f5'] + +preinstallopts = 'PYTHON_ISAL_LINK_DYNAMIC=true' + +options = {'modulename': 'isal'} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/p/python-parasail/python-parasail-1.3.4-foss-2023a.eb b/easybuild/easyconfigs/p/python-parasail/python-parasail-1.3.4-foss-2023a.eb index e0da9a6467d..5c493355ea3 100644 --- a/easybuild/easyconfigs/p/python-parasail/python-parasail-1.3.4-foss-2023a.eb +++ b/easybuild/easyconfigs/p/python-parasail/python-parasail-1.3.4-foss-2023a.eb @@ -8,6 +8,7 @@ description = "Python Bindings for the Parasail C Library" toolchain = {'name': 'foss', 'version': '2023a'} +source_urls = ['https://pypi.python.org/packages/source/p/parasail'] sources = ['parasail-%(version)s.tar.gz'] checksums = ['d6a7035dfae3ef5aafdd7e6915711214c22b572ea059fa69d9d7ecbfb9b61b0f'] diff --git a/easybuild/easyconfigs/q/Qt6/Qt6-6.6.3-GCCcore-13.2.0.eb b/easybuild/easyconfigs/q/Qt6/Qt6-6.6.3-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..605542a89fd --- /dev/null +++ b/easybuild/easyconfigs/q/Qt6/Qt6-6.6.3-GCCcore-13.2.0.eb @@ -0,0 +1,89 @@ +easyblock = 'CMakeNinja' + +name = 'Qt6' +version = '6.6.3' + +homepage = 'https://qt.io/' +description = "Qt is a comprehensive cross-platform C++ application framework." + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} +# disabling use of -ftree-vectorize is required to avoid compilation failures on some systems (e.g. Intel Skylake X) +toolchainopts = {'vectorize': False} + +source_urls = [ + 'https://download.qt.io/official_releases/qt/%(version_major_minor)s/%(version)s/single/', + 'https://download.qt.io/archive/qt/%(version_major_minor)s/%(version)s/single/', + 'https://download.qt.io/new_archive/qt/%(version_major_minor)s/%(version)s/single/', +] +sources = ['qt-everywhere-src-%(version)s.tar.xz'] +patches = [ + 'Qt6-6.6.3_fix_OF-Gentoo.patch', +] +checksums = [ + {'qt-everywhere-src-6.6.3.tar.xz': '69d0348fef415da98aa890a34651e9cfb232f1bffcee289b7b4e21386bf36104'}, + {'Qt6-6.6.3_fix_OF-Gentoo.patch': 'd4d4878ac76cb985e45eb3b6e90ba2233f65807d6bd9bbe2b71365b181347b7b'}, +] + +builddependencies = [ + ('binutils', '2.40'), + ('pkgconf', '2.0.3'), + ('CMake', '3.27.6'), + ('Ninja', '1.11.1'), + # deps for QtWebEngine + ('Bison', '3.8.2'), + ('flex', '2.6.4'), + ('gperf', '3.1'), + ('re2c', '3.1'), +] + +dependencies = [ + ('double-conversion', '3.3.0'), + ('GLib', '2.78.1'), + ('PCRE2', '10.42'), + ('libpng', '1.6.40'), + ('LibTIFF', '4.6.0'), + ('libwebp', '1.3.2'), + ('JasPer', '4.0.0'), + ('HarfBuzz', '8.2.2'), + ('SQLite', '3.43.1'), + ('graphite2', '1.3.14'), + ('assimp', '5.3.1'), # for Qt 3D + ('FFmpeg', '6.0'), + ('X11', '20231019'), + ('fontconfig', '2.14.2'), + ('zlib', '1.2.13'), + ('Python', '3.11.5'), + ('Python-bundle-PyPI', '2023.10'), # WebEngine + ('freetype', '2.13.2'), # WebEngine + ('DBus', '1.15.8'), + ('libevent', '2.1.12'), # WebEngine + ('libGLU', '9.0.3'), + ('libjpeg-turbo', '3.0.1'), # WebEngine + ('NSS', '3.94'), # WebEngine, required + ('snappy', '1.1.10'), # WebEngine + ('OpenSSL', '1.1', '', SYSTEM), + ('ICU', '74.1'), # WebEngine, optional + ('nodejs', '20.9.0'), # WebEngine, required + # ('gRPC', '1.52.2'), # WebEngine needs older Abseil/gRPC/protobuf +] + +preconfigopts = 'sed -i "s/MultiMedia/Multimedia/g" ../qt-everywhere-src-%(version)s/qtcharts/CMakeLists.txt &&' # Typo +preconfigopts += 'sed -i "23i set(Python3_ROOT_DIR \\$ENV{EBROOTPYTHON})" ' \ + '../qt-everywhere-src-6.6.3/qtwebengine/src/gn/CMakeLists.txt &&' + +configopts = '-Wno-dev ' +configopts += '-DFEATURE_qtpdf_build=OFF ' # Requires CUPS +configopts += '-DQT_AVOID_CMAKE_ARCHIVING_API=ON ' +configopts += '-DPython3_ROOT_DIR=$EBROOTPYTHON ' +configopts += '-DBUILD_qtwayland=OFF ' # Does not work on CentOS 7 +# Removed from Qt6.0.0 but may be added back in the future +# configopts += '-DBUILD_qtgamepad=OFF ' # Does not work on CentOS 7 + +sanity_check_paths = { + 'files': ['bin/qmake6', 'lib/libQt6Core.%s' % SHLIB_EXT, 'lib/libQt6WebEngineCore.%s' % SHLIB_EXT], + 'dirs': ['include/QtCore', 'include/QtWebEngineCore'], +} + +sanity_check_commands = ['qmake6 --help'] + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/q/Qt6/Qt6-6.6.3_fix_OF-Gentoo.patch b/easybuild/easyconfigs/q/Qt6/Qt6-6.6.3_fix_OF-Gentoo.patch new file mode 100644 index 00000000000..9ba2974b9b7 --- /dev/null +++ b/easybuild/easyconfigs/q/Qt6/Qt6-6.6.3_fix_OF-Gentoo.patch @@ -0,0 +1,49 @@ +############################################ +# Update from Qt5-5.14.1_fix-OF-Gentoo.patch +# 1. qt3d/..../unzip/ioapi.h and qtquick3d/..../unzip/ioapi.h do not use OF macro anymore +# 2. qtquick3d/..../minizip/ioapi.h is moved to qt3d/..../minizip/ioapi.h +############################################ +fix compilation on top of zlib provided by Gentoo, +where OF macro has been renamed to _Z_OF +see https://bugreports.qt.io/browse/QTBUG-68467 and https://bugs.gentoo.org/383179 +author: Kenneth Hoste (HPC-UGent) +diff --git a/qt3d/src/3rdparty/assimp/src/contrib/unzip/ioapi.h +b/qt3d/src/3rdparty/assimp/src/contrib/zlib/contrib/unzip/ioapi.h +index 8dcbdb06e3..e9cc96914e 100644 +--- a/qt3d/src/3rdparty/assimp/src/contrib/unzip/ioapi.h ++++ b/qt3d/src/3rdparty/assimp/src/contrib/unzip/ioapi.h +@@ -130,6 +130,14 @@ extern "C" { + #endif + + ++// if OF macro is not defined but _Z_OF is, define OF as _Z_OF ++// required when building with zlib provided by Gentoo ++// see https://bugreports.qt.io/browse/QTBUG-68467 and https://bugs.gentoo.org/383179 ++#ifndef OF ++ #ifdef _Z_OF ++ #define OF _Z_OF ++ #endif ++#endif + + + typedef voidpf (ZCALLBACK *open_file_func) OF((voidpf opaque, const char* filename, int mode)); +diff --git a/qtwebengine/src/3rdparty/chromium/third_party/zlib/contrib/minizip/ioapi.h b/qtwebengine/src/3rdparty/chromium/third_party/zlib/contrib/minizip/ioapi.h +index c1b7a54847..c5546a26b9 100644 +--- a/qtwebengine/src/3rdparty/chromium/third_party/zlib/contrib/minizip/ioapi.h ++++ b/qtwebengine/src/3rdparty/chromium/third_party/zlib/contrib/minizip/ioapi.h +@@ -130,6 +130,14 @@ extern "C" { + #endif + + ++// if OF macro is not defined but _Z_OF is, define OF as _Z_OF ++// required when building with zlib provided by Gentoo ++// see https://bugreports.qt.io/browse/QTBUG-68467 and https://bugs.gentoo.org/383179 ++#ifndef OF ++ #ifdef _Z_OF ++ #define OF _Z_OF ++ #endif ++#endif + + + typedef voidpf (ZCALLBACK *open_file_func) OF((voidpf opaque, const char* filename, int mode)); + diff --git a/easybuild/easyconfigs/r/R-bundle-CRAN/R-bundle-CRAN-2023.12-foss-2023a.eb b/easybuild/easyconfigs/r/R-bundle-CRAN/R-bundle-CRAN-2023.12-foss-2023a.eb index 7065b6d1f3f..bc29bb2ea64 100644 --- a/easybuild/easyconfigs/r/R-bundle-CRAN/R-bundle-CRAN-2023.12-foss-2023a.eb +++ b/easybuild/easyconfigs/r/R-bundle-CRAN/R-bundle-CRAN-2023.12-foss-2023a.eb @@ -60,6 +60,14 @@ local_ext_version_check = "pkgver = packageVersion('%(ext_name)s'); if (pkgver ! local_stop_msg = "stop('%(ext_name)s %(ext_version)s not installed, found ', pkgver, ' instead')" exts_filter = ("R -q --no-save", "%s { %s }" % (local_ext_version_check, local_stop_msg)) +# the dbarts extension needs an additional compiler flag on Arm systems to prevent "incompatible types" errors +# cfr. https://github.com/vdorie/dbarts/issues/66 +if ARCH == 'aarch64': + local_dbarts_preinstallopts = 'sed -i "s|-c partition_neon.c|-flax-vector-conversions -c partition_neon.c|"' + local_dbarts_preinstallopts += ' src/misc/Makefile && ' +else: + local_dbarts_preinstallopts = '' + # !! order of packages is important !! # packages updated on 10th December 2023 exts_list = [ @@ -2573,6 +2581,7 @@ exts_list = [ }), ('dbarts', '0.9-25', { 'checksums': ['39a78228ead17c92bd88fe5f959c888412a22a7cbbc0edfa9c09072b4182d870'], + 'preinstallopts': local_dbarts_preinstallopts, }), ('proftools', '0.99-3', { 'checksums': ['e034eb1531af54013143da3e15229e1d4c2260f8eb79c93846014db3bdefb724'], diff --git a/easybuild/easyconfigs/r/R/R-4.2.0-foss-2021b.eb b/easybuild/easyconfigs/r/R/R-4.2.0-foss-2021b.eb index cfa5dcb6786..9baf2622cc6 100644 --- a/easybuild/easyconfigs/r/R/R-4.2.0-foss-2021b.eb +++ b/easybuild/easyconfigs/r/R/R-4.2.0-foss-2021b.eb @@ -74,6 +74,14 @@ exts_default_options = { 'source_tmpl': '%(name)s_%(version)s.tar.gz', } +# the dbarts extension needs an additional compiler flag on Arm systems to prevent "incompatible types" errors +# cfr. https://github.com/vdorie/dbarts/issues/66 +if ARCH == 'aarch64': + local_dbarts_preinstallopts = 'sed -i "s|-c partition_neon.c|-flax-vector-conversions -c partition_neon.c|"' + local_dbarts_preinstallopts += ' src/misc/Makefile && ' +else: + local_dbarts_preinstallopts = '' + # !! order of packages is important !! # packages updated on 27th April 2022 exts_list = [ @@ -2792,6 +2800,7 @@ exts_list = [ }), ('dbarts', '0.9-22', { 'checksums': ['68fa2bfe274811c91ea7b67da46c4ffe527eb662d75edbec26ffe934ddc7150a'], + 'preinstallopts': local_dbarts_preinstallopts, }), ('proftools', '0.99-3', { 'checksums': ['e034eb1531af54013143da3e15229e1d4c2260f8eb79c93846014db3bdefb724'], diff --git a/easybuild/easyconfigs/r/R/R-4.2.1-foss-2022a.eb b/easybuild/easyconfigs/r/R/R-4.2.1-foss-2022a.eb index 8239c7519be..6c087d659bb 100644 --- a/easybuild/easyconfigs/r/R/R-4.2.1-foss-2022a.eb +++ b/easybuild/easyconfigs/r/R/R-4.2.1-foss-2022a.eb @@ -73,6 +73,14 @@ exts_default_options = { 'source_tmpl': '%(name)s_%(version)s.tar.gz', } +# the dbarts extension needs an additional compiler flag on Arm systems to prevent "incompatible types" errors +# cfr. https://github.com/vdorie/dbarts/issues/66 +if ARCH == 'aarch64': + local_dbarts_preinstallopts = 'sed -i "s|-c partition_neon.c|-flax-vector-conversions -c partition_neon.c|"' + local_dbarts_preinstallopts += ' src/misc/Makefile && ' +else: + local_dbarts_preinstallopts = '' + # !! order of packages is important !! # packages updated on 23rd June 2022 exts_list = [ @@ -2793,6 +2801,7 @@ exts_list = [ }), ('dbarts', '0.9-22', { 'checksums': ['68fa2bfe274811c91ea7b67da46c4ffe527eb662d75edbec26ffe934ddc7150a'], + 'preinstallopts': local_dbarts_preinstallopts, }), ('proftools', '0.99-3', { 'checksums': ['e034eb1531af54013143da3e15229e1d4c2260f8eb79c93846014db3bdefb724'], diff --git a/easybuild/easyconfigs/r/R/R-4.2.2-foss-2022b.eb b/easybuild/easyconfigs/r/R/R-4.2.2-foss-2022b.eb index 9fc81dbc6cf..99ac7dec1c3 100644 --- a/easybuild/easyconfigs/r/R/R-4.2.2-foss-2022b.eb +++ b/easybuild/easyconfigs/r/R/R-4.2.2-foss-2022b.eb @@ -73,6 +73,14 @@ exts_default_options = { 'source_tmpl': '%(name)s_%(version)s.tar.gz', } +# the dbarts extension needs an additional compiler flag on Arm systems to prevent "incompatible types" errors +# cfr. https://github.com/vdorie/dbarts/issues/66 +if ARCH == 'aarch64': + local_dbarts_preinstallopts = 'sed -i "s|-c partition_neon.c|-flax-vector-conversions -c partition_neon.c|"' + local_dbarts_preinstallopts += ' src/misc/Makefile && ' +else: + local_dbarts_preinstallopts = '' + # !! order of packages is important !! # packages updated on 17th March 2023 exts_list = [ @@ -2852,6 +2860,7 @@ exts_list = [ }), ('dbarts', '0.9-23', { 'checksums': ['e1ac65fd89c321895d4f0e77d9cd8dcda5f1103485008afd4e19e6c9137557a3'], + 'preinstallopts': local_dbarts_preinstallopts, }), ('proftools', '0.99-3', { 'checksums': ['e034eb1531af54013143da3e15229e1d4c2260f8eb79c93846014db3bdefb724'], diff --git a/easybuild/easyconfigs/r/Redis/Redis-7.2.3-GCCcore-12.3.0.eb b/easybuild/easyconfigs/r/Redis/Redis-7.2.3-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..d91246b6fe3 --- /dev/null +++ b/easybuild/easyconfigs/r/Redis/Redis-7.2.3-GCCcore-12.3.0.eb @@ -0,0 +1,40 @@ +easyblock = 'ConfigureMake' + +name = 'Redis' +version = '7.2.3' + +homepage = 'https://redis.io' +description = """Redis is an open source (BSD licensed), in-memory data structure store, used as +a database, cache, and message broker. Redis provides data structures such as +strings, hashes, lists, sets, sorted sets with range queries, bitmaps, +hyperloglogs, geospatial indexes, and streams. Redis has built-in replication, +Lua scripting, LRU eviction, transactions, and different levels of on-disk +persistence, and provides high availability via Redis Sentinel and automatic +partitioning with Redis Cluster.""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +source_urls = ['https://download.redis.io/releases'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['3e2b196d6eb4ddb9e743088bfc2915ccbb42d40f5a8a3edd8cb69c716ec34be7'] + +builddependencies = [ + ('pkgconf', '1.9.5'), + ('binutils', '2.40'), +] + +skipsteps = ['configure'] + +# tests must be run from a local filesystem +# runtest = 'test' + +installopts = 'PREFIX="%(installdir)s"' + +sanity_check_paths = { + 'files': ['bin/redis-cli', 'bin/redis-server'], + 'dirs': [], +} + +sanity_check_commands = [('redis-server', '--version')] + +moduleclass = 'data' diff --git a/easybuild/easyconfigs/r/rasterio/rasterio-1.3.9-foss-2023a.eb b/easybuild/easyconfigs/r/rasterio/rasterio-1.3.9-foss-2023a.eb new file mode 100644 index 00000000000..d363e2b4196 --- /dev/null +++ b/easybuild/easyconfigs/r/rasterio/rasterio-1.3.9-foss-2023a.eb @@ -0,0 +1,51 @@ +easyblock = 'PythonBundle' + +name = 'rasterio' +version = '1.3.9' + +homepage = 'https://github.com/mapbox/rasterio' +description = "Rasterio reads and writes geospatial raster data." + +toolchain = {'name': 'foss', 'version': '2023a'} + +dependencies = [ + ('Python', '3.11.3'), + ('Python-bundle-PyPI', '2023.06'), + ('SciPy-bundle', '2023.07'), + ('GDAL', '3.7.1'), + ('matplotlib', '3.7.2'), # plot extra + ('boto3', '1.28.70'), # s3 extra +] + +exts_list = [ + ('affine', '2.4.0', { + 'checksums': ['a24d818d6a836c131976d22f8c27b8d3ca32d0af64c1d8d29deb7bafa4da1eea'], + }), + ('click-plugins', '1.1.1', { + 'checksums': ['46ab999744a9d831159c3411bb0c79346d94a444df9a3a3742e9ed63645f264b'], + }), + ('cligj', '0.7.2', { + 'checksums': ['a4bc13d623356b373c2c27c53dbd9c68cae5d526270bfa71f6c6fa69669c6b27'], + }), + ('snuggs', '1.4.7', { + 'checksums': ['501cf113fe3892e14e2fee76da5cd0606b7e149c411c271898e6259ebde2617b'], + }), + (name, version, { + 'use_pip_extras': 'plot,s3', + 'checksums': ['fc6d0d290492fa1a5068711cfebb21cc936968891b7ed9da0690c8a7388885c5'], + }), +] + +fix_python_shebang_for = ['bin/jp.py', 'bin/rio'] + +sanity_check_paths = { + 'files': ['bin/rio'], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +sanity_check_commands = [ + "jp.py --help", + "rio --help", +] + +moduleclass = 'geo' diff --git a/easybuild/easyconfigs/r/rclone/rclone-1.66.0.eb b/easybuild/easyconfigs/r/rclone/rclone-1.66.0.eb new file mode 100644 index 00000000000..18b8b6c77b8 --- /dev/null +++ b/easybuild/easyconfigs/r/rclone/rclone-1.66.0.eb @@ -0,0 +1,34 @@ +easyblock = 'GoPackage' + +name = 'rclone' +version = '1.66.0' + +homepage = 'https://rclone.org' + +description = """ + Rclone is a command line program to sync files and directories to and from + a variety of online storage services +""" + +toolchain = SYSTEM + +source_urls = [GITHUB_SOURCE] +sources = ['v%(version)s.tar.gz'] +checksums = ['9249391867044a0fa4c5a948b46a03b320706b4d5c4d59db9d4aeff8d47cade2'] + +builddependencies = [('Go', '1.22.1', '', SYSTEM)] + +postinstallcmds = [ + "mkdir -p %(installdir)s/share/{doc,man/man1}", + "cp README.* MANUAL.* %(installdir)s/share/doc/", + "cp rclone.1 %(installdir)s/share/man/man1/", +] + +sanity_check_paths = { + 'files': ['bin/rclone', 'share/doc/README.md', 'share/man/man1/rclone.1'], + 'dirs': [] +} + +sanity_check_commands = ['rclone --version'] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/r/redis-py/redis-py-5.0.1-GCCcore-12.3.0.eb b/easybuild/easyconfigs/r/redis-py/redis-py-5.0.1-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..1d3b5d40dbf --- /dev/null +++ b/easybuild/easyconfigs/r/redis-py/redis-py-5.0.1-GCCcore-12.3.0.eb @@ -0,0 +1,30 @@ +easyblock = 'PythonBundle' + +name = 'redis-py' +version = '5.0.1' + +homepage = 'https://github.com/redis/redis-py' +description = "The Python interface to the Redis key-value store." + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +builddependencies = [('binutils', '2.40')] +dependencies = [ + ('Python', '3.11.3'), + ('typing-extensions', '4.9.0'), + ('Redis', '7.2.3'), +] + +exts_list = [ + ('async-timeout', '4.0.3', { + 'checksums': ['4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f'], + }), + (name, version, { + 'modulename': 'redis', + 'source_urls': ['https://github.com/redis/redis-py/archive/refs/tags/'], + 'sources': ['v%(version)s.tar.gz'], + 'checksums': ['0a40afc824a5a3b465db4ba868a056a83779482f22d7d003c48fca230d9fe93a'], + }), +] + +moduleclass = "data" diff --git a/easybuild/easyconfigs/r/remake/remake-4.3+dbg-1.6-GCCcore-11.3.0.eb b/easybuild/easyconfigs/r/remake/remake-4.3+dbg-1.6-GCCcore-11.3.0.eb new file mode 100644 index 00000000000..aa3958606a9 --- /dev/null +++ b/easybuild/easyconfigs/r/remake/remake-4.3+dbg-1.6-GCCcore-11.3.0.eb @@ -0,0 +1,33 @@ +easyblock = 'ConfigureMake' + +name = 'remake' +version = '4.3+dbg-1.6' + +homepage = 'https://bashdb.sourceforge.net/remake' +description = """remake is an enhanced version of GNU Make that adds improved error reporting, better tracing, + profiling and a debugger""" + +toolchain = {'name': 'GCCcore', 'version': '11.3.0'} + +source_urls = ['https://github.com/rocky/remake/releases/download/remake-%(version)s/'] +sources = [SOURCE_TAR_GZ] +checksums = ['f6a0c6179cd92524ad5dd04787477c0cd45afb5822d977be93d083b810647b87'] + +builddependencies = [ + ('binutils', '2.38'), +] + +dependencies = [ + ('libreadline', '8.1.2'), +] + +sanity_check_paths = { + 'files': ['bin/remake'], + 'dirs': ['share'], +} + +sanity_check_commands = [ + "remake --help", +] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/r/rioxarray/rioxarray-0.15.0-foss-2023a.eb b/easybuild/easyconfigs/r/rioxarray/rioxarray-0.15.0-foss-2023a.eb new file mode 100644 index 00000000000..28130eaa62e --- /dev/null +++ b/easybuild/easyconfigs/r/rioxarray/rioxarray-0.15.0-foss-2023a.eb @@ -0,0 +1,26 @@ +easyblock = 'PythonBundle' + +name = 'rioxarray' +version = '0.15.0' + +homepage = 'https://corteva.github.io/rioxarray' +description = "Geospatial xarray extension powered by rasterio" + +toolchain = {'name': 'foss', 'version': '2023a'} + +dependencies = [ + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), + ('rasterio', '1.3.9'), + ('pyproj', '3.6.0'), + ('xarray', '2023.9.0'), +] + +exts_list = [ + (name, version, { + 'use_pip_extras': 'interp', + 'checksums': ['d2a8429a5b6405913c7b6f515ef2992b05139c96eb39a2dc1c9f475ce0848c9c'], + }), +] + +moduleclass = 'geo' diff --git a/easybuild/easyconfigs/s/SQLAlchemy/SQLAlchemy-2.0.29-GCCcore-12.2.0.eb b/easybuild/easyconfigs/s/SQLAlchemy/SQLAlchemy-2.0.29-GCCcore-12.2.0.eb new file mode 100644 index 00000000000..fca3279145c --- /dev/null +++ b/easybuild/easyconfigs/s/SQLAlchemy/SQLAlchemy-2.0.29-GCCcore-12.2.0.eb @@ -0,0 +1,43 @@ +easyblock = 'PythonBundle' + +name = 'SQLAlchemy' +version = '2.0.29' + +homepage = 'https://www.sqlalchemy.org/' +description = """SQLAlchemy is the Python SQL toolkit and Object Relational Mapper that gives +application developers the full power and flexibility of SQL. SQLAlchemy +provides a full suite of well known enterprise-level persistence patterns, +designed for efficient and high-performing database access, adapted into a +simple and Pythonic domain language.""" + +toolchain = {'name': 'GCCcore', 'version': '12.2.0'} + +builddependencies = [('binutils', '2.39')] + +dependencies = [ + ('Python', '3.10.8'), + ('Greenlet', '2.0.2'), + ('psycopg', '3.1.18'), # optional, postgresql extra + ('Mako', '1.2.4'), # needed by alembic +] + +exts_list = [ + ('async-timeout', '4.0.3', { + 'checksums': ['4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f'], + }), + ('asyncpg', '0.29.0', { + 'checksums': ['d1c49e1f44fffafd9a55e1a9b101590859d881d639ea2922516f5d9c512d354e'], + }), + ('typing_extensions', '4.7.1', { + 'checksums': ['b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2'], + }), + (name, version, { + 'use_pip_extras': 'asyncio,postgresql,postgresql_asyncpg', + 'checksums': ['bd9566b8e58cabd700bc367b60e90d9349cd16f0984973f98a9a09f9c64e86f0'], + }), + ('alembic', '1.13.1', { + 'checksums': ['4932c8558bf68f2ee92b9bbcb8218671c627064d5b08939437af6d77dc05e595'], + }), +] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/s/SQLAlchemy/SQLAlchemy-2.0.29-GCCcore-13.2.0.eb b/easybuild/easyconfigs/s/SQLAlchemy/SQLAlchemy-2.0.29-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..11c27879edc --- /dev/null +++ b/easybuild/easyconfigs/s/SQLAlchemy/SQLAlchemy-2.0.29-GCCcore-13.2.0.eb @@ -0,0 +1,40 @@ +easyblock = 'PythonBundle' + +name = 'SQLAlchemy' +version = '2.0.29' + +homepage = 'https://www.sqlalchemy.org/' +description = """SQLAlchemy is the Python SQL toolkit and Object Relational Mapper that gives +application developers the full power and flexibility of SQL. SQLAlchemy +provides a full suite of well known enterprise-level persistence patterns, +designed for efficient and high-performing database access, adapted into a +simple and Pythonic domain language.""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +builddependencies = [('binutils', '2.40')] + +dependencies = [ + ('Python', '3.11.5'), + ('Greenlet', '3.0.3'), + ('psycopg', '3.1.18'), # optional, postgresql extra + ('Mako', '1.2.4'), # needed by alembic +] + +exts_list = [ + ('async-timeout', '4.0.3', { + 'checksums': ['4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f'], + }), + ('asyncpg', '0.29.0', { + 'checksums': ['d1c49e1f44fffafd9a55e1a9b101590859d881d639ea2922516f5d9c512d354e'], + }), + (name, version, { + 'use_pip_extras': 'asyncio,postgresql,postgresql_asyncpg', + 'checksums': ['bd9566b8e58cabd700bc367b60e90d9349cd16f0984973f98a9a09f9c64e86f0'], + }), + ('alembic', '1.13.1', { + 'checksums': ['4932c8558bf68f2ee92b9bbcb8218671c627064d5b08939437af6d77dc05e595'], + }), +] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/s/Saxon-HE/Saxon-HE-12.4-Java-21.eb b/easybuild/easyconfigs/s/Saxon-HE/Saxon-HE-12.4-Java-21.eb new file mode 100644 index 00000000000..7a942df7b9a --- /dev/null +++ b/easybuild/easyconfigs/s/Saxon-HE/Saxon-HE-12.4-Java-21.eb @@ -0,0 +1,26 @@ +easyblock = 'Tarball' + +name = 'Saxon-HE' +version = '12.4' +versionsuffix = '-Java-%(javaver)s' + +homepage = 'http://saxon.sourceforge.net' +description = """Open Source SAXON XSLT processor developed by Saxonica Limited.""" + +toolchain = SYSTEM + +source_urls = ['https://github.com/Saxonica/Saxon-HE/releases/download/SaxonHE12-4/'] +sources = ['SaxonHE%sJ.zip' % version.replace('.', '-')] +checksums = ['44ab28ea945090983196f0b6479596a27fd57a341e8465b6db7fc2eca8c3ddce'] + +dependencies = [('Java', '21')] + +local_jarfiles = [ + '%(namelower)s-%(version)s.jar', '%(namelower)s-test-%(version)s.jar', '%(namelower)s-xqj-%(version)s.jar' +] + +sanity_check_paths = { + 'files': local_jarfiles, + 'dirs': [], +} +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/s/SciPy-bundle/SciPy-bundle-2023.02-gfbf-2022b.eb b/easybuild/easyconfigs/s/SciPy-bundle/SciPy-bundle-2023.02-gfbf-2022b.eb index e14192e674c..1ffa98595bd 100644 --- a/easybuild/easyconfigs/s/SciPy-bundle/SciPy-bundle-2023.02-gfbf-2022b.eb +++ b/easybuild/easyconfigs/s/SciPy-bundle/SciPy-bundle-2023.02-gfbf-2022b.eb @@ -50,6 +50,7 @@ exts_list = [ 'scipy-1.10.1_disable-tests.patch', 'scipy-1.10.1_xfail-aarch64_test_maxiter_worsening.patch', 'scipy-1.10.1_fix-lobpcg-test.patch', + 'scipy-1.10.1_fix-test_det_and_ortho.patch', ], 'checksums': [ {'scipy-1.10.1.tar.gz': '2cf9dfb80a7b4589ba4c40ce7588986d6d5cebc5457cad2c2880f6bc2d42f3a5'}, @@ -57,6 +58,8 @@ exts_list = [ {'scipy-1.10.1_xfail-aarch64_test_maxiter_worsening.patch': '48177d6af51cf3e3d46aed8425807f0a65a498f7558f475032e0ad846559a23e'}, {'scipy-1.10.1_fix-lobpcg-test.patch': 'eb4c576959108df0b1749705e64fe42e79edcf5aa8f6b4d7908f9b136d0d6648'}, + {'scipy-1.10.1_fix-test_det_and_ortho.patch': + 'beb7516659c2458f91029ee0562da2ff7cf8875f2cfafeeef473e7c7b60e65fe'}, ], 'enable_slow_tests': True, 'ignore_test_result': False, diff --git a/easybuild/easyconfigs/s/SciPy-bundle/scipy-1.10.1_fix-test_det_and_ortho.patch b/easybuild/easyconfigs/s/SciPy-bundle/scipy-1.10.1_fix-test_det_and_ortho.patch new file mode 100644 index 00000000000..4e09e3285d7 --- /dev/null +++ b/easybuild/easyconfigs/s/SciPy-bundle/scipy-1.10.1_fix-test_det_and_ortho.patch @@ -0,0 +1,43 @@ +Based on https://github.com/scipy/scipy/pull/18288 to fix failing TestOrthoGroup.test_det_and_ortho +> /tmp/easybuild-tmp/eb-cdq2z1jo/tmp8_aj6pfo/install/lib/python3.10/site-packages/scipy/stats/tests/test_multivariate.py:1827: in test_det_and_ortho +> assert_array_less([0]*10, [np.nonzero(d < 0)[0].shape[0] for d in dets]) +> ... +> E AssertionError: +> E Arrays are not less-ordered +> E +> E Mismatched elements: 1 / 10 (10%) +> E Max absolute difference: 7 +> E Max relative difference: 1. +> E x: array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) +> E y: array([4, 5, 5, 6, 6, 0, 6, 7, 5, 4]) + +But removed the new test_det_distribution_gh18272 which fails with +> ValueError('expected square matrix') + +which is likely an issue caused by the differing versions + +Author: Alexander Grund (TU Dresden) + +diff --git a/scipy/stats/tests/test_multivariate.py b/scipy/stats/tests/test_multivariate.py +index ec16e94c7775..3a8abceb6152 100644 +--- a/scipy/stats/tests/test_multivariate.py ++++ b/scipy/stats/tests/test_multivariate.py +@@ -1860,18 +1860,12 @@ def test_det_and_ortho(self): + dets = np.array([[np.linalg.det(x) for x in xx] for xx in xs]) + assert_allclose(np.fabs(dets), np.ones(dets.shape), rtol=1e-13) + +- # Test that we get both positive and negative determinants +- # Check that we have at least one and less than 10 negative dets in a sample of 10. The rest are positive by the previous test. +- # Test each dimension separately +- assert_array_less([0]*10, [np.nonzero(d < 0)[0].shape[0] for d in dets]) +- assert_array_less([np.nonzero(d < 0)[0].shape[0] for d in dets], [10]*10) +- + # Test that these are orthogonal matrices + for xx in xs: + for x in xx: + assert_array_almost_equal(np.dot(x, x.T), + np.eye(x.shape[0])) + + def test_haar(self): + # Test that the distribution is constant under rotation + # Every column should have the same distribution diff --git a/easybuild/easyconfigs/s/SymEngine-python/SymEngine-python-0.11.0-gfbf-2023b.eb b/easybuild/easyconfigs/s/SymEngine-python/SymEngine-python-0.11.0-gfbf-2023b.eb new file mode 100644 index 00000000000..fbc34350145 --- /dev/null +++ b/easybuild/easyconfigs/s/SymEngine-python/SymEngine-python-0.11.0-gfbf-2023b.eb @@ -0,0 +1,27 @@ +easyblock = 'PythonBundle' + +name = 'SymEngine-python' +version = '0.11.0' + +homepage = 'https://github.com/symengine/symengine.py' +description = "Python wrappers to the C++ library SymEngine, a fast C++ symbolic manipulation library." + +toolchain = {'name': 'gfbf', 'version': '2023b'} + +builddependencies = [ + ('CMake', '3.27.6'), +] + +dependencies = [ + ('SymEngine', '0.11.2'), + ('Python', '3.11.5'), + ('Python-bundle-PyPI', '2023.10'), +] + +exts_list = [ + ('symengine', version, { + 'checksums': ['0dd30d29b804ebb7251bddec29c38c3b1fc15ea6953a2c57ee758d5f6fcba458'], + }), +] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/s/SymEngine/SymEngine-0.11.2-gfbf-2023b.eb b/easybuild/easyconfigs/s/SymEngine/SymEngine-0.11.2-gfbf-2023b.eb new file mode 100644 index 00000000000..50c96416354 --- /dev/null +++ b/easybuild/easyconfigs/s/SymEngine/SymEngine-0.11.2-gfbf-2023b.eb @@ -0,0 +1,38 @@ +easyblock = 'CMakeMake' + +name = 'SymEngine' +version = '0.11.2' + +homepage = 'https://github.com/symengine/symengine' +description = "SymEngine is a standalone fast C++ symbolic manipulation library" + +toolchain = {'name': 'gfbf', 'version': '2023b'} + +source_urls = ['https://github.com/symengine/symengine/archive/refs/tags/'] +sources = ['v%(version)s.tar.gz'] +checksums = ['f6972acd6a65354f6414e69460d2e175729470632bdac05919bc2f7f32e48cbd'] + +builddependencies = [ + ('CMake', '3.27.6'), +] + +dependencies = [ + ('GMP', '6.3.0'), + ('FLINT', '3.1.1'), + ('MPC', '1.3.1'), + ('LLVM', '16.0.6'), + ('MPFR', '4.2.1'), +] + +local_opts = '-DWITH_OPENMP=ON -DWITH_SYMENGINE_RCP=ON -DWITH_COTIRE=OFF ' +local_opts += '-DWITH_MPFR=ON -DWITH_MPC=ON -DWITH_LLVM=ON -DWITH_BFD=ON -DWITH_FLINT=ON ' +configopts = [local_opts + '-DBUILD_SHARED_LIBS=OFF', local_opts + '-DBUILD_SHARED_LIBS=ON'] + +runtest = 'test' + +sanity_check_paths = { + 'files': ['lib64/libsymengine.a', 'lib64/libsymengine.%s' % SHLIB_EXT], + 'dirs': ['include/symengine/'] +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/s/scCODA/scCODA-0.1.9-foss-2023a.eb b/easybuild/easyconfigs/s/scCODA/scCODA-0.1.9-foss-2023a.eb index 5547f9fb269..43c06e1413b 100644 --- a/easybuild/easyconfigs/s/scCODA/scCODA-0.1.9-foss-2023a.eb +++ b/easybuild/easyconfigs/s/scCODA/scCODA-0.1.9-foss-2023a.eb @@ -16,7 +16,7 @@ dependencies = [ ('TensorFlow', '2.13.0'), ('tensorflow-probability', '0.20.0'), ('scanpy', '1.9.8'), - ('scikit-bio', '0.5.9'), + ('scikit-bio', '0.6.0'), ('rpy2', '3.5.15'), ('ArviZ', '0.16.1'), ] diff --git a/easybuild/easyconfigs/s/scikit-bio/scikit-bio-0.5.9-foss-2023a.eb b/easybuild/easyconfigs/s/scikit-bio/scikit-bio-0.6.0-foss-2023a.eb similarity index 70% rename from easybuild/easyconfigs/s/scikit-bio/scikit-bio-0.5.9-foss-2023a.eb rename to easybuild/easyconfigs/s/scikit-bio/scikit-bio-0.6.0-foss-2023a.eb index e02486e5630..922b4839a93 100644 --- a/easybuild/easyconfigs/s/scikit-bio/scikit-bio-0.5.9-foss-2023a.eb +++ b/easybuild/easyconfigs/s/scikit-bio/scikit-bio-0.6.0-foss-2023a.eb @@ -1,8 +1,7 @@ easyblock = 'PythonBundle' name = 'scikit-bio' -version = '0.5.9' -local_commit = '7565847' +version = '0.6.0' homepage = 'http://scikit-bio.org' description = """scikit-bio is an open-source, BSD-licensed Python 3 package providing data structures, algorithms @@ -18,6 +17,7 @@ dependencies = [ ('scikit-learn', '1.3.1'), ('IPython', '8.14.0'), ('h5py', '3.9.0'), + ('biom-format', '2.1.15'), ] exts_list = [ @@ -29,10 +29,7 @@ exts_list = [ }), (name, version, { 'modulename': 'skbio', - # download from commit to get rid of restriction of scipy version - 'source_urls': ['https://github.com/scikit-bio/scikit-bio/archive/'], - 'sources': [{'download_filename': '7565847.tar.gz', 'filename': '%(name)s-%(version)s.tar.gz'}], - 'checksums': ['b2a1054e1bc89df9775335d31eaa6bfa0cce4487d568cff96e215fba8624d153'], + 'checksums': ['10105a7c3c15ae5910244927f29ba7aa35234b19ebe6513b8484547343b2c10f'], }), ] diff --git a/easybuild/easyconfigs/u/UCX-CUDA/UCX-CUDA-1.13.1-GCCcore-12.2.0-CUDA-11.7.0.eb b/easybuild/easyconfigs/u/UCX-CUDA/UCX-CUDA-1.13.1-GCCcore-12.2.0-CUDA-11.7.0.eb new file mode 100644 index 00000000000..2376c9e36ac --- /dev/null +++ b/easybuild/easyconfigs/u/UCX-CUDA/UCX-CUDA-1.13.1-GCCcore-12.2.0-CUDA-11.7.0.eb @@ -0,0 +1,42 @@ +easyblock = 'EB_UCX_Plugins' + +name = 'UCX-CUDA' +version = '1.13.1' +versionsuffix = '-CUDA-%(cudaver)s' + +homepage = 'http://www.openucx.org/' +description = """Unified Communication X +An open-source production grade communication framework for data centric +and high-performance applications + +This module adds the UCX CUDA support. +""" + +toolchain = {'name': 'GCCcore', 'version': '12.2.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/openucx/ucx/releases/download/v%(version)s'] +sources = [{'filename': 'ucx-%(version)s.tar.gz', 'alt_location': 'UCX'}] +patches = ['%(name)s-1.11.0_link_against_existing_UCX_libs.patch'] +checksums = [ + ('efc37829b68e131d2acc82a3fd4334bfd611156a756837ffeb650ab9a9dd3828', + '2c4a2f96c700e3705e185c2846a710691b6e800e8aec11fd4b3e47bcc3990548'), # ucx-1.13.1.tar.gz + {'UCX-CUDA-1.11.0_link_against_existing_UCX_libs.patch': + '457187fa020e526609ba91e7750c9941d57bd57d60d6eed317b40ad8824aca93'}, +] + +builddependencies = [ + ('binutils', '2.39'), + ('Autotools', '20220317'), + ('pkgconf', '1.9.3'), +] + +dependencies = [ + ('zlib', '1.2.12'), + ('UCX', '1.13.1'), + ('CUDA', '11.7.0', '', SYSTEM), + ('GDRCopy', '2.3'), +] + + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/u/UCX/UCX-1.16.0-rc4-GCCcore-11.2.0.eb b/easybuild/easyconfigs/u/UCX/UCX-1.16.0-rc4-GCCcore-11.2.0.eb new file mode 100644 index 00000000000..42f38528005 --- /dev/null +++ b/easybuild/easyconfigs/u/UCX/UCX-1.16.0-rc4-GCCcore-11.2.0.eb @@ -0,0 +1,52 @@ +easyblock = 'ConfigureMake' + +name = 'UCX' +version = '1.16.0-rc4' + +homepage = 'https://www.openucx.org/' +description = """Unified Communication X +An open-source production grade communication framework for data centric +and high-performance applications +""" + +toolchain = {'name': 'GCCcore', 'version': '11.2.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/openucx/ucx/releases/download/v%(version)s'] +sources = [{'download_filename': 'ucx-%s.tar.gz' % version.split('-')[0], 'filename': SOURCELOWER_TAR_GZ}] +patches = [ + 'UCX-1.13.1-dynamic_modules.patch', +] +checksums = [ + {'ucx-1.16.0-rc4.tar.gz': 'bc82ba145bec5de2eb3a7428a4d11a066090b5c307d8daed4e75351f9f3919b0'}, + {'UCX-1.13.1-dynamic_modules.patch': '00874687bd90b795fff61aaa183f6c6bea2210aa1003b28f23d9ebf7066f8782'}, +] + +builddependencies = [ + ('binutils', '2.37'), + ('Autotools', '20210726'), + ('pkg-config', '0.29.2'), +] + +osdependencies = [OS_PKG_IBVERBS_DEV] + +dependencies = [ + ('zlib', '1.2.11'), + ('numactl', '2.0.14'), +] + +configure_cmd = "contrib/configure-release" + +configopts = '--enable-optimizations --enable-cma --enable-mt --with-verbs ' +configopts += '--without-java --without-go --disable-doxygen-doc ' + +buildopts = 'V=1' + +sanity_check_paths = { + 'files': ['bin/ucx_info', 'bin/ucx_perftest', 'bin/ucx_read_profile'], + 'dirs': ['include', 'lib', 'share'] +} + +sanity_check_commands = ["ucx_info -d"] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/u/UCX/UCX-1.16.0-rc4-GCCcore-11.3.0.eb b/easybuild/easyconfigs/u/UCX/UCX-1.16.0-rc4-GCCcore-11.3.0.eb new file mode 100644 index 00000000000..3627a39308c --- /dev/null +++ b/easybuild/easyconfigs/u/UCX/UCX-1.16.0-rc4-GCCcore-11.3.0.eb @@ -0,0 +1,52 @@ +easyblock = 'ConfigureMake' + +name = 'UCX' +version = '1.16.0-rc4' + +homepage = 'https://www.openucx.org/' +description = """Unified Communication X +An open-source production grade communication framework for data centric +and high-performance applications +""" + +toolchain = {'name': 'GCCcore', 'version': '11.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/openucx/ucx/releases/download/v%(version)s'] +sources = [{'download_filename': 'ucx-%s.tar.gz' % version.split('-')[0], 'filename': SOURCELOWER_TAR_GZ}] +patches = [ + 'UCX-1.13.1-dynamic_modules.patch', +] +checksums = [ + {'ucx-1.16.0-rc4.tar.gz': 'bc82ba145bec5de2eb3a7428a4d11a066090b5c307d8daed4e75351f9f3919b0'}, + {'UCX-1.13.1-dynamic_modules.patch': '00874687bd90b795fff61aaa183f6c6bea2210aa1003b28f23d9ebf7066f8782'}, +] + +builddependencies = [ + ('binutils', '2.38'), + ('Autotools', '20220317'), + ('pkgconf', '1.8.0'), +] + +osdependencies = [OS_PKG_IBVERBS_DEV] + +dependencies = [ + ('zlib', '1.2.12'), + ('numactl', '2.0.14'), +] + +configure_cmd = "contrib/configure-release" + +configopts = '--enable-optimizations --enable-cma --enable-mt --with-verbs ' +configopts += '--without-java --without-go --disable-doxygen-doc ' + +buildopts = 'V=1' + +sanity_check_paths = { + 'files': ['bin/ucx_info', 'bin/ucx_perftest', 'bin/ucx_read_profile'], + 'dirs': ['include', 'lib', 'share'] +} + +sanity_check_commands = ["ucx_info -d"] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/u/UCX/UCX-1.16.0-rc4-GCCcore-12.2.0.eb b/easybuild/easyconfigs/u/UCX/UCX-1.16.0-rc4-GCCcore-12.2.0.eb new file mode 100644 index 00000000000..b49c37a93ed --- /dev/null +++ b/easybuild/easyconfigs/u/UCX/UCX-1.16.0-rc4-GCCcore-12.2.0.eb @@ -0,0 +1,52 @@ +easyblock = 'ConfigureMake' + +name = 'UCX' +version = '1.16.0-rc4' + +homepage = 'https://www.openucx.org/' +description = """Unified Communication X +An open-source production grade communication framework for data centric +and high-performance applications +""" + +toolchain = {'name': 'GCCcore', 'version': '12.2.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/openucx/ucx/releases/download/v%(version)s'] +sources = [{'download_filename': 'ucx-%s.tar.gz' % version.split('-')[0], 'filename': SOURCELOWER_TAR_GZ}] +patches = [ + 'UCX-1.13.1-dynamic_modules.patch', +] +checksums = [ + {'ucx-1.16.0-rc4.tar.gz': 'bc82ba145bec5de2eb3a7428a4d11a066090b5c307d8daed4e75351f9f3919b0'}, + {'UCX-1.13.1-dynamic_modules.patch': '00874687bd90b795fff61aaa183f6c6bea2210aa1003b28f23d9ebf7066f8782'}, +] + +builddependencies = [ + ('binutils', '2.39'), + ('Autotools', '20220317'), + ('pkgconf', '1.9.3'), +] + +osdependencies = [OS_PKG_IBVERBS_DEV] + +dependencies = [ + ('zlib', '1.2.12'), + ('numactl', '2.0.16'), +] + +configure_cmd = "contrib/configure-release" + +configopts = '--enable-optimizations --enable-cma --enable-mt --with-verbs ' +configopts += '--without-java --without-go --disable-doxygen-doc ' + +buildopts = 'V=1' + +sanity_check_paths = { + 'files': ['bin/ucx_info', 'bin/ucx_perftest', 'bin/ucx_read_profile'], + 'dirs': ['include', 'lib', 'share'] +} + +sanity_check_commands = ["ucx_info -d"] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/u/UCX/UCX-1.16.0-rc4-GCCcore-12.3.0.eb b/easybuild/easyconfigs/u/UCX/UCX-1.16.0-rc4-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..b4530aa124a --- /dev/null +++ b/easybuild/easyconfigs/u/UCX/UCX-1.16.0-rc4-GCCcore-12.3.0.eb @@ -0,0 +1,52 @@ +easyblock = 'ConfigureMake' + +name = 'UCX' +version = '1.16.0-rc4' + +homepage = 'https://www.openucx.org/' +description = """Unified Communication X +An open-source production grade communication framework for data centric +and high-performance applications +""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/openucx/ucx/releases/download/v%(version)s'] +sources = [{'download_filename': 'ucx-%s.tar.gz' % version.split('-')[0], 'filename': SOURCELOWER_TAR_GZ}] +patches = [ + 'UCX-1.13.1-dynamic_modules.patch', +] +checksums = [ + {'ucx-1.16.0-rc4.tar.gz': 'bc82ba145bec5de2eb3a7428a4d11a066090b5c307d8daed4e75351f9f3919b0'}, + {'UCX-1.13.1-dynamic_modules.patch': '00874687bd90b795fff61aaa183f6c6bea2210aa1003b28f23d9ebf7066f8782'}, +] + +builddependencies = [ + ('binutils', '2.40'), + ('Autotools', '20220317'), + ('pkgconf', '1.9.5'), +] + +osdependencies = [OS_PKG_IBVERBS_DEV] + +dependencies = [ + ('zlib', '1.2.13'), + ('numactl', '2.0.16'), +] + +configure_cmd = "contrib/configure-release" + +configopts = '--enable-optimizations --enable-cma --enable-mt --with-verbs ' +configopts += '--without-java --without-go --disable-doxygen-doc ' + +buildopts = 'V=1' + +sanity_check_paths = { + 'files': ['bin/ucx_info', 'bin/ucx_perftest', 'bin/ucx_read_profile'], + 'dirs': ['include', 'lib', 'share'] +} + +sanity_check_commands = ["ucx_info -d"] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/u/UCX/UCX-1.16.0-rc4-GCCcore-13.2.0.eb b/easybuild/easyconfigs/u/UCX/UCX-1.16.0-rc4-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..66faa507c27 --- /dev/null +++ b/easybuild/easyconfigs/u/UCX/UCX-1.16.0-rc4-GCCcore-13.2.0.eb @@ -0,0 +1,52 @@ +easyblock = 'ConfigureMake' + +name = 'UCX' +version = '1.16.0-rc4' + +homepage = 'https://www.openucx.org/' +description = """Unified Communication X +An open-source production grade communication framework for data centric +and high-performance applications +""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/openucx/ucx/releases/download/v%(version)s'] +sources = [{'download_filename': 'ucx-%s.tar.gz' % version.split('-')[0], 'filename': SOURCELOWER_TAR_GZ}] +patches = [ + 'UCX-1.13.1-dynamic_modules.patch', +] +checksums = [ + {'ucx-1.16.0-rc4.tar.gz': 'bc82ba145bec5de2eb3a7428a4d11a066090b5c307d8daed4e75351f9f3919b0'}, + {'UCX-1.13.1-dynamic_modules.patch': '00874687bd90b795fff61aaa183f6c6bea2210aa1003b28f23d9ebf7066f8782'}, +] + +builddependencies = [ + ('binutils', '2.40'), + ('Autotools', '20220317'), + ('pkgconf', '2.0.3'), +] + +osdependencies = [OS_PKG_IBVERBS_DEV] + +dependencies = [ + ('zlib', '1.2.13'), + ('numactl', '2.0.16'), +] + +configure_cmd = "contrib/configure-release" + +configopts = '--enable-optimizations --enable-cma --enable-mt --with-verbs ' +configopts += '--without-java --without-go --disable-doxygen-doc ' + +buildopts = 'V=1' + +sanity_check_paths = { + 'files': ['bin/ucx_info', 'bin/ucx_perftest', 'bin/ucx_read_profile'], + 'dirs': ['include', 'lib', 'share'] +} + +sanity_check_commands = ["ucx_info -d"] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/x/Xerces-C++/Xerces-C++-3.2.5-GCCcore-13.2.0.eb b/easybuild/easyconfigs/x/Xerces-C++/Xerces-C++-3.2.5-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..bd3ec06470c --- /dev/null +++ b/easybuild/easyconfigs/x/Xerces-C++/Xerces-C++-3.2.5-GCCcore-13.2.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.2.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.0.3'), + ('binutils', '2.40'), + ('CMake', '3.27.6'), +] + +dependencies = [ + ('cURL', '8.3.0'), +] + +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/y/Yices/Yices-2.6.4-GCCcore-12.2.0.eb b/easybuild/easyconfigs/y/Yices/Yices-2.6.4-GCCcore-12.2.0.eb new file mode 100644 index 00000000000..f755f69bbec --- /dev/null +++ b/easybuild/easyconfigs/y/Yices/Yices-2.6.4-GCCcore-12.2.0.eb @@ -0,0 +1,37 @@ +easyblock = 'ConfigureMake' + +name = 'Yices' +version = '2.6.4' + +homepage = "https://yices.csl.sri.com/index.html" +description = """Yices 2 is an SMT solver that decides the satisfiability of formulas containing uninterpreted + function symbols with equality, real and integer arithmetic, bitvectors, scalar types, and tuples. Yices 2 supports + both linear and nonlinear arithmetic.""" + +toolchain = {'name': 'GCCcore', 'version': '12.2.0'} + +source_urls = ['https://yices.csl.sri.com/releases/%(version)s/'] +sources = ['%(namelower)s-%(version)s-src.tar.gz'] +checksums = ['533a24e020ecb7d64c03a965d598430d193651e2887e6f46924dec5786db78cb'] + +builddependencies = [ + ('binutils', '2.39'), + ('Autotools', '20220317'), +] + +dependencies = [ + ('GMP', '6.2.1'), + ('gperf', '3.1'), +] + +preconfigopts = 'autoconf &&' +runtest = 'check' + +sanity_check_paths = { + 'files': ['lib/libyices.a', 'lib/libyices.%s' % SHLIB_EXT, 'include/yices.h'], + 'dirs': [], +} + +sanity_check_commands = ['%s --help' % x for x in ['yices', 'yices-sat', 'yices-smt', 'yices-smt2']] + +moduleclass = 'tools' diff --git a/setup.py b/setup.py index c0819138bdd..aedc24d838c 100644 --- a/setup.py +++ b/setup.py @@ -1,5 +1,5 @@ ## -# Copyright 2012-2023 Ghent University +# Copyright 2012-2024 Ghent University # # This file is part of EasyBuild, # originally created by the HPC team of Ghent University (http://ugent.be/hpc/en), diff --git a/test/__init__.py b/test/__init__.py index 01ba03af458..8ab7c0ed706 100644 --- a/test/__init__.py +++ b/test/__init__.py @@ -1,5 +1,5 @@ ## -# Copyright 2009-2023 Ghent University +# Copyright 2009-2024 Ghent University # # This file is part of EasyBuild, # originally created by the HPC team of Ghent University (http://ugent.be/hpc/en), diff --git a/test/easyconfigs/easyconfigs.py b/test/easyconfigs/easyconfigs.py index 34b545f4541..adfe4c8eefc 100644 --- a/test/easyconfigs/easyconfigs.py +++ b/test/easyconfigs/easyconfigs.py @@ -1,5 +1,5 @@ ## -# Copyright 2013-2023 Ghent University +# Copyright 2013-2024 Ghent University # # This file is part of EasyBuild, # originally created by the HPC team of Ghent University (http://ugent.be/hpc/en), @@ -336,6 +336,14 @@ def test_deps(self): fails = [] for ec in self.parsed_easyconfigs: + # make sure we don't add backdoored XZ versions (5.6.0, 5.6.1) + # see https://access.redhat.com/security/cve/CVE-2024-3094 + if ec['ec']['name'] == 'XZ' and ec['ec']['version'] in ('5.6.0', '5.6.1'): + fail = ("XZ versions 5.6.0 and 5.6.1 contain malicious code, and should not be introduced into" + " EasyBuild. Please use another version instead. For more details, see" + " https://access.redhat.com/security/cve/CVE-2024-3094") + fails.append(fail) + # make sure that no odd versions (like 1.13) of HDF5 are used as a dependency, # since those are released candidates - only even versions (like 1.12) are stable releases; # see https://docs.hdfgroup.org/archive/support/HDF5/doc/TechNotes/Version.html @@ -1398,7 +1406,7 @@ def template_easyconfig_test(self, spec): # cache the parsed easyconfig, to avoid that it is parsed again EasyConfigTest._parsed_easyconfigs.append(ecs[0]) else: - self.assertTrue(False, "easyconfig %s does not contain blocks, yields only one parsed easyconfig" % spec) + self.fail("easyconfig %s does not contain blocks, yields only one parsed easyconfig" % spec) # check easyconfig file name expected_fn = '%s-%s.eb' % (ec['name'], det_full_ec_version(ec)) @@ -1442,18 +1450,20 @@ def template_easyconfig_test(self, spec): app = app_class(ec) # more sanity checks - self.assertTrue(name, app.name) - self.assertTrue(ec['version'], app.version) + self.assertEqual(name, app.name) + self.assertEqual(ec['version'], app.version) + + failing_checks = [] # make sure that deprecated 'dummy' toolchain is no longer used, should use 'system' toolchain instead - ec_fn = os.path.basename(spec) - error_msg_tmpl = "%s should use 'system' toolchain rather than deprecated 'dummy' toolchain" - self.assertFalse(ec['toolchain']['name'] == 'dummy', error_msg_tmpl % os.path.basename(spec)) + if ec['toolchain']['name'] == 'dummy': + failing_checks.append("%s should use 'system' toolchain rather than deprecated 'dummy' toolchain") # make sure that $root is not used, since it is not compatible with module files in Lua syntax res = re.findall(r'.*\$root.*', ec.rawtxt, re.M) - error_msg = "Found use of '$root', not compatible with modules in Lua syntax, use '%%(installdir)s' instead: %s" - self.assertFalse(res, error_msg % res) + if res: + failing_checks.append("Found use of '$root', not compatible with modules in Lua syntax, " + "use '%%(installdir)s' instead: %s" % res) # check for redefined easyconfig parameters, there should be none... param_def_regex = re.compile(r'^(?P\w+)\s*=', re.M) @@ -1464,10 +1474,9 @@ def template_easyconfig_test(self, spec): if cnt > 1: redefined_keys.append((key, cnt)) - redefined_keys_error_msg = "There should be no redefined easyconfig parameters, found %d: " % len(redefined_keys) - redefined_keys_error_msg += ', '.join('%s (%d)' % x for x in redefined_keys) - - self.assertFalse(redefined_keys, redefined_keys_error_msg) + if redefined_keys: + failing_checks.append("There should be no redefined easyconfig parameters, found %d: " % len(redefined_keys) + + ', '.join('%s (%d)' % x for x in redefined_keys)) # make sure that download_dep_fail, use_pip, sanity_pip_check are not explicitly enabled, # since they are enabled by default now in PythonPackage easyblock @@ -1496,8 +1505,7 @@ def template_easyconfig_test(self, spec): 'hpcugent.github.com/easybuild', 'hpcugent.github.io/easybuild', ] - for old_url in old_urls: - self.assertFalse(old_url in ec.rawtxt, "Old URL '%s' not found in %s" % (old_url, spec)) + failing_checks.extend("Old URL '%s' found" % old_url for old_url in old_urls if old_url in ec.rawtxt) # make sure binutils is included as a (build) dep if toolchain is GCCcore if ec['toolchain']['name'] == 'GCCcore': @@ -1522,8 +1530,8 @@ def template_easyconfig_test(self, spec): # in some cases, binutils can also be a runtime dep (e.g. for Clang) # Also using GCC directly as a build dep is also allowed (it includes the correct binutils) dep_names = [d['name'] for d in ec.dependencies()] - self.assertTrue('binutils' in dep_names or 'GCC' in dep_names, - "binutils or GCC is a build dep in %s: %s" % (spec, dep_names)) + if 'binutils' not in dep_names and 'GCC' not in dep_names: + failing_checks.append("binutils or GCC is a build dep: " + str(dep_names)) # make sure that OpenSSL wrapper is used rather than OS dependency, # for easyconfigs using a 2021a (sub)toolchain or more recent common toolchain version @@ -1543,7 +1551,8 @@ def template_easyconfig_test(self, spec): gcc_subtc_2021a = tcname in ('GCCcore', 'GCC') and tcver > LooseVersion('10.3') if gcc_subtc_2021a or (tcname in ('foss', 'gompi', 'iimpi', 'intel') and tcver >= LooseVersion('2021')): - self.assertFalse(openssl_osdep, "OpenSSL should not be listed as OS dependency in %s" % spec) + if openssl_osdep: + failing_checks.append("OpenSSL should not be listed as OS dependency") src_cnt = len(ec['sources']) patch_checksums = ec['checksums'][src_cnt:] @@ -1551,7 +1560,6 @@ 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)) - specfn = os.path.basename(spec) for idx, patch in enumerate(ec['patches']): patch_dir = specdir if isinstance(patch, str): @@ -1565,29 +1573,29 @@ def template_easyconfig_test(self, spec): # 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'): - msg = "Patch file %s is available for %s" % (patch_full, specfn) - self.assertTrue(os.path.isfile(patch_full), msg) - + 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 - if idx < len(patch_checksums) and (os.path.exists(patch_full) or patch_name.endswith('.patch')): + elif idx < len(patch_checksums) and (os.path.exists(patch_full) or patch_name.endswith('.patch')): checksum = patch_checksums[idx] - error_msg = "Invalid checksum for patch file %s in %s: %s" % (patch_name, ec_fn, checksum) - res = verify_checksum(patch_full, checksum) - self.assertTrue(res, error_msg) + if not verify_checksum(patch_full, checksum): + failing_checks.append("Invalid checksum for patch file %s: %s" % (patch_name, checksum)) # make sure 'source' step is not being skipped, # since that implies not verifying the checksum - error_msg = "'source' step should not be skipped in %s, since that implies not verifying checksums" % ec_fn - self.assertFalse(ec['checksums'] and ('source' in ec['skipsteps']), error_msg) + if ec['checksums'] and ('source' in ec['skipsteps']): + failing_checks.append("'source' step should not be skipped, since that implies not verifying checksums") for ext in ec.get_ref('exts_list'): if isinstance(ext, (tuple, list)) and len(ext) == 3: ext_name = ext[0] - self.assertTrue(isinstance(ext[2], dict), - "3rd element of extension spec for %s must be a dictionary" % ext_name) + if not isinstance(ext[2], dict): + failing_checks.append("3rd element of extension spec for %s must be a dictionary" % ext_name) + + # Need to check now as collect_exts_file_info relies on correct exts_list + if failing_checks: + self.fail('Verification for %s failed:\n' % os.path.basename(spec) + '\n'.join(failing_checks)) - ext_patch_issues = [] # After the sanity check above, use collect_exts_file_info to resolve templates etc. correctly for ext in app.collect_exts_file_info(fetch_files=False, verify_checksums=False): try: @@ -1607,22 +1615,21 @@ def template_easyconfig_test(self, spec): # 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): - ext_patch_issues.append("Patch file %s for extension %s is missing." % (ext_patch['name'], ext_name)) + 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): - ext_patch_issues.append("Invalid checksum for patch %s for extension %s: %s." - % (ext_patch['name'], ext_name, checksum)) - if ext_patch_issues: - self.fail("Verification of patches for %s failed:\n%s" % (ec_fn, '\n'.join(ext_patch_issues))) + failing_checks.append("Invalid checksum for patch %s for extension %s: %s." + % (ext_patch['name'], ext_name, checksum)) # check whether all extra_options defined for used easyblock are defined extra_opts = app.extra_options() for key in extra_opts: - self.assertTrue(key in app.cfg) + if key not in app.cfg: + failing_checks.append("Missing extra_option '%s'" % key) app.close_log() os.remove(app.logfile) @@ -1660,24 +1667,32 @@ def template_easyconfig_test(self, spec): # if may get resolved using a subtoolchain, which is then hardcoded in the dumped easyconfig if key in DEPENDENCY_PARAMETERS: # number of dependencies should remain the same - self.assertEqual(len(orig_val), len(dumped_val)) + if len(orig_val) != len(dumped_val): + failing_checks.append("Length difference for %s: %s vs %s" % (key, orig_val, dumped_val)) + continue for orig_dep, dumped_dep in zip(orig_val, dumped_val): # name should always match - self.assertEqual(orig_dep[0], dumped_dep[0]) + if orig_dep[0] != dumped_dep[0]: + failing_checks.append("Different name in %s: %s vs %s" % (key, orig_dep[0], dumped_dep[0])) + desc = '%s of %s' % (orig_dep[0], key) # version should always match, or be a possibility from the version dict if isinstance(orig_dep[1], dict): - self.assertTrue(dumped_dep[1] in orig_dep[1].values()) - else: - self.assertEqual(orig_dep[1], dumped_dep[1]) + if dumped_dep[1] not in orig_dep[1].values(): + failing_checks.append("Wrong version in %s: %s vs %s" + % (desc, dumped_dep[1], orig_dep[1].values())) + elif orig_dep[1] != dumped_dep[1]: + failing_checks.append("Different version in %s: %s vs %s" % (desc, orig_dep[1], dumped_dep[1])) # 3rd value is versionsuffix; if len(dumped_dep) >= 3: # if no versionsuffix was specified in original dep spec, then dumped value should be empty string if len(orig_dep) >= 3: - self.assertEqual(dumped_dep[2], orig_dep[2]) - else: - self.assertEqual(dumped_dep[2], '') + if orig_dep[2] != dumped_dep[2]: + failing_checks.append("Different versionsuffix in %s: %s vs %s" + % (desc, orig_dep[2], dumped_dep[2])) + elif dumped_dep[2] != '': + failing_checks.append("Unexpected versionsuffix in %s: %s" % (desc, dumped_dep[2])) # 4th value is toolchain spec if len(dumped_dep) >= 4: @@ -1685,31 +1700,40 @@ def template_easyconfig_test(self, spec): # use of `True` is deprecated in favour of the more intuitive `SYSTEM` template if orig_dep[3] is True: if skip_system_template_check: - self.assertEqual(dumped_dep[3], EASYCONFIG_CONSTANTS['SYSTEM'][0]) + if dumped_dep[3] != EASYCONFIG_CONSTANTS['SYSTEM'][0]: + failing_checks.append("Should use SYSTEM in %s, found %s" + % (desc, dumped_dep[3])) else: - error_msg = ( - "use of `True` to indicate the system toolchain for dependency " - "%s is deprecated, use the `SYSTEM` template constant instead" % dumped_dep[0] + failing_checks.append( + "use of `True` to indicate the system toolchain for " + "%s is deprecated, use the `SYSTEM` template constant instead" % desc ) - self.fail(error_msg) - else: - self.assertEqual(dumped_dep[3], orig_dep[3]) + elif orig_dep[3] != dumped_dep[3]: + failing_checks.append("Different toolchain in %s: %s vs %s" + % (desc, orig_dep[3], dumped_dep[3])) else: # if a subtoolchain is specifed (only) in the dumped easyconfig, # it should *not* be the same as the parent toolchain - self.assertNotEqual(dumped_dep[3], (orig_toolchain['name'], orig_toolchain['version'])) + parent_tc = (orig_toolchain['name'], orig_toolchain['version']) + if dumped_dep[3] == parent_tc: + failing_checks.append("Explicit toolchain in %s should not be the parent toolchain (%s)" + % (desc, parent_tc)) # take into account that for some string-valued easyconfig parameters (configopts & co), # the easyblock may have injected additional values, which affects the dumped easyconfig file elif isinstance(orig_val, str): - error_msg = "%s value '%s' should start with '%s'" % (key, dumped_val, orig_val) - self.assertTrue(dumped_val.startswith(orig_val), error_msg) - else: - error_msg = "%s value should be equal in original and dumped easyconfig: '%s' vs '%s'" - self.assertEqual(orig_val, dumped_val, error_msg % (key, orig_val, dumped_val)) - - # test passed, so set back to True - single_tests_ok = True and prev_single_tests_ok + if not dumped_val.startswith(orig_val): + failing_checks.append(f"{key} value '{dumped_val}' should start with '{orig_val}'") + elif orig_val != dumped_val: + fail_msg = f"{key} value should be equal in original and dumped easyconfig: " + fail_msg += f"'{orig_val}' vs '{dumped_val}'" + failing_checks.append(fail_msg) + + if failing_checks: + self.fail('Verification for %s failed:\n' % os.path.basename(spec) + '\n'.join(failing_checks)) + + # test passed, so set back + single_tests_ok = prev_single_tests_ok def suite(loader=None): diff --git a/test/easyconfigs/styletests.py b/test/easyconfigs/styletests.py index e765cdfc3f1..8c695514aba 100644 --- a/test/easyconfigs/styletests.py +++ b/test/easyconfigs/styletests.py @@ -1,5 +1,5 @@ ## -# Copyright 2016-2023 Ghent University +# Copyright 2016-2024 Ghent University # # This file is part of EasyBuild, # originally created by the HPC team of Ghent University (http://ugent.be/hpc/en), diff --git a/test/easyconfigs/suite.py b/test/easyconfigs/suite.py index c058d96f0c5..4218fcaa7b2 100644 --- a/test/easyconfigs/suite.py +++ b/test/easyconfigs/suite.py @@ -1,6 +1,6 @@ #!/usr/bin/python ## -# Copyright 2012-2023 Ghent University +# Copyright 2012-2024 Ghent University # # This file is part of EasyBuild, # originally created by the HPC team of Ghent University (http://ugent.be/hpc/en),