diff --git a/RELEASE_NOTES b/RELEASE_NOTES index 45d27a2e696..e687bf442f8 100644 --- a/RELEASE_NOTES +++ b/RELEASE_NOTES @@ -3,10 +3,130 @@ 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 19,487 easyconfig files, for 3,470 different software packages, +The latest version of easybuild-easyconfig provides 19,985 easyconfig files, for 3,552 different software packages, incl. 40 different (compiler) toolchains. +v4.9.2 (12 June 2024) +--------------------- + +update/bugfix release + +- added easyconfigs for foss/2024.05 toolchain (candidate for foss/2024a) (#20646) +- added example easyconfig files for 82 new software packages: + - AEDT (#20357), amdahl (#20346), AMGX (#20255), assembly-stats (#20281), Bio-FeatureIO (#20461), + bitshuffle (#20661), Cassiopeia (#20289), CCCL (#20255), charm-gems (#20327), CheckM2 (#20399), + chromVARmotifs (#20402), cmph (#20278), COMEBin (#20717), Compass (#20500), ctffind5 (#20669), currentNe (#20791), + CVX (#20231), deepfold (#20247), dotNET-Core (#20256), EasyMocap (#20446), ensmallen (#20485), EVcouplings (#20744), + Faiss (#19669), FDMNES (#20321), gnupg-bundle (#20406), grpcio (#20191), hatch-jupyter-builder (#20606), + hevea (#20597), HiGHS (#20186), hmmcopy_utils (#20472), HOMER (#20590), ICON (#20573), jiter (#20746), + LangChain (#20746), langchain-anthropic (#20746), libabigail (#20539), libbraiding (#20655), libhomfly (#20482), + libsupermesh (#20470), LIBSVM-MATLAB (#20752), Lightning (#19964), lil-aretomo (#20696), makefun (#20619), + MetalWalls (#20403), MICOM (#20186), ml-collections (#20247), ml_dtypes (#20707), mlpack (#20485), MOFA2 (#20538), + mumott (#20719), nvitop (#20512), ocamlbuild (#20552), optiSLang (#20320), orthAgogue (#20278), pdf2docx (#20416), + planarity (#20753), plantri (#20467), plmc (#20744), PortAudio (#20307), premailer (#20348), ProteinMPNN (#20705), + PRRTE (#20698), PSM2 (#20496), PyAEDT (#20357), pybind11-stubgen (#20518), PyEXR (#19983), pyGAM (#20385), + PyHMMER (#20544), pyseer (#20502), PyVista (#20649), qmflows (#20384), SciTools-Iris (#20767), SCReadCounts (#20455), + SDL2_gfx (#20466), subunit (#20412), TF-COMB (#20666), tiktoken (#20336), TorchIO (#20648), t-SNE-CUDA (#19669), + VAMPIRE-ASM (#20368), wfdb (#20521), WGDgc (#20367) +- added additional easyconfigs for various supported software packages, including: + - 4ti2 1.6.10, AFNI 24.0.02, Autoconf 2.72, Autotools 20231222, adjustText 1.1.1, aiohttp 3.9.5, alevin-fry 0.9.0, + alsa-lib 1.2.9, atropos 1.1.32, autopep8 2.2.0, BCFtools 1.19, BLIS 1.0, BWA 0.7.18, Boost 1.85.0, bcrypt 4.1.3, + binutils 2.42, bokeh 3.4.1, CGAL 5.6.1, CREST 3.0.1, CellRanger-ARC 2.0.2, CellRanger 8.0.1, CellRank 2.0.2, + Clang 17.0.6, CoCoALib 0.99850, Cython 3.0.10, cURL 8.7.1, cffi 1.16.0, code-server 4.89.1, + configurable-http-proxy 4.6.1, coverage 7.4.4, cpio 2.15, cppyy 3.1.2, cysignals 1.11.4, Doxygen 1.11.0, + dask-labextension 7.0.0, dask 2024.5.1, deal.II 9.5.2, dorado 0.5.3, dotNET-Core 8.0.203, E-ANTIC 2.0.2, + ECL 24.5.10, ESPResSo 4.2.2, eclib 20240408, expat 2.6.2, FLTK 1.3.9, FMM3D 1.0.4, FlexiBLAS 3.4.4, f90wrap 0.2.13, + fgbio 2.2.1, fontconfig 2.15.0, freetype-py 2.4.0, GAMESS-US 20220930-R2 + 20230930-R2, GCC 13.3.0 + 14.1.0, + GDB 14.2, GDRCopy 2.4.1, GOATOOLS 1.4.5, GTDB-Tk 2.4.0, Giza 1.4.1, gc 8.2.6, gcloud 472.0.0, gemmi 0.6.5, + gettext 0.22.5, giac 1.9.0-99, git 2.45.1, gmsh 4.12.2, gsutil 5.29, HDDM 0.9.9, HTSlib 1.19.1, HyPhy 2.5.60, + h5py 3.11.0, hwloc 2.10.0, ICU 75.1, IOR 4.0.0, imagecodecs 2024.1.1, imgaug 0.4.1, ipympl 0.9.4, + Jupyter-bundle 20240522, JupyterHub 4.1.5, JupyterLab 4.2.0, JupyterNotebook 7.2.0, jupyter-matlab-proxy 0.12.2, + jupyter-resource-usage 1.0.2, jupyter-rsession-proxy 2.2.0, jupyter-server-proxy 4.1.2, jupyter-server 2.14.0, + Kalign 3.4.0, KrakenUniq 1.0.4, kallisto 0.50.1, LAPACK 3.12.0, libarchive 3.7.4, libde265 1.0.15, libdeflate 1.20, + libdwarf 0.9.2, libfabric 1.21.0, libffi 3.4.5, libgcrypt 1.10.3, libgpg-error 1.48, libheif 1.17.6, libidn2 2.3.7, + libnsl 2.0.1, libpciaccess 0.18.1, libpng 1.6.43, libuv 1.48.0, libxml2 2.12.7, line_profiler 4.1.2, MATSim 15.0, + MDTraj 1.9.9, Mako 1.3.5, Meson 1.4.0, MetaMorpheus 1.0.5, Molpro 2024.1.0, MuJoCo 3.1.4, matlab-proxy 0.18.1, + mold 2.31.0, mpmath 1.3.0, NASM 2.16.03, NanoPlot 1.42.0, Nextflow 24.04.2, Ninja 1.12.1, nanoget 1.19.1, + napari 0.4.19.post1, nauty 2.8.8, ncurses 6.5, nghttp2 1.58.0, nghttp3 1.3.0, nglview 3.1.2, ngtcp2 1.2.0, + nodejs 20.13.1, numactl 2.0.18, nvtop 3.1.0, OCaml 5.1.1, OSU-Micro-Benchmarks 7.4, OpenBLAS 0.3.27, OpenMPI 5.0.3, + PARI-GP 2.15.5, PCRE2 10.43, PMIx 5.0.2, Perl 5.38.2, PhyML 3.3.20220408, PnetCDF 1.13.0, PyAMG 5.1.0, + PyQtGraph 0.13.7, PyTorch-Geometric 2.5.0, PyTorch-bundle 2.1.2, PycURL 7.45.3, Pysam 0.22.0, Python 3.12.3, + p11-kit 0.25.3, p4est 2.8.6, parallel 20240322, pauvre 0.2.3, petsc4py 3.20.3, pkgconf 2.2.0, plc 3.10, polars 0.20.2, + poppler 24.04.0, psutil 5.9.8, py3Dmol 2.1.0, pybedtools 0.9.1, pygame 2.5.2, pyiron 0.5.1, pyro-ppl 1.9.0, + python-mujoco 3.1.4, ROOT 6.30.06, RPostgreSQL 0.7-6, RStudio-Server 2023.12.1+402, Rtree 1.2.0, Rust 1.78.0, + SAMtools 1.19.2, SCOTCH 7.0.4, SDL2_image 2.8.2, SDL2_mixer 2.8.0, SDL2_ttf 2.22.0, SQLite 3.45.3, SWIG 4.2.1, + SentencePiece 0.2.0, Seurat 5.1.0, SeuratDisk 20231104, SimNIBS 4.0.1, Singular 4.4.0, Spack 0.21.2, Squidpy 1.4.1, + SymEngine-python 0.11.0, SymEngine 0.11.2, sbt 1.6.2, scikit-build-core 0.9.3, scikit-learn 1.4.2, TOBIAS 0.16.1, + Tcl 8.6.14, TensorFlow 2.15.1, Transformers 4.39.3, texlive 20230313, tmux 3.4, tokenizers 0.15.2, 0.2.5.20231120, + tornado 6.4, UCC 1.3.0, UCX 1.16.0, util-linux 2.40, VSCode 1.88.1, Valgrind 3.23.0, VisPy 0.14.1, wget 1.24.5, + XZ 5.4.5, xorg-macros 1.20.1, xprop 1.2.7, xtb 6.7.0, xxd 9.1.0307, yaml-cpp 0.8.0, zarr 2.17.1, zfp 1.0.1, + zlib-ng 2.1.6, zlib 1.3.1, zstd 1.5.6 +- minor enhancements, including: + - add missing (optional) dependency pyproject-metadata to scikit-build-core (#20391) + - add hatch-requirements-txt extension to hatchling easyconfigs (#20389) + - install pkg-config files for ncurses 6.4 when using GCCcore toolchain (#20405) + - use regular 'configure' instead of wrapper script for recent UCX easyconfigs (#20428) + - add RISC-V support to UCX 1.15.0 (#20429), UCC 1.2.0 (#20432), BLIS 0.9.0 (#20468), PAPI 7.1.0 (20659) + - add extensions to R-bundle-CRAN v2023.12: cmna (#20445), rhandsontable (#20614), XBRL (#20506) + - add checksum for RISC-V version to easyconfig for Java 21.0.2 (#20495) + - remove 'TORCHVISION_INCLUDE' from PyTorch-bundle easyconfigs, now handled by custom easyblock for torchvision (#20504) + - add dependencies required for GUI in Cellpose 2.2.2 easyconfigs (#20620) + - add 'build_info_msg' about kernel modules to GDRCopy (#20641) + - build both static and shared libs for Brotli 1.1.0 (#20757) +- various bug fixes, including: + - add missing dependencies for funannotate (#17690) + - fix path to SuiteSparse include/lib in easyconfig for CVXopt v1.3.1 (#20232) + - fix Highway 1.0.3 on some systems by disabling 'AVX3_DL' (#20298) + - replace incorrect scikit-bio 0.5.9 with scikit-bio 0.6.0 as dependency for scCODA (#20300) + - add alternate checksum to OpenMolcas v23.06 (#20301) + - change arrow-R dependency of Bioconductor v3.18 to v14.0.1 (which depends on required matching Arrow v14.0.1) (#20324) + - fix hardcoded '/bin/mv' path in Rhdf5lib extension included in R-bundle-Bioconductor v3.16 + v3.18 (#20378) + - remove dependency on HDF5 in recent Bioconductor easyconfigs (#20379) + - make sure that libjpeg-turbo libraries are installed in 'lib' subdirectory (#20386) + - add patch for Libint 2.7.2 to fix compiler error with glibc >= 2.34 (#20396) + - use 'bash' rather than 'sh' to run PLINK-2.00a3.7 tests (#20404) + - add patch to fix 'UNPACK-OPAL-VALUE: UNSUPPORTED TYPE 33 FOR KEY' error in OpenMPI 4.1.5 (#20422) + - add patch to increase compatibility with AVX512 platforms for bwa-mem2 v2.2.1 (#20434) + - add patch for GROMACS 2024.1 to fix filesystem race in tests (#20439) + - demote poetry to build dependency for nanocompore (#20453) + - add patch to fix CVE-2024-27322 in R v3.6.x (#20464), v4.0.x (#20463), and v4.1.x + v4.2.x + v4.3.x (#20462) + - disable test that fetches from the web for torchtext extension in PyTorch-bundle v2.1.2 (#20484) + - fix sanity check paths for JupyterLab 4.0.5 (#20514) + - fix detection of CC/CXX compilers for 'wmake' in OpenFOAM v2306 + v2312 (#20517) + - use the included gmxapi for GROMACS 2024.1 (#20522) + - add new checksum for signal_1.8-0 to R-bundle-CRAN-2023.12 (#20527) + - fix test in Cwd extension of Perl-bundle-CPAN 5.36.1 (#20536) + - fix patch name in easyconfig for Perl-bundle-CPAN 5.36.1 + add also use it for Perl-bundle-CPAN 5.38.0 (#20540) + - fix cwd_enoent test in Perl (#20541) + - move dependency on BeasutifulSoup in IPython v8.14.0 to jupyter-server (#20547) + - remove dependency on BeasutifulSoup from IPython v8.17.2 (#20548) + - add alternative checksum for source tarball of MONAI 1.3.0 (#20618) + - add cpio as build dependency to recent BLAST+ versions (#20674) + - add --disable-htmlpages to recent FFmpeg easyconfigs (#20686) + - remove duplicate crates from easyconfig for timm-0.9.7 (#20687) + - add missing HDF5 dependency in recent Armadillo easyconfigs (>= 11.4.3) (#20710) + - add patches for failing LAPACK tests and RISC-V test segfaults to OpenBLAS 0.3.27 (#20745) + - move all easyconfigs for libavif to GCCcore toolchain + fix dependencies (#20747) + - make sure mummerplot can use gnuplot if available for recent MUMmer (#20749) + - prevent configure script of recent BLAST+ versions from prepending system paths to $PATH (#20751) + - fix fastparquet v2023.4.0 using CargoPythonBundle easyblock (#20775) + - remove --with-64 from configopts for recent BLAST+ versions (#20784) + - add patch to fix build of pdsh 2.34 with Slurm 23.x (#20795) +- other changes: + - move 'build' from extensions to dependencies in easyconfig for napari 0.4.18 (#20433) + - update version of fsspec extension in easyconfig for Squidpy 1.4.1 to be compatible with s3fs provided via PyTorch-bundle (#20477) + - add commented out PSM2 dependency, relevant for x86_64 systems with OmniPath, to recent libfabric easyconfigs (#20501, #20585, #20794) + - replace SQLAlchemy extension with regular dependency in easyconfig for Optuna v3.5.0 (#20510) + - replace SQLAlchemy extension in JupyterHub v4.0.2 easyconfig with regular dependency (#20511) + - bump Cython to v3.0.8 in Cartopy v0.22.0 easyconfig for foss/2023a toolchain, to avoid dependency version conflict with sckit-learn v1.4.2, which requires Cython >= v3.0.8 (#20525) + - change dependency on hatchling of BeautifulSoup v4.12.2 to a build dependency (#20546) + - bump async-timeout to 4.0.3 in aiohttp 3.8.5 (#20553) + - stick to gfbf/2023a as toolchain for ipympl v0.9.3 (#20586) + - rename tornado-timeouts.patch to tornado-6.1_increase-default-timeouts.patch + add missing authorship (#20587) + - remove easyconfigs for CellBender v0.3.1, since this version has been redacted due to a serious bug (#20722) + + v4.9.1 (5 April 2024) --------------------- diff --git a/easybuild/easyconfigs/0/4ti2/4ti2-1.6.10-GCC-13.2.0.eb b/easybuild/easyconfigs/0/4ti2/4ti2-1.6.10-GCC-13.2.0.eb new file mode 100644 index 00000000000..5bfd73b4635 --- /dev/null +++ b/easybuild/easyconfigs/0/4ti2/4ti2-1.6.10-GCC-13.2.0.eb @@ -0,0 +1,30 @@ +easyblock = 'ConfigureMake' + +name = '4ti2' +version = '1.6.10' + +homepage = 'https://4ti2.github.io/' +description = """A software package for algebraic, geometric and combinatorial problems on linear spaces""" + +toolchain = {'name': 'GCC', 'version': '13.2.0'} + +github_account = '4ti2' +source_urls = [GITHUB_SOURCE] +sources = ['Release_%s.tar.gz' % '_'.join(version.split('.'))] +checksums = ['2f1bce3203da65b651d68cbd0ace0f89a16d1f436cf5f24e22bc15ec22df936a'] + +dependencies = [ + ('GMP', '6.3.0'), + ('GLPK', '5.0'), +] + +builddependencies = [('Autotools', '20220317')] + +preconfigopts = './autogen.sh && ' + +sanity_check_paths = { + 'files': ['bin/%s' % x for x in ['4ti2gmp', '4ti2int32', '4ti2int64']], + 'dirs': ['include/4ti2', 'lib', 'share'] +} + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/a/AEDT/AEDT-2024R1.eb b/easybuild/easyconfigs/a/AEDT/AEDT-2024R1.eb new file mode 100644 index 00000000000..e6c25eaf32a --- /dev/null +++ b/easybuild/easyconfigs/a/AEDT/AEDT-2024R1.eb @@ -0,0 +1,16 @@ +name = 'AEDT' +version = '2024R1' + +homepage = 'https://www.ansys.com/products/electronics' +description = """The Ansys Electronics Desktop (AEDT) is a platform that enables +true electronics system design. AEDT provides access to the Ansys gold-standard +electromagnetics simulation solutions such as Ansys HFSS, Ansys Maxwell, Ansys Q3D +Extractor, Ansys SIwave, and Ansys Icepak using electrical CAD (ECAD) and mechanical +CAD (MCAD) workflows.""" + +toolchain = SYSTEM + +sources = ['ELECTRONICS_%(version)s_LINX64.tgz'] +checksums = ['7b131adf981ebca1e2f4fe8e607e50323167b69e77180a0ab61b2759d57abca5'] + +moduleclass = 'phys' 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/AMGX/AMGX-2.4.0-foss-2023a-CUDA-12.1.1.eb b/easybuild/easyconfigs/a/AMGX/AMGX-2.4.0-foss-2023a-CUDA-12.1.1.eb new file mode 100644 index 00000000000..e4549fab545 --- /dev/null +++ b/easybuild/easyconfigs/a/AMGX/AMGX-2.4.0-foss-2023a-CUDA-12.1.1.eb @@ -0,0 +1,114 @@ +easyblock = 'CMakeMake' + +name = 'AMGX' +version = '2.4.0' +versionsuffix = '-CUDA-%(cudaver)s' + +homepage = 'https://github.com/NVIDIA/AMGX' + +description = """Distributed multigrid linear solver library on GPU""" +toolchain = {'name': 'foss', 'version': '2023a'} +toolchainopts = {'openmp': True} + +github_account = 'NVIDIA' +source_urls = [GITHUB_SOURCE] +sources = ['v%(version)s.tar.gz'] +patches = [ + 'AMGX-%(version)s_external-thrust.patch', + 'AMGX-%(version)s_fix-openmp-linking.patch', +] +checksums = [ + {'v2.4.0.tar.gz': 'b030b8c2e58c4c9987444e5d28fd61e1c5dcd65d484a290d6a18ae0bc5c0e9db'}, + {'AMGX-2.4.0_external-thrust.patch': '90e4be09615a26bd7ebce68ced63d9d3b52141f7b480e8cedb17b05003656e16'}, + {'AMGX-2.4.0_fix-openmp-linking.patch': '10046d5d9fff48cb4902797525d43963855c4834f262bdc3c341bbc2cb1f6f76'}, +] + +builddependencies = [ + ('CMake', '3.26.3'), +] + +dependencies = [ + ('CUDA', '12.1.1', '', SYSTEM), + ('UCX-CUDA', '1.14.1', versionsuffix), + ('magma', '2.7.2', versionsuffix), + ('CCCL', '2.3.0', versionsuffix), +] + +cuda_compute_capabilities = ['7.0', '8.0', '9.0'] # AMGX defaults for CUDA 12 + +configopts = '-DCUDA_ARCH="%(cuda_cc_cmake)s" ' + +# Can't run all tests (55 failing); many fail due to mixed precision not being supported +# some fail due to missing external data files, many unknown issues +# All tests can be attempted with "amgx_tests_launcher --all" +local_tests = [ + 'AggregatesCoarseGeneratorTest', + 'AggregatesCoarseningFactor', + 'AggregatesDeterminism', + 'AggregatesDiagonalOutside', + 'AmgLevelsReuse', + 'CAPIFailure', + 'CAPIVersionCheck', + 'ClassicalStrengthAffinityTest', + 'ClassicalStrengthTest', + 'ConfigStringParsing', + 'CsrMultiplyTests_Poisson27_100_100', + 'CsrMultiplyTests_Poisson27_10_10', + 'CsrMultiplyTests_Poisson5_100_100', + 'CsrMultiplyTests_Poisson5_10_1', + 'CsrMultiplyTests_Poisson7_100_100', + 'CsrMultiplyTests_Poisson7_10_10', + 'CsrMultiplyTests_Poisson9_100_100', + 'CsrMultiplyTests_Poisson9_10_10', + 'CsrSparsityILU1Tests_Poisson27_100_100', + 'CsrSparsityILU1Tests_Poisson27_10_10', + 'CsrSparsityILU1Tests_Poisson5_100_100', + 'CsrSparsityILU1Tests_Poisson5_10_10', + 'CsrSparsityILU1Tests_Poisson7_100_100', + 'CsrSparsityILU1Tests_Poisson7_10_10', + 'CsrSparsityILU1Tests_Poisson9_100_100', + 'CsrSparsityILU1Tests_Poisson9_10_10', + 'CsrSparsityTests_Poisson27_100_100', + 'CsrSparsityTests_Poisson27_10_10', + 'CsrSparsityTests_Poisson5_100_100', + 'CsrSparsityTests_Poisson5_10_10', + 'CsrSparsityTests_Poisson7_100_100', + 'CsrSparsityTests_Poisson7_10_10', + 'CsrSparsityTests_Poisson9_100_100', + 'CsrSparsityTests_Poisson9_10_10', + 'DenseLUSolverTest_Factorization_Id_256', + 'DenseLUSolverTest_Factorization_Id_32', + 'DenseLUSolverTest_Solve_Id_256', + 'DenseLUSolverTest_Solve_Id_32', + 'DenseLUSolverTest_Solve_Poisson3D', + 'FactoriesTest', + 'FGMRESConvergencePoisson', + 'GenericSpMVTest', + 'IDRConvergencePoisson', + 'IDRmsyncConvergencePoisson', + 'LargeMatricesSupport', + 'LowDegDeterminism', + 'MatrixTests', + 'MatrixVectorMultiplyTests', + 'MinMaxColoringTest', + 'Nested_AMG_equivalence', + 'NestedSolvers', + 'NormTests', + 'ObjectDestructionSequence', + 'PermuteTests', + 'RandomMatrix', + 'SmootherBlockPoissonTest', + 'TemplateConfigTest', + 'TemplateTest', + 'truncateCountTest', + 'VectorTests', +] + +runtest = "amgx_tests_launcher && src/amgx_tests_launcher " + ' '.join(local_tests) + +sanity_check_paths = { + 'files': ['include/amgx_c.h', 'lib/libamgx.a', 'lib/libamgxsh.%s' % SHLIB_EXT], + 'dirs': [], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/a/AMGX/AMGX-2.4.0_external-thrust.patch b/easybuild/easyconfigs/a/AMGX/AMGX-2.4.0_external-thrust.patch new file mode 100644 index 00000000000..6d734ab63d0 --- /dev/null +++ b/easybuild/easyconfigs/a/AMGX/AMGX-2.4.0_external-thrust.patch @@ -0,0 +1,13 @@ +Forces AMGX to use external dependencies, avoiding needing the git submodule +the entire (deprecated) thrust library and all its dependencies. +author: micketeer@gmail.com +--- CMakeLists.txt.orig 2024-03-30 01:54:34.469780980 +0100 ++++ CMakeLists.txt 2024-03-30 01:54:46.491884432 +0100 +@@ -251,7 +251,6 @@ + ENDIF() + + # We depend on a specific version of thrust now so include the submodule +-add_subdirectory("thrust") + find_package(Thrust REQUIRED CONFIG) + thrust_create_target(Thrust) + diff --git a/easybuild/easyconfigs/a/AMGX/AMGX-2.4.0_fix-openmp-linking.patch b/easybuild/easyconfigs/a/AMGX/AMGX-2.4.0_fix-openmp-linking.patch new file mode 100644 index 00000000000..eab0e44e2b1 --- /dev/null +++ b/easybuild/easyconfigs/a/AMGX/AMGX-2.4.0_fix-openmp-linking.patch @@ -0,0 +1,15 @@ +Adds missing link option necessary for openmp linking. +The target_link_libraries used for amgx are not sufficient as CMake haven't +sorted this out yet, thus manually adding the flag for GCC. +author: micketeer@gmail.com +--- CMakeLists.txt.orig 2024-03-30 03:27:22.354168764 +0100 ++++ CMakeLists.txt 2024-03-30 03:28:00.397486779 +0100 +@@ -291,6 +291,8 @@ + ELSE (WIN32) + target_link_libraries(amgx CUDA::cublas CUDA::cusparse CUDA::cusolver CUDA::nvToolsExt m pthread) + target_link_libraries(amgxsh CUDA::cublas CUDA::cusparse CUDA::cusolver CUDA::nvToolsExt m pthread) ++ target_link_options(amgx INTERFACE "-fopenmp") ++ target_link_options(amgxsh INTERFACE "-fopenmp") + ENDIF(WIN32) + + if(MPI_FOUND) diff --git a/easybuild/easyconfigs/a/ArchR/ArchR-1.0.2-foss-2022b-R-4.2.2.eb b/easybuild/easyconfigs/a/ArchR/ArchR-1.0.2-foss-2022b-R-4.2.2.eb new file mode 100644 index 00000000000..98e3a1c19f3 --- /dev/null +++ b/easybuild/easyconfigs/a/ArchR/ArchR-1.0.2-foss-2022b-R-4.2.2.eb @@ -0,0 +1,27 @@ +easyblock = 'RPackage' + +name = 'ArchR' +version = '1.0.2' +versionsuffix = '-R-%(rver)s' + +homepage = 'https://www.archrproject.com' +description = "ArchR is a full-featured R package for processing and analyzing single-cell ATAC-seq data." + +toolchain = {'name': 'foss', 'version': '2022b'} + +source_urls = ['https://github.com/GreenleafLab/ArchR/archive/refs/tags/'] +sources = ['v%(version)s.tar.gz'] +checksums = ['afe4d82975e9d75018e9ec9fda3d116f34f99ad1d45990cbc5a2be7dea8df352'] + +dependencies = [ + ('R', '4.2.2'), + ('R-bundle-Bioconductor', '3.16', versionsuffix), + ('presto', '1.0.0-20230501', versionsuffix), +] + +sanity_check_paths = { + 'files': [], + 'dirs': ['%(name)s'], +} + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/a/Armadillo/Armadillo-11.4.3-foss-2022a.eb b/easybuild/easyconfigs/a/Armadillo/Armadillo-11.4.3-foss-2022a.eb index 261ecca60bb..c8c874dba00 100644 --- a/easybuild/easyconfigs/a/Armadillo/Armadillo-11.4.3-foss-2022a.eb +++ b/easybuild/easyconfigs/a/Armadillo/Armadillo-11.4.3-foss-2022a.eb @@ -12,10 +12,13 @@ source_urls = ['https://sourceforge.net/projects/arma/files'] sources = [SOURCELOWER_TAR_XZ] checksums = ['87603263664988af41da2ca4f36205e36ea47a9281fa6cfd463115f3797a1da2'] -builddependencies = [('CMake', '3.24.3')] +builddependencies = [ + ('CMake', '3.24.3'), +] dependencies = [ ('Boost', '1.79.0'), + ('HDF5', '1.12.2'), ('arpack-ng', '3.8.0'), ] diff --git a/easybuild/easyconfigs/a/Armadillo/Armadillo-11.4.3-foss-2022b.eb b/easybuild/easyconfigs/a/Armadillo/Armadillo-11.4.3-foss-2022b.eb index f5eb6f67b05..1be96397544 100644 --- a/easybuild/easyconfigs/a/Armadillo/Armadillo-11.4.3-foss-2022b.eb +++ b/easybuild/easyconfigs/a/Armadillo/Armadillo-11.4.3-foss-2022b.eb @@ -12,10 +12,13 @@ source_urls = ['https://sourceforge.net/projects/arma/files'] sources = [SOURCELOWER_TAR_XZ] checksums = ['87603263664988af41da2ca4f36205e36ea47a9281fa6cfd463115f3797a1da2'] -builddependencies = [('CMake', '3.24.3')] +builddependencies = [ + ('CMake', '3.24.3'), +] dependencies = [ ('Boost', '1.81.0'), + ('HDF5', '1.14.0'), ('arpack-ng', '3.8.0'), ] diff --git a/easybuild/easyconfigs/a/Armadillo/Armadillo-12.6.2-foss-2023a.eb b/easybuild/easyconfigs/a/Armadillo/Armadillo-12.6.2-foss-2023a.eb index 2ca4adac034..9b6d74fe58b 100644 --- a/easybuild/easyconfigs/a/Armadillo/Armadillo-12.6.2-foss-2023a.eb +++ b/easybuild/easyconfigs/a/Armadillo/Armadillo-12.6.2-foss-2023a.eb @@ -18,6 +18,7 @@ builddependencies = [ dependencies = [ ('Boost', '1.82.0'), + ('HDF5', '1.14.0'), ('arpack-ng', '3.9.0'), ] diff --git a/easybuild/easyconfigs/a/Armadillo/Armadillo-12.8.0-foss-2023b.eb b/easybuild/easyconfigs/a/Armadillo/Armadillo-12.8.0-foss-2023b.eb index cde4b18960c..2ca0b7de51d 100644 --- a/easybuild/easyconfigs/a/Armadillo/Armadillo-12.8.0-foss-2023b.eb +++ b/easybuild/easyconfigs/a/Armadillo/Armadillo-12.8.0-foss-2023b.eb @@ -17,6 +17,7 @@ builddependencies = [ ] dependencies = [ ('Boost', '1.83.0'), + ('HDF5', '1.14.3'), ('arpack-ng', '3.9.0'), ] diff --git a/easybuild/easyconfigs/a/Autoconf/Autoconf-2.72-GCCcore-13.3.0.eb b/easybuild/easyconfigs/a/Autoconf/Autoconf-2.72-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..8cbff6d13b2 --- /dev/null +++ b/easybuild/easyconfigs/a/Autoconf/Autoconf-2.72-GCCcore-13.3.0.eb @@ -0,0 +1,48 @@ +easyblock = 'ConfigureMake' + +name = 'Autoconf' +version = '2.72' + +homepage = 'https://www.gnu.org/software/autoconf/' + +description = """ + Autoconf is an extensible package of M4 macros that produce shell scripts + to automatically configure software source code packages. These scripts can + adapt the packages to many kinds of UNIX-like systems without manual user + intervention. Autoconf creates a configuration script for a package from a + template file that lists the operating system features that the package can + use, in the form of M4 macro calls. +""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = [GNU_SOURCE] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['afb181a76e1ee72832f6581c0eddf8df032b83e2e0239ef79ebedc4467d92d6e'] + +builddependencies = [ + ('binutils', '2.42'), +] + +dependencies = [ + ('M4', '1.4.19'), + # non-standard Perl modules are required, + # see https://github.com/easybuilders/easybuild-easyconfigs/issues/1822 + ('Perl', '5.38.2'), +] + +preconfigopts = "export PERL='/usr/bin/env perl' && " + +sanity_check_paths = { + 'files': ["bin/%s" % x + for x in ["autoconf", "autoheader", "autom4te", "autoreconf", + "autoscan", "autoupdate", "ifnames"]], + 'dirs': [], +} + +sanity_check_commands = [ + "autoconf --help", + "autom4te --help", +] + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/a/Automake/Automake-1.16.5-GCCcore-13.3.0.eb b/easybuild/easyconfigs/a/Automake/Automake-1.16.5-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..f22a104b063 --- /dev/null +++ b/easybuild/easyconfigs/a/Automake/Automake-1.16.5-GCCcore-13.3.0.eb @@ -0,0 +1,39 @@ +easyblock = 'ConfigureMake' + +name = 'Automake' +version = '1.16.5' + +homepage = 'https://www.gnu.org/software/automake/automake.html' + +description = "Automake: GNU Standards-compliant Makefile generator" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = [GNU_SOURCE] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['07bd24ad08a64bc17250ce09ec56e921d6343903943e99ccf63bbf0705e34605'] + +builddependencies = [ + ('binutils', '2.42'), +] + +dependencies = [ + ('Autoconf', '2.72'), + # non-standard Perl modules are required, + # see https://github.com/easybuilders/easybuild-easyconfigs/issues/1822 + ('Perl', '5.38.2'), +] + +preconfigopts = "export PERL='/usr/bin/env perl' && " + +sanity_check_paths = { + 'files': ['bin/aclocal', 'bin/automake'], + 'dirs': [] +} + +sanity_check_commands = [ + "aclocal --help", + "automake --help", +] + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/a/Autotools/Autotools-20231222-GCCcore-13.3.0.eb b/easybuild/easyconfigs/a/Autotools/Autotools-20231222-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..4c0c23dd0b1 --- /dev/null +++ b/easybuild/easyconfigs/a/Autotools/Autotools-20231222-GCCcore-13.3.0.eb @@ -0,0 +1,24 @@ +easyblock = 'Bundle' + +name = 'Autotools' +version = '20231222' # date of the most recent change + +homepage = 'https://autotools.io' + +description = """ + This bundle collect the standard GNU build tools: Autoconf, Automake + and libtool +""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +dependencies = [ + ('Autoconf', '2.72'), # 20231222 + ('Automake', '1.16.5'), # 20211003 + ('libtool', '2.4.7'), # 20220317 +] + +# Pure bundle -- no need to specify 'binutils' used when building GCCcore +# toolchain as build dependency + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/a/adjustText/adjustText-0.7.3-foss-2023a.eb b/easybuild/easyconfigs/a/adjustText/adjustText-0.7.3-foss-2023a.eb new file mode 100644 index 00000000000..70ad0961c47 --- /dev/null +++ b/easybuild/easyconfigs/a/adjustText/adjustText-0.7.3-foss-2023a.eb @@ -0,0 +1,27 @@ +easyblock = 'PythonPackage' + +name = 'adjustText' +version = '0.7.3' + +homepage = 'https://github.com/Phlya/adjustText' +description = "A small library for automatically adjustment of text position in matplotlib plots to minimize overlaps." + +toolchain = {'name': 'foss', 'version': '2023a'} + +sources = [SOURCE_TAR_GZ] +checksums = ['b90e275a95b4d980cbbac7967914b8d66477c09bc346a0b3c9e2125bba664b06'] + +dependencies = [ + ('Python', '3.11.3'), + ('matplotlib', '3.7.2'), + ('SciPy-bundle', '2023.07'), +] + +download_dep_fail = True +use_pip = True + +sanity_pip_check = True + +options = {'modulename': 'adjustText'} + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/a/adjustText/adjustText-1.1.1-foss-2023a.eb b/easybuild/easyconfigs/a/adjustText/adjustText-1.1.1-foss-2023a.eb new file mode 100644 index 00000000000..f109d19d3aa --- /dev/null +++ b/easybuild/easyconfigs/a/adjustText/adjustText-1.1.1-foss-2023a.eb @@ -0,0 +1,27 @@ +easyblock = 'PythonBundle' + +name = 'adjustText' +version = '1.1.1' + +homepage = 'https://github.com/Phlya/adjustText' +description = "A small library for automatically adjustment of text position in matplotlib plots to minimize overlaps." + +toolchain = {'name': 'foss', 'version': '2023a'} + +dependencies = [ + ('Python', '3.11.3'), + ('matplotlib', '3.7.2'), + ('SciPy-bundle', '2023.07'), +] + +use_pip = True +sanity_pip_check = True + +exts_list = [ + (name, version, { + 'modulename': 'adjustText', + 'checksums': ['e2c0975ef2c642478e60f4c03c5e9afbdeda7764336907ef69a9205bfa2d9896'], + }), +] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/a/aiohttp/aiohttp-3.8.5-GCCcore-12.3.0.eb b/easybuild/easyconfigs/a/aiohttp/aiohttp-3.8.5-GCCcore-12.3.0.eb index 3c96a3e7458..d5eec66b4ab 100644 --- a/easybuild/easyconfigs/a/aiohttp/aiohttp-3.8.5-GCCcore-12.3.0.eb +++ b/easybuild/easyconfigs/a/aiohttp/aiohttp-3.8.5-GCCcore-12.3.0.eb @@ -30,8 +30,8 @@ exts_list = [ ('frozenlist', '1.4.0', { 'checksums': ['09163bdf0b2907454042edb19f887c6d33806adc71fbd54afc14908bfdc22251'], }), - ('async-timeout', '4.0.2', { - 'checksums': ['2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15'], + ('async-timeout', '4.0.3', { + 'checksums': ['4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f'], }), (name, version, { 'checksums': ['b9552ec52cc147dbf1944ac7ac98af7602e51ea2dcd076ed194ca3c0d1c7d0bc'], diff --git a/easybuild/easyconfigs/a/aiohttp/aiohttp-3.9.5-GCCcore-13.2.0.eb b/easybuild/easyconfigs/a/aiohttp/aiohttp-3.9.5-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..550b4aebf60 --- /dev/null +++ b/easybuild/easyconfigs/a/aiohttp/aiohttp-3.9.5-GCCcore-13.2.0.eb @@ -0,0 +1,53 @@ +easyblock = 'PythonBundle' + +name = 'aiohttp' +version = '3.9.5' + +homepage = 'https://github.com/aio-libs/aiohttp' +description = "Asynchronous HTTP client/server framework for asyncio and Python." + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +builddependencies = [ + ('binutils', '2.40'), + ('poetry', '1.6.1'), +] + +dependencies = [ + ('Python', '3.11.5'), + ('Python-bundle-PyPI', '2023.10'), +] + +use_pip = True + +# aioredis and aiosignal do not depend on aiohttp, but are commonly used together and share dependencies +exts_list = [ + ('multidict', '6.0.5', { + 'checksums': ['f7e301075edaf50500f0b341543c41194d8df3ae5caf4702f2095f3ca73dd8da'], + }), + ('expandvars', '0.12.0', { + 'checksums': ['7d1adfa55728cf4b5d812ece3d087703faea953e0c0a1a78415de9df5024d844'], + }), + ('yarl', '1.9.4', { + 'checksums': ['566db86717cf8080b99b58b083b773a908ae40f06681e87e589a976faf8246bf'], + }), + ('frozenlist', '1.4.1', { + 'checksums': ['c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b'], + }), + ('async-timeout', '4.0.3', { + 'checksums': ['4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f'], + }), + ('aiosignal', '1.3.1', { + 'checksums': ['54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc'], + }), + ('aiohappyeyeballs', '2.3.2', { + 'checksums': ['77e15a733090547a1f5369a1287ddfc944bd30df0eb8993f585259c34b405f4e'], + }), + (name, version, { + 'checksums': ['edea7d15772ceeb29db4aff55e482d4bcfb6ae160ce144f2682de02f6d693551'], + }), +] + +sanity_pip_check = True + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/a/alevin-fry/alevin-fry-0.9.0-GCCcore-13.2.0.eb b/easybuild/easyconfigs/a/alevin-fry/alevin-fry-0.9.0-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..50f776e14a3 --- /dev/null +++ b/easybuild/easyconfigs/a/alevin-fry/alevin-fry-0.9.0-GCCcore-13.2.0.eb @@ -0,0 +1,470 @@ +easyblock = 'Cargo' + +name = 'alevin-fry' +version = '0.9.0' + +homepage = 'https://github.com/COMBINE-lab/alevin-fry' +description = """alevin-fry is an efficient and flexible tool for processing single-cell sequencing data, + currently focused on single-cell transcriptomics and feature barcoding.""" +# software_license = 'LicenseBSD3' + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +crates = [ + (name, version), + ('adler', '1.0.2'), + ('ahash', '0.8.11'), + ('aho-corasick', '1.1.2'), + ('alga', '0.9.3'), + ('android-tzdata', '0.1.1'), + ('android_system_properties', '0.1.5'), + ('anstream', '0.6.13'), + ('anstyle', '1.0.6'), + ('anstyle-parse', '0.2.3'), + ('anstyle-query', '1.0.2'), + ('anstyle-wincon', '3.0.2'), + ('anyhow', '1.0.80'), + ('approx', '0.3.2'), + ('approx', '0.5.1'), + ('arrayvec', '0.7.4'), + ('autocfg', '1.1.0'), + ('bincode', '1.3.3'), + ('bio-types', '1.0.1'), + ('bit-vec', '0.6.3'), + ('bitflags', '1.3.2'), + ('bitflags', '2.4.2'), + ('block-buffer', '0.10.4'), + ('bstr', '1.9.1'), + ('buffer-redux', '1.0.1'), + ('bumpalo', '3.15.4'), + ('bytecount', '0.6.7'), + ('bytemuck', '1.14.3'), + ('byteorder', '1.5.0'), + ('bytes', '1.5.0'), + ('bzip2', '0.4.4'), + ('bzip2-sys', '0.1.11+1.0.8'), + ('cc', '1.0.90'), + ('cfg-if', '1.0.0'), + ('chrono', '0.4.35'), + ('clap', '4.5.2'), + ('clap_builder', '4.5.2'), + ('clap_derive', '4.5.0'), + ('clap_lex', '0.7.0'), + ('colorchoice', '1.0.0'), + ('console', '0.15.8'), + ('core-foundation-sys', '0.8.6'), + ('crc32fast', '1.4.0'), + ('crossbeam-channel', '0.5.12'), + ('crossbeam-deque', '0.8.5'), + ('crossbeam-epoch', '0.9.18'), + ('crossbeam-queue', '0.3.11'), + ('crossbeam-utils', '0.8.19'), + ('crypto-common', '0.1.6'), + ('csv', '1.3.0'), + ('csv-core', '0.1.11'), + ('dashmap', '5.5.3'), + ('deranged', '0.3.11'), + ('derive-new', '0.5.9'), + ('digest', '0.10.7'), + ('dirs-next', '2.0.0'), + ('dirs-sys-next', '0.1.2'), + ('either', '1.10.0'), + ('encode_unicode', '0.3.6'), + ('equivalent', '1.0.1'), + ('errno', '0.3.8'), + ('fixedbitset', '0.4.2'), + ('flate2', '1.0.28'), + ('generic-array', '0.14.7'), + ('getrandom', '0.2.12'), + ('hashbrown', '0.14.3'), + ('heck', '0.4.1'), + ('hermit-abi', '0.3.9'), + ('iana-time-zone', '0.1.60'), + ('iana-time-zone-haiku', '0.1.2'), + ('indexmap', '2.2.5'), + ('indicatif', '0.17.8'), + ('instant', '0.1.12'), + ('is-terminal', '0.4.12'), + ('itertools', '0.12.1'), + ('itoa', '1.0.10'), + ('js-sys', '0.3.69'), + ('lazy_static', '1.4.0'), + ('lexical-core', '0.8.5'), + ('lexical-parse-float', '0.8.5'), + ('lexical-parse-integer', '0.8.6'), + ('lexical-util', '0.8.5'), + ('lexical-write-float', '0.8.5'), + ('lexical-write-integer', '0.8.5'), + ('libc', '0.2.153'), + ('libm', '0.2.8'), + ('libmimalloc-sys', '0.1.35'), + ('libradicl', '0.8.2'), + ('libredox', '0.0.1'), + ('linux-raw-sys', '0.4.13'), + ('lock_api', '0.4.11'), + ('log', '0.4.21'), + ('lzma-sys', '0.1.20'), + ('matrixmultiply', '0.3.8'), + ('md-5', '0.10.6'), + ('memchr', '2.7.1'), + ('mimalloc', '0.1.39'), + ('miniz_oxide', '0.7.2'), + ('nalgebra', '0.29.0'), + ('nalgebra-macros', '0.1.0'), + ('ndarray', '0.15.6'), + ('needletail', '0.5.1'), + ('noodles', '0.65.0'), + ('noodles-bam', '0.56.0'), + ('noodles-bgzf', '0.26.0'), + ('noodles-core', '0.14.0'), + ('noodles-cram', '0.56.0'), + ('noodles-csi', '0.30.0'), + ('noodles-fasta', '0.33.0'), + ('noodles-sam', '0.53.0'), + ('noodles-util', '0.37.0'), + ('num', '0.4.1'), + ('num-bigint', '0.4.4'), + ('num-complex', '0.2.4'), + ('num-complex', '0.4.5'), + ('num-conv', '0.1.0'), + ('num-format', '0.4.4'), + ('num-integer', '0.1.46'), + ('num-iter', '0.1.44'), + ('num-rational', '0.4.1'), + ('num-traits', '0.2.18'), + ('num_cpus', '1.16.0'), + ('number_prefix', '0.4.0'), + ('once_cell', '1.19.0'), + ('parking_lot_core', '0.9.9'), + ('paste', '1.0.14'), + ('petgraph', '0.6.4'), + ('pkg-config', '0.3.30'), + ('portable-atomic', '1.6.0'), + ('powerfmt', '0.2.0'), + ('ppv-lite86', '0.2.17'), + ('proc-macro2', '1.0.78'), + ('quote', '1.0.35'), + ('rand', '0.8.5'), + ('rand_chacha', '0.3.1'), + ('rand_core', '0.6.4'), + ('rand_distr', '0.4.3'), + ('rawpointer', '0.2.1'), + ('rayon', '1.9.0'), + ('rayon-core', '1.12.1'), + ('redox_syscall', '0.4.1'), + ('redox_users', '0.4.4'), + ('regex', '1.10.3'), + ('regex-automata', '0.4.6'), + ('regex-syntax', '0.8.2'), + ('rustix', '0.38.31'), + ('rustversion', '1.0.14'), + ('ryu', '1.0.17'), + ('safe_arch', '0.7.1'), + ('sce', '0.2.0'), + ('scopeguard', '1.2.0'), + ('scroll', '0.12.0'), + ('serde', '1.0.197'), + ('serde_derive', '1.0.197'), + ('serde_json', '1.0.114'), + ('simba', '0.6.0'), + ('slog', '2.7.0'), + ('slog-async', '2.8.0'), + ('slog-term', '2.9.1'), + ('smallvec', '1.13.1'), + ('snap', '1.1.1'), + ('sprs', '0.11.1'), + ('static_assertions', '1.1.0'), + ('statrs', '0.16.0'), + ('strsim', '0.11.0'), + ('strum_macros', '0.25.3'), + ('syn', '1.0.109'), + ('syn', '2.0.52'), + ('take_mut', '0.2.2'), + ('term', '0.7.0'), + ('terminal_size', '0.3.0'), + ('thiserror', '1.0.57'), + ('thiserror-impl', '1.0.57'), + ('thread_local', '1.1.8'), + ('time', '0.3.34'), + ('time-core', '0.1.2'), + ('time-macros', '0.2.17'), + ('trait-set', '0.3.0'), + ('typed-builder', '0.18.1'), + ('typed-builder-macro', '0.18.1'), + ('typenum', '1.17.0'), + ('unicode-ident', '1.0.12'), + ('unicode-width', '0.1.11'), + ('utf8parse', '0.2.1'), + ('version_check', '0.9.4'), + ('wasi', '0.11.0+wasi-snapshot-preview1'), + ('wasm-bindgen', '0.2.92'), + ('wasm-bindgen-backend', '0.2.92'), + ('wasm-bindgen-macro', '0.2.92'), + ('wasm-bindgen-macro-support', '0.2.92'), + ('wasm-bindgen-shared', '0.2.92'), + ('wide', '0.7.15'), + ('winapi', '0.3.9'), + ('winapi-i686-pc-windows-gnu', '0.4.0'), + ('winapi-x86_64-pc-windows-gnu', '0.4.0'), + ('windows-core', '0.52.0'), + ('windows-sys', '0.48.0'), + ('windows-sys', '0.52.0'), + ('windows-targets', '0.48.5'), + ('windows-targets', '0.52.4'), + ('windows_aarch64_gnullvm', '0.48.5'), + ('windows_aarch64_gnullvm', '0.52.4'), + ('windows_aarch64_msvc', '0.48.5'), + ('windows_aarch64_msvc', '0.52.4'), + ('windows_i686_gnu', '0.48.5'), + ('windows_i686_gnu', '0.52.4'), + ('windows_i686_msvc', '0.48.5'), + ('windows_i686_msvc', '0.52.4'), + ('windows_x86_64_gnu', '0.48.5'), + ('windows_x86_64_gnu', '0.52.4'), + ('windows_x86_64_gnullvm', '0.48.5'), + ('windows_x86_64_gnullvm', '0.52.4'), + ('windows_x86_64_msvc', '0.48.5'), + ('windows_x86_64_msvc', '0.52.4'), + ('xz2', '0.1.7'), + ('zerocopy', '0.7.32'), + ('zerocopy-derive', '0.7.32'), +] + +checksums = [ + {'alevin-fry-0.9.0.tar.gz': 'ea6d245d83a00d59b977e130f142b2a0c3075b26cd214d6c54251f225b46748a'}, + {'adler-1.0.2.tar.gz': 'f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe'}, + {'ahash-0.8.11.tar.gz': 'e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011'}, + {'aho-corasick-1.1.2.tar.gz': 'b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0'}, + {'alga-0.9.3.tar.gz': '4f823d037a7ec6ea2197046bafd4ae150e6bc36f9ca347404f46a46823fa84f2'}, + {'android-tzdata-0.1.1.tar.gz': 'e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0'}, + {'android_system_properties-0.1.5.tar.gz': '819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311'}, + {'anstream-0.6.13.tar.gz': 'd96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb'}, + {'anstyle-1.0.6.tar.gz': '8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc'}, + {'anstyle-parse-0.2.3.tar.gz': 'c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c'}, + {'anstyle-query-1.0.2.tar.gz': 'e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648'}, + {'anstyle-wincon-3.0.2.tar.gz': '1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7'}, + {'anyhow-1.0.80.tar.gz': '5ad32ce52e4161730f7098c077cd2ed6229b5804ccf99e5366be1ab72a98b4e1'}, + {'approx-0.3.2.tar.gz': 'f0e60b75072ecd4168020818c0107f2857bb6c4e64252d8d3983f6263b40a5c3'}, + {'approx-0.5.1.tar.gz': 'cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6'}, + {'arrayvec-0.7.4.tar.gz': '96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711'}, + {'autocfg-1.1.0.tar.gz': 'd468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa'}, + {'bincode-1.3.3.tar.gz': 'b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad'}, + {'bio-types-1.0.1.tar.gz': '9d45749b87f21808051025e9bf714d14ff4627f9d8ca967eade6946ea769aa4a'}, + {'bit-vec-0.6.3.tar.gz': '349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb'}, + {'bitflags-1.3.2.tar.gz': 'bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a'}, + {'bitflags-2.4.2.tar.gz': 'ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf'}, + {'block-buffer-0.10.4.tar.gz': '3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71'}, + {'bstr-1.9.1.tar.gz': '05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706'}, + {'buffer-redux-1.0.1.tar.gz': '4c9f8ddd22e0a12391d1e7ada69ec3b0da1914f1cec39c5cf977143c5b2854f5'}, + {'bumpalo-3.15.4.tar.gz': '7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa'}, + {'bytecount-0.6.7.tar.gz': 'e1e5f035d16fc623ae5f74981db80a439803888314e3a555fd6f04acd51a3205'}, + {'bytemuck-1.14.3.tar.gz': 'a2ef034f05691a48569bd920a96c81b9d91bbad1ab5ac7c4616c1f6ef36cb79f'}, + {'byteorder-1.5.0.tar.gz': '1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b'}, + {'bytes-1.5.0.tar.gz': 'a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223'}, + {'bzip2-0.4.4.tar.gz': 'bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8'}, + {'bzip2-sys-0.1.11+1.0.8.tar.gz': '736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc'}, + {'cc-1.0.90.tar.gz': '8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5'}, + {'cfg-if-1.0.0.tar.gz': 'baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd'}, + {'chrono-0.4.35.tar.gz': '8eaf5903dcbc0a39312feb77df2ff4c76387d591b9fc7b04a238dcf8bb62639a'}, + {'clap-4.5.2.tar.gz': 'b230ab84b0ffdf890d5a10abdbc8b83ae1c4918275daea1ab8801f71536b2651'}, + {'clap_builder-4.5.2.tar.gz': 'ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4'}, + {'clap_derive-4.5.0.tar.gz': '307bc0538d5f0f83b8248db3087aa92fe504e4691294d0c96c0eabc33f47ba47'}, + {'clap_lex-0.7.0.tar.gz': '98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce'}, + {'colorchoice-1.0.0.tar.gz': 'acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7'}, + {'console-0.15.8.tar.gz': '0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb'}, + {'core-foundation-sys-0.8.6.tar.gz': '06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f'}, + {'crc32fast-1.4.0.tar.gz': 'b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa'}, + {'crossbeam-channel-0.5.12.tar.gz': 'ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95'}, + {'crossbeam-deque-0.8.5.tar.gz': '613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d'}, + {'crossbeam-epoch-0.9.18.tar.gz': '5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e'}, + {'crossbeam-queue-0.3.11.tar.gz': 'df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35'}, + {'crossbeam-utils-0.8.19.tar.gz': '248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345'}, + {'crypto-common-0.1.6.tar.gz': '1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3'}, + {'csv-1.3.0.tar.gz': 'ac574ff4d437a7b5ad237ef331c17ccca63c46479e5b5453eb8e10bb99a759fe'}, + {'csv-core-0.1.11.tar.gz': '5efa2b3d7902f4b634a20cae3c9c4e6209dc4779feb6863329607560143efa70'}, + {'dashmap-5.5.3.tar.gz': '978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856'}, + {'deranged-0.3.11.tar.gz': 'b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4'}, + {'derive-new-0.5.9.tar.gz': '3418329ca0ad70234b9735dc4ceed10af4df60eff9c8e7b06cb5e520d92c3535'}, + {'digest-0.10.7.tar.gz': '9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292'}, + {'dirs-next-2.0.0.tar.gz': 'b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1'}, + {'dirs-sys-next-0.1.2.tar.gz': '4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d'}, + {'either-1.10.0.tar.gz': '11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a'}, + {'encode_unicode-0.3.6.tar.gz': 'a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f'}, + {'equivalent-1.0.1.tar.gz': '5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5'}, + {'errno-0.3.8.tar.gz': 'a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245'}, + {'fixedbitset-0.4.2.tar.gz': '0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80'}, + {'flate2-1.0.28.tar.gz': '46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e'}, + {'generic-array-0.14.7.tar.gz': '85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a'}, + {'getrandom-0.2.12.tar.gz': '190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5'}, + {'hashbrown-0.14.3.tar.gz': '290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604'}, + {'heck-0.4.1.tar.gz': '95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8'}, + {'hermit-abi-0.3.9.tar.gz': 'd231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024'}, + {'iana-time-zone-0.1.60.tar.gz': 'e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141'}, + {'iana-time-zone-haiku-0.1.2.tar.gz': 'f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f'}, + {'indexmap-2.2.5.tar.gz': '7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4'}, + {'indicatif-0.17.8.tar.gz': '763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3'}, + {'instant-0.1.12.tar.gz': '7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c'}, + {'is-terminal-0.4.12.tar.gz': 'f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b'}, + {'itertools-0.12.1.tar.gz': 'ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569'}, + {'itoa-1.0.10.tar.gz': 'b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c'}, + {'js-sys-0.3.69.tar.gz': '29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d'}, + {'lazy_static-1.4.0.tar.gz': 'e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646'}, + {'lexical-core-0.8.5.tar.gz': '2cde5de06e8d4c2faabc400238f9ae1c74d5412d03a7bd067645ccbc47070e46'}, + {'lexical-parse-float-0.8.5.tar.gz': '683b3a5ebd0130b8fb52ba0bdc718cc56815b6a097e28ae5a6997d0ad17dc05f'}, + {'lexical-parse-integer-0.8.6.tar.gz': '6d0994485ed0c312f6d965766754ea177d07f9c00c9b82a5ee62ed5b47945ee9'}, + {'lexical-util-0.8.5.tar.gz': '5255b9ff16ff898710eb9eb63cb39248ea8a5bb036bea8085b1a767ff6c4e3fc'}, + {'lexical-write-float-0.8.5.tar.gz': 'accabaa1c4581f05a3923d1b4cfd124c329352288b7b9da09e766b0668116862'}, + {'lexical-write-integer-0.8.5.tar.gz': 'e1b6f3d1f4422866b68192d62f77bc5c700bee84f3069f2469d7bc8c77852446'}, + {'libc-0.2.153.tar.gz': '9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd'}, + {'libm-0.2.8.tar.gz': '4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058'}, + {'libmimalloc-sys-0.1.35.tar.gz': '3979b5c37ece694f1f5e51e7ecc871fdb0f517ed04ee45f88d15d6d553cb9664'}, + {'libradicl-0.8.2.tar.gz': '79c875897ad68c771ac1cbe1794642f1f49bdb3852e0475be2abb754ba59fe92'}, + {'libredox-0.0.1.tar.gz': '85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8'}, + {'linux-raw-sys-0.4.13.tar.gz': '01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c'}, + {'lock_api-0.4.11.tar.gz': '3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45'}, + {'log-0.4.21.tar.gz': '90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c'}, + {'lzma-sys-0.1.20.tar.gz': '5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27'}, + {'matrixmultiply-0.3.8.tar.gz': '7574c1cf36da4798ab73da5b215bbf444f50718207754cb522201d78d1cd0ff2'}, + {'md-5-0.10.6.tar.gz': 'd89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf'}, + {'memchr-2.7.1.tar.gz': '523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149'}, + {'mimalloc-0.1.39.tar.gz': 'fa01922b5ea280a911e323e4d2fd24b7fe5cc4042e0d2cda3c40775cdc4bdc9c'}, + {'miniz_oxide-0.7.2.tar.gz': '9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7'}, + {'nalgebra-0.29.0.tar.gz': 'd506eb7e08d6329505faa8a3a00a5dcc6de9f76e0c77e4b75763ae3c770831ff'}, + {'nalgebra-macros-0.1.0.tar.gz': '01fcc0b8149b4632adc89ac3b7b31a12fb6099a0317a4eb2ebff574ef7de7218'}, + {'ndarray-0.15.6.tar.gz': 'adb12d4e967ec485a5f71c6311fe28158e9d6f4bc4a447b474184d0f91a8fa32'}, + {'needletail-0.5.1.tar.gz': 'db05a5ab397f64070d8c998fa0fbb84e484b81f95752af317dac183a82d9295d'}, + {'noodles-0.65.0.tar.gz': '38db1833ba39368f7a855c5b9a8412729a61dd86b2563e1a3bdb02aecbe92a3c'}, + {'noodles-bam-0.56.0.tar.gz': 'd3189e8ecee801ab5c3f4ea9908c4196b429137d8d35d733f00f6681f9188be7'}, + {'noodles-bgzf-0.26.0.tar.gz': '8970db2e84adb1007377dd3988258d7a64e3fc4c05602ebf94e1f8cba207c030'}, + {'noodles-core-0.14.0.tar.gz': '7336c3be652de4e05444c9b12a32331beb5ba3316e8872d92bfdd8ef3b06c282'}, + {'noodles-cram-0.56.0.tar.gz': '34a70ebb5bc7ff2d07ce96c0568691e57be421c121103ebef10cf02a63d7d400'}, + {'noodles-csi-0.30.0.tar.gz': 'a60dfe0919f7ecbd081a82eb1d32e8f89f9041932d035fe8309073c8c01277bf'}, + {'noodles-fasta-0.33.0.tar.gz': '5e9e953e4e90e6c96e6a384598ebf2ab6d2f5add259ff05a194cf635e892c980'}, + {'noodles-sam-0.53.0.tar.gz': '1f0d8e441368374f6e144989f823fd7c05e58cdaa3f97d22bb4d75b534327b87'}, + {'noodles-util-0.37.0.tar.gz': 'e800d2619f75de004aef8beb29f604e667f5bf5f714ff05cce3730f5c8cc4958'}, + {'num-0.4.1.tar.gz': 'b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af'}, + {'num-bigint-0.4.4.tar.gz': '608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0'}, + {'num-complex-0.2.4.tar.gz': 'b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95'}, + {'num-complex-0.4.5.tar.gz': '23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6'}, + {'num-conv-0.1.0.tar.gz': '51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9'}, + {'num-format-0.4.4.tar.gz': 'a652d9771a63711fd3c3deb670acfbe5c30a4072e664d7a3bf5a9e1056ac72c3'}, + {'num-integer-0.1.46.tar.gz': '7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f'}, + {'num-iter-0.1.44.tar.gz': 'd869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9'}, + {'num-rational-0.4.1.tar.gz': '0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0'}, + {'num-traits-0.2.18.tar.gz': 'da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a'}, + {'num_cpus-1.16.0.tar.gz': '4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43'}, + {'number_prefix-0.4.0.tar.gz': '830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3'}, + {'once_cell-1.19.0.tar.gz': '3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92'}, + {'parking_lot_core-0.9.9.tar.gz': '4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e'}, + {'paste-1.0.14.tar.gz': 'de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c'}, + {'petgraph-0.6.4.tar.gz': 'e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9'}, + {'pkg-config-0.3.30.tar.gz': 'd231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec'}, + {'portable-atomic-1.6.0.tar.gz': '7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0'}, + {'powerfmt-0.2.0.tar.gz': '439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391'}, + {'ppv-lite86-0.2.17.tar.gz': '5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de'}, + {'proc-macro2-1.0.78.tar.gz': 'e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae'}, + {'quote-1.0.35.tar.gz': '291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef'}, + {'rand-0.8.5.tar.gz': '34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404'}, + {'rand_chacha-0.3.1.tar.gz': 'e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88'}, + {'rand_core-0.6.4.tar.gz': 'ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c'}, + {'rand_distr-0.4.3.tar.gz': '32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31'}, + {'rawpointer-0.2.1.tar.gz': '60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3'}, + {'rayon-1.9.0.tar.gz': 'e4963ed1bc86e4f3ee217022bd855b297cef07fb9eac5dfa1f788b220b49b3bd'}, + {'rayon-core-1.12.1.tar.gz': '1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2'}, + {'redox_syscall-0.4.1.tar.gz': '4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa'}, + {'redox_users-0.4.4.tar.gz': 'a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4'}, + {'regex-1.10.3.tar.gz': 'b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15'}, + {'regex-automata-0.4.6.tar.gz': '86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea'}, + {'regex-syntax-0.8.2.tar.gz': 'c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f'}, + {'rustix-0.38.31.tar.gz': '6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949'}, + {'rustversion-1.0.14.tar.gz': '7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4'}, + {'ryu-1.0.17.tar.gz': 'e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1'}, + {'safe_arch-0.7.1.tar.gz': 'f398075ce1e6a179b46f51bd88d0598b92b00d3551f1a2d4ac49e771b56ac354'}, + {'sce-0.2.0.tar.gz': '3e86ac42a268d4f4644e38887b5dad29002dcbcdeddb40057195beeb61105df6'}, + {'scopeguard-1.2.0.tar.gz': '94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49'}, + {'scroll-0.12.0.tar.gz': '6ab8598aa408498679922eff7fa985c25d58a90771bd6be794434c5277eab1a6'}, + {'serde-1.0.197.tar.gz': '3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2'}, + {'serde_derive-1.0.197.tar.gz': '7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b'}, + {'serde_json-1.0.114.tar.gz': 'c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0'}, + {'simba-0.6.0.tar.gz': 'f0b7840f121a46d63066ee7a99fc81dcabbc6105e437cae43528cea199b5a05f'}, + {'slog-2.7.0.tar.gz': '8347046d4ebd943127157b94d63abb990fcf729dc4e9978927fdf4ac3c998d06'}, + {'slog-async-2.8.0.tar.gz': '72c8038f898a2c79507940990f05386455b3a317d8f18d4caea7cbc3d5096b84'}, + {'slog-term-2.9.1.tar.gz': 'b6e022d0b998abfe5c3782c1f03551a596269450ccd677ea51c56f8b214610e8'}, + {'smallvec-1.13.1.tar.gz': 'e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7'}, + {'snap-1.1.1.tar.gz': '1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b'}, + {'sprs-0.11.1.tar.gz': '88bab60b0a18fb9b3e0c26e92796b3c3a278bf5fa4880f5ad5cc3bdfb843d0b1'}, + {'static_assertions-1.1.0.tar.gz': 'a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f'}, + {'statrs-0.16.0.tar.gz': '2d08e5e1748192713cc281da8b16924fb46be7b0c2431854eadc785823e5696e'}, + {'strsim-0.11.0.tar.gz': '5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01'}, + {'strum_macros-0.25.3.tar.gz': '23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0'}, + {'syn-1.0.109.tar.gz': '72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237'}, + {'syn-2.0.52.tar.gz': 'b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07'}, + {'take_mut-0.2.2.tar.gz': 'f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60'}, + {'term-0.7.0.tar.gz': 'c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f'}, + {'terminal_size-0.3.0.tar.gz': '21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7'}, + {'thiserror-1.0.57.tar.gz': '1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b'}, + {'thiserror-impl-1.0.57.tar.gz': 'a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81'}, + {'thread_local-1.1.8.tar.gz': '8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c'}, + {'time-0.3.34.tar.gz': 'c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749'}, + {'time-core-0.1.2.tar.gz': 'ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3'}, + {'time-macros-0.2.17.tar.gz': '7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774'}, + {'trait-set-0.3.0.tar.gz': 'b79e2e9c9ab44c6d7c20d5976961b47e8f49ac199154daa514b77cd1ab536625'}, + {'typed-builder-0.18.1.tar.gz': '444d8748011b93cb168770e8092458cb0f8854f931ff82fdf6ddfbd72a9c933e'}, + {'typed-builder-macro-0.18.1.tar.gz': '563b3b88238ec95680aef36bdece66896eaa7ce3c0f1b4f39d38fb2435261352'}, + {'typenum-1.17.0.tar.gz': '42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825'}, + {'unicode-ident-1.0.12.tar.gz': '3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b'}, + {'unicode-width-0.1.11.tar.gz': 'e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85'}, + {'utf8parse-0.2.1.tar.gz': '711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a'}, + {'version_check-0.9.4.tar.gz': '49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f'}, + {'wasi-0.11.0+wasi-snapshot-preview1.tar.gz': '9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423'}, + {'wasm-bindgen-0.2.92.tar.gz': '4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8'}, + {'wasm-bindgen-backend-0.2.92.tar.gz': '614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da'}, + {'wasm-bindgen-macro-0.2.92.tar.gz': 'a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726'}, + {'wasm-bindgen-macro-support-0.2.92.tar.gz': 'e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7'}, + {'wasm-bindgen-shared-0.2.92.tar.gz': 'af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96'}, + {'wide-0.7.15.tar.gz': '89beec544f246e679fc25490e3f8e08003bc4bf612068f325120dad4cea02c1c'}, + {'winapi-0.3.9.tar.gz': '5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419'}, + {'winapi-i686-pc-windows-gnu-0.4.0.tar.gz': 'ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6'}, + {'winapi-x86_64-pc-windows-gnu-0.4.0.tar.gz': '712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f'}, + {'windows-core-0.52.0.tar.gz': '33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9'}, + {'windows-sys-0.48.0.tar.gz': '677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9'}, + {'windows-sys-0.52.0.tar.gz': '282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d'}, + {'windows-targets-0.48.5.tar.gz': '9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c'}, + {'windows-targets-0.52.4.tar.gz': '7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b'}, + {'windows_aarch64_gnullvm-0.48.5.tar.gz': '2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8'}, + {'windows_aarch64_gnullvm-0.52.4.tar.gz': 'bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9'}, + {'windows_aarch64_msvc-0.48.5.tar.gz': 'dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc'}, + {'windows_aarch64_msvc-0.52.4.tar.gz': 'da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675'}, + {'windows_i686_gnu-0.48.5.tar.gz': 'a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e'}, + {'windows_i686_gnu-0.52.4.tar.gz': 'b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3'}, + {'windows_i686_msvc-0.48.5.tar.gz': '8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406'}, + {'windows_i686_msvc-0.52.4.tar.gz': '1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02'}, + {'windows_x86_64_gnu-0.48.5.tar.gz': '53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e'}, + {'windows_x86_64_gnu-0.52.4.tar.gz': '5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03'}, + {'windows_x86_64_gnullvm-0.48.5.tar.gz': '0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc'}, + {'windows_x86_64_gnullvm-0.52.4.tar.gz': '77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177'}, + {'windows_x86_64_msvc-0.48.5.tar.gz': 'ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538'}, + {'windows_x86_64_msvc-0.52.4.tar.gz': '32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8'}, + {'xz2-0.1.7.tar.gz': '388c44dc09d76f1536602ead6d325eb532f5c122f17782bd57fb47baeeb767e2'}, + {'zerocopy-0.7.32.tar.gz': '74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be'}, + {'zerocopy-derive-0.7.32.tar.gz': '9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6'}, +] + +builddependencies = [ + ('binutils', '2.40'), + ('Rust', '1.76.0'), + ('CMake', '3.27.6'), +] + +dependencies = [ + ('bzip2', '1.0.8'), +] + +sanity_check_paths = { + 'files': ['bin/%(namelower)s'], + 'dirs': [], +} + +sanity_check_commands = ["%(namelower)s --help"] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/a/alsa-lib/alsa-lib-1.2.9-GCCcore-12.3.0.eb b/easybuild/easyconfigs/a/alsa-lib/alsa-lib-1.2.9-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..8e0eb5e0dbf --- /dev/null +++ b/easybuild/easyconfigs/a/alsa-lib/alsa-lib-1.2.9-GCCcore-12.3.0.eb @@ -0,0 +1,24 @@ +easyblock = 'ConfigureMake' + +name = 'alsa-lib' +version = '1.2.9' + +homepage = 'https://www.alsa-project.org' +description = """The Advanced Linux Sound Architecture (ALSA) provides audio and MIDI functionality + to the Linux operating system.""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +source_urls = ['https://www.alsa-project.org/files/pub/lib/'] +sources = [SOURCE_TAR_BZ2] +checksums = ['dc9c643fdc4ccfd0572cc685858dd41e08afb583f30460b317e4188275f615b2'] + +dependencies = [('binutils', '2.40')] + +sanity_check_paths = { + 'files': ['bin/aserver', 'include/asoundlib.h', + 'lib64/libatopology.%s' % SHLIB_EXT, 'lib64/libasound.%s' % SHLIB_EXT], + 'dirs': ['include/alsa', 'lib/pkgconfig', 'share'], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/a/amdahl/amdahl-0.3.1-gompi-2023a.eb b/easybuild/easyconfigs/a/amdahl/amdahl-0.3.1-gompi-2023a.eb new file mode 100644 index 00000000000..03df4c86664 --- /dev/null +++ b/easybuild/easyconfigs/a/amdahl/amdahl-0.3.1-gompi-2023a.eb @@ -0,0 +1,35 @@ +easyblock = 'PythonPackage' + +name = 'amdahl' +version = '0.3.1' + +homepage = "https://github.com/hpc-carpentry/amdahl" +description = """This Python module contains a pseudo-application that can be used as a black +box to reproduce Amdahl's Law. It does not do real calculations, nor any real +communication, so can easily be overloaded. +""" + +toolchain = {'name': 'gompi', 'version': '2023a'} + +dependencies = [ + ('Python', '3.11.3'), + ('mpi4py', '3.1.4'), +] + +sources = [SOURCELOWER_TAR_GZ] +checksums = ['b2e0f13fbfc082c83871583d6254ba6c1abc0033ee9cf8a5d018c5541c32ff74'] + +download_dep_fail = True +sanity_pip_check = True +use_pip = True + +sanity_check_paths = { + 'files': ['bin/amdahl'], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +sanity_check_commands = [ + "amdahl --help", +] + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/a/anndata/anndata-0.9.2-foss-2021b.eb b/easybuild/easyconfigs/a/anndata/anndata-0.9.2-foss-2021b.eb new file mode 100644 index 00000000000..f5f7d79dadf --- /dev/null +++ b/easybuild/easyconfigs/a/anndata/anndata-0.9.2-foss-2021b.eb @@ -0,0 +1,37 @@ +easyblock = 'PythonBundle' + +name = 'anndata' +version = '0.9.2' + +homepage = 'https://github.com/scverse/anndata' +description = """anndata is a Python package for handling annotated data matrices in memory and on disk, + positioned between pandas and xarray""" + +toolchain = {'name': 'foss', 'version': '2021b'} + +dependencies = [ + ('Python', '3.9.6'), + ('SciPy-bundle', '2021.10'), + ('h5py', '3.6.0'), +] + +use_pip = True +sanity_pip_check = True + +exts_list = [ + ('natsort', '8.4.0', { + 'checksums': ['45312c4a0e5507593da193dedd04abb1469253b601ecaf63445ad80f0a1ea581'], + }), + (name, version, { + 'checksums': ['e5b8383d09723af674cae7ad0c2ef53eb1f8c73949b7f4c182a6e30f42196327'], + }), +] + +sanity_check_paths = { + 'files': ['bin/natsort'], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +sanity_check_commands = ["natsort --help"] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/a/arrow-R/arrow-R-11.0.0.3-foss-2022b-R-4.2.2.eb b/easybuild/easyconfigs/a/arrow-R/arrow-R-11.0.0.3-foss-2022b-R-4.2.2.eb index dfe97712e3b..e0cb197688d 100644 --- a/easybuild/easyconfigs/a/arrow-R/arrow-R-11.0.0.3-foss-2022b-R-4.2.2.eb +++ b/easybuild/easyconfigs/a/arrow-R/arrow-R-11.0.0.3-foss-2022b-R-4.2.2.eb @@ -19,7 +19,7 @@ checksums = ['eb939471f5f4218e6cfd62f58ccd2a0a5283d4a19a2902741c7fb25e2f016eaf'] dependencies = [ ('R', '4.2.2'), - ('Arrow', '11.0.0'), + ('Arrow', '11.0.0'), # arrow-R x.y.z[.N] only works with Arrow x.y.z ] preinstallopts = "export LIBARROW_BINARY=true && " diff --git a/easybuild/easyconfigs/a/arrow-R/arrow-R-14.0.0.2-foss-2023a-R-4.3.2.eb b/easybuild/easyconfigs/a/arrow-R/arrow-R-14.0.1-foss-2023a-R-4.3.2.eb similarity index 69% rename from easybuild/easyconfigs/a/arrow-R/arrow-R-14.0.0.2-foss-2023a-R-4.3.2.eb rename to easybuild/easyconfigs/a/arrow-R/arrow-R-14.0.1-foss-2023a-R-4.3.2.eb index 260e080346c..1a6720e1a3c 100644 --- a/easybuild/easyconfigs/a/arrow-R/arrow-R-14.0.0.2-foss-2023a-R-4.3.2.eb +++ b/easybuild/easyconfigs/a/arrow-R/arrow-R-14.0.1-foss-2023a-R-4.3.2.eb @@ -1,7 +1,7 @@ easyblock = 'RPackage' name = 'arrow-R' -version = '14.0.0.2' +version = '14.0.1' versionsuffix = '-R-%(rver)s' homepage = 'https://cran.r-project.org/web/packages/arrow' @@ -13,16 +13,18 @@ source_urls = [ 'https://cran.r-project.org/src/contrib/Archive/arrow', # package archive 'https://cran.r-project.org/src/contrib/', # current version of packages 'https://cran.freestatistics.org/src/contrib', # mirror alternative for current packages + 'https://archive.apache.org/dist/arrow/arrow-%(version)s', # full Arrow source tarballs ] -sources = ['arrow_%(version)s.tar.gz'] -checksums = ['7138a52d66f1b94ec31c25e8929d6f92b1640df852a10817600a82ab68ba8ab7'] +sources = ['apache-arrow-%(version)s.tar.gz'] +checksums = ['5c70eafb1011f9d124bafb328afe54f62cc5b9280b7080e1e3d668f78c0e407e'] dependencies = [ ('R', '4.3.2'), ('R-bundle-CRAN', '2023.12'), - ('Arrow', '14.0.1'), + ('Arrow', '14.0.1'), # arrow-R x.y.z[.N] only works with Arrow x.y.z ] +start_dir = 'r' preinstallopts = "export LIBARROW_BINARY=true && " sanity_check_paths = { diff --git a/easybuild/easyconfigs/a/assembly-stats/assembly-stats-1.0.1-GCCcore-11.3.0.eb b/easybuild/easyconfigs/a/assembly-stats/assembly-stats-1.0.1-GCCcore-11.3.0.eb new file mode 100644 index 00000000000..7f13dbce7c6 --- /dev/null +++ b/easybuild/easyconfigs/a/assembly-stats/assembly-stats-1.0.1-GCCcore-11.3.0.eb @@ -0,0 +1,43 @@ +# Author: Ehsan Moravveji (VSCentrum, KU Leuven) + +easyblock = 'CMakeMake' + +name = 'assembly-stats' +version = '1.0.1' + +homepage = 'https://github.com/sanger-pathogens/assembly-stats' +description = 'Get assembly statistics from FASTA and FASTQ files.' + +toolchain = {'name': 'GCCcore', 'version': '11.3.0'} + +github_account = 'sanger-pathogens' +source_urls = [GITHUB_SOURCE] +sources = ['v%(version)s.tar.gz'] +patches = ['%(name)s-1.0.1_fix_str_cast.patch'] +checksums = [ + {'v1.0.1.tar.gz': '02be614da4d244673bcd0adc6917749681d52a58cb0a039c092d01cdeabd8575'}, + {'assembly-stats-1.0.1_fix_str_cast.patch': '2c1d63e7b1246b290ddfeea2604076ae892dfe337e5092e83575c2c3cbcfd7fd'}, +] + +builddependencies = [ + ('binutils', '2.38'), + ('CMake', '3.24.3'), + ('pkgconf', '1.8.0'), +] + +dependencies = [ + ('zlib', '1.2.12'), +] + +configopts = '-DINSTALL_DIR=%(installdir)s/bin' + +runtest = 'test' + +sanity_check_paths = { + 'files': ['bin/assembly-stats'], + 'dirs': [] +} + +sanity_check_commands = ['assembly-stats -v'] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/a/assembly-stats/assembly-stats-1.0.1_fix_str_cast.patch b/easybuild/easyconfigs/a/assembly-stats/assembly-stats-1.0.1_fix_str_cast.patch new file mode 100644 index 00000000000..48fe1b7fef1 --- /dev/null +++ b/easybuild/easyconfigs/a/assembly-stats/assembly-stats-1.0.1_fix_str_cast.patch @@ -0,0 +1,43 @@ +# Author: Ehsan Moravveji (VSCentrum, KU Leuven) +# Purpose: This patch prevents the compile-time error "taking address of rvalue [-fpermissive]" +# by redefining a simple casting from integer to string. Consequently, the additional +# "-fpermissive" compiler flag need not be included to supress the error. +diff -ruN assembly-stats-original/fasta_unittest.cpp assembly-stats/fasta_unittest.cpp +--- assembly-stats-original/fasta_unittest.cpp 2024-04-03 11:45:32.230992000 +0200 ++++ assembly-stats/fasta_unittest.cpp 2024-04-03 11:50:08.868140000 +0200 +@@ -1,4 +1,5 @@ + #include ++#include + #include "fasta.h" + #include "gtest/gtest.h" + +@@ -94,8 +95,7 @@ + while (fa.fillFromFile(inStream)) + { + counter++; +- string expectedName = static_cast( &(ostringstream() << counter) )->str(); +- EXPECT_EQ(0, fa.name().compare(expectedName)); ++ EXPECT_EQ(0, fa.name().compare(std::to_string(counter))); + EXPECT_EQ(0, fa.seq().compare("ACGT")); + } + +diff -ruN assembly-stats-original/fastq_unittest.cpp assembly-stats/fastq_unittest.cpp +--- assembly-stats-original/fastq_unittest.cpp 2024-04-03 11:45:32.226036000 +0200 ++++ assembly-stats/fastq_unittest.cpp 2024-04-03 12:29:04.830873000 +0200 +@@ -1,5 +1,6 @@ + #include + #include ++#include + #include + #include "fastq.h" + #include "gtest/gtest.h" +@@ -50,8 +51,7 @@ + while (fq.fillFromFile(inStream)) + { + counter++; +- string expectedName = static_cast( &(ostringstream() << counter) )->str(); +- EXPECT_EQ(0, fq.name().compare(expectedName)); ++ EXPECT_EQ(0, fq.name().compare(std::to_string(counter))); + EXPECT_EQ(0, fq.seq().compare("ACGT")); + } + } diff --git a/easybuild/easyconfigs/a/astropy/astropy-5.1.1-intel-2022a.eb b/easybuild/easyconfigs/a/astropy/astropy-5.1.1-intel-2022a.eb new file mode 100644 index 00000000000..187ca13b362 --- /dev/null +++ b/easybuild/easyconfigs/a/astropy/astropy-5.1.1-intel-2022a.eb @@ -0,0 +1,37 @@ +easyblock = "PythonBundle" + +name = 'astropy' +version = '5.1.1' + +homepage = 'https://www.astropy.org/' +description = """The Astropy Project is a community effort to develop a common +core package for Astronomy in Python and foster an ecosystem of interoperable +astronomy packages.""" + +docurls = 'https://docs.astropy.org' + +toolchain = {'name': 'intel', 'version': '2022a'} + +dependencies = [ + ('Python', '3.10.4'), + ('SciPy-bundle', '2022.05'), + ('PyYAML', '6.0'), +] + +use_pip = True +sanity_pip_check = True + +exts_list = [ + ('pyerfa', '2.0.0.1', { + 'modulename': 'erfa', + 'checksums': ['2fd4637ffe2c1e6ede7482c13f583ba7c73119d78bef90175448ce506a0ede30'], + }), + ('extension-helpers', '1.0.0', { + 'checksums': ['ca1bfac67c79cf4a7a0c09286ce2a24eec31bf17715818d0726318dd0e5050e6'], + }), + (name, version, { + 'checksums': ['ba4bd696af7090fd399b464c704bf27b5633121e461785edc70432606a94bd81'], + }), +] + +moduleclass = 'astro' diff --git a/easybuild/easyconfigs/a/atropos/atropos-1.1.32-gompi-2023a.eb b/easybuild/easyconfigs/a/atropos/atropos-1.1.32-gompi-2023a.eb new file mode 100644 index 00000000000..dddac86e727 --- /dev/null +++ b/easybuild/easyconfigs/a/atropos/atropos-1.1.32-gompi-2023a.eb @@ -0,0 +1,57 @@ +easyblock = 'PythonBundle' + +name = 'atropos' +version = '1.1.32' + +homepage = 'https://atropos.readthedocs.io' +description = "Atropos is tool for specific, sensitive, and speedy trimming of NGS reads." + +toolchain = {'name': 'gompi', 'version': '2023a'} + +dependencies = [ + ('Python', '3.11.3'), + ('Python-bundle-PyPI', '2023.06'), + ('tqdm', '4.66.1'), + ('Pysam', '0.22.0'), + ('pytest', '7.4.2'), + ('SRA-Toolkit', '3.0.10'), +] + +use_pip = True +sanity_pip_check = True + +exts_list = [ + ('versioneer', '0.29', { + 'checksums': ['5ab283b9857211d61b53318b7c792cf68e798e765ee17c27ade9f6c924235731'], + }), + ('screed', '1.1.3', { + 'checksums': ['37e81697c7dba95a053554e5b5a86aff329705e1cf5dfc5e7b8da586dee072b8'], + }), + ('bz2file', '0.98', { + 'checksums': ['64c1f811e31556ba9931953c8ec7b397488726c63e09a4c67004f43bdd28da88'], + }), + ('khmer', '2.1.1', { + 'checksums': ['a709606910bb8679bd8525e9d2bf6d1421996272e343b54cc18090feb2fdbe24'], + }), + ('pokrok', '0.2.0', { + 'checksums': ['cfe7956602d8bbc142a07bcb259e0d1d939f96d7b074e00dceea3cb5e39244e8'], + }), + ('xphyle', '4.0.5', { + 'checksums': ['b744723a3c88d81318c7291c32682b8715a046f70d0a1db729bda783fd5e08bd'], + }), + ('srastream', '0.1.3', { + 'checksums': ['7f2cfd76ae988349ad5407a952cd4c133ae5dff7cf12c76072c53d82b50c2634'], + }), + (name, version, { + 'checksums': ['17e9dc3d76d7a2ca607a12da191a6d7ba1cfbd1a8c924215870417f85858fd83'], + }), +] + +sanity_check_paths = { + 'files': ['bin/atropos'], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +sanity_check_commands = ["atropos detect --help"] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/a/attrdict3/attrdict3-2.0.2-GCCcore-12.3.0.eb b/easybuild/easyconfigs/a/attrdict3/attrdict3-2.0.2-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..67ab5e0fbda --- /dev/null +++ b/easybuild/easyconfigs/a/attrdict3/attrdict3-2.0.2-GCCcore-12.3.0.eb @@ -0,0 +1,29 @@ +easyblock = 'PythonBundle' + +name = 'attrdict3' +version = '2.0.2' + +homepage = 'https://github.com/pirofti/AttrDict3' +description = """AttrDict is a Python library that provides mapping objects that allow their elements + to be accessed both as keys and as attributes.""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +builddependencies = [('binutils', '2.40')] + +dependencies = [ + ('Python', '3.11.3'), + ('Python-bundle-PyPI', '2023.06'), +] + +sanity_pip_check = True +use_pip = True + +exts_list = [ + (name, version, { + 'modulename': 'attrdict', + 'checksums': ['004c171ca1120cc1755701db99d7fa4944afb1e68950434efdaa542513335fe8'], + }), +] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/a/autopep8/autopep8-2.2.0-foss-2023a.eb b/easybuild/easyconfigs/a/autopep8/autopep8-2.2.0-foss-2023a.eb new file mode 100644 index 00000000000..63f57b621be --- /dev/null +++ b/easybuild/easyconfigs/a/autopep8/autopep8-2.2.0-foss-2023a.eb @@ -0,0 +1,23 @@ +easyblock = 'PythonPackage' + +name = 'autopep8' +version = '2.2.0' + +homepage = "https://github.com/hhatto/autopep8" +description = """A tool that automatically formats Python code to conform to the PEP 8 style guide.""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +sources = [SOURCE_WHL] +checksums = ['05418a981f038969d8bdcd5636bf15948db7555ae944b9f79b5a34b35f1370d4'] + +dependencies = [ + ('Python', '3.11.3'), + ('pycodestyle', '2.11.1'), +] + +download_dep_fail = True +use_pip = True +sanity_pip_check = True + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/b/BCFtools/BCFtools-1.19-GCC-13.2.0.eb b/easybuild/easyconfigs/b/BCFtools/BCFtools-1.19-GCC-13.2.0.eb new file mode 100644 index 00000000000..916756784a7 --- /dev/null +++ b/easybuild/easyconfigs/b/BCFtools/BCFtools-1.19-GCC-13.2.0.eb @@ -0,0 +1,39 @@ +# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild +# +# Author: Jonas Demeulemeester +# The Francis Crick Insitute, London, UK + +easyblock = 'ConfigureMake' + +name = 'BCFtools' +version = '1.19' + +homepage = 'https://www.htslib.org/' +description = """Samtools is a suite of programs for interacting with high-throughput sequencing data. + BCFtools - Reading/writing BCF2/VCF/gVCF files and calling/filtering/summarising SNP and short indel sequence + variants""" + +toolchain = {'name': 'GCC', 'version': '13.2.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/samtools/%(namelower)s/releases/download/%(version)s'] +sources = [SOURCELOWER_TAR_BZ2] +checksums = ['782b5f1bc690415192231e82213b3493b047f45e630dc8ef6f154d6126ab3e68'] + +dependencies = [ + ('zlib', '1.2.13'), + ('HTSlib', '1.19.1'), + ('bzip2', '1.0.8'), + ('XZ', '5.4.4'), + ('GSL', '2.7'), +] + +configopts = "--with-htslib=$EBROOTHTSLIB --enable-libgsl" + + +sanity_check_paths = { + 'files': ['bin/%(namelower)s', 'bin/plot-vcfstats', 'bin/vcfutils.pl'], + 'dirs': ['libexec/%(namelower)s'], +} + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/b/BLAST+/BLAST+-2.13.0-gompi-2022a.eb b/easybuild/easyconfigs/b/BLAST+/BLAST+-2.13.0-gompi-2022a.eb index fb96f2a9897..4e9e9d4d83e 100644 --- a/easybuild/easyconfigs/b/BLAST+/BLAST+-2.13.0-gompi-2022a.eb +++ b/easybuild/easyconfigs/b/BLAST+/BLAST+-2.13.0-gompi-2022a.eb @@ -27,6 +27,8 @@ source_urls = ['https://ftp.ncbi.nlm.nih.gov/blast/executables/%(namelower)s/%(v sources = ['ncbi-blast-%(version)s+-src.tar.gz'] checksums = ['89553714d133daf28c477f83d333794b3c62e4148408c072a1b4620e5ec4feb2'] +builddependencies = [('cpio', '2.14')] + dependencies = [ ('zlib', '1.2.12'), ('bzip2', '1.0.8'), @@ -38,7 +40,10 @@ dependencies = [ ('LMDB', '0.9.29'), ] -configopts = "--with-64 --with-z=$EBROOTZLIB --with-bz2=$EBROOTBZIP2 " +# remove line that prepends system paths to $PATH from configure script +preconfigopts = r'sed -i "s|^PATH=\(.*\)$|#PATH=\1 |" %(start_dir)s/src/build-system/configure && ' + +configopts = "--with-z=$EBROOTZLIB --with-bz2=$EBROOTBZIP2 " configopts += "--with-pcre=$EBROOTPCRE --with-boost=$EBROOTBOOST " configopts += "--with-gmp=$EBROOTGMP --with-png=$EBROOTLIBPNG " configopts += "--with-jpeg=$EBROOTLIBJPEGMINTURBO --with-lmdb=$EBROOTLMDB" diff --git a/easybuild/easyconfigs/b/BLAST+/BLAST+-2.14.0-gompi-2022b.eb b/easybuild/easyconfigs/b/BLAST+/BLAST+-2.14.0-gompi-2022b.eb index 142ad4eb6aa..a4033efcdde 100644 --- a/easybuild/easyconfigs/b/BLAST+/BLAST+-2.14.0-gompi-2022b.eb +++ b/easybuild/easyconfigs/b/BLAST+/BLAST+-2.14.0-gompi-2022b.eb @@ -27,6 +27,8 @@ source_urls = ['https://ftp.ncbi.nlm.nih.gov/blast/executables/%(namelower)s/%(v sources = ['ncbi-blast-%(version)s+-src.tar.gz'] checksums = ['bf477f1b0c3b82f0b7a7094bf003a9a83e37e3b0716c1df799060c4feab17500'] +builddependencies = [('cpio', '2.15')] + dependencies = [ ('zlib', '1.2.12'), ('bzip2', '1.0.8'), @@ -38,7 +40,10 @@ dependencies = [ ('LMDB', '0.9.29'), ] -configopts = "--with-64 --with-z=$EBROOTZLIB --with-bz2=$EBROOTBZIP2 " +# remove line that prepends system paths to $PATH from configure script +preconfigopts = r'sed -i "s|^PATH=\(.*\)$|#PATH=\1 |" %(start_dir)s/src/build-system/configure && ' + +configopts = "--with-z=$EBROOTZLIB --with-bz2=$EBROOTBZIP2 " configopts += "--with-pcre=$EBROOTPCRE --with-boost=$EBROOTBOOST " configopts += "--with-gmp=$EBROOTGMP --with-png=$EBROOTLIBPNG " configopts += "--with-jpeg=$EBROOTLIBJPEGMINTURBO --with-lmdb=$EBROOTLMDB" diff --git a/easybuild/easyconfigs/b/BLAST+/BLAST+-2.14.1-gompi-2023a.eb b/easybuild/easyconfigs/b/BLAST+/BLAST+-2.14.1-gompi-2023a.eb index 47c8e2d2ef6..844a9854825 100644 --- a/easybuild/easyconfigs/b/BLAST+/BLAST+-2.14.1-gompi-2023a.eb +++ b/easybuild/easyconfigs/b/BLAST+/BLAST+-2.14.1-gompi-2023a.eb @@ -27,6 +27,8 @@ source_urls = ['https://ftp.ncbi.nlm.nih.gov/blast/executables/%(namelower)s/%(v sources = ['ncbi-blast-%(version)s+-src.tar.gz'] checksums = ['712c2dbdf0fb13cc1c2d4f4ef5dd1ce4b06c3b57e96dfea8f23e6e99f5b1650e'] +builddependencies = [('cpio', '2.15')] + dependencies = [ ('zlib', '1.2.13'), ('bzip2', '1.0.8'), @@ -38,7 +40,10 @@ dependencies = [ ('LMDB', '0.9.31'), ] -configopts = "--with-64 --with-z=$EBROOTZLIB --with-bz2=$EBROOTBZIP2 " +# remove line that prepends system paths to $PATH from configure script +preconfigopts = r'sed -i "s|^PATH=\(.*\)$|#PATH=\1 |" %(start_dir)s/src/build-system/configure && ' + +configopts = "--with-z=$EBROOTZLIB --with-bz2=$EBROOTBZIP2 " configopts += "--with-pcre=$EBROOTPCRE --with-boost=$EBROOTBOOST " configopts += "--with-gmp=$EBROOTGMP --with-png=$EBROOTLIBPNG " configopts += "--with-jpeg=$EBROOTLIBJPEGMINTURBO --with-lmdb=$EBROOTLMDB" diff --git a/easybuild/easyconfigs/b/BLIS/BLIS-0.9.0-GCC-13.2.0.eb b/easybuild/easyconfigs/b/BLIS/BLIS-0.9.0-GCC-13.2.0.eb index 17fa98dc916..0b0e5bb7de7 100644 --- a/easybuild/easyconfigs/b/BLIS/BLIS-0.9.0-GCC-13.2.0.eb +++ b/easybuild/easyconfigs/b/BLIS/BLIS-0.9.0-GCC-13.2.0.eb @@ -16,12 +16,16 @@ patches = [ '%(name)s-%(version)s_enable_ppc_autodetect.patch', ] checksums = [ - '1135f664be7355427b91025075562805cdc6cc730d3173f83533b2c5dcc2f308', # 0.9.0.tar.gz - # BLIS-0.9.0_disable_power9_kernels.patch - 'ed7a326bc5c5c21c42faefbec2fd7be609d1c7236981b466475edace39307279', - # BLIS-0.9.0_enable_ppc_autodetect.patch - 'f373fb252c0d14036fb631f048091976cceb02abb3e570a97fbaeac2fbb12328', + {'0.9.0.tar.gz': '1135f664be7355427b91025075562805cdc6cc730d3173f83533b2c5dcc2f308'}, + {'BLIS-0.9.0_disable_power9_kernels.patch': 'ed7a326bc5c5c21c42faefbec2fd7be609d1c7236981b466475edace39307279'}, + {'BLIS-0.9.0_enable_ppc_autodetect.patch': 'f373fb252c0d14036fb631f048091976cceb02abb3e570a97fbaeac2fbb12328'}, ] + +if ARCH == "riscv64": + patches += ['BLIS-0.9.0_add-riscv-support.patch'] + checksums += [{'BLIS-0.9.0_add-riscv-support.patch': + '3610fa2e9f0e10c9e921865eb65966748392acb9cd8b17e43775c5a92f8d9f39'}] + builddependencies = [ ('Python', '3.11.5'), ('Perl', '5.38.0'), diff --git a/easybuild/easyconfigs/b/BLIS/BLIS-0.9.0_add-riscv-support.patch b/easybuild/easyconfigs/b/BLIS/BLIS-0.9.0_add-riscv-support.patch new file mode 100644 index 00000000000..83cdd2b3b0d --- /dev/null +++ b/easybuild/easyconfigs/b/BLIS/BLIS-0.9.0_add-riscv-support.patch @@ -0,0 +1,3999 @@ +Backport RISC-V support to version 0.9.0 by using a combination of +(slightly modified) versions of the following pull requests: +https://github.com/flame/blis/pull/693 +https://github.com/flame/blis/pull/750 + +Bob Dröge (University of Groningen) + +diff --git a/CREDITS b/CREDITS +index 9cc846d5c..d53c406e7 100644 +--- a/CREDITS ++++ b/CREDITS +@@ -98,6 +98,7 @@ but many others have contributed code, ideas, and feedback, including + Karl Rupp @karlrupp + Martin Schatz (The University of Texas at Austin) + Nico Schlömer @nschloe ++ Angelika Schwarz @angsch + Rene Sitt + Tony Skjellum @tonyskjellum (The University of Tennessee at Chattanooga) + Mikhail Smelyanskiy (Intel, Parallel Computing Lab) +diff --git a/config/rv32i/bli_cntx_init_rv32i.c b/config/rv32i/bli_cntx_init_rv32i.c +new file mode 100644 +index 000000000..84fd2dca6 +--- /dev/null ++++ b/config/rv32i/bli_cntx_init_rv32i.c +@@ -0,0 +1,44 @@ ++/* ++ ++ BLIS ++ An object-based framework for developing high-performance BLAS-like ++ libraries. ++ ++ Copyright (C) 2014, The University of Texas at Austin ++ ++ Redistribution and use in source and binary forms, with or without ++ modification, are permitted provided that the following conditions are ++ met: ++ - Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ - Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ - Neither the name(s) of the copyright holder(s) nor the names of its ++ contributors may be used to endorse or promote products derived ++ from this software without specific prior written permission. ++ ++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++*/ ++ ++#include "blis.h" ++ ++ ++void bli_cntx_init_rv32i( cntx_t* cntx ) ++{ ++ // Set default kernel blocksizes and functions. ++ bli_cntx_init_rv32i_ref( cntx ); ++ ++ // ------------------------------------------------------------------------- ++} +diff --git a/config/rv32i/bli_kernel_defs_rv32i.h b/config/rv32i/bli_kernel_defs_rv32i.h +new file mode 100644 +index 000000000..fe51f998d +--- /dev/null ++++ b/config/rv32i/bli_kernel_defs_rv32i.h +@@ -0,0 +1,43 @@ ++/* ++ ++ BLIS ++ An object-based framework for developing high-performance BLAS-like ++ libraries. ++ ++ Copyright (C) 2022, The University of Texas at Austin ++ ++ Redistribution and use in source and binary forms, with or without ++ modification, are permitted provided that the following conditions are ++ met: ++ - Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ - Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ - Neither the name(s) of the copyright holder(s) nor the names of its ++ contributors may be used to endorse or promote products derived ++ from this software without specific prior written permission. ++ ++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++*/ ++ ++//#ifndef BLIS_KERNEL_DEFS_H ++//#define BLIS_KERNEL_DEFS_H ++ ++ ++// -- REGISTER BLOCK SIZES (FOR REFERENCE KERNELS) ---------------------------- ++ ++// Fall through to generic sizes ++ ++//#endif +diff --git a/config/rv32i/make_defs.mk b/config/rv32i/make_defs.mk +new file mode 100644 +index 000000000..40849ce66 +--- /dev/null ++++ b/config/rv32i/make_defs.mk +@@ -0,0 +1,94 @@ ++# ++# ++# BLIS ++# An object-based framework for developing high-performance BLAS-like ++# libraries. ++# ++# Copyright (C) 2014, The University of Texas at Austin ++# ++# Redistribution and use in source and binary forms, with or without ++# modification, are permitted provided that the following conditions are ++# met: ++# - Redistributions of source code must retain the above copyright ++# notice, this list of conditions and the following disclaimer. ++# - Redistributions in binary form must reproduce the above copyright ++# notice, this list of conditions and the following disclaimer in the ++# documentation and/or other materials provided with the distribution. ++# - Neither the name(s) of the copyright holder(s) nor the names of its ++# contributors may be used to endorse or promote products derived ++# from this software without specific prior written permission. ++# ++# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++# ++# ++ ++ ++# Declare the name of the current configuration and add it to the ++# running list of configurations included by common.mk. ++THIS_CONFIG := rv32i ++#CONFIGS_INCL += $(THIS_CONFIG) ++ ++# ++# --- Determine the C compiler and related flags --- ++# ++ ++# NOTE: The build system will append these variables with various ++# general-purpose/configuration-agnostic flags in common.mk. You ++# may specify additional flags here as needed. ++CPPROCFLAGS := -DRISCV_SIZE=32 ++# Atomic instructions must be enabled either via hardware ++# (-march=rv32ia) or by linking against libatomic ++CMISCFLAGS := -march=$(shell $(CC) -E frame/base/bli_riscv_detect_arch.h | grep '^[^\#]') -mabi=ilp32 ++CPICFLAGS := ++CWARNFLAGS := -Wall -Wno-unused-function -Wfatal-errors ++ ++# In case the A extension is not available ++LDFLAGS += -latomic ++ ++ifneq ($(DEBUG_TYPE),off) ++CDBGFLAGS := -g ++endif ++ ++ifeq ($(DEBUG_TYPE),noopt) ++COPTFLAGS := -O0 ++else ++COPTFLAGS := -O2 ++endif ++ ++# Flags specific to optimized kernels. ++CKOPTFLAGS := $(COPTFLAGS) -O3 ++ifeq ($(CC_VENDOR),gcc) ++CKVECFLAGS := ++else ++ifeq ($(CC_VENDOR),clang) ++CKVECFLAGS := ++else ++$(error gcc or clang is required for this configuration.) ++endif ++endif ++ ++# Flags specific to reference kernels. ++CROPTFLAGS := $(CKOPTFLAGS) ++ifeq ($(CC_VENDOR),gcc) ++CRVECFLAGS := $(CKVECFLAGS) -funsafe-math-optimizations -ffp-contract=fast ++else ++ifeq ($(CC_VENDOR),clang) ++CRVECFLAGS := $(CKVECFLAGS) -funsafe-math-optimizations -ffp-contract=fast ++else ++CRVECFLAGS := $(CKVECFLAGS) ++endif ++endif ++ ++# Store all of the variables here to new variables containing the ++# configuration name. ++$(eval $(call store-make-defs,$(THIS_CONFIG))) +diff --git a/config/rv32iv/bli_cntx_init_rv32iv.c b/config/rv32iv/bli_cntx_init_rv32iv.c +new file mode 100644 +index 000000000..dd10a3655 +--- /dev/null ++++ b/config/rv32iv/bli_cntx_init_rv32iv.c +@@ -0,0 +1,109 @@ ++/* ++ ++ BLIS ++ An object-based framework for developing high-performance BLAS-like ++ libraries. ++ ++ Copyright (C) 2014, The University of Texas at Austin ++ ++ Redistribution and use in source and binary forms, with or without ++ modification, are permitted provided that the following conditions are ++ met: ++ - Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ - Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ - Neither the name(s) of the copyright holder(s) nor the names of its ++ contributors may be used to endorse or promote products derived ++ from this software without specific prior written permission. ++ ++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++*/ ++ ++#include "../../kernels/rviv/3/bli_rviv_utils.h" ++ ++void bli_cntx_init_rv32iv( cntx_t* cntx ) ++{ ++ blksz_t blkszs[ BLIS_NUM_BLKSZS ]; ++ ++ // Set default kernel blocksizes and functions. ++ bli_cntx_init_rv32iv_ref( cntx ); ++ ++ // ------------------------------------------------------------------------- ++ ++ // A reasonable assumptions for application cores is VLEN >= 128 bits, i.e., ++ // v >= 4. Embedded cores, however, may implement the minimal configuration, ++ // which allows VLEN = 32 bits. Here, we assume VLEN >= 128 and otherwise ++ // fall back to the reference kernels. ++ const uint32_t v = get_vlenb() / sizeof(float); ++ ++ if ( v >= 4 ) ++ { ++ const uint32_t mr_s = 4 * v; ++ const uint32_t mr_d = 2 * v; ++ const uint32_t mr_c = 2 * v; ++ const uint32_t mr_z = v; ++ ++ // Update the context with optimized native gemm micro-kernels. ++ bli_cntx_set_ukrs ++ ( ++ cntx, ++ ++ // level-3 ++ BLIS_GEMM_UKR, BLIS_FLOAT, bli_sgemm_rviv_4vx4, ++ BLIS_GEMM_UKR, BLIS_DOUBLE, bli_dgemm_rviv_4vx4, ++ BLIS_GEMM_UKR, BLIS_SCOMPLEX, bli_cgemm_rviv_4vx4, ++ BLIS_GEMM_UKR, BLIS_DCOMPLEX, bli_zgemm_rviv_4vx4, ++ ++ BLIS_VA_END ++ ); ++ ++ // Update the context with storage preferences. ++ bli_cntx_set_ukr_prefs ++ ( ++ cntx, ++ ++ // level-3 ++ BLIS_GEMM_UKR_ROW_PREF, BLIS_FLOAT, FALSE, ++ BLIS_GEMM_UKR_ROW_PREF, BLIS_DOUBLE, FALSE, ++ BLIS_GEMM_UKR_ROW_PREF, BLIS_SCOMPLEX, FALSE, ++ BLIS_GEMM_UKR_ROW_PREF, BLIS_DCOMPLEX, FALSE, ++ ++ BLIS_VA_END ++ ); ++ ++ // Initialize level-3 blocksize objects with architecture-specific values. ++ // s d c z ++ bli_blksz_init_easy( &blkszs[ BLIS_MR ], mr_s, mr_d, mr_c, mr_z ); ++ bli_blksz_init_easy( &blkszs[ BLIS_NR ], 4, 4, 4, 4 ); ++ bli_blksz_init_easy( &blkszs[ BLIS_MC ], 20*mr_s, 20*mr_d, 60*mr_c, 30*mr_z ); ++ bli_blksz_init_easy( &blkszs[ BLIS_KC ], 640, 320, 320, 160 ); ++ bli_blksz_init_easy( &blkszs[ BLIS_NC ], 3072, 3072, 3072, 3072 ); ++ ++ bli_cntx_set_blkszs ++ ( ++ cntx, ++ ++ // level-3 ++ BLIS_NC, &blkszs[ BLIS_NC ], BLIS_NR, ++ BLIS_KC, &blkszs[ BLIS_KC ], BLIS_KR, ++ BLIS_MC, &blkszs[ BLIS_MC ], BLIS_MR, ++ BLIS_NR, &blkszs[ BLIS_NR ], BLIS_NR, ++ BLIS_MR, &blkszs[ BLIS_MR ], BLIS_MR, ++ ++ BLIS_VA_END ++ ); ++ } ++} +diff --git a/config/rv32iv/bli_kernel_defs_rv32iv.h b/config/rv32iv/bli_kernel_defs_rv32iv.h +new file mode 100644 +index 000000000..b17989208 +--- /dev/null ++++ b/config/rv32iv/bli_kernel_defs_rv32iv.h +@@ -0,0 +1,43 @@ ++/* ++ ++ BLIS ++ An object-based framework for developing high-performance BLAS-like ++ libraries. ++ ++ Copyright (C) 2022, The University of Texas at Austin ++ ++ Redistribution and use in source and binary forms, with or without ++ modification, are permitted provided that the following conditions are ++ met: ++ - Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ - Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ - Neither the name(s) of the copyright holder(s) nor the names of its ++ contributors may be used to endorse or promote products derived ++ from this software without specific prior written permission. ++ ++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++*/ ++ ++//#ifndef BLIS_KERNEL_DEFS_H ++//#define BLIS_KERNEL_DEFS_H ++ ++ ++// -- REGISTER BLOCK SIZES (FOR REFERENCE KERNELS) ---------------------------- ++ ++ ++ ++//#endif +diff --git a/config/rv32iv/make_defs.mk b/config/rv32iv/make_defs.mk +new file mode 100644 +index 000000000..3cef697ac +--- /dev/null ++++ b/config/rv32iv/make_defs.mk +@@ -0,0 +1,96 @@ ++# ++# ++# BLIS ++# An object-based framework for developing high-performance BLAS-like ++# libraries. ++# ++# Copyright (C) 2014, The University of Texas at Austin ++# ++# Redistribution and use in source and binary forms, with or without ++# modification, are permitted provided that the following conditions are ++# met: ++# - Redistributions of source code must retain the above copyright ++# notice, this list of conditions and the following disclaimer. ++# - Redistributions in binary form must reproduce the above copyright ++# notice, this list of conditions and the following disclaimer in the ++# documentation and/or other materials provided with the distribution. ++# - Neither the name(s) of the copyright holder(s) nor the names of its ++# contributors may be used to endorse or promote products derived ++# from this software without specific prior written permission. ++# ++# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++# ++# ++ ++ ++# Declare the name of the current configuration and add it to the ++# running list of configurations included by common.mk. ++THIS_CONFIG := rv32iv ++#CONFIGS_INCL += $(THIS_CONFIG) ++ ++# ++# --- Determine the C compiler and related flags --- ++# ++ ++# NOTE: The build system will append these variables with various ++# general-purpose/configuration-agnostic flags in common.mk. You ++# may specify additional flags here as needed. ++CPPROCFLAGS := -DRISCV_SIZE=32 ++# Atomic instructions must be enabled either via hardware ++# (-march=rv32iav) or by linking against libatomic ++CMISCFLAGS := -march=$(shell $(CC) -DFORCE_RISCV_VECTOR -E frame/base/bli_riscv_detect_arch.h | grep '^[^\#]') -mabi=ilp32d ++CPICFLAGS := ++CWARNFLAGS := -Wall -Wno-unused-function -Wfatal-errors ++ ++# In case the A extension is not available ++LDFLAGS += -latomic ++ ++ifneq ($(DEBUG_TYPE),off) ++CDBGFLAGS := -g ++endif ++ ++ifeq ($(DEBUG_TYPE),noopt) ++COPTFLAGS := -O0 ++else ++COPTFLAGS := -O0 ++endif ++ ++# Flags specific to optimized kernels. ++CKOPTFLAGS := $(COPTFLAGS) -O3 ++ifeq ($(CC_VENDOR),gcc) ++CKVECFLAGS := ++else ++ifeq ($(CC_VENDOR),clang) ++CKVECFLAGS := ++else ++$(error gcc or clang is required for this configuration.) ++endif ++endif ++ ++# Flags specific to reference kernels. ++CROPTFLAGS := $(CKOPTFLAGS) ++ifeq ($(CC_VENDOR),gcc) ++# Lower compiler optimization to -O1. At -O3, gcc version 12.0.1 20220505 ++# computes offsets for the matrix ab in the ref gemm kernel incorrectly. ++CRVECFLAGS := $(CKVECFLAGS) -O1 ++else ++ifeq ($(CC_VENDOR),clang) ++CRVECFLAGS := $(CKVECFLAGS) -funsafe-math-optimizations -ffp-contract=fast ++else ++CRVECFLAGS := $(CKVECFLAGS) ++endif ++endif ++ ++# Store all of the variables here to new variables containing the ++# configuration name. ++$(eval $(call store-make-defs,$(THIS_CONFIG))) +diff --git a/config/rv64i/bli_cntx_init_rv64i.c b/config/rv64i/bli_cntx_init_rv64i.c +new file mode 100644 +index 000000000..f670e4a57 +--- /dev/null ++++ b/config/rv64i/bli_cntx_init_rv64i.c +@@ -0,0 +1,44 @@ ++/* ++ ++ BLIS ++ An object-based framework for developing high-performance BLAS-like ++ libraries. ++ ++ Copyright (C) 2014, The University of Texas at Austin ++ ++ Redistribution and use in source and binary forms, with or without ++ modification, are permitted provided that the following conditions are ++ met: ++ - Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ - Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ - Neither the name(s) of the copyright holder(s) nor the names of its ++ contributors may be used to endorse or promote products derived ++ from this software without specific prior written permission. ++ ++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++*/ ++ ++#include "blis.h" ++ ++ ++void bli_cntx_init_rv64i( cntx_t* cntx ) ++{ ++ // Set default kernel blocksizes and functions. ++ bli_cntx_init_rv64i_ref( cntx ); ++ ++ // ------------------------------------------------------------------------- ++} +diff --git a/config/rv64i/bli_kernel_defs_rv64i.h b/config/rv64i/bli_kernel_defs_rv64i.h +new file mode 100644 +index 000000000..fe51f998d +--- /dev/null ++++ b/config/rv64i/bli_kernel_defs_rv64i.h +@@ -0,0 +1,43 @@ ++/* ++ ++ BLIS ++ An object-based framework for developing high-performance BLAS-like ++ libraries. ++ ++ Copyright (C) 2022, The University of Texas at Austin ++ ++ Redistribution and use in source and binary forms, with or without ++ modification, are permitted provided that the following conditions are ++ met: ++ - Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ - Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ - Neither the name(s) of the copyright holder(s) nor the names of its ++ contributors may be used to endorse or promote products derived ++ from this software without specific prior written permission. ++ ++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++*/ ++ ++//#ifndef BLIS_KERNEL_DEFS_H ++//#define BLIS_KERNEL_DEFS_H ++ ++ ++// -- REGISTER BLOCK SIZES (FOR REFERENCE KERNELS) ---------------------------- ++ ++// Fall through to generic sizes ++ ++//#endif +diff --git a/config/rv64i/make_defs.mk b/config/rv64i/make_defs.mk +new file mode 100644 +index 000000000..6c69dd84e +--- /dev/null ++++ b/config/rv64i/make_defs.mk +@@ -0,0 +1,92 @@ ++# ++# ++# BLIS ++# An object-based framework for developing high-performance BLAS-like ++# libraries. ++# ++# Copyright (C) 2014, The University of Texas at Austin ++# ++# Redistribution and use in source and binary forms, with or without ++# modification, are permitted provided that the following conditions are ++# met: ++# - Redistributions of source code must retain the above copyright ++# notice, this list of conditions and the following disclaimer. ++# - Redistributions in binary form must reproduce the above copyright ++# notice, this list of conditions and the following disclaimer in the ++# documentation and/or other materials provided with the distribution. ++# - Neither the name(s) of the copyright holder(s) nor the names of its ++# contributors may be used to endorse or promote products derived ++# from this software without specific prior written permission. ++# ++# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++# ++# ++ ++ ++# Declare the name of the current configuration and add it to the ++# running list of configurations included by common.mk. ++THIS_CONFIG := rv64i ++#CONFIGS_INCL += $(THIS_CONFIG) ++ ++# ++# --- Determine the C compiler and related flags --- ++# ++ ++# NOTE: The build system will append these variables with various ++# general-purpose/configuration-agnostic flags in common.mk. You ++# may specify additional flags here as needed. ++CPPROCFLAGS := -DRISCV_SIZE=64 ++CMISCFLAGS := -march=$(shell $(CC) -E frame/base/bli_riscv_detect_arch.h | grep '^[^\#]') -mabi=lp64 ++CPICFLAGS := ++CWARNFLAGS := -Wall -Wno-unused-function -Wfatal-errors ++ ++# In case the A extension is not available ++LDFLAGS += -latomic ++ ++ifneq ($(DEBUG_TYPE),off) ++CDBGFLAGS := -g ++endif ++ ++ifeq ($(DEBUG_TYPE),noopt) ++COPTFLAGS := -O0 ++else ++COPTFLAGS := -O2 ++endif ++ ++# Flags specific to optimized kernels. ++CKOPTFLAGS := $(COPTFLAGS) -O3 ++ifeq ($(CC_VENDOR),gcc) ++CKVECFLAGS := ++else ++ifeq ($(CC_VENDOR),clang) ++CKVECFLAGS := ++else ++$(error gcc or clang is required for this configuration.) ++endif ++endif ++ ++# Flags specific to reference kernels. ++CROPTFLAGS := $(CKOPTFLAGS) ++ifeq ($(CC_VENDOR),gcc) ++CRVECFLAGS := $(CKVECFLAGS) -funsafe-math-optimizations -ffp-contract=fast ++else ++ifeq ($(CC_VENDOR),clang) ++CRVECFLAGS := $(CKVECFLAGS) -funsafe-math-optimizations -ffp-contract=fast ++else ++CRVECFLAGS := $(CKVECFLAGS) ++endif ++endif ++ ++# Store all of the variables here to new variables containing the ++# configuration name. ++$(eval $(call store-make-defs,$(THIS_CONFIG))) +diff --git a/config/rv64iv/bli_cntx_init_rv64iv.c b/config/rv64iv/bli_cntx_init_rv64iv.c +new file mode 100644 +index 000000000..eb1f79ebc +--- /dev/null ++++ b/config/rv64iv/bli_cntx_init_rv64iv.c +@@ -0,0 +1,114 @@ ++/* ++ ++ BLIS ++ An object-based framework for developing high-performance BLAS-like ++ libraries. ++ ++ Copyright (C) 2014, The University of Texas at Austin ++ ++ Redistribution and use in source and binary forms, with or without ++ modification, are permitted provided that the following conditions are ++ met: ++ - Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ - Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ - Neither the name(s) of the copyright holder(s) nor the names of its ++ contributors may be used to endorse or promote products derived ++ from this software without specific prior written permission. ++ ++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++*/ ++ ++#include "../../kernels/rviv/3/bli_rviv_utils.h" ++ ++void bli_cntx_init_rv64iv( cntx_t* cntx ) ++{ ++ blksz_t blkszs[ BLIS_NUM_BLKSZS ]; ++ ++ // Set default kernel blocksizes and functions. ++ bli_cntx_init_rv64iv_ref( cntx ); ++ ++ // ------------------------------------------------------------------------- ++ ++ // A reasonable assumptions for application cores is VLEN >= 128 bits, i.e., ++ // v >= 4. Embedded cores, however, may implement the minimal configuration, ++ // which allows VLEN = 32 bits. Here, we assume VLEN >= 128 and otherwise ++ // fall back to the reference kernels. ++ const uint32_t v = get_vlenb() / sizeof(float); ++ ++ if ( v >= 4 ) ++ { ++ const uint32_t mr_s = 4 * v; ++ const uint32_t mr_d = 2 * v; ++ const uint32_t mr_c = 2 * v; ++ const uint32_t mr_z = v; ++ ++ // TODO: Register different kernels based on the value ++ // of v to avoid MC becoming too big. (e.g. 2vx8) ++ ++ // Update the context with optimized native gemm micro-kernels. ++ bli_cntx_set_ukrs ++ ( ++ cntx, ++ ++ // level-3 ++ BLIS_GEMM_UKR, BLIS_FLOAT, bli_sgemm_rviv_4vx4, ++ BLIS_GEMM_UKR, BLIS_DOUBLE, bli_dgemm_rviv_4vx4, ++ BLIS_GEMM_UKR, BLIS_SCOMPLEX, bli_cgemm_rviv_4vx4, ++ BLIS_GEMM_UKR, BLIS_DCOMPLEX, bli_zgemm_rviv_4vx4, ++ ++ BLIS_VA_END ++ ); ++ ++ // Update the context with storage preferences. ++ bli_cntx_set_ukr_prefs ++ ( ++ cntx, ++ ++ // level-3 ++ BLIS_GEMM_UKR_ROW_PREF, BLIS_FLOAT, FALSE, ++ BLIS_GEMM_UKR_ROW_PREF, BLIS_DOUBLE, FALSE, ++ BLIS_GEMM_UKR_ROW_PREF, BLIS_SCOMPLEX, FALSE, ++ BLIS_GEMM_UKR_ROW_PREF, BLIS_DCOMPLEX, FALSE, ++ ++ BLIS_VA_END ++ ); ++ ++ // Initialize level-3 blocksize objects with architecture-specific values. ++ // s d c z ++ bli_blksz_init_easy( &blkszs[ BLIS_MR ], mr_s, mr_d, mr_c, mr_z ); ++ bli_blksz_init_easy( &blkszs[ BLIS_NR ], 4, 4, 4, 4 ); ++ bli_blksz_init_easy( &blkszs[ BLIS_MC ], 20*mr_s, 20*mr_d, 60*mr_c, 30*mr_z ); ++ bli_blksz_init_easy( &blkszs[ BLIS_KC ], 640, 320, 320, 160 ); ++ bli_blksz_init_easy( &blkszs[ BLIS_NC ], 3072, 3072, 3072, 3072 ); ++ ++ // Update the context with the current architecture's register and cache ++ // blocksizes (and multiples) for native execution. ++ bli_cntx_set_blkszs ++ ( ++ cntx, ++ ++ // level-3 ++ BLIS_NC, &blkszs[ BLIS_NC ], BLIS_NR, ++ BLIS_KC, &blkszs[ BLIS_KC ], BLIS_KR, ++ BLIS_MC, &blkszs[ BLIS_MC ], BLIS_MR, ++ BLIS_NR, &blkszs[ BLIS_NR ], BLIS_NR, ++ BLIS_MR, &blkszs[ BLIS_MR ], BLIS_MR, ++ ++ BLIS_VA_END ++ ); ++ } ++} +diff --git a/config/rv64iv/bli_kernel_defs_rv64iv.h b/config/rv64iv/bli_kernel_defs_rv64iv.h +new file mode 100644 +index 000000000..18ca4030e +--- /dev/null ++++ b/config/rv64iv/bli_kernel_defs_rv64iv.h +@@ -0,0 +1,42 @@ ++/* ++ ++ BLIS ++ An object-based framework for developing high-performance BLAS-like ++ libraries. ++ ++ Copyright (C) 2022, The University of Texas at Austin ++ ++ Redistribution and use in source and binary forms, with or without ++ modification, are permitted provided that the following conditions are ++ met: ++ - Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ - Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ - Neither the name(s) of the copyright holder(s) nor the names of its ++ contributors may be used to endorse or promote products derived ++ from this software without specific prior written permission. ++ ++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++*/ ++ ++//#ifndef BLIS_KERNEL_DEFS_H ++//#define BLIS_KERNEL_DEFS_H ++ ++ ++// -- REGISTER BLOCK SIZES (FOR REFERENCE KERNELS) ---------------------------- ++ ++ ++//#endif +diff --git a/config/rv64iv/make_defs.mk b/config/rv64iv/make_defs.mk +new file mode 100644 +index 000000000..06545d461 +--- /dev/null ++++ b/config/rv64iv/make_defs.mk +@@ -0,0 +1,93 @@ ++# ++# ++# BLIS ++# An object-based framework for developing high-performance BLAS-like ++# libraries. ++# ++# Copyright (C) 2014, The University of Texas at Austin ++# ++# Redistribution and use in source and binary forms, with or without ++# modification, are permitted provided that the following conditions are ++# met: ++# - Redistributions of source code must retain the above copyright ++# notice, this list of conditions and the following disclaimer. ++# - Redistributions in binary form must reproduce the above copyright ++# notice, this list of conditions and the following disclaimer in the ++# documentation and/or other materials provided with the distribution. ++# - Neither the name(s) of the copyright holder(s) nor the names of its ++# contributors may be used to endorse or promote products derived ++# from this software without specific prior written permission. ++# ++# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++# ++# ++ ++ ++# Declare the name of the current configuration and add it to the ++# running list of configurations included by common.mk. ++THIS_CONFIG := rv64iv ++#CONFIGS_INCL += $(THIS_CONFIG) ++ ++# ++# --- Determine the C compiler and related flags --- ++# ++ ++# NOTE: The build system will append these variables with various ++# general-purpose/configuration-agnostic flags in common.mk. You ++# may specify additional flags here as needed. ++CPPROCFLAGS := -DRISCV_SIZE=64 ++CMISCFLAGS := -march=$(shell $(CC) -DFORCE_RISCV_VECTOR -E frame/base/bli_riscv_detect_arch.h | grep '^[^\#]') -mabi=lp64d ++CPICFLAGS := ++CWARNFLAGS := -Wall -Wno-unused-function -Wfatal-errors ++ ++# In case the A extension is not available ++LDFLAGS += -latomic ++ ++ifneq ($(DEBUG_TYPE),off) ++CDBGFLAGS := -g ++endif ++ ++ifeq ($(DEBUG_TYPE),noopt) ++COPTFLAGS := -O0 ++else ++COPTFLAGS := -O2 -ftree-vectorize ++endif ++ ++# Flags specific to optimized kernels. ++CKOPTFLAGS := $(COPTFLAGS) -O3 ++ifeq ($(CC_VENDOR),gcc) ++CKVECFLAGS := ++else ++ifeq ($(CC_VENDOR),clang) ++CKVECFLAGS := ++else ++$(error gcc or clang is required for this configuration.) ++endif ++endif ++ ++# Flags specific to reference kernels. ++CROPTFLAGS := $(CKOPTFLAGS) ++ifeq ($(CC_VENDOR),gcc) ++# Lower compiler optimization. cinvscalv fails at -O1 ++CRVECFLAGS := $(CKVECFLAGS) -O0 ++else ++ifeq ($(CC_VENDOR),clang) ++CRVECFLAGS := $(CKVECFLAGS) -funsafe-math-optimizations -ffp-contract=fast ++else ++CRVECFLAGS := $(CKVECFLAGS) ++endif ++endif ++ ++# Store all of the variables here to new variables containing the ++# configuration name. ++$(eval $(call store-make-defs,$(THIS_CONFIG))) +diff --git a/config_registry b/config_registry +index f25d66e7f..2138ba515 100644 +--- a/config_registry ++++ b/config_registry +@@ -46,5 +46,11 @@ + power9: power9 + bgq: bgq + ++# RISC-V architectures. ++rv32i: rv32i/rvi ++rv64i: rv64i/rvi ++rv32iv: rv32iv/rviv ++rv64iv: rv64iv/rviv ++ + # Generic architectures. + generic: generic +diff --git a/configure b/configure +index a953c25c5..9a8dc8b7f 100755 +--- a/configure ++++ b/configure +@@ -1230,14 +1230,25 @@ auto_detect() + # NOTE: -D_GNU_SOURCE is needed to enable POSIX extensions to + # pthreads (i.e., barriers). + +- cmd="${cc} ${config_defines} \ ++ cmd="${cc} \ + -DBLIS_CONFIGURETIME_CPUID \ + ${c_hdr_paths} \ + -std=c99 -D_GNU_SOURCE \ +- ${cflags} \ +- ${c_src_filepaths} \ +- ${ldflags} \ +- -o ${autodetect_x}" ++ ${cflags}" ++ ++ # Special case for RISC-V, whose architecture can be detected with ++ # preprocessor macros alone. This avoids having to run RISC-V binaries ++ # on a cross-compiler host. Returns "generic" if RISC-V not detected. ++ riscv_config=$(${cmd} -E "${dist_path}/frame/base/bli_riscv_cpuid.h" | ++ grep '^[^#]') ++ if [[ $riscv_config != *generic* ]]; then ++ echo "${riscv_config}" ++ return ++ fi ++ ++ # Finish command for building executable ++ cmd="${cmd} ${config_defines} ${c_src_filepaths} ${ldflags} \ ++ -o ${autodetect_x}" + + if [ "${debug_auto_detect}" == "no" ]; then + +diff --git a/frame/base/bli_arch.c b/frame/base/bli_arch.c +index b697e35f9..5fef62ce1 100644 +--- a/frame/base/bli_arch.c ++++ b/frame/base/bli_arch.c +@@ -233,6 +233,20 @@ + id = BLIS_ARCH_BGQ; + #endif + ++ // RISC-V microarchitectures ++ #ifdef BLIS_FAMILY_RV32I ++ id = BLIS_ARCH_RV32I; ++ #endif ++ #ifdef BLIS_FAMILY_RV64I ++ id = BLIS_ARCH_RV64I; ++ #endif ++ #ifdef BLIS_FAMILY_RV32IV ++ id = BLIS_ARCH_RV32IV; ++ #endif ++ #ifdef BLIS_FAMILY_RV64IV ++ id = BLIS_ARCH_RV64IV; ++ #endif ++ + // Generic microarchitecture. + #ifdef BLIS_FAMILY_GENERIC + id = BLIS_ARCH_GENERIC; +@@ -283,6 +297,11 @@ + "power9", + "power7", + "bgq", ++ ++ "rv32i", ++ "rv64i", ++ "rv32iv", ++ "rv64iv", + + "generic" + }; +diff --git a/frame/base/bli_gks.c b/frame/base/bli_gks.c +index df0abc8ed..c1fd4c866 100644 +--- a/frame/base/bli_gks.c ++++ b/frame/base/bli_gks.c +@@ -202,6 +202,32 @@ + bli_cntx_init_bgq_ind ); + #endif + ++ // -- RISC-V architectures -------------------------------------------- ++ ++#ifdef BLIS_CONFIG_RV32I ++ bli_gks_register_cntx( BLIS_ARCH_RV32I, bli_cntx_init_rv32i, ++ bli_cntx_init_rv32i_ref, ++ bli_cntx_init_rv32i_ind ); ++#endif ++ ++#ifdef BLIS_CONFIG_RV64I ++ bli_gks_register_cntx( BLIS_ARCH_RV64I, bli_cntx_init_rv64i, ++ bli_cntx_init_rv64i_ref, ++ bli_cntx_init_rv64i_ind ); ++#endif ++ ++#ifdef BLIS_CONFIG_RV32IV ++ bli_gks_register_cntx( BLIS_ARCH_RV32IV, bli_cntx_init_rv32iv, ++ bli_cntx_init_rv32iv_ref, ++ bli_cntx_init_rv32iv_ind ); ++#endif ++ ++#ifdef BLIS_CONFIG_RV64IV ++ bli_gks_register_cntx( BLIS_ARCH_RV64IV, bli_cntx_init_rv64iv, ++ bli_cntx_init_rv64iv_ref, ++ bli_cntx_init_rv64iv_ind ); ++#endif ++ + // Generic architectures + #ifdef BLIS_CONFIG_GENERIC + bli_gks_register_cntx( BLIS_ARCH_GENERIC, bli_cntx_init_generic, +diff --git a/frame/base/bli_riscv_cpuid.h b/frame/base/bli_riscv_cpuid.h +new file mode 100644 +index 000000000..4f0c25a33 +--- /dev/null ++++ b/frame/base/bli_riscv_cpuid.h +@@ -0,0 +1,67 @@ ++/* ++ ++ BLIS ++ An object-based framework for developing high-performance BLAS-like ++ libraries. ++ ++ Copyright (C) 2023, The University of Texas at Austin ++ ++ Redistribution and use in source and binary forms, with or without ++ modification, are permitted provided that the following conditions are ++ met: ++ - Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ - Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ - Neither the name(s) of the copyright holder(s) nor the names of its ++ contributors may be used to endorse or promote products derived ++ from this software without specific prior written permission. ++ ++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++ ++*/ ++ ++/* RISC-V autodetection code which works with native or cross-compilers. ++ Compile with $CC -E and ignore all output lines starting with #. On RISC-V ++ it may return rv32i (base 32-bit integer RISC-V), rv32iv (rv32i plus vector ++ extensions), rv64i (base 64-bit integer RISC-V), or rv64iv (rv64i plus ++ vector extensions). On 128-bit integer RISC-V, it falls back to generic ++ for now. For toolchains which do not yet support RISC-V feature-detection ++ macros, it will fall back on generic, so the BLIS configure script may need ++ the RISC-V configuration to be explicitly specified. */ ++ ++// false if !defined(__riscv) || !defined(__riscv_xlen) ++#if __riscv && __riscv_xlen == 64 ++ ++#if __riscv_vector // false if !defined(__riscv_vector) ++rv64iv ++#else ++rv64i ++#endif ++ ++// false if !defined(__riscv) || !defined(__riscv_xlen) || __riscv_e32 != 0 ++#elif __riscv && __riscv_xlen == 32 && !__riscv_e32 ++ ++#if __riscv_vector // false if !defined(__riscv_vector) ++rv32iv ++#else ++rv32i ++#endif ++ ++#else ++ ++generic // fall back on BLIS runtime CPUID autodetection algorithm ++ ++#endif +diff --git a/frame/base/bli_riscv_detect_arch.h b/frame/base/bli_riscv_detect_arch.h +new file mode 100644 +index 000000000..448b0f39d +--- /dev/null ++++ b/frame/base/bli_riscv_detect_arch.h +@@ -0,0 +1,155 @@ ++/* ++ ++ BLIS ++ An object-based framework for developing high-performance BLAS-like ++ libraries. ++ ++ Copyright (C) 2023, The University of Texas at Austin ++ ++ Redistribution and use in source and binary forms, with or without ++ modification, are permitted provided that the following conditions are ++ met: ++ - Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ - Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ - Neither the name(s) of the copyright holder(s) nor the names of its ++ contributors may be used to endorse or promote products derived ++ from this software without specific prior written permission. ++ ++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++ ++*/ ++ ++/* Construct a RISC-V architecture string based on available features. */ ++ ++#if __riscv ++ ++#if __riscv_arch_test ++ ++#if __riscv_i ++#define RISCV_I i ++#else ++#define RISCV_I ++#endif ++ ++#if __riscv_e ++#define RISCV_E e ++#else ++#define RISCV_E ++#endif ++ ++#if __riscv_m ++#define RISCV_M m ++#else ++#define RISCV_M ++#endif ++ ++#if __riscv_a ++#define RISCV_A a ++#else ++#define RISCV_A ++#endif ++ ++#if __riscv_f ++#define RISCV_F f ++#else ++#define RISCV_F ++#endif ++ ++#if __riscv_d ++#define RISCV_D d ++#else ++#define RISCV_D ++#endif ++ ++#if __riscv_c ++#define RISCV_C c ++#else ++#define RISCV_C ++#endif ++ ++#if __riscv_p ++#define RISCV_P p ++#else ++#define RISCV_P ++#endif ++ ++/* FORCE_RISCV_VECTOR is a Clang workaround */ ++#if __riscv_v || FORCE_RISCV_VECTOR ++#define RISCV_V v ++#else ++#define RISCV_V ++#endif ++ ++#else /* __riscv_arch_test */ ++ ++/* We assume I and E are exclusive when __riscv_arch_test isn't defined */ ++#if __riscv_32e ++#define RISCV_I ++#define RISCV_E e ++#else ++#define RISCV_I i ++#define RISCV_E ++#endif ++ ++#if __riscv_mul ++#define RISCV_M m ++#else ++#define RISCV_M ++#endif ++ ++#if __riscv_atomic ++#define RISCV_A a ++#else ++#define RISCV_A ++#endif ++ ++#if __riscv_flen >= 32 ++#define RISCV_F f ++#else ++#define RISCV_F ++#endif ++ ++#if __riscv_flen >= 64 ++#define RISCV_D d ++#else ++#define RISCV_D ++#endif ++ ++#if __riscv_compressed ++#define RISCV_C c ++#else ++#define RISCV_C ++#endif ++ ++#define RISCV_P ++ ++/* FORCE_RISCV_VECTOR is a Clang workaround */ ++#if __riscv_vector || FORCE_RISCV_VECTOR ++#define RISCV_V v ++#else ++#define RISCV_V ++#endif ++ ++#endif /* __riscv_arch_test */ ++ ++#define CAT2(a,b) a##b ++#define CAT(a,b) CAT2(a,b) ++ ++CAT(rv, CAT(__riscv_xlen, CAT(RISCV_I, CAT(RISCV_E, CAT(RISCV_M, CAT(RISCV_A, ++CAT(RISCV_F, CAT(RISCV_D, CAT(RISCV_C, CAT(RISCV_P, RISCV_V)))))))))) ++ ++#endif /* __riscv */ +diff --git a/frame/include/bli_arch_config.h b/frame/include/bli_arch_config.h +index 0485295df..c80e8e922 100644 +--- a/frame/include/bli_arch_config.h ++++ b/frame/include/bli_arch_config.h +@@ -131,6 +131,22 @@ CNTX_INIT_PROTS( power7 ) + CNTX_INIT_PROTS( bgq ) + #endif + ++// -- RISC-V -- ++ ++#ifdef BLIS_CONFIG_RV32I ++CNTX_INIT_PROTS( rv32i ) ++#endif ++#ifdef BLIS_CONFIG_RV64I ++CNTX_INIT_PROTS( rv64i ) ++#endif ++#ifdef BLIS_CONFIG_RV32IV ++CNTX_INIT_PROTS( rv32iv ) ++#endif ++#ifdef BLIS_CONFIG_RV64IV ++CNTX_INIT_PROTS( rv64iv ) ++#endif ++ ++ + // -- Generic -- + + #ifdef BLIS_CONFIG_GENERIC +@@ -343,6 +359,12 @@ CNTX_INIT_PROTS( generic ) + #endif + + ++#ifdef BLIS_KERNELS_RVI ++#include "bli_kernels_rvi.h" ++#endif ++#ifdef BLIS_KERNELS_RVIV ++#include "bli_kernels_rviv.h" ++#endif + + #endif + +diff --git a/frame/include/bli_misc_macro_defs.h b/frame/include/bli_misc_macro_defs.h +index 903b4ece6..31e0150f6 100644 +--- a/frame/include/bli_misc_macro_defs.h ++++ b/frame/include/bli_misc_macro_defs.h +@@ -170,5 +170,7 @@ BLIS_INLINE void bli_toggle_bool( bool* b ) + #define BLIS_VA_END (-1) + + +-#endif ++// Static assertion compatible with any version of C/C++ ++#define bli_static_assert(cond) while(0){struct s {int STATIC_ASSERT_FAILED : !!(cond);};} + ++#endif +diff --git a/frame/include/bli_type_defs.h b/frame/include/bli_type_defs.h +index cb933bfa4..b246fda05 100644 +--- a/frame/include/bli_type_defs.h ++++ b/frame/include/bli_type_defs.h +@@ -965,6 +965,12 @@ typedef enum + BLIS_ARCH_POWER7, + BLIS_ARCH_BGQ, + ++ // RISC-V ++ BLIS_ARCH_RV32I, ++ BLIS_ARCH_RV64I, ++ BLIS_ARCH_RV32IV, ++ BLIS_ARCH_RV64IV, ++ + // Generic architecture/configuration + BLIS_ARCH_GENERIC, + +diff --git a/kernels/rvi/bli_kernels_rvi.h b/kernels/rvi/bli_kernels_rvi.h +new file mode 100644 +index 000000000..d06afae62 +--- /dev/null ++++ b/kernels/rvi/bli_kernels_rvi.h +@@ -0,0 +1,33 @@ ++/* ++ ++ BLIS ++ An object-based framework for developing high-performance BLAS-like ++ libraries. ++ ++ Copyright (C) 2023, The University of Texas at Austin ++ ++ Redistribution and use in source and binary forms, with or without ++ modification, are permitted provided that the following conditions are ++ met: ++ - Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ - Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ - Neither the name(s) of the copyright holder(s) nor the names of its ++ contributors may be used to endorse or promote products derived ++ from this software without specific prior written permission. ++ ++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++*/ +diff --git a/kernels/rviv/3/bli_cgemm_rviv_4vx4.c b/kernels/rviv/3/bli_cgemm_rviv_4vx4.c +new file mode 100644 +index 000000000..9ef333a78 +--- /dev/null ++++ b/kernels/rviv/3/bli_cgemm_rviv_4vx4.c +@@ -0,0 +1,79 @@ ++/* ++ ++ BLIS ++ An object-based framework for developing high-performance BLAS-like ++ libraries. ++ ++ Copyright (C) 2023, The University of Texas at Austin ++ ++ Redistribution and use in source and binary forms, with or without ++ modification, are permitted provided that the following conditions are ++ met: ++ - Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ - Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ - Neither the name(s) of the copyright holder(s) nor the names of its ++ contributors may be used to endorse or promote products derived ++ from this software without specific prior written permission. ++ ++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++*/ ++ ++#include "bli_rviv_utils.h" ++ ++void bli_cgemm_rviv_asm_4vx4 ++ ( ++ intptr_t k, ++ const void* alpha, ++ const void* a, ++ const void* b, ++ const void* beta, ++ void* c, intptr_t rs_c, intptr_t cs_c ++ ); ++ ++void bli_cgemm_rviv_4vx4 ++ ( ++ dim_t m, ++ dim_t n, ++ dim_t k, ++ const void* alpha, ++ const void* a, ++ const void* b, ++ const void* beta, ++ void* c, inc_t rs_c, inc_t cs_c, ++ auxinfo_t* data, ++ const cntx_t* cntx ++ ) ++{ ++ // The assembly kernels always take native machine-sized integer arguments. ++ // dim_t and inc_t are normally defined as being machine-sized. If larger, assert. ++ bli_static_assert( sizeof(dim_t) <= sizeof(intptr_t) && ++ sizeof(inc_t) <= sizeof(intptr_t) ); ++ ++ // Extract vector-length dependent mr, nr that are fixed at configure time. ++ const inc_t mr = bli_cntx_get_blksz_def_dt( BLIS_SCOMPLEX, BLIS_MR, cntx ); ++ const inc_t nr = 4; ++ ++ GEMM_UKR_SETUP_CT( c, mr, nr, false ); ++ ++ // The kernel assumes rs_c == 1, and the context should not deviate from it. ++ assert( rs_c == 1 ); ++ ++ bli_cgemm_rviv_asm_4vx4( k, alpha, a, b, beta, c, ++ get_vlenb() * 2, cs_c * sizeof(scomplex) ); ++ ++ GEMM_UKR_FLUSH_CT( c ); ++} +diff --git a/kernels/rviv/3/bli_cgemm_rviv_asm_4vx4.S b/kernels/rviv/3/bli_cgemm_rviv_asm_4vx4.S +new file mode 100644 +index 000000000..98c73d23d +--- /dev/null ++++ b/kernels/rviv/3/bli_cgemm_rviv_asm_4vx4.S +@@ -0,0 +1,45 @@ ++/* ++ ++ BLIS ++ An object-based framework for developing high-performance BLAS-like ++ libraries. ++ ++ Copyright (C) 2023, The University of Texas at Austin ++ ++ Redistribution and use in source and binary forms, with or without ++ modification, are permitted provided that the following conditions are ++ met: ++ - Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ - Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ - Neither the name(s) of the copyright holder(s) nor the names of its ++ contributors may be used to endorse or promote products derived ++ from this software without specific prior written permission. ++ ++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++ ++*/ ++ ++#define REALNAME bli_cgemm_rviv_asm_4vx4 ++#define DATASIZE 8 ++#define VTYPE e32 ++#define FLOAD flw ++#define FZERO(fr) fcvt.s.w fr, x0 ++#define FEQ feq.s ++#define VLE vlseg2e32.v ++#define VSE vsseg2e32.v ++ ++#include "bli_czgemm_rviv_asm_4vx4.h" +diff --git a/kernels/rviv/3/bli_czgemm_rviv_asm_4vx4.h b/kernels/rviv/3/bli_czgemm_rviv_asm_4vx4.h +new file mode 100644 +index 000000000..8f7727c8d +--- /dev/null ++++ b/kernels/rviv/3/bli_czgemm_rviv_asm_4vx4.h +@@ -0,0 +1,801 @@ ++/* ++ ++ BLIS ++ An object-based framework for developing high-performance BLAS-like ++ libraries. ++ ++ Copyright (C) 2023, The University of Texas at Austin ++ ++ Redistribution and use in source and binary forms, with or without ++ modification, are permitted provided that the following conditions are ++ met: ++ - Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ - Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ - Neither the name(s) of the copyright holder(s) nor the names of its ++ contributors may be used to endorse or promote products derived ++ from this software without specific prior written permission. ++ ++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++ ++*/ ++ ++ .text ++ .align 2 ++ .global REALNAME ++ ++// void REALNAME(intptr_t k, void* alpha, void* a, void* b, ++// void* beta, void* c, intptr_t rs_c, intptr_t cs_c) ++// ++// register arguments: ++// a0 k ++// a1 alpha ++// a2 a ++// a3 b ++// a4 beta ++// a5 c ++// a6 rs_c ++// a7 cs_c ++// ++ ++#define REALSIZE (DATASIZE/2) ++ ++#define loop_counter a0 ++ ++#define A00_ptr a2 ++#define A10_ptr t0 ++#define A01_ptr t1 ++#define A11_ptr t2 ++ ++#define B_row_ptr a3 ++ ++#define C00_ptr a5 ++#define C01_ptr t3 ++#define C02_ptr t4 ++#define C03_ptr t5 ++#define C10_ptr s1 ++#define C11_ptr s2 ++#define C12_ptr s3 ++#define C13_ptr s4 ++ ++#define tmp t6 ++ ++#define ALPHA_re fa0 ++#define ALPHA_im fa1 ++#define BETA_re fa2 ++#define BETA_im fa3 ++ ++#define B00_re fa4 ++#define B00_im fa5 ++#define B01_re fa6 ++#define B01_im fa7 ++#define B02_re fa0 ++#define B02_im fa1 ++#define B03_re fa2 ++#define B03_im fa3 ++ ++#define B10_re ft0 ++#define B10_im ft1 ++#define B11_re ft2 ++#define B11_im ft3 ++#define B12_re ft4 ++#define B12_im ft5 ++#define B13_re ft6 ++#define B13_im ft7 ++ ++#define fzero ft8 ++ ++#define A00_re v24 ++#define A00_im v25 ++#define A10_re v26 ++#define A10_im v27 ++#define A01_re v28 ++#define A01_im v29 ++#define A11_re v30 ++#define A11_im v31 ++ ++#define C0_re v24 ++#define C0_im v25 ++#define C1_re v26 ++#define C1_im v27 ++#define C2_re v28 ++#define C2_im v29 ++#define C3_re v30 ++#define C3_im v31 ++ ++#define AB00_re v0 ++#define AB00_im v1 ++#define AB01_re v2 ++#define AB01_im v3 ++#define AB02_re v4 ++#define AB02_im v5 ++#define AB03_re v6 ++#define AB03_im v7 ++#define AB10_re v8 ++#define AB10_im v9 ++#define AB11_re v10 ++#define AB11_im v11 ++#define AB12_re v12 ++#define AB12_im v13 ++#define AB13_re v14 ++#define AB13_im v15 ++ ++#define tmp0_re v16 ++#define tmp0_im v17 ++#define tmp1_re v18 ++#define tmp1_im v19 ++#define tmp2_re v20 ++#define tmp2_im v21 ++#define tmp3_re v22 ++#define tmp3_im v23 ++ ++#define rs_c a6 ++#define cs_c a7 ++ ++REALNAME: ++ #include "rviv_save_registers.h" ++ ++ vsetvli s0, zero, VTYPE, m1, ta, ma ++ csrr s0, vlenb ++ slli s0, s0, 1 ++ FZERO(fzero) ++ ++ // Set up pointers ++ add C01_ptr, C00_ptr, cs_c ++ add C02_ptr, C01_ptr, cs_c ++ add C03_ptr, C02_ptr, cs_c ++ add C10_ptr, C00_ptr, rs_c ++ add C11_ptr, C01_ptr, rs_c ++ add C12_ptr, C02_ptr, rs_c ++ add C13_ptr, C03_ptr, rs_c ++ ++ // Zero-initialize accumulators ++ vxor.vv AB00_re, AB00_re, AB00_re ++ vxor.vv AB00_im, AB00_im, AB00_im ++ vxor.vv AB01_re, AB01_re, AB01_re ++ vxor.vv AB01_im, AB01_im, AB01_im ++ vxor.vv AB02_re, AB02_re, AB02_re ++ vxor.vv AB02_im, AB02_im, AB02_im ++ vxor.vv AB03_re, AB03_re, AB03_re ++ vxor.vv AB03_im, AB03_im, AB03_im ++ vxor.vv AB10_re, AB10_re, AB10_re ++ vxor.vv AB10_im, AB10_im, AB10_im ++ vxor.vv AB11_re, AB11_re, AB11_re ++ vxor.vv AB11_im, AB11_im, AB11_im ++ vxor.vv AB12_re, AB12_re, AB12_re ++ vxor.vv AB12_im, AB12_im, AB12_im ++ vxor.vv AB13_re, AB13_re, AB13_re ++ vxor.vv AB13_im, AB13_im, AB13_im ++ ++ // Handle k == 0 ++ beqz loop_counter, MULTIPLYBETA ++ ++ add A10_ptr, A00_ptr, s0 ++ slli s0, s0, 1 // length of a column of A in bytes ++ add A01_ptr, A00_ptr, s0 ++ add A11_ptr, A10_ptr, s0 ++ ++ li tmp, 3 ++ ble loop_counter, tmp, TAIL_UNROLL_2 ++ ++ // Preload A and B ++ // Load and deinterleave A(:,l) ++ VLE A00_re, (A00_ptr) ++ VLE A10_re, (A10_ptr) ++ ++ // Load B(l,0:3) ++ FLOAD B00_re, 0*REALSIZE(B_row_ptr) ++ FLOAD B00_im, 1*REALSIZE(B_row_ptr) ++ FLOAD B01_re, 2*REALSIZE(B_row_ptr) ++ FLOAD B01_im, 3*REALSIZE(B_row_ptr) ++ FLOAD B02_re, 4*REALSIZE(B_row_ptr) ++ FLOAD B02_im, 5*REALSIZE(B_row_ptr) ++ FLOAD B03_re, 6*REALSIZE(B_row_ptr) ++ FLOAD B03_im, 7*REALSIZE(B_row_ptr) ++ ++ // Load and deinterleave A(:,l+1) ++ VLE A01_re, (A01_ptr) ++ VLE A11_re, (A11_ptr) ++ ++LOOP_UNROLL_4: // loop_counter >= 4 ++ addi loop_counter, loop_counter, -4 ++ ++ vfmacc.vf AB00_re, B00_re, A00_re // AB(:,0) += A(:,l) * B(l,0) ++ vfnmsac.vf AB00_re, B00_im, A00_im ++ vfmacc.vf AB00_im, B00_re, A00_im ++ vfmacc.vf AB00_im, B00_im, A00_re ++ vfmacc.vf AB10_re, B00_re, A10_re ++ vfnmsac.vf AB10_re, B00_im, A10_im ++ vfmacc.vf AB10_im, B00_re, A10_im ++ vfmacc.vf AB10_im, B00_im, A10_re ++ ++ vfmacc.vf AB01_re, B01_re, A00_re // AB(:,1) += A(:,l) * B(l,1) ++ vfnmsac.vf AB01_re, B01_im, A00_im ++ vfmacc.vf AB01_im, B01_re, A00_im ++ vfmacc.vf AB01_im, B01_im, A00_re ++ vfmacc.vf AB11_re, B01_re, A10_re ++ vfnmsac.vf AB11_re, B01_im, A10_im ++ vfmacc.vf AB11_im, B01_re, A10_im ++ vfmacc.vf AB11_im, B01_im, A10_re ++ ++ // Point to A(:,l+2), A(:,l+3) ++ add A00_ptr, A01_ptr, s0 ++ add A10_ptr, A11_ptr, s0 ++ add A01_ptr, A00_ptr, s0 ++ add A11_ptr, A10_ptr, s0 ++ ++ // Load B(l+1,0:3) ++ FLOAD B10_re, 8*REALSIZE(B_row_ptr) ++ FLOAD B10_im, 9*REALSIZE(B_row_ptr) ++ FLOAD B11_re, 10*REALSIZE(B_row_ptr) ++ FLOAD B11_im, 11*REALSIZE(B_row_ptr) ++ FLOAD B12_re, 12*REALSIZE(B_row_ptr) ++ FLOAD B12_im, 13*REALSIZE(B_row_ptr) ++ FLOAD B13_re, 14*REALSIZE(B_row_ptr) ++ FLOAD B13_im, 15*REALSIZE(B_row_ptr) ++ addi B_row_ptr, B_row_ptr, 16*REALSIZE ++ ++ vfmacc.vf AB00_re, B10_re, A01_re // AB(:,0) += A(:,l+1) * B(l+1,0) ++ vfnmsac.vf AB00_re, B10_im, A01_im ++ vfmacc.vf AB00_im, B10_re, A01_im ++ vfmacc.vf AB00_im, B10_im, A01_re ++ vfmacc.vf AB10_re, B10_re, A11_re ++ vfnmsac.vf AB10_re, B10_im, A11_im ++ vfmacc.vf AB10_im, B10_re, A11_im ++ vfmacc.vf AB10_im, B10_im, A11_re ++ ++ vfmacc.vf AB02_re, B02_re, A00_re // AB(:,2) += A(:,l) * B(l,2) ++ vfnmsac.vf AB02_re, B02_im, A00_im ++ vfmacc.vf AB02_im, B02_re, A00_im ++ vfmacc.vf AB02_im, B02_im, A00_re ++ vfmacc.vf AB12_re, B02_re, A10_re ++ vfnmsac.vf AB12_re, B02_im, A10_im ++ vfmacc.vf AB12_im, B02_re, A10_im ++ vfmacc.vf AB12_im, B02_im, A10_re ++ ++ vfmacc.vf AB03_re, B03_re, A00_re // AB(:,3) += A(:,l) * B(l,3) ++ vfnmsac.vf AB03_re, B03_im, A00_im ++ vfmacc.vf AB03_im, B03_re, A00_im ++ vfmacc.vf AB03_im, B03_im, A00_re ++ vfmacc.vf AB13_re, B03_re, A10_re ++ vfnmsac.vf AB13_re, B03_im, A10_im ++ vfmacc.vf AB13_im, B03_re, A10_im ++ vfmacc.vf AB13_im, B03_im, A10_re ++ ++ // Load and deinterleave A(:,l+2) ++ VLE A00_re, (A00_ptr) ++ VLE A10_re, (A10_ptr) ++ ++ // Load B(l+2, 0:3) ++ FLOAD B00_re, 0*REALSIZE(B_row_ptr) ++ FLOAD B00_im, 1*REALSIZE(B_row_ptr) ++ FLOAD B01_re, 2*REALSIZE(B_row_ptr) ++ FLOAD B01_im, 3*REALSIZE(B_row_ptr) ++ FLOAD B02_re, 4*REALSIZE(B_row_ptr) ++ FLOAD B02_im, 5*REALSIZE(B_row_ptr) ++ FLOAD B03_re, 6*REALSIZE(B_row_ptr) ++ FLOAD B03_im, 7*REALSIZE(B_row_ptr) ++ ++ vfmacc.vf AB01_re, B11_re, A01_re // AB(:,1) += A(:,l+1) * B(l+1,1) ++ vfnmsac.vf AB01_re, B11_im, A01_im ++ vfmacc.vf AB01_im, B11_re, A01_im ++ vfmacc.vf AB01_im, B11_im, A01_re ++ vfmacc.vf AB11_re, B11_re, A11_re ++ vfnmsac.vf AB11_re, B11_im, A11_im ++ vfmacc.vf AB11_im, B11_re, A11_im ++ vfmacc.vf AB11_im, B11_im, A11_re ++ ++ vfmacc.vf AB02_re, B12_re, A01_re // AB(:,2) += A(:,l+1) * B(l+1,2) ++ vfnmsac.vf AB02_re, B12_im, A01_im ++ vfmacc.vf AB02_im, B12_re, A01_im ++ vfmacc.vf AB02_im, B12_im, A01_re ++ vfmacc.vf AB12_re, B12_re, A11_re ++ vfnmsac.vf AB12_re, B12_im, A11_im ++ vfmacc.vf AB12_im, B12_re, A11_im ++ vfmacc.vf AB12_im, B12_im, A11_re ++ ++ vfmacc.vf AB03_re, B13_re, A01_re // AB(:,3) += A(:,l+1) * B(l+1,3) ++ vfnmsac.vf AB03_re, B13_im, A01_im ++ vfmacc.vf AB03_im, B13_re, A01_im ++ vfmacc.vf AB03_im, B13_im, A01_re ++ vfmacc.vf AB13_re, B13_re, A11_re ++ vfnmsac.vf AB13_re, B13_im, A11_im ++ vfmacc.vf AB13_im, B13_re, A11_im ++ vfmacc.vf AB13_im, B13_im, A11_re ++ ++ // Load and deinterleave A(:,l+3) ++ VLE A01_re, (A01_ptr) ++ VLE A11_re, (A11_ptr) ++ ++ // Point to A(:,l+2), A(:,l+3) ++ add A00_ptr, A01_ptr, s0 ++ add A10_ptr, A11_ptr, s0 ++ add A01_ptr, A00_ptr, s0 ++ add A11_ptr, A10_ptr, s0 ++ ++ // Load B(l+3, 0:3) ++ FLOAD B10_re, 8*REALSIZE(B_row_ptr) ++ FLOAD B10_im, 9*REALSIZE(B_row_ptr) ++ FLOAD B11_re, 10*REALSIZE(B_row_ptr) ++ FLOAD B11_im, 11*REALSIZE(B_row_ptr) ++ FLOAD B12_re, 12*REALSIZE(B_row_ptr) ++ FLOAD B12_im, 13*REALSIZE(B_row_ptr) ++ FLOAD B13_re, 14*REALSIZE(B_row_ptr) ++ FLOAD B13_im, 15*REALSIZE(B_row_ptr) ++ addi B_row_ptr, B_row_ptr, 16*REALSIZE ++ ++ vfmacc.vf AB00_re, B00_re, A00_re // AB(:,0) += A(:,l+2) * B(l+2,0) ++ vfnmsac.vf AB00_re, B00_im, A00_im ++ vfmacc.vf AB00_im, B00_re, A00_im ++ vfmacc.vf AB00_im, B00_im, A00_re ++ vfmacc.vf AB10_re, B00_re, A10_re ++ vfnmsac.vf AB10_re, B00_im, A10_im ++ vfmacc.vf AB10_im, B00_re, A10_im ++ vfmacc.vf AB10_im, B00_im, A10_re ++ ++ vfmacc.vf AB00_re, B10_re, A01_re // AB(:,0) += A(:,l+3) * B(l+3,0) ++ vfnmsac.vf AB00_re, B10_im, A01_im ++ vfmacc.vf AB00_im, B10_re, A01_im ++ vfmacc.vf AB00_im, B10_im, A01_re ++ vfmacc.vf AB10_re, B10_re, A11_re ++ vfnmsac.vf AB10_re, B10_im, A11_im ++ vfmacc.vf AB10_im, B10_re, A11_im ++ vfmacc.vf AB10_im, B10_im, A11_re ++ ++ vfmacc.vf AB01_re, B01_re, A00_re // AB(:,1) += A(:,l+2) * B(l+2,1) ++ vfnmsac.vf AB01_re, B01_im, A00_im ++ vfmacc.vf AB01_im, B01_re, A00_im ++ vfmacc.vf AB01_im, B01_im, A00_re ++ vfmacc.vf AB11_re, B01_re, A10_re ++ vfnmsac.vf AB11_re, B01_im, A10_im ++ vfmacc.vf AB11_im, B01_re, A10_im ++ vfmacc.vf AB11_im, B01_im, A10_re ++ ++ vfmacc.vf AB01_re, B11_re, A01_re // AB(:,1) += A(:,l+3) * B(l+3,1) ++ vfnmsac.vf AB01_re, B11_im, A01_im ++ vfmacc.vf AB01_im, B11_re, A01_im ++ vfmacc.vf AB01_im, B11_im, A01_re ++ vfmacc.vf AB11_re, B11_re, A11_re ++ vfnmsac.vf AB11_re, B11_im, A11_im ++ vfmacc.vf AB11_im, B11_re, A11_im ++ vfmacc.vf AB11_im, B11_im, A11_re ++ ++ vfmacc.vf AB02_re, B02_re, A00_re // AB(:,2) += A(:,l+2) * B(l+2,2) ++ vfnmsac.vf AB02_re, B02_im, A00_im ++ vfmacc.vf AB02_im, B02_re, A00_im ++ vfmacc.vf AB02_im, B02_im, A00_re ++ vfmacc.vf AB12_re, B02_re, A10_re ++ vfnmsac.vf AB12_re, B02_im, A10_im ++ vfmacc.vf AB12_im, B02_re, A10_im ++ vfmacc.vf AB12_im, B02_im, A10_re ++ ++ vfmacc.vf AB02_re, B12_re, A01_re // AB(:,2) += A(:,l+3) * B(l+3,2) ++ vfnmsac.vf AB02_re, B12_im, A01_im ++ vfmacc.vf AB02_im, B12_re, A01_im ++ vfmacc.vf AB02_im, B12_im, A01_re ++ vfmacc.vf AB12_re, B12_re, A11_re ++ vfnmsac.vf AB12_re, B12_im, A11_im ++ vfmacc.vf AB12_im, B12_re, A11_im ++ vfmacc.vf AB12_im, B12_im, A11_re ++ ++ vfmacc.vf AB03_re, B03_re, A00_re // AB(:,3) += A(:,l+2) * B(l+2,3) ++ vfnmsac.vf AB03_re, B03_im, A00_im ++ vfmacc.vf AB03_im, B03_re, A00_im ++ vfmacc.vf AB03_im, B03_im, A00_re ++ vfmacc.vf AB13_re, B03_re, A10_re ++ vfnmsac.vf AB13_re, B03_im, A10_im ++ vfmacc.vf AB13_im, B03_re, A10_im ++ vfmacc.vf AB13_im, B03_im, A10_re ++ ++ vfmacc.vf AB03_re, B13_re, A01_re // AB(:,3) += A(:,l+3) * B(l+3,3) ++ vfnmsac.vf AB03_re, B13_im, A01_im ++ vfmacc.vf AB03_im, B13_re, A01_im ++ vfmacc.vf AB03_im, B13_im, A01_re ++ vfmacc.vf AB13_re, B13_re, A11_re ++ vfnmsac.vf AB13_re, B13_im, A11_im ++ vfmacc.vf AB13_im, B13_re, A11_im ++ vfmacc.vf AB13_im, B13_im, A11_re ++ ++ li tmp, 3 ++ ble loop_counter, tmp, TAIL_UNROLL_2 ++ ++ // Load A and B for the next iteration ++ VLE A00_re, (A00_ptr) ++ VLE A10_re, (A10_ptr) ++ VLE A01_re, (A01_ptr) ++ VLE A11_re, (A11_ptr) ++ ++ FLOAD B00_re, 0*REALSIZE(B_row_ptr) ++ FLOAD B00_im, 1*REALSIZE(B_row_ptr) ++ FLOAD B01_re, 2*REALSIZE(B_row_ptr) ++ FLOAD B01_im, 3*REALSIZE(B_row_ptr) ++ FLOAD B02_re, 4*REALSIZE(B_row_ptr) ++ FLOAD B02_im, 5*REALSIZE(B_row_ptr) ++ FLOAD B03_re, 6*REALSIZE(B_row_ptr) ++ FLOAD B03_im, 7*REALSIZE(B_row_ptr) ++ ++ j LOOP_UNROLL_4 ++ ++TAIL_UNROLL_2: // loop_counter <= 3 ++ li tmp, 1 ++ ble loop_counter, tmp, TAIL_UNROLL_1 ++ ++ addi loop_counter, loop_counter, -2 ++ ++ // Load and deinterleave A(:,l) ++ VLE A00_re, (A00_ptr) ++ VLE A10_re, (A10_ptr) ++ ++ // Load B(l, 0:3) ++ FLOAD B00_re, 0*REALSIZE(B_row_ptr) ++ FLOAD B00_im, 1*REALSIZE(B_row_ptr) ++ FLOAD B01_re, 2*REALSIZE(B_row_ptr) ++ FLOAD B01_im, 3*REALSIZE(B_row_ptr) ++ FLOAD B02_re, 4*REALSIZE(B_row_ptr) ++ FLOAD B02_im, 5*REALSIZE(B_row_ptr) ++ FLOAD B03_re, 6*REALSIZE(B_row_ptr) ++ FLOAD B03_im, 7*REALSIZE(B_row_ptr) ++ ++ vfmacc.vf AB00_re, B00_re, A00_re // AB(:,0) += A(:,l) * B(l,0) ++ vfnmsac.vf AB00_re, B00_im, A00_im ++ vfmacc.vf AB00_im, B00_re, A00_im ++ vfmacc.vf AB00_im, B00_im, A00_re ++ vfmacc.vf AB10_re, B00_re, A10_re ++ vfnmsac.vf AB10_re, B00_im, A10_im ++ vfmacc.vf AB10_im, B00_re, A10_im ++ vfmacc.vf AB10_im, B00_im, A10_re ++ ++ vfmacc.vf AB01_re, B01_re, A00_re // AB(:,1) += A(:,l) * B(l,1) ++ vfnmsac.vf AB01_re, B01_im, A00_im ++ vfmacc.vf AB01_im, B01_re, A00_im ++ vfmacc.vf AB01_im, B01_im, A00_re ++ vfmacc.vf AB11_re, B01_re, A10_re ++ vfnmsac.vf AB11_re, B01_im, A10_im ++ vfmacc.vf AB11_im, B01_re, A10_im ++ vfmacc.vf AB11_im, B01_im, A10_re ++ ++ // Load and deinterleave A(:,l+1) ++ VLE A01_re, (A01_ptr) ++ VLE A11_re, (A11_ptr) ++ ++ // Load B(l+1, 0:3) ++ FLOAD B10_re, 8*REALSIZE(B_row_ptr) ++ FLOAD B10_im, 9*REALSIZE(B_row_ptr) ++ FLOAD B11_re, 10*REALSIZE(B_row_ptr) ++ FLOAD B11_im, 11*REALSIZE(B_row_ptr) ++ FLOAD B12_re, 12*REALSIZE(B_row_ptr) ++ FLOAD B12_im, 13*REALSIZE(B_row_ptr) ++ FLOAD B13_re, 14*REALSIZE(B_row_ptr) ++ FLOAD B13_im, 15*REALSIZE(B_row_ptr) ++ ++ vfmacc.vf AB00_re, B10_re, A01_re // AB(:,0) += A(:,l+1) * B(l+1,0) ++ vfnmsac.vf AB00_re, B10_im, A01_im ++ vfmacc.vf AB00_im, B10_re, A01_im ++ vfmacc.vf AB00_im, B10_im, A01_re ++ vfmacc.vf AB10_re, B10_re, A11_re ++ vfnmsac.vf AB10_re, B10_im, A11_im ++ vfmacc.vf AB10_im, B10_re, A11_im ++ vfmacc.vf AB10_im, B10_im, A11_re ++ ++ vfmacc.vf AB01_re, B11_re, A01_re // AB(:,1) += A(:,l+1) * B(l+1,1) ++ vfnmsac.vf AB01_re, B11_im, A01_im ++ vfmacc.vf AB01_im, B11_re, A01_im ++ vfmacc.vf AB01_im, B11_im, A01_re ++ vfmacc.vf AB11_re, B11_re, A11_re ++ vfnmsac.vf AB11_re, B11_im, A11_im ++ vfmacc.vf AB11_im, B11_re, A11_im ++ vfmacc.vf AB11_im, B11_im, A11_re ++ ++ vfmacc.vf AB02_re, B02_re, A00_re // AB(:,2) += A(:,l) * B(l,2) ++ vfnmsac.vf AB02_re, B02_im, A00_im ++ vfmacc.vf AB02_im, B02_re, A00_im ++ vfmacc.vf AB02_im, B02_im, A00_re ++ vfmacc.vf AB12_re, B02_re, A10_re ++ vfnmsac.vf AB12_re, B02_im, A10_im ++ vfmacc.vf AB12_im, B02_re, A10_im ++ vfmacc.vf AB12_im, B02_im, A10_re ++ ++ vfmacc.vf AB03_re, B03_re, A00_re // AB(:,3) += A(:,l) * B(l,3) ++ vfnmsac.vf AB03_re, B03_im, A00_im ++ vfmacc.vf AB03_im, B03_re, A00_im ++ vfmacc.vf AB03_im, B03_im, A00_re ++ vfmacc.vf AB13_re, B03_re, A10_re ++ vfnmsac.vf AB13_re, B03_im, A10_im ++ vfmacc.vf AB13_im, B03_re, A10_im ++ vfmacc.vf AB13_im, B03_im, A10_re ++ ++ vfmacc.vf AB02_re, B12_re, A01_re // AB(:,2) += A(:,l+1) * B(l+1,2) ++ vfnmsac.vf AB02_re, B12_im, A01_im ++ vfmacc.vf AB02_im, B12_re, A01_im ++ vfmacc.vf AB02_im, B12_im, A01_re ++ vfmacc.vf AB12_re, B12_re, A11_re ++ vfnmsac.vf AB12_re, B12_im, A11_im ++ vfmacc.vf AB12_im, B12_re, A11_im ++ vfmacc.vf AB12_im, B12_im, A11_re ++ ++ vfmacc.vf AB03_re, B13_re, A01_re // AB(:,3) += A(:,l+1) * B(l+1,3) ++ vfnmsac.vf AB03_re, B13_im, A01_im ++ vfmacc.vf AB03_im, B13_re, A01_im ++ vfmacc.vf AB03_im, B13_im, A01_re ++ vfmacc.vf AB13_re, B13_re, A11_re ++ vfnmsac.vf AB13_re, B13_im, A11_im ++ vfmacc.vf AB13_im, B13_re, A11_im ++ vfmacc.vf AB13_im, B13_im, A11_re ++ ++ beqz loop_counter, MULTIPLYALPHA ++ ++ // Advance pointers ++ add A00_ptr, A01_ptr, s0 ++ add A10_ptr, A11_ptr, s0 ++ addi B_row_ptr, B_row_ptr, 16*REALSIZE ++ ++TAIL_UNROLL_1: // loop_counter <= 1 ++ beqz loop_counter, MULTIPLYALPHA ++ ++ // Load and deinterleave A(:,l) ++ VLE A00_re, (A00_ptr) ++ VLE A10_re, (A10_ptr) ++ ++ // Load B(l,0:3) ++ FLOAD B00_re, 0*REALSIZE(B_row_ptr) ++ FLOAD B00_im, 1*REALSIZE(B_row_ptr) ++ FLOAD B01_re, 2*REALSIZE(B_row_ptr) ++ FLOAD B01_im, 3*REALSIZE(B_row_ptr) ++ FLOAD B02_re, 4*REALSIZE(B_row_ptr) ++ FLOAD B02_im, 5*REALSIZE(B_row_ptr) ++ FLOAD B03_re, 6*REALSIZE(B_row_ptr) ++ FLOAD B03_im, 7*REALSIZE(B_row_ptr) ++ ++ vfmacc.vf AB00_re, B00_re, A00_re // AB(:,0) += A(:,l) * B(l,0) ++ vfnmsac.vf AB00_re, B00_im, A00_im ++ vfmacc.vf AB00_im, B00_re, A00_im ++ vfmacc.vf AB00_im, B00_im, A00_re ++ vfmacc.vf AB10_re, B00_re, A10_re ++ vfnmsac.vf AB10_re, B00_im, A10_im ++ vfmacc.vf AB10_im, B00_re, A10_im ++ vfmacc.vf AB10_im, B00_im, A10_re ++ ++ vfmacc.vf AB01_re, B01_re, A00_re // AB(:,1) += A(:,l) * B(l,1) ++ vfnmsac.vf AB01_re, B01_im, A00_im ++ vfmacc.vf AB01_im, B01_re, A00_im ++ vfmacc.vf AB01_im, B01_im, A00_re ++ vfmacc.vf AB11_re, B01_re, A10_re ++ vfnmsac.vf AB11_re, B01_im, A10_im ++ vfmacc.vf AB11_im, B01_re, A10_im ++ vfmacc.vf AB11_im, B01_im, A10_re ++ ++ vfmacc.vf AB02_re, B02_re, A00_re // AB(:,2) += A(:,l) * B(l,2) ++ vfnmsac.vf AB02_re, B02_im, A00_im ++ vfmacc.vf AB02_im, B02_re, A00_im ++ vfmacc.vf AB02_im, B02_im, A00_re ++ vfmacc.vf AB12_re, B02_re, A10_re ++ vfnmsac.vf AB12_re, B02_im, A10_im ++ vfmacc.vf AB12_im, B02_re, A10_im ++ vfmacc.vf AB12_im, B02_im, A10_re ++ ++ vfmacc.vf AB03_re, B03_re, A00_re // AB(:,3) += A(:,l) * B(l,3) ++ vfnmsac.vf AB03_re, B03_im, A00_im ++ vfmacc.vf AB03_im, B03_re, A00_im ++ vfmacc.vf AB03_im, B03_im, A00_re ++ vfmacc.vf AB13_re, B03_re, A10_re ++ vfnmsac.vf AB13_re, B03_im, A10_im ++ vfmacc.vf AB13_im, B03_re, A10_im ++ vfmacc.vf AB13_im, B03_im, A10_re ++ ++MULTIPLYALPHA: ++ FLOAD ALPHA_re, 0*REALSIZE(a1) ++ FLOAD ALPHA_im, 1*REALSIZE(a1) ++ ++ FEQ tmp, ALPHA_im, fzero ++ bne tmp, zero, ALPHAREAL ++ ++ // [AB00, ..., AB03] * alpha ++ vfmul.vf tmp0_re, AB00_im, ALPHA_im ++ vfmul.vf tmp0_im, AB00_re, ALPHA_im ++ vfmul.vf tmp1_re, AB01_im, ALPHA_im ++ vfmul.vf tmp1_im, AB01_re, ALPHA_im ++ vfmul.vf tmp2_re, AB02_im, ALPHA_im ++ vfmul.vf tmp2_im, AB02_re, ALPHA_im ++ vfmul.vf tmp3_re, AB03_im, ALPHA_im ++ vfmul.vf tmp3_im, AB03_re, ALPHA_im ++ vfmsub.vf AB00_re, ALPHA_re, tmp0_re ++ vfmsub.vf AB01_re, ALPHA_re, tmp1_re ++ vfmsub.vf AB02_re, ALPHA_re, tmp2_re ++ vfmsub.vf AB03_re, ALPHA_re, tmp3_re ++ vfmadd.vf AB00_im, ALPHA_re, tmp0_im ++ vfmadd.vf AB01_im, ALPHA_re, tmp1_im ++ vfmadd.vf AB02_im, ALPHA_re, tmp2_im ++ vfmadd.vf AB03_im, ALPHA_re, tmp3_im ++ ++ // [AB10, ..., AB13] * alpha ++ vfmul.vf tmp0_re, AB10_im, ALPHA_im ++ vfmul.vf tmp0_im, AB10_re, ALPHA_im ++ vfmul.vf tmp1_re, AB11_im, ALPHA_im ++ vfmul.vf tmp1_im, AB11_re, ALPHA_im ++ vfmul.vf tmp2_re, AB12_im, ALPHA_im ++ vfmul.vf tmp2_im, AB12_re, ALPHA_im ++ vfmul.vf tmp3_re, AB13_im, ALPHA_im ++ vfmul.vf tmp3_im, AB13_re, ALPHA_im ++ vfmsub.vf AB10_re, ALPHA_re, tmp0_re ++ vfmsub.vf AB11_re, ALPHA_re, tmp1_re ++ vfmsub.vf AB12_re, ALPHA_re, tmp2_re ++ vfmsub.vf AB13_re, ALPHA_re, tmp3_re ++ vfmadd.vf AB10_im, ALPHA_re, tmp0_im ++ vfmadd.vf AB11_im, ALPHA_re, tmp1_im ++ vfmadd.vf AB12_im, ALPHA_re, tmp2_im ++ vfmadd.vf AB13_im, ALPHA_re, tmp3_im ++ ++ j MULTIPLYBETA ++ ++ALPHAREAL: ++ vfmul.vf AB00_re, AB00_re, ALPHA_re ++ vfmul.vf AB00_im, AB00_im, ALPHA_re ++ vfmul.vf AB01_re, AB01_re, ALPHA_re ++ vfmul.vf AB01_im, AB01_im, ALPHA_re ++ vfmul.vf AB02_re, AB02_re, ALPHA_re ++ vfmul.vf AB02_im, AB02_im, ALPHA_re ++ vfmul.vf AB03_re, AB03_re, ALPHA_re ++ vfmul.vf AB03_im, AB03_im, ALPHA_re ++ ++ vfmul.vf AB10_re, AB10_re, ALPHA_re ++ vfmul.vf AB10_im, AB10_im, ALPHA_re ++ vfmul.vf AB11_re, AB11_re, ALPHA_re ++ vfmul.vf AB11_im, AB11_im, ALPHA_re ++ vfmul.vf AB12_re, AB12_re, ALPHA_re ++ vfmul.vf AB12_im, AB12_im, ALPHA_re ++ vfmul.vf AB13_re, AB13_re, ALPHA_re ++ vfmul.vf AB13_im, AB13_im, ALPHA_re ++ ++MULTIPLYBETA: ++ FLOAD BETA_re, 0*REALSIZE(a4) ++ FLOAD BETA_im, 1*REALSIZE(a4) ++ FEQ tmp, BETA_im, fzero ++ bne tmp, zero, BETAREAL ++ ++ // Load and deinterleave C(0:VLEN-1, 0:1) ++ VLE C0_re, (C00_ptr) ++ VLE C1_re, (C01_ptr) ++ ++ // Load and deinterleave C(0:VLEN-1, 2:3) ++ VLE C2_re, (C02_ptr) ++ VLE C3_re, (C03_ptr) ++ ++ // C(0:VLEN-1,0:1) * beta + AB(0:VLEN-1,0:1) ++ vfmacc.vf AB00_re, BETA_re, C0_re ++ vfnmsac.vf AB00_re, BETA_im, C0_im ++ vfmacc.vf AB00_im, BETA_re, C0_im ++ vfmacc.vf AB00_im, BETA_im, C0_re ++ VSE AB00_re, (C00_ptr) ++ ++ vfmacc.vf AB01_re, BETA_re, C1_re ++ vfnmsac.vf AB01_re, BETA_im, C1_im ++ vfmacc.vf AB01_im, BETA_re, C1_im ++ vfmacc.vf AB01_im, BETA_im, C1_re ++ VSE AB01_re, (C01_ptr) ++ ++ // C(0:VLEN-1,2:3) * beta + AB(0:VLEN-1,2:3) ++ vfmacc.vf AB02_re, BETA_re, C2_re ++ vfnmsac.vf AB02_re, BETA_im, C2_im ++ vfmacc.vf AB02_im, BETA_re, C2_im ++ vfmacc.vf AB02_im, BETA_im, C2_re ++ VSE AB02_re, (C02_ptr) ++ ++ vfmacc.vf AB03_re, BETA_re, C3_re ++ vfnmsac.vf AB03_re, BETA_im, C3_im ++ vfmacc.vf AB03_im, BETA_re, C3_im ++ vfmacc.vf AB03_im, BETA_im, C3_re ++ VSE AB03_re, (C03_ptr) ++ ++ // Load and deinterleave C(VLEN:2*VLEN-1, 0:1) ++ VLE C0_re, (C10_ptr) ++ VLE C1_re, (C11_ptr) ++ ++ // Load and deinterleave C(VLEN:2*VLEN-1, 2:3) ++ VLE C2_re, (C12_ptr) ++ VLE C3_re, (C13_ptr) ++ ++ // C(VLEN:2*VLEN-1,0:1) * beta + AB(VLEN:2*VLEN-1,0:1) ++ vfmacc.vf AB10_re, BETA_re, C0_re ++ vfnmsac.vf AB10_re, BETA_im, C0_im ++ vfmacc.vf AB10_im, BETA_re, C0_im ++ vfmacc.vf AB10_im, BETA_im, C0_re ++ VSE AB10_re, (C10_ptr) ++ ++ vfmacc.vf AB11_re, BETA_re, C1_re ++ vfnmsac.vf AB11_re, BETA_im, C1_im ++ vfmacc.vf AB11_im, BETA_re, C1_im ++ vfmacc.vf AB11_im, BETA_im, C1_re ++ VSE AB11_re, (C11_ptr) ++ ++ // C(VLEN:2*VLEN-1,2:3) * beta + AB(VLEN:2*VLEN-1,2:3) ++ vfmacc.vf AB12_re, BETA_re, C2_re ++ vfnmsac.vf AB12_re, BETA_im, C2_im ++ vfmacc.vf AB12_im, BETA_re, C2_im ++ vfmacc.vf AB12_im, BETA_im, C2_re ++ VSE AB12_re, (C12_ptr) ++ ++ vfmacc.vf AB13_re, BETA_re, C3_re ++ vfnmsac.vf AB13_re, BETA_im, C3_im ++ vfmacc.vf AB13_im, BETA_re, C3_im ++ vfmacc.vf AB13_im, BETA_im, C3_re ++ VSE AB13_re, (C13_ptr) ++ ++ j END ++ ++BETAREAL: ++ FEQ tmp, BETA_re, fzero ++ bne tmp, zero, BETAZERO ++ ++ // Load and deinterleave C(0:VLEN-1, 0:3) ++ VLE C0_re, (C00_ptr) ++ VLE C1_re, (C01_ptr) ++ VLE C2_re, (C02_ptr) ++ VLE C3_re, (C03_ptr) ++ ++ // C(0:VLEN-1,0:3) * beta + AB(0:VLEN-1,0:3) ++ vfmacc.vf AB00_re, BETA_re, C0_re ++ vfmacc.vf AB00_im, BETA_re, C0_im ++ vfmacc.vf AB01_re, BETA_re, C1_re ++ vfmacc.vf AB01_im, BETA_re, C1_im ++ ++ vfmacc.vf AB02_re, BETA_re, C2_re ++ vfmacc.vf AB02_im, BETA_re, C2_im ++ vfmacc.vf AB03_re, BETA_re, C3_re ++ vfmacc.vf AB03_im, BETA_re, C3_im ++ ++ VSE AB00_re, (C00_ptr) ++ VSE AB01_re, (C01_ptr) ++ VSE AB02_re, (C02_ptr) ++ VSE AB03_re, (C03_ptr) ++ ++ // Load and deinterleave C(VLEN:2*VLEN-1, 0:3) ++ VLE C0_re, (C10_ptr) ++ VLE C1_re, (C11_ptr) ++ VLE C2_re, (C12_ptr) ++ VLE C3_re, (C13_ptr) ++ ++ // C(VLEN:2*VLEN-1,0:3) * beta + AB(VLEN:2*VLEN-1,0:3) ++ vfmacc.vf AB10_re, BETA_re, C0_re ++ vfmacc.vf AB10_im, BETA_re, C0_im ++ vfmacc.vf AB11_re, BETA_re, C1_re ++ vfmacc.vf AB11_im, BETA_re, C1_im ++ ++ vfmacc.vf AB12_re, BETA_re, C2_re ++ vfmacc.vf AB12_im, BETA_re, C2_im ++ vfmacc.vf AB13_re, BETA_re, C3_re ++ vfmacc.vf AB13_im, BETA_re, C3_im ++ ++ VSE AB10_re, (C10_ptr) ++ VSE AB11_re, (C11_ptr) ++ VSE AB12_re, (C12_ptr) ++ VSE AB13_re, (C13_ptr) ++ ++ j END ++ ++BETAZERO: ++ VSE AB00_re, (C00_ptr) ++ VSE AB01_re, (C01_ptr) ++ VSE AB02_re, (C02_ptr) ++ VSE AB03_re, (C03_ptr) ++ ++ VSE AB10_re, (C10_ptr) ++ VSE AB11_re, (C11_ptr) ++ VSE AB12_re, (C12_ptr) ++ VSE AB13_re, (C13_ptr) ++ ++END: ++ #include "rviv_restore_registers.h" ++ ret +diff --git a/kernels/rviv/3/bli_dgemm_rviv_4vx4.c b/kernels/rviv/3/bli_dgemm_rviv_4vx4.c +new file mode 100644 +index 000000000..e03716a5a +--- /dev/null ++++ b/kernels/rviv/3/bli_dgemm_rviv_4vx4.c +@@ -0,0 +1,79 @@ ++/* ++ ++ BLIS ++ An object-based framework for developing high-performance BLAS-like ++ libraries. ++ ++ Copyright (C) 2023, The University of Texas at Austin ++ ++ Redistribution and use in source and binary forms, with or without ++ modification, are permitted provided that the following conditions are ++ met: ++ - Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ - Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ - Neither the name(s) of the copyright holder(s) nor the names of its ++ contributors may be used to endorse or promote products derived ++ from this software without specific prior written permission. ++ ++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++ ++*/ ++#include "bli_rviv_utils.h" ++ ++void bli_dgemm_rviv_asm_4vx4 ++ ( ++ intptr_t k, ++ const void* alpha, ++ const void* a, ++ const void* b, ++ const void* beta, ++ void* c, intptr_t rs_c, intptr_t cs_c ++ ); ++ ++void bli_dgemm_rviv_4vx4 ++ ( ++ dim_t m, ++ dim_t n, ++ dim_t k, ++ const void* alpha, ++ const void* a, ++ const void* b, ++ const void* beta, ++ void* c, inc_t rs_c, inc_t cs_c, ++ auxinfo_t* data, ++ const cntx_t* cntx ++ ) ++{ ++ // The assembly kernels always take native machine-sized integer arguments. ++ // dim_t and inc_t are normally defined as being machine-sized. If larger, assert. ++ bli_static_assert( sizeof(dim_t) <= sizeof(intptr_t) && ++ sizeof(inc_t) <= sizeof(intptr_t) ); ++ ++ // Extract vector-length dependent mr, nr that are fixed at configure time. ++ const inc_t mr = bli_cntx_get_blksz_def_dt( BLIS_DOUBLE, BLIS_MR, cntx ); ++ const inc_t nr = 4; ++ ++ GEMM_UKR_SETUP_CT( d, mr, nr, false ); ++ ++ // The kernel assumes rs_c == 1, and the context should not deviate from it. ++ assert( rs_c == 1 ); ++ ++ bli_dgemm_rviv_asm_4vx4( k, alpha, a, b, beta, c, ++ get_vlenb(), cs_c * sizeof(double) ); ++ ++ GEMM_UKR_FLUSH_CT( d ); ++} +diff --git a/kernels/rviv/3/bli_dgemm_rviv_asm_4vx4.S b/kernels/rviv/3/bli_dgemm_rviv_asm_4vx4.S +new file mode 100644 +index 000000000..b29c6da5e +--- /dev/null ++++ b/kernels/rviv/3/bli_dgemm_rviv_asm_4vx4.S +@@ -0,0 +1,45 @@ ++/* ++ ++ BLIS ++ An object-based framework for developing high-performance BLAS-like ++ libraries. ++ ++ Copyright (C) 2023, The University of Texas at Austin ++ ++ Redistribution and use in source and binary forms, with or without ++ modification, are permitted provided that the following conditions are ++ met: ++ - Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ - Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ - Neither the name(s) of the copyright holder(s) nor the names of its ++ contributors may be used to endorse or promote products derived ++ from this software without specific prior written permission. ++ ++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++ ++*/ ++ ++#define REALNAME bli_dgemm_rviv_asm_4vx4 ++#define DATASIZE 8 ++#define VTYPE e64 ++#define FLOAD fld ++#define FZERO(fr) fcvt.d.w fr, x0 ++#define FEQ feq.d ++#define VLE vle64.v ++#define VSE vse64.v ++ ++#include "bli_sdgemm_rviv_asm_4vx4.h" +diff --git a/kernels/rviv/3/bli_rviv_utils.h b/kernels/rviv/3/bli_rviv_utils.h +new file mode 100644 +index 000000000..e4570321d +--- /dev/null ++++ b/kernels/rviv/3/bli_rviv_utils.h +@@ -0,0 +1,46 @@ ++/* ++ ++ BLIS ++ An object-based framework for developing high-performance BLAS-like ++ libraries. ++ ++ Copyright (C) 2023, The University of Texas at Austin ++ ++ Redistribution and use in source and binary forms, with or without ++ modification, are permitted provided that the following conditions are ++ met: ++ - Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ - Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ - Neither the name(s) of the copyright holder(s) nor the names of its ++ contributors may be used to endorse or promote products derived ++ from this software without specific prior written permission. ++ ++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++*/ ++ ++#include "blis.h" ++#include ++ ++static inline uintptr_t get_vlenb(void) ++{ ++ uintptr_t vlenb = 0; ++ __asm__ volatile ( ++ " csrr %0, vlenb" // vector length in bytes ++ : "=r" (vlenb) ++ ); ++ return vlenb; ++} +diff --git a/kernels/rviv/3/bli_sdgemm_rviv_asm_4vx4.h b/kernels/rviv/3/bli_sdgemm_rviv_asm_4vx4.h +new file mode 100644 +index 000000000..998a4e27d +--- /dev/null ++++ b/kernels/rviv/3/bli_sdgemm_rviv_asm_4vx4.h +@@ -0,0 +1,627 @@ ++/* ++ ++ BLIS ++ An object-based framework for developing high-performance BLAS-like ++ libraries. ++ ++ Copyright (C) 2023, The University of Texas at Austin ++ ++ Redistribution and use in source and binary forms, with or without ++ modification, are permitted provided that the following conditions are ++ met: ++ - Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ - Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ - Neither the name(s) of the copyright holder(s) nor the names of its ++ contributors may be used to endorse or promote products derived ++ from this software without specific prior written permission. ++ ++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++ ++*/ ++ ++ .text ++ .align 2 ++ .global REALNAME ++ ++// void REALNAME(intptr_t k, void* alpha, void* a, void* b, ++// void* beta, void* c, intptr_t rs_c, intptr_t cs_c) ++// ++// register arguments: ++// a0 k ++// a1 alpha ++// a2 a ++// a3 b ++// a4 beta ++// a5 c ++// a6 rs_c ++// a7 cs_c ++// ++ ++#define loop_counter a0 ++ ++#define A00_ptr a2 ++#define A10_ptr t0 ++#define A20_ptr t1 ++#define A30_ptr t2 ++#define A01_ptr s5 ++#define A11_ptr s6 ++#define A21_ptr s7 ++#define A31_ptr t6 ++ ++#define B_row_ptr a3 ++ ++#define C00_ptr a5 ++#define C01_ptr t3 ++#define C02_ptr t4 ++#define C03_ptr t5 ++#define C10_ptr s1 ++#define C11_ptr s2 ++#define C12_ptr s3 ++#define C13_ptr s4 ++ ++#define tmp t6 ++ ++#define ALPHA fa1 ++#define BETA fa2 ++ ++#define B00 fa4 ++#define B01 fa5 ++#define B02 fa6 ++#define B03 fa7 ++ ++#define B10 fa0 ++#define B11 fa1 ++#define B12 fa2 ++#define B13 fa3 ++ ++#define fzero ft8 ++ ++#define A00 v24 ++#define A10 v25 ++#define A20 v26 ++#define A30 v27 ++ ++#define A01 v28 ++#define A11 v29 ++#define A21 v30 ++#define A31 v31 ++ ++#define C00 v16 ++#define C01 v17 ++#define C02 v18 ++#define C03 v19 ++#define C10 v20 ++#define C11 v21 ++#define C12 v22 ++#define C13 v23 ++#define C20 v0 ++#define C21 v1 ++#define C22 v2 ++#define C23 v3 ++#define C30 v4 ++#define C31 v5 ++#define C32 v6 ++#define C33 v7 ++ ++#define AB00 v0 ++#define AB01 v1 ++#define AB02 v2 ++#define AB03 v3 ++#define AB10 v4 ++#define AB11 v5 ++#define AB12 v6 ++#define AB13 v7 ++#define AB20 v8 ++#define AB21 v9 ++#define AB22 v10 ++#define AB23 v11 ++#define AB30 v12 ++#define AB31 v13 ++#define AB32 v14 ++#define AB33 v15 ++ ++#define rs_c a6 ++#define cs_c a7 ++ ++REALNAME: ++ #include "rviv_save_registers.h" ++ ++ vsetvli s0, zero, VTYPE, m1, ta, ma ++ csrr s0, vlenb ++ FZERO(fzero) ++ ++ // Set up pointers ++ add C01_ptr, C00_ptr, cs_c ++ add C02_ptr, C01_ptr, cs_c ++ add C03_ptr, C02_ptr, cs_c ++ add C10_ptr, C00_ptr, rs_c ++ add C11_ptr, C01_ptr, rs_c ++ add C12_ptr, C02_ptr, rs_c ++ add C13_ptr, C03_ptr, rs_c ++ ++ // Zero-initialize accumulators ++ vxor.vv AB00, AB00, AB00 ++ vxor.vv AB01, AB01, AB01 ++ vxor.vv AB02, AB02, AB02 ++ vxor.vv AB03, AB03, AB03 ++ vxor.vv AB10, AB10, AB10 ++ vxor.vv AB11, AB11, AB11 ++ vxor.vv AB12, AB12, AB12 ++ vxor.vv AB13, AB13, AB13 ++ vxor.vv AB20, AB20, AB20 ++ vxor.vv AB21, AB21, AB21 ++ vxor.vv AB22, AB22, AB22 ++ vxor.vv AB23, AB23, AB23 ++ vxor.vv AB30, AB30, AB30 ++ vxor.vv AB31, AB31, AB31 ++ vxor.vv AB32, AB32, AB32 ++ vxor.vv AB33, AB33, AB33 ++ ++ // Handle k == 0 ++ beqz loop_counter, MULTIPLYBETA ++ ++ // Set up pointers to rows of A ++ add A10_ptr, A00_ptr, s0 ++ add A20_ptr, A10_ptr, s0 ++ add A30_ptr, A20_ptr, s0 ++ ++ slli s0, s0, 2 // length of a column of A in bytes ++ ++ li tmp, 3 ++ ble loop_counter, tmp, TAIL_UNROLL_2 ++ ++ // Preload A and B ++ // Load A(:,l) ++ VLE A00, (A00_ptr) ++ VLE A10, (A10_ptr) ++ VLE A20, (A20_ptr) ++ VLE A30, (A30_ptr) ++ ++ // Load B(l,0:3) ++ FLOAD B00, 0*DATASIZE(B_row_ptr) ++ FLOAD B01, 1*DATASIZE(B_row_ptr) ++ FLOAD B02, 2*DATASIZE(B_row_ptr) ++ FLOAD B03, 3*DATASIZE(B_row_ptr) ++ ++ // Set up pointers to A(:,l+1) ++ add A01_ptr, A00_ptr, s0 ++ add A11_ptr, A10_ptr, s0 ++ add A21_ptr, A20_ptr, s0 ++ add A31_ptr, A30_ptr, s0 ++ ++LOOP_UNROLL_4: ++ addi loop_counter, loop_counter, -4 ++ ++ vfmacc.vf AB00, B00, A00 // AB(0,:) += A(0,0) * B(0,:) ++ vfmacc.vf AB01, B01, A00 ++ vfmacc.vf AB02, B02, A00 ++ vfmacc.vf AB03, B03, A00 ++ ++ vfmacc.vf AB10, B00, A10 // AB(1,:) += A(1,0) * B(0,:) ++ vfmacc.vf AB11, B01, A10 ++ vfmacc.vf AB12, B02, A10 ++ vfmacc.vf AB13, B03, A10 ++ ++ // Load B(l+1,0:3) ++ FLOAD B10, 4*DATASIZE(B_row_ptr) ++ FLOAD B11, 5*DATASIZE(B_row_ptr) ++ FLOAD B12, 6*DATASIZE(B_row_ptr) ++ FLOAD B13, 7*DATASIZE(B_row_ptr) ++ addi B_row_ptr, B_row_ptr, 8*DATASIZE ++ ++ vfmacc.vf AB20, B00, A20 // AB(2,:) += A(2,0) * B(0,:) ++ vfmacc.vf AB21, B01, A20 ++ vfmacc.vf AB22, B02, A20 ++ vfmacc.vf AB23, B03, A20 ++ ++ // Load A(:,l+1) ++ VLE A01, (A01_ptr) ++ VLE A11, (A11_ptr) ++ VLE A21, (A21_ptr) ++ VLE A31, (A31_ptr) ++ ++ // Point to A(:,l+2) ++ add A00_ptr, A01_ptr, s0 ++ add A10_ptr, A11_ptr, s0 ++ add A20_ptr, A21_ptr, s0 ++ add A30_ptr, A31_ptr, s0 ++ ++ vfmacc.vf AB30, B00, A30 // AB(3,:) += A(3,0) * B(0,:) ++ vfmacc.vf AB31, B01, A30 ++ vfmacc.vf AB32, B02, A30 ++ vfmacc.vf AB33, B03, A30 ++ ++ vfmacc.vf AB00, B10, A01 // AB(0,:) += A(0,1) * B(1,:) ++ vfmacc.vf AB01, B11, A01 ++ vfmacc.vf AB02, B12, A01 ++ vfmacc.vf AB03, B13, A01 ++ ++ // Load B(l+2,0:3) ++ FLOAD B00, 0*DATASIZE(B_row_ptr) ++ FLOAD B01, 1*DATASIZE(B_row_ptr) ++ FLOAD B02, 2*DATASIZE(B_row_ptr) ++ FLOAD B03, 3*DATASIZE(B_row_ptr) ++ ++ vfmacc.vf AB10, B10, A11 // AB(1,:) += A(1,1) * B(1,:) ++ vfmacc.vf AB11, B11, A11 ++ vfmacc.vf AB12, B12, A11 ++ vfmacc.vf AB13, B13, A11 ++ ++ // Load A(:,l+2) ++ VLE A00, (A00_ptr) ++ VLE A10, (A10_ptr) ++ VLE A20, (A20_ptr) ++ VLE A30, (A30_ptr) ++ ++ // Point to A(:,l+3) ++ add A01_ptr, A00_ptr, s0 ++ add A11_ptr, A10_ptr, s0 ++ add A21_ptr, A20_ptr, s0 ++ add A31_ptr, A30_ptr, s0 ++ ++ vfmacc.vf AB20, B10, A21 // AB(2,:) += A(2,1) * B(1,:) ++ vfmacc.vf AB21, B11, A21 ++ vfmacc.vf AB22, B12, A21 ++ vfmacc.vf AB23, B13, A21 ++ ++ vfmacc.vf AB30, B10, A31 // AB(3,:) += A(3,1) * B(1,:) ++ vfmacc.vf AB31, B11, A31 ++ vfmacc.vf AB32, B12, A31 ++ vfmacc.vf AB33, B13, A31 ++ ++ // Load A(:,l+3) ++ VLE A01, (A01_ptr) ++ VLE A11, (A11_ptr) ++ VLE A21, (A21_ptr) ++ VLE A31, (A31_ptr) ++ ++ // Point to A(:,l+4) ++ add A00_ptr, A01_ptr, s0 ++ add A10_ptr, A11_ptr, s0 ++ add A20_ptr, A21_ptr, s0 ++ add A30_ptr, A31_ptr, s0 ++ ++ vfmacc.vf AB00, B00, A00 // AB(0,:) += A(0,2) * B(2,:) ++ vfmacc.vf AB01, B01, A00 ++ vfmacc.vf AB02, B02, A00 ++ vfmacc.vf AB03, B03, A00 ++ ++ // Load B(l+3,0:3) ++ FLOAD B10, 4*DATASIZE(B_row_ptr) ++ FLOAD B11, 5*DATASIZE(B_row_ptr) ++ FLOAD B12, 6*DATASIZE(B_row_ptr) ++ FLOAD B13, 7*DATASIZE(B_row_ptr) ++ addi B_row_ptr, B_row_ptr, 8*DATASIZE ++ ++ vfmacc.vf AB10, B00, A10 // AB(1,:) += A(1,2) * B(2,:) ++ vfmacc.vf AB11, B01, A10 ++ vfmacc.vf AB12, B02, A10 ++ vfmacc.vf AB13, B03, A10 ++ ++ vfmacc.vf AB20, B00, A20 // AB(2,:) += A(2,2) * B(2,:) ++ vfmacc.vf AB21, B01, A20 ++ vfmacc.vf AB22, B02, A20 ++ vfmacc.vf AB23, B03, A20 ++ ++ vfmacc.vf AB30, B00, A30 // AB(3,:) += A(3,2) * B(3,:) ++ vfmacc.vf AB31, B01, A30 ++ vfmacc.vf AB32, B02, A30 ++ vfmacc.vf AB33, B03, A30 ++ ++ vfmacc.vf AB00, B10, A01 // AB(0,:) += A(0,3) * B(3,:) ++ vfmacc.vf AB01, B11, A01 ++ vfmacc.vf AB02, B12, A01 ++ vfmacc.vf AB03, B13, A01 ++ ++ vfmacc.vf AB10, B10, A11 // AB(1,:) += A(1,3) * B(3,:) ++ vfmacc.vf AB11, B11, A11 ++ vfmacc.vf AB12, B12, A11 ++ vfmacc.vf AB13, B13, A11 ++ ++ vfmacc.vf AB20, B10, A21 // AB(2,:) += A(2,3) * B(3,:) ++ vfmacc.vf AB21, B11, A21 ++ vfmacc.vf AB22, B12, A21 ++ vfmacc.vf AB23, B13, A21 ++ ++ vfmacc.vf AB30, B10, A31 // AB(3,:) += A(3,3) * B(3,:) ++ vfmacc.vf AB31, B11, A31 ++ vfmacc.vf AB32, B12, A31 ++ vfmacc.vf AB33, B13, A31 ++ ++ li tmp, 3 ++ ble loop_counter, tmp, TAIL_UNROLL_2 ++ ++ // Load A and B for the next iteration ++ // Load B(l,0:3) ++ FLOAD B00, 0*DATASIZE(B_row_ptr) ++ FLOAD B01, 1*DATASIZE(B_row_ptr) ++ FLOAD B02, 2*DATASIZE(B_row_ptr) ++ FLOAD B03, 3*DATASIZE(B_row_ptr) ++ ++ // Load A(:,l) ++ VLE A00, (A00_ptr) ++ VLE A10, (A10_ptr) ++ VLE A20, (A20_ptr) ++ VLE A30, (A30_ptr) ++ ++ // Set up pointers to A(:,l+1) ++ add A01_ptr, A00_ptr, s0 ++ add A11_ptr, A10_ptr, s0 ++ add A21_ptr, A20_ptr, s0 ++ add A31_ptr, A30_ptr, s0 ++ ++ j LOOP_UNROLL_4 ++ ++TAIL_UNROLL_2: // loop_counter <= 3 ++ li tmp, 1 ++ ble loop_counter, tmp, TAIL_UNROLL_1 ++ ++ addi loop_counter, loop_counter, -2 ++ ++ // Load B(l,0:3) ++ FLOAD B00, 0*DATASIZE(B_row_ptr) ++ FLOAD B01, 1*DATASIZE(B_row_ptr) ++ FLOAD B02, 2*DATASIZE(B_row_ptr) ++ FLOAD B03, 3*DATASIZE(B_row_ptr) ++ ++ // Load A(0:1,l) ++ VLE A00, (A00_ptr) ++ VLE A10, (A10_ptr) ++ ++ // Point to A(:,l+1) ++ add A01_ptr, A00_ptr, s0 ++ add A11_ptr, A10_ptr, s0 ++ add A21_ptr, A20_ptr, s0 ++ add A31_ptr, A30_ptr, s0 ++ ++ vfmacc.vf AB00, B00, A00 // AB(0,:) += A(0,0) * B(0,:) ++ vfmacc.vf AB01, B01, A00 ++ vfmacc.vf AB02, B02, A00 ++ vfmacc.vf AB03, B03, A00 ++ ++ // Load A(2:3,l) ++ VLE A20, (A20_ptr) ++ VLE A30, (A30_ptr) ++ ++ vfmacc.vf AB10, B00, A10 // AB(1,:) += A(1,0) * B(0,:) ++ vfmacc.vf AB11, B01, A10 ++ vfmacc.vf AB12, B02, A10 ++ vfmacc.vf AB13, B03, A10 ++ ++ // Load B(l+1,0:3) ++ FLOAD B10, 4*DATASIZE(B_row_ptr) ++ FLOAD B11, 5*DATASIZE(B_row_ptr) ++ FLOAD B12, 6*DATASIZE(B_row_ptr) ++ FLOAD B13, 7*DATASIZE(B_row_ptr) ++ addi B_row_ptr, B_row_ptr, 8*DATASIZE ++ ++ // Load A(:,l+1) ++ VLE A01, (A01_ptr) ++ VLE A11, (A11_ptr) ++ VLE A21, (A21_ptr) ++ VLE A31, (A31_ptr) ++ ++ vfmacc.vf AB20, B00, A20 // AB(2,:) += A(2,0) * B(0,:) ++ vfmacc.vf AB21, B01, A20 ++ vfmacc.vf AB22, B02, A20 ++ vfmacc.vf AB23, B03, A20 ++ ++ vfmacc.vf AB30, B00, A30 // AB(3,:) += A(3,0) * B(0,:) ++ vfmacc.vf AB31, B01, A30 ++ vfmacc.vf AB32, B02, A30 ++ vfmacc.vf AB33, B03, A30 ++ ++ // Point to A(:,l+2) ++ add A00_ptr, A01_ptr, s0 ++ add A10_ptr, A11_ptr, s0 ++ add A20_ptr, A21_ptr, s0 ++ add A30_ptr, A31_ptr, s0 ++ ++ vfmacc.vf AB00, B10, A01 // AB(0,:) += A(0,1) * B(1,:) ++ vfmacc.vf AB01, B11, A01 ++ vfmacc.vf AB02, B12, A01 ++ vfmacc.vf AB03, B13, A01 ++ ++ vfmacc.vf AB10, B10, A11 // AB(1,:) += A(1,1) * B(1,:) ++ vfmacc.vf AB11, B11, A11 ++ vfmacc.vf AB12, B12, A11 ++ vfmacc.vf AB13, B13, A11 ++ ++ vfmacc.vf AB20, B10, A21 // AB(2,:) += A(2,1) * B(1,:) ++ vfmacc.vf AB21, B11, A21 ++ vfmacc.vf AB22, B12, A21 ++ vfmacc.vf AB23, B13, A21 ++ ++ vfmacc.vf AB30, B10, A31 // AB(3,:) += A(3,1) * B(1,:) ++ vfmacc.vf AB31, B11, A31 ++ vfmacc.vf AB32, B12, A31 ++ vfmacc.vf AB33, B13, A31 ++ ++ li tmp, 1 ++ ble loop_counter, tmp, TAIL_UNROLL_1 ++ ++TAIL_UNROLL_1: // loop_counter <= 1 ++ beqz loop_counter, MULTIPLYALPHA ++ ++ // Load row of B ++ FLOAD B00, 0*DATASIZE(B_row_ptr) ++ FLOAD B01, 1*DATASIZE(B_row_ptr) ++ FLOAD B02, 2*DATASIZE(B_row_ptr) ++ FLOAD B03, 3*DATASIZE(B_row_ptr) ++ ++ // Load A(:,l) ++ VLE A00, (A00_ptr) ++ VLE A10, (A10_ptr) ++ VLE A20, (A20_ptr) ++ VLE A30, (A30_ptr) ++ ++ vfmacc.vf AB00, B00, A00 // AB(0,:) += A(0,0) * B(0,:) ++ vfmacc.vf AB01, B01, A00 ++ vfmacc.vf AB02, B02, A00 ++ vfmacc.vf AB03, B03, A00 ++ ++ vfmacc.vf AB10, B00, A10 // AB(1,:) += A(1,0) * B(0,:) ++ vfmacc.vf AB11, B01, A10 ++ vfmacc.vf AB12, B02, A10 ++ vfmacc.vf AB13, B03, A10 ++ ++ vfmacc.vf AB20, B00, A20 // AB(2,:) += A(2,0) * B(0,:) ++ vfmacc.vf AB21, B01, A20 ++ vfmacc.vf AB22, B02, A20 ++ vfmacc.vf AB23, B03, A20 ++ ++ vfmacc.vf AB30, B00, A30 // AB(3,:) += A(3,0) * B(0,:) ++ vfmacc.vf AB31, B01, A30 ++ vfmacc.vf AB32, B02, A30 ++ vfmacc.vf AB33, B03, A30 ++ ++MULTIPLYALPHA: ++ FLOAD ALPHA, (a1) ++ ++ // Multiply with alpha ++ vfmul.vf AB00, AB00, ALPHA ++ vfmul.vf AB01, AB01, ALPHA ++ vfmul.vf AB02, AB02, ALPHA ++ vfmul.vf AB03, AB03, ALPHA ++ ++ vfmul.vf AB10, AB10, ALPHA ++ vfmul.vf AB11, AB11, ALPHA ++ vfmul.vf AB12, AB12, ALPHA ++ vfmul.vf AB13, AB13, ALPHA ++ ++ vfmul.vf AB20, AB20, ALPHA ++ vfmul.vf AB21, AB21, ALPHA ++ vfmul.vf AB22, AB22, ALPHA ++ vfmul.vf AB23, AB23, ALPHA ++ ++ vfmul.vf AB30, AB30, ALPHA ++ vfmul.vf AB31, AB31, ALPHA ++ vfmul.vf AB32, AB32, ALPHA ++ vfmul.vf AB33, AB33, ALPHA ++ ++MULTIPLYBETA: ++ FLOAD BETA, (a4) ++ FEQ tmp, BETA, fzero ++ beq tmp, zero, BETANOTZERO ++ ++BETAZERO: ++ VSE AB00, (C00_ptr) ++ VSE AB01, (C01_ptr) ++ VSE AB02, (C02_ptr) ++ VSE AB03, (C03_ptr) ++ ++ add C00_ptr, C10_ptr, rs_c // advance pointers to row 2*VLEN ++ add C01_ptr, C11_ptr, rs_c ++ add C02_ptr, C12_ptr, rs_c ++ add C03_ptr, C13_ptr, rs_c ++ ++ VSE AB10, (C10_ptr) ++ VSE AB11, (C11_ptr) ++ VSE AB12, (C12_ptr) ++ VSE AB13, (C13_ptr) ++ ++ add C10_ptr, C00_ptr, rs_c // advance pointers to row 3*VLEN ++ add C11_ptr, C01_ptr, rs_c ++ add C12_ptr, C02_ptr, rs_c ++ add C13_ptr, C03_ptr, rs_c ++ ++ VSE AB20, (C00_ptr) ++ VSE AB21, (C01_ptr) ++ VSE AB22, (C02_ptr) ++ VSE AB23, (C03_ptr) ++ ++ VSE AB30, (C10_ptr) ++ VSE AB31, (C11_ptr) ++ VSE AB32, (C12_ptr) ++ VSE AB33, (C13_ptr) ++ ++ j END ++ ++BETANOTZERO: ++ VLE C00, (C00_ptr) // Load C(0:VLEN-1, 0:3) ++ VLE C01, (C01_ptr) ++ VLE C02, (C02_ptr) ++ VLE C03, (C03_ptr) ++ ++ vfmacc.vf AB00, BETA, C00 ++ vfmacc.vf AB01, BETA, C01 ++ vfmacc.vf AB02, BETA, C02 ++ vfmacc.vf AB03, BETA, C03 ++ ++ VSE AB00, (C00_ptr) // Store C(0:VLEN-1, 0:3) ++ VSE AB01, (C01_ptr) ++ VSE AB02, (C02_ptr) ++ VSE AB03, (C03_ptr) ++ ++ add C00_ptr, C10_ptr, rs_c // advance pointers to row 2*VLEN ++ add C01_ptr, C11_ptr, rs_c ++ add C02_ptr, C12_ptr, rs_c ++ add C03_ptr, C13_ptr, rs_c ++ ++ VLE C10, (C10_ptr) // Load C(VLEN:2*VLEN-1, 0:3) ++ VLE C11, (C11_ptr) ++ VLE C12, (C12_ptr) ++ VLE C13, (C13_ptr) ++ ++ vfmacc.vf AB10, BETA, C10 ++ vfmacc.vf AB11, BETA, C11 ++ vfmacc.vf AB12, BETA, C12 ++ vfmacc.vf AB13, BETA, C13 ++ ++ VSE AB10, (C10_ptr) // Store C(VLEN:2*VLEN-1, 0:3) ++ VSE AB11, (C11_ptr) ++ VSE AB12, (C12_ptr) ++ VSE AB13, (C13_ptr) ++ ++ add C10_ptr, C00_ptr, rs_c // advance pointers to row 3*VLEN ++ add C11_ptr, C01_ptr, rs_c ++ add C12_ptr, C02_ptr, rs_c ++ add C13_ptr, C03_ptr, rs_c ++ ++ VLE C20, (C00_ptr) // Load C(2*VLEN:3*VLEN-1, 0:3) ++ VLE C21, (C01_ptr) ++ VLE C22, (C02_ptr) ++ VLE C23, (C03_ptr) ++ ++ vfmacc.vf AB20, BETA, C20 ++ vfmacc.vf AB21, BETA, C21 ++ vfmacc.vf AB22, BETA, C22 ++ vfmacc.vf AB23, BETA, C23 ++ ++ VSE AB20, (C00_ptr) // Store C(2*VLEN:3*VLEN-1, 0:3) ++ VSE AB21, (C01_ptr) ++ VSE AB22, (C02_ptr) ++ VSE AB23, (C03_ptr) ++ ++ VLE C30, (C10_ptr) // Load C(3*VLEN:4*VLEN-1, 0:3) ++ VLE C31, (C11_ptr) ++ VLE C32, (C12_ptr) ++ VLE C33, (C13_ptr) ++ ++ vfmacc.vf AB30, BETA, C30 ++ vfmacc.vf AB31, BETA, C31 ++ vfmacc.vf AB32, BETA, C32 ++ vfmacc.vf AB33, BETA, C33 ++ ++ VSE AB30, (C10_ptr) // Store C(3*VLEN:4*VLEN-1, 0:3) ++ VSE AB31, (C11_ptr) ++ VSE AB32, (C12_ptr) ++ VSE AB33, (C13_ptr) ++ ++END: ++ #include "rviv_restore_registers.h" ++ ret +diff --git a/kernels/rviv/3/bli_sgemm_rviv_4vx4.c b/kernels/rviv/3/bli_sgemm_rviv_4vx4.c +new file mode 100644 +index 000000000..c240d0391 +--- /dev/null ++++ b/kernels/rviv/3/bli_sgemm_rviv_4vx4.c +@@ -0,0 +1,80 @@ ++/* ++ ++ BLIS ++ An object-based framework for developing high-performance BLAS-like ++ libraries. ++ ++ Copyright (C) 2023, The University of Texas at Austin ++ ++ Redistribution and use in source and binary forms, with or without ++ modification, are permitted provided that the following conditions are ++ met: ++ - Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ - Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ - Neither the name(s) of the copyright holder(s) nor the names of its ++ contributors may be used to endorse or promote products derived ++ from this software without specific prior written permission. ++ ++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++ ++*/ ++ ++#include "bli_rviv_utils.h" ++ ++void bli_sgemm_rviv_asm_4vx4 ++ ( ++ intptr_t k, ++ const void* alpha, ++ const void* a, ++ const void* b, ++ const void* beta, ++ void* c, inc_t rs_c, inc_t cs_c ++ ); ++ ++void bli_sgemm_rviv_4vx4 ++ ( ++ dim_t m, ++ dim_t n, ++ dim_t k, ++ const void* alpha, ++ const void* a, ++ const void* b, ++ const void* beta, ++ void* c, inc_t rs_c, inc_t cs_c, ++ auxinfo_t* data, ++ const cntx_t* cntx ++ ) ++{ ++ // The assembly kernels always take native machine-sized integer arguments. ++ // dim_t and inc_t are normally defined as being machine-sized. If larger, assert. ++ bli_static_assert( sizeof(dim_t) <= sizeof(intptr_t) && ++ sizeof(inc_t) <= sizeof(intptr_t) ); ++ ++ // Extract vector-length dependent mr, nr that are fixed at configure time. ++ const inc_t mr = bli_cntx_get_blksz_def_dt( BLIS_FLOAT, BLIS_MR, cntx ); ++ const inc_t nr = 4; ++ ++ GEMM_UKR_SETUP_CT( s, mr, nr, false ); ++ ++ // The kernel assumes rs_c == 1, and the context should not deviate from it. ++ assert( rs_c == 1 ); ++ ++ bli_sgemm_rviv_asm_4vx4( k, alpha, a, b, beta, c, ++ get_vlenb(), cs_c * sizeof(float) ); ++ ++ GEMM_UKR_FLUSH_CT( s ); ++} +diff --git a/kernels/rviv/3/bli_sgemm_rviv_asm_4vx4.S b/kernels/rviv/3/bli_sgemm_rviv_asm_4vx4.S +new file mode 100644 +index 000000000..2a917fc8e +--- /dev/null ++++ b/kernels/rviv/3/bli_sgemm_rviv_asm_4vx4.S +@@ -0,0 +1,45 @@ ++/* ++ ++ BLIS ++ An object-based framework for developing high-performance BLAS-like ++ libraries. ++ ++ Copyright (C) 2023, The University of Texas at Austin ++ ++ Redistribution and use in source and binary forms, with or without ++ modification, are permitted provided that the following conditions are ++ met: ++ - Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ - Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ - Neither the name(s) of the copyright holder(s) nor the names of its ++ contributors may be used to endorse or promote products derived ++ from this software without specific prior written permission. ++ ++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++ ++*/ ++ ++#define REALNAME bli_sgemm_rviv_asm_4vx4 ++#define DATASIZE 4 ++#define VTYPE e32 ++#define FLOAD flw ++#define FZERO(fr) fcvt.s.w fr, x0 ++#define FEQ feq.s ++#define VLE vle32.v ++#define VSE vse32.v ++ ++#include "bli_sdgemm_rviv_asm_4vx4.h" +diff --git a/kernels/rviv/3/bli_zgemm_rviv_4vx4.c b/kernels/rviv/3/bli_zgemm_rviv_4vx4.c +new file mode 100644 +index 000000000..3d9940f9b +--- /dev/null ++++ b/kernels/rviv/3/bli_zgemm_rviv_4vx4.c +@@ -0,0 +1,80 @@ ++/* ++ ++ BLIS ++ An object-based framework for developing high-performance BLAS-like ++ libraries. ++ ++ Copyright (C) 2023, The University of Texas at Austin ++ ++ Redistribution and use in source and binary forms, with or without ++ modification, are permitted provided that the following conditions are ++ met: ++ - Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ - Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ - Neither the name(s) of the copyright holder(s) nor the names of its ++ contributors may be used to endorse or promote products derived ++ from this software without specific prior written permission. ++ ++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++*/ ++ ++#include "bli_rviv_utils.h" ++ ++void bli_zgemm_rviv_asm_4vx4 ++ ( ++ intptr_t k, ++ const void* alpha, ++ const void* a, ++ const void* b, ++ const void* beta, ++ void* c, intptr_t rs_c, intptr_t cs_c ++ ); ++ ++ ++void bli_zgemm_rviv_4vx4 ++ ( ++ dim_t m, ++ dim_t n, ++ dim_t k, ++ const void* alpha, ++ const void* a, ++ const void* b, ++ const void* beta, ++ void* c, inc_t rs_c, inc_t cs_c, ++ auxinfo_t* data, ++ const cntx_t* cntx ++ ) ++{ ++ // The assembly kernels always take native machine-sized integer arguments. ++ // dim_t and inc_t are normally defined as being machine-sized. If larger, assert. ++ bli_static_assert( sizeof(dim_t) <= sizeof(intptr_t) && ++ sizeof(inc_t) <= sizeof(intptr_t) ); ++ ++ // Extract vector-length dependent mr, nr that are fixed at configure time. ++ const inc_t mr = bli_cntx_get_blksz_def_dt( BLIS_DCOMPLEX, BLIS_MR, cntx ); ++ const inc_t nr = 4; ++ ++ GEMM_UKR_SETUP_CT( z, mr, nr, false ); ++ ++ // The kernel assumes rs_c == 1, and the context should not deviate from it. ++ assert( rs_c == 1 ); ++ ++ bli_zgemm_rviv_asm_4vx4( k, alpha, a, b, beta, c, ++ get_vlenb() * 2, cs_c * sizeof(dcomplex) ); ++ ++ GEMM_UKR_FLUSH_CT( z ); ++} +diff --git a/kernels/rviv/3/bli_zgemm_rviv_asm_4vx4.S b/kernels/rviv/3/bli_zgemm_rviv_asm_4vx4.S +new file mode 100644 +index 000000000..ae61a415d +--- /dev/null ++++ b/kernels/rviv/3/bli_zgemm_rviv_asm_4vx4.S +@@ -0,0 +1,44 @@ ++/* ++ ++ BLIS ++ An object-based framework for developing high-performance BLAS-like ++ libraries. ++ ++ Copyright (C) 2023, The University of Texas at Austin ++ ++ Redistribution and use in source and binary forms, with or without ++ modification, are permitted provided that the following conditions are ++ met: ++ - Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ - Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ - Neither the name(s) of the copyright holder(s) nor the names of its ++ contributors may be used to endorse or promote products derived ++ from this software without specific prior written permission. ++ ++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++*/ ++ ++#define REALNAME bli_zgemm_rviv_asm_4vx4 ++#define DATASIZE 16 ++#define VTYPE e64 ++#define FLOAD fld ++#define FZERO(fr) fcvt.d.w fr, x0 ++#define FEQ feq.d ++#define VLE vlseg2e64.v ++#define VSE vsseg2e64.v ++ ++#include "bli_czgemm_rviv_asm_4vx4.h" +diff --git a/kernels/rviv/3/rviv_restore_registers.h b/kernels/rviv/3/rviv_restore_registers.h +new file mode 100644 +index 000000000..bcf7d17c8 +--- /dev/null ++++ b/kernels/rviv/3/rviv_restore_registers.h +@@ -0,0 +1,77 @@ ++/* ++ ++ BLIS ++ An object-based framework for developing high-performance BLAS-like ++ libraries. ++ ++ Copyright (C) 2023, The University of Texas at Austin ++ ++ Redistribution and use in source and binary forms, with or without ++ modification, are permitted provided that the following conditions are ++ met: ++ - Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ - Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ - Neither the name(s) of the copyright holder(s) nor the names of its ++ contributors may be used to endorse or promote products derived ++ from this software without specific prior written permission. ++ ++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++*/ ++ ++ ++// 128-bit RISC-V is assumed to support the __riscv_xlen test macro ++#if __riscv_xlen == 128 // false if !defined(__riscv_xlen) ++ ++ lq s7, 112(sp) ++ lq s6, 96(sp) ++ lq s5, 80(sp) ++ lq s4, 64(sp) ++ lq s3, 48(sp) ++ lq s2, 32(sp) ++ lq s1, 16(sp) ++ lq s0, 0(sp) ++ addi sp, sp, 128 ++ ++// 64-bit RISC-V can be indicated by either __riscv_xlen == 64 or ++// RISCV_SIZE == 64, to support toolchains which do not currently ++// support __riscv_xlen. If a macro is undefined, it is considered 0. ++#elif __riscv_xlen == 64 || RISCV_SIZE == 64 ++ ++ ld s7, 56(sp) ++ ld s6, 48(sp) ++ ld s5, 40(sp) ++ ld s4, 32(sp) ++ ld s3, 24(sp) ++ ld s2, 16(sp) ++ ld s1, 8(sp) ++ ld s0, 0(sp) ++ addi sp, sp, 64 ++ ++#else ++// else 32-bit RISC-V is assumed ++ ++ lw s7, 28(sp) ++ lw s6, 24(sp) ++ lw s5, 20(sp) ++ lw s4, 16(sp) ++ lw s3, 12(sp) ++ lw s2, 8(sp) ++ lw s1, 4(sp) ++ lw s0, 0(sp) ++ addi sp, sp, 32 ++ ++#endif +diff --git a/kernels/rviv/3/rviv_save_registers.h b/kernels/rviv/3/rviv_save_registers.h +new file mode 100644 +index 000000000..537c76ca6 +--- /dev/null ++++ b/kernels/rviv/3/rviv_save_registers.h +@@ -0,0 +1,77 @@ ++/* ++ ++ BLIS ++ An object-based framework for developing high-performance BLAS-like ++ libraries. ++ ++ Copyright (C) 2023, The University of Texas at Austin ++ ++ Redistribution and use in source and binary forms, with or without ++ modification, are permitted provided that the following conditions are ++ met: ++ - Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ - Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ - Neither the name(s) of the copyright holder(s) nor the names of its ++ contributors may be used to endorse or promote products derived ++ from this software without specific prior written permission. ++ ++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++ ++*/ ++ ++// 128-bit RISC-V is assumed to support the __riscv_xlen test macro ++#if __riscv_xlen == 128 // false if !defined(__riscv_xlen) ++ ++ addi sp, sp, -128 ++ sq s7, 112(sp) ++ sq s6, 96(sp) ++ sq s5, 80(sp) ++ sq s4, 64(sp) ++ sq s3, 48(sp) ++ sq s2, 32(sp) ++ sq s1, 16(sp) ++ sq s0, 0(sp) ++ ++// 64-bit RISC-V can be indicated by either __riscv_xlen == 64 or ++// RISCV_SIZE == 64, to support toolchains which do not currently ++// support __riscv_xlen. If a macro is undefined, it is considered 0. ++#elif __riscv_xlen == 64 || RISCV_SIZE == 64 ++ ++ addi sp, sp, -64 ++ sd s7, 56(sp) ++ sd s6, 48(sp) ++ sd s5, 40(sp) ++ sd s4, 32(sp) ++ sd s3, 24(sp) ++ sd s2, 16(sp) ++ sd s1, 8(sp) ++ sd s0, 0(sp) ++ ++#else ++// else 32-bit RISC-V is assumed ++ ++ addi sp, sp, -32 ++ sw s7, 28(sp) ++ sw s6, 24(sp) ++ sw s5, 20(sp) ++ sw s4, 16(sp) ++ sw s3, 12(sp) ++ sw s2, 8(sp) ++ sw s1, 4(sp) ++ sw s0, 0(sp) ++ ++#endif +diff --git a/kernels/rviv/bli_kernels_rviv.h b/kernels/rviv/bli_kernels_rviv.h +new file mode 100644 +index 000000000..82a652396 +--- /dev/null ++++ b/kernels/rviv/bli_kernels_rviv.h +@@ -0,0 +1,38 @@ ++/* ++ ++ BLIS ++ An object-based framework for developing high-performance BLAS-like ++ libraries. ++ ++ Copyright (C) 2023, The University of Texas at Austin ++ ++ Redistribution and use in source and binary forms, with or without ++ modification, are permitted provided that the following conditions are ++ met: ++ - Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ - Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ - Neither the name(s) of the copyright holder(s) nor the names of its ++ contributors may be used to endorse or promote products derived ++ from this software without specific prior written permission. ++ ++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++*/ ++ ++GEMM_UKR_PROT( float, s, gemm_rviv_4vx4 ) ++GEMM_UKR_PROT( double, d, gemm_rviv_4vx4 ) ++GEMM_UKR_PROT( scomplex, c, gemm_rviv_4vx4 ) ++GEMM_UKR_PROT( dcomplex, z, gemm_rviv_4vx4 ) +diff --git a/travis/do_riscv.sh b/travis/do_riscv.sh +new file mode 100755 +index 000000000..a51d33061 +--- /dev/null ++++ b/travis/do_riscv.sh +@@ -0,0 +1,36 @@ ++#!/bin/bash ++ ++set -e ++set -x ++ ++TAG=2023.02.25 ++ ++# The prebuilt toolchains only support hardfloat, so we only ++# test these for now. ++case $1 in ++ "rv32iv") ++ TARBALL=riscv32-glibc-ubuntu-20.04-nightly-${TAG}-nightly.tar.gz ++ ;; ++ "rv64iv") ++ TARBALL=riscv64-glibc-ubuntu-20.04-nightly-${TAG}-nightly.tar.gz ++ ;; ++ *) ++ exit 1 ++ ;; ++esac ++ ++TOOLCHAIN_PATH=$DIST_PATH/../toolchain ++TOOLCHAIN_URL=https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/${TAG}/${TARBALL} ++ ++mkdir -p $TOOLCHAIN_PATH ++cd $TOOLCHAIN_PATH ++ ++wget $TOOLCHAIN_URL ++tar -xf $TARBALL ++ ++# Once CI upgrades to jammy, the next three lines can be removed. ++# The qemu version installed via packages (qemu-user qemu-user-binfmt) ++# is sufficient. ++TARBALL_QEMU=qemu-riscv-2023.02.25-ubuntu-20.04.tar.gz ++wget https://github.com/flame/ci-utils/raw/master/riscv/${TARBALL_QEMU} ++tar -xf $TARBALL_QEMU +diff --git a/frame/base/bli_riscv_cpuid.h b/build/detect/riscv/bli_riscv_cpuid.h +similarity index 100% +rename from frame/base/bli_riscv_cpuid.h +rename to build/detect/riscv/bli_riscv_cpuid.h +diff --git a/build/detect/riscv/bli_riscv_detect_abi.h b/build/detect/riscv/bli_riscv_detect_abi.h +new file mode 100644 +index 000000000..a5a373926 +--- /dev/null ++++ b/build/detect/riscv/bli_riscv_detect_abi.h +@@ -0,0 +1,63 @@ ++/* ++ ++ BLIS ++ An object-based framework for developing high-performance BLAS-like ++ libraries. ++ ++ Copyright (C) 2023, The University of Texas at Austin ++ ++ Redistribution and use in source and binary forms, with or without ++ modification, are permitted provided that the following conditions are ++ met: ++ - Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ - Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ - Neither the name(s) of the copyright holder(s) nor the names of its ++ contributors may be used to endorse or promote products derived ++ from this software without specific prior written permission. ++ ++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++ ++*/ ++ ++/* Construct a RISC-V ABI string based on available features. */ ++ ++#if __riscv ++ ++#define CAT2(a,b) a##b ++#define CAT(a,b) CAT2(a,b) ++ ++#if __riscv_xlen == 32 ++#define RISCV_INT_ABI ilp32 ++#else ++#define RISCV_INT_ABI lp64 ++#endif ++ ++#if __riscv_abi_rve ++CAT(RISCV_INT_ABI, e) ++#elif __riscv_float_abi_soft ++RISCV_INT_ABI ++#elif __riscv_float_abi_single ++CAT(RISCV_INT_ABI, f) ++#elif __riscv_float_abi_double ++CAT(RISCV_INT_ABI, d) ++#elif __riscv_float_abi_quad ++CAT(RISCV_INT_ABI, q) ++#else ++#error "Unknown RISC-V ABI" ++#endif ++ ++#endif /* __riscv */ +diff --git a/frame/base/bli_riscv_detect_arch.h b/build/detect/riscv/bli_riscv_detect_arch.h +similarity index 72% +rename from frame/base/bli_riscv_detect_arch.h +rename to build/detect/riscv/bli_riscv_detect_arch.h +index 448b0f39d..55542f508 100644 +--- a/frame/base/bli_riscv_detect_arch.h ++++ b/build/detect/riscv/bli_riscv_detect_arch.h +@@ -75,6 +75,12 @@ + #define RISCV_D + #endif + ++#if __riscv_flen >= 128 ++#define RISCV_Q q ++#else ++#define RISCV_Q ++#endif ++ + #if __riscv_c + #define RISCV_C c + #else +@@ -94,6 +100,47 @@ + #define RISCV_V + #endif + ++/* No test currently for Zicsr, which was removed from the base ISA, ++ but F implies Zicsr */ ++#if __riscv_f ++#define RISCV_ZICSR _zicsr ++#else ++#define RISCV_ZICSR ++#endif ++ ++/* No test currently for Zifencei, which was removed from the base ISA */ ++#define RISCV_ZIFENCEI ++ ++#if __riscv_zba ++#define RISCV_ZBA _zba ++#else ++#define RISCV_ZBA ++#endif ++ ++#if __riscv_zbb ++#define RISCV_ZBB _zbb ++#else ++#define RISCV_ZBB ++#endif ++ ++#if __riscv_zbc ++#define RISCV_ZBC _zbc ++#else ++#define RISCV_ZBC ++#endif ++ ++#if __riscv_zbs ++#define RISCV_ZBS _zbs ++#else ++#define RISCV_ZBS ++#endif ++ ++#if __riscv_zfh ++#define RISCV_ZFH _zfh ++#else ++#define RISCV_ZFH ++#endif ++ + #else /* __riscv_arch_test */ + + /* We assume I and E are exclusive when __riscv_arch_test isn't defined */ +@@ -129,6 +176,12 @@ + #define RISCV_D + #endif + ++#if __riscv_flen >= 128 ++#define RISCV_Q q ++#else ++#define RISCV_Q ++#endif ++ + #if __riscv_compressed + #define RISCV_C c + #else +@@ -144,12 +197,29 @@ + #define RISCV_V + #endif + ++/* No test currently for Zicsr, which was removed from the base ISA, but ++ F implies Zicsr */ ++#if __riscv_flen >= 32 ++#define RISCV_ZICSR _zicsr ++#else ++#define RISCV_ZICSR ++#endif ++ ++#define RISCV_ZIFENCEI ++#define RISCV_ZBA ++#define RISCV_ZBB ++#define RISCV_ZBC ++#define RISCV_ZBS ++#define RISCV_ZFH ++ + #endif /* __riscv_arch_test */ + + #define CAT2(a,b) a##b + #define CAT(a,b) CAT2(a,b) + + CAT(rv, CAT(__riscv_xlen, CAT(RISCV_I, CAT(RISCV_E, CAT(RISCV_M, CAT(RISCV_A, +-CAT(RISCV_F, CAT(RISCV_D, CAT(RISCV_C, CAT(RISCV_P, RISCV_V)))))))))) ++CAT(RISCV_F, CAT(RISCV_D, CAT(RISCV_Q, CAT(RISCV_C, CAT(RISCV_P, CAT(RISCV_V, ++CAT(RISCV_ZICSR, CAT(RISCV_ZIFENCEI, CAT(RISCV_ZBA, CAT(RISCV_ZBB, ++CAT(RISCV_ZBC, CAT(RISCV_ZBS, RISCV_ZFH)))))))))))))))))) + + #endif /* __riscv */ +diff --git a/config/rv32i/make_defs.mk b/config/rv32i/make_defs.mk +index 86b7143dd..21128717f 100644 +--- a/config/rv32i/make_defs.mk ++++ b/config/rv32i/make_defs.mk +@@ -46,9 +46,17 @@ THIS_CONFIG := rv32i + # general-purpose/configuration-agnostic flags in common.mk. You + # may specify additional flags here as needed. + CPPROCFLAGS := -DRISCV_SIZE=32 +-# Atomic instructions must be enabled either via hardware +-# (-march=rv32ia) or by linking against libatomic +-CMISCFLAGS := -march=$(shell $(CC) -E frame/base/bli_riscv_detect_arch.h | grep '^[^\#]') -mabi=ilp32 ++ ++RISCV_ARCH := $(shell $(CC) -E build/detect/riscv/bli_riscv_detect_arch.h | grep '^[^\#]') ++RISCV_ABI := $(shell $(CC) -E build/detect/riscv/bli_riscv_detect_abi.h | grep '^[^\#]') ++ ++ifeq (,$(findstring 32,$(RISCV_ARCH))) ++$(error The RISC-V compiler architecture $(RISCV_ARCH) is not compatible with $(THIS_CONFIG)) ++else ifeq (,$(findstring 32,$(RISCV_ABI))) ++$(error The RISC-V compiler ABI $(RISCV_ABI) is not compatible with $(THIS_CONFIG)) ++endif ++ ++CMISCFLAGS := -march=$(RISCV_ARCH) -mabi=$(RISCV_ABI) + CPICFLAGS := + CWARNFLAGS := -Wall -Wno-unused-function -Wfatal-errors + +diff --git a/config/rv32iv/make_defs.mk b/config/rv32iv/make_defs.mk +index e8d9cca57..9daaee3d6 100644 +--- a/config/rv32iv/make_defs.mk ++++ b/config/rv32iv/make_defs.mk +@@ -46,9 +46,17 @@ THIS_CONFIG := rv32iv + # general-purpose/configuration-agnostic flags in common.mk. You + # may specify additional flags here as needed. + CPPROCFLAGS := -DRISCV_SIZE=32 +-# Atomic instructions must be enabled either via hardware +-# (-march=rv32iav) or by linking against libatomic +-CMISCFLAGS := -march=$(shell $(CC) -DFORCE_RISCV_VECTOR -E frame/base/bli_riscv_detect_arch.h | grep '^[^\#]') -mabi=ilp32d ++ ++RISCV_ARCH := $(shell $(CC) -DFORCE_RISCV_VECTOR -E build/detect/riscv/bli_riscv_detect_arch.h | grep '^[^\#]') ++RISCV_ABI := $(shell $(CC) -DFORCE_RISCV_VECTOR -E build/detect/riscv/bli_riscv_detect_abi.h | grep '^[^\#]') ++ ++ifeq (,$(findstring 32,$(RISCV_ARCH))) ++$(error The RISC-V compiler architecture $(RISCV_ARCH) is not compatible with $(THIS_CONFIG)) ++else ifeq (,$(findstring 32,$(RISCV_ABI))) ++$(error The RISC-V compiler ABI $(RISCV_ABI) is not compatible with $(THIS_CONFIG)) ++endif ++ ++CMISCFLAGS := -march=$(RISCV_ARCH) -mabi=$(RISCV_ABI) + CPICFLAGS := + CWARNFLAGS := -Wall -Wno-unused-function -Wfatal-errors + +diff --git a/config/rv64i/make_defs.mk b/config/rv64i/make_defs.mk +index bee21ed0d..7c055f012 100644 +--- a/config/rv64i/make_defs.mk ++++ b/config/rv64i/make_defs.mk +@@ -46,7 +46,17 @@ THIS_CONFIG := rv64i + # general-purpose/configuration-agnostic flags in common.mk. You + # may specify additional flags here as needed. + CPPROCFLAGS := -DRISCV_SIZE=64 +-CMISCFLAGS := -march=$(shell $(CC) -E frame/base/bli_riscv_detect_arch.h | grep '^[^\#]') -mabi=lp64 ++ ++RISCV_ARCH := $(shell $(CC) -E build/detect/riscv/bli_riscv_detect_arch.h | grep '^[^\#]') ++RISCV_ABI := $(shell $(CC) -E build/detect/riscv/bli_riscv_detect_abi.h | grep '^[^\#]') ++ ++ifeq (,$(findstring 64,$(RISCV_ARCH))) ++$(error The RISC-V compiler architecture $(RISCV_ARCH) is not compatible with $(THIS_CONFIG)) ++else ifeq (,$(findstring 64,$(RISCV_ABI))) ++$(error The RISC-V compiler ABI $(RISCV_ABI) is not compatible with $(THIS_CONFIG)) ++endif ++ ++CMISCFLAGS := -march=$(RISCV_ARCH) -mabi=$(RISCV_ABI) + CPICFLAGS := + CWARNFLAGS := -Wall -Wno-unused-function -Wfatal-errors + +diff --git a/config/rv64iv/make_defs.mk b/config/rv64iv/make_defs.mk +index 1c9849fbe..9ec5a889a 100644 +--- a/config/rv64iv/make_defs.mk ++++ b/config/rv64iv/make_defs.mk +@@ -46,7 +46,17 @@ THIS_CONFIG := rv64iv + # general-purpose/configuration-agnostic flags in common.mk. You + # may specify additional flags here as needed. + CPPROCFLAGS := -DRISCV_SIZE=64 +-CMISCFLAGS := -march=$(shell $(CC) -DFORCE_RISCV_VECTOR -E frame/base/bli_riscv_detect_arch.h | grep '^[^\#]') -mabi=lp64d ++ ++RISCV_ARCH := $(shell $(CC) -DFORCE_RISCV_VECTOR -E build/detect/riscv/bli_riscv_detect_arch.h | grep '^[^\#]') ++RISCV_ABI := $(shell $(CC) -DFORCE_RISCV_VECTOR -E build/detect/riscv/bli_riscv_detect_abi.h | grep '^[^\#]') ++ ++ifeq (,$(findstring 64,$(RISCV_ARCH))) ++$(error The RISC-V compiler architecture $(RISCV_ARCH) is not compatible with $(THIS_CONFIG)) ++else ifeq (,$(findstring 64,$(RISCV_ABI))) ++$(error The RISC-V compiler ABI $(RISCV_ABI) is not compatible with $(THIS_CONFIG)) ++endif ++ ++CMISCFLAGS := -march=$(RISCV_ARCH) -mabi=$(RISCV_ABI) + CPICFLAGS := + CWARNFLAGS := -Wall -Wno-unused-function -Wfatal-errors + +diff --git a/configure b/configure +index 6938d47cd..f87093cad 100755 +--- a/configure ++++ b/configure +@@ -1252,7 +1252,7 @@ auto_detect() + # Special case for RISC-V, whose architecture can be detected with + # preprocessor macros alone. This avoids having to run RISC-V binaries + # on a cross-compiler host. Returns "generic" if RISC-V not detected. +- riscv_config=$(${cmd} -E "${dist_path}/frame/base/bli_riscv_cpuid.h" | ++ riscv_config=$(${cmd} -E "${dist_path}/build/detect/riscv/bli_riscv_cpuid.h" | + grep '^[^#]') + if [[ $riscv_config != *generic* ]]; then + echo "${riscv_config}" diff --git a/easybuild/easyconfigs/b/BLIS/BLIS-1.0-GCC-13.2.0.eb b/easybuild/easyconfigs/b/BLIS/BLIS-1.0-GCC-13.2.0.eb new file mode 100644 index 00000000000..4ebb0543a39 --- /dev/null +++ b/easybuild/easyconfigs/b/BLIS/BLIS-1.0-GCC-13.2.0.eb @@ -0,0 +1,33 @@ +easyblock = 'ConfigureMake' + +name = 'BLIS' +version = '1.0' + +homepage = 'https://github.com/flame/blis/' +description = """BLIS is a portable software framework for instantiating high-performance +BLAS-like dense linear algebra libraries.""" + +toolchain = {'name': 'GCC', 'version': '13.2.0'} + +source_urls = ['https://github.com/flame/blis/archive/'] +sources = ['%(version)s.tar.gz'] +checksums = ['9c12972aa1e50f64ca61684eba6828f2f3dd509384b1e41a1e8a9aedea4b16a6'] + +builddependencies = [ + ('Python', '3.11.5'), + ('Perl', '5.38.0'), +] + +configopts = '--enable-cblas --enable-threading=openmp --enable-shared CC="$CC" auto' + +runtest = 'check' + +sanity_check_paths = { + 'files': ['include/blis/cblas.h', 'include/blis/blis.h', + 'lib/libblis.a', 'lib/libblis.%s' % SHLIB_EXT], + 'dirs': [], +} + +modextrapaths = {'CPATH': 'include/blis'} + +moduleclass = 'numlib' diff --git a/easybuild/easyconfigs/b/BLIS/BLIS-1.0-GCC-13.3.0.eb b/easybuild/easyconfigs/b/BLIS/BLIS-1.0-GCC-13.3.0.eb new file mode 100644 index 00000000000..18d8ec6c887 --- /dev/null +++ b/easybuild/easyconfigs/b/BLIS/BLIS-1.0-GCC-13.3.0.eb @@ -0,0 +1,33 @@ +easyblock = 'ConfigureMake' + +name = 'BLIS' +version = '1.0' + +homepage = 'https://github.com/flame/blis/' +description = """BLIS is a portable software framework for instantiating high-performance +BLAS-like dense linear algebra libraries.""" + +toolchain = {'name': 'GCC', 'version': '13.3.0'} + +source_urls = ['https://github.com/flame/blis/archive/'] +sources = ['%(version)s.tar.gz'] +checksums = ['9c12972aa1e50f64ca61684eba6828f2f3dd509384b1e41a1e8a9aedea4b16a6'] + +builddependencies = [ + ('Python', '3.12.3'), + ('Perl', '5.38.2'), +] + +configopts = '--enable-cblas --enable-threading=openmp --enable-shared CC="$CC" auto' + +runtest = 'check' + +sanity_check_paths = { + 'files': ['include/blis/cblas.h', 'include/blis/blis.h', + 'lib/libblis.a', 'lib/libblis.%s' % SHLIB_EXT], + 'dirs': [], +} + +modextrapaths = {'CPATH': 'include/blis'} + +moduleclass = 'numlib' diff --git a/easybuild/easyconfigs/b/BWA/BWA-0.7.18-GCCcore-12.3.0.eb b/easybuild/easyconfigs/b/BWA/BWA-0.7.18-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..a5599e37642 --- /dev/null +++ b/easybuild/easyconfigs/b/BWA/BWA-0.7.18-GCCcore-12.3.0.eb @@ -0,0 +1,52 @@ +## +# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild +# +# Copyright:: Copyright 2012-2014 Cyprus Institute / CaSToRC, Uni.Lu/LCSB, NTUA +# Authors:: George Tsouloupas , Fotis Georgatos +# License:: MIT/GPL +# $Id$ +# +# This work implements a part of the HPCBIOS project and is a component of the policy: +# http://hpcbios.readthedocs.org/en/latest/HPCBIOS_2012-94.html +# +# Version >= 0.7.15 +# Author: Adam Huffman +# The Francis Crick Institute +# +# Note that upstream development is mainly at: https://github.com/lh3/bwa +# +# 0.7.18 +# Erica Bianco (HPCNow!) +## + +name = 'BWA' +version = '0.7.18' + +homepage = 'http://bio-bwa.sourceforge.net/' +description = """ + Burrows-Wheeler Aligner (BWA) is an efficient program that aligns relatively + short nucleotide sequences against a long reference sequence such as the human + genome. +""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/lh3/%(name)s/archive/'] +sources = ['v%(version)s.tar.gz'] +checksums = ['194788087f7b9a77c0114aa481b2ef21439f6abab72488c83917302e8d0e7870'] + +builddependencies = [('binutils', '2.40')] + +dependencies = [ + ('Perl', '5.36.1'), + ('zlib', '1.2.13'), +] + +# Allow use of x86 intrinsics on PPC +prebuildopts = 'export CFLAGS="$CFLAGS -fcommon -DNO_WARN_X86_INTRINSICS" && ' +prebuildopts += "sed -i 's|^CC=|#CC=|g' Makefile && " +prebuildopts += "sed -i 's|^CFLAGS=|#CFLAGS=|g' Makefile && " +prebuildopts += "sed -i 's|^LIBS=|LIBS= $(LDFLAGS) |g' Makefile && " + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/b/Bazel/Bazel-6.1.0-GCCcore-12.3.0.eb b/easybuild/easyconfigs/b/Bazel/Bazel-6.1.0-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..1bacc7b9363 --- /dev/null +++ b/easybuild/easyconfigs/b/Bazel/Bazel-6.1.0-GCCcore-12.3.0.eb @@ -0,0 +1,29 @@ +name = 'Bazel' +version = '6.1.0' + +homepage = 'https://bazel.io/' +description = """Bazel is a build tool that builds code quickly and reliably. +It is used to build the majority of Google's software.""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +source_urls = ['https://github.com/bazelbuild/%(namelower)s/releases/download/%(version)s'] +sources = ['%(namelower)s-%(version)s-dist.zip'] +patches = ['Bazel-6.3.1_add-symlinks-in-runfiles.patch'] +checksums = [ + {'bazel-6.1.0-dist.zip': 'c4b85675541cf66ee7cb71514097fdd6c5fc0e02527243617a4f20ca6b4f2932'}, + {'Bazel-6.3.1_add-symlinks-in-runfiles.patch': '81db53aa87229557480b6f719c99a0f1af9c69dfec12185451e520b0128c3ae2'}, +] + +builddependencies = [ + ('binutils', '2.40'), + ('Python', '3.11.3'), + ('Zip', '3.0'), +] + +dependencies = [('Java', '11', '', SYSTEM)] + +runtest = True +testopts = "-- //examples/cpp:hello-success_test //examples/py/... //examples/py_native:test //examples/shell/..." + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/b/BeautifulSoup/BeautifulSoup-4.12.2-GCCcore-12.3.0.eb b/easybuild/easyconfigs/b/BeautifulSoup/BeautifulSoup-4.12.2-GCCcore-12.3.0.eb index cc388eeb4ca..8d4556012b6 100644 --- a/easybuild/easyconfigs/b/BeautifulSoup/BeautifulSoup-4.12.2-GCCcore-12.3.0.eb +++ b/easybuild/easyconfigs/b/BeautifulSoup/BeautifulSoup-4.12.2-GCCcore-12.3.0.eb @@ -9,12 +9,12 @@ description = "Beautiful Soup is a Python library designed for quick turnaround toolchain = {'name': 'GCCcore', 'version': '12.3.0'} builddependencies = [ - ('binutils', '2.40') + ('binutils', '2.40'), + ('hatchling', '1.18.0'), ] dependencies = [ ('Python', '3.11.3'), - ('hatchling', '1.18.0'), ] use_pip = True diff --git a/easybuild/easyconfigs/b/BeautifulSoup/BeautifulSoup-4.12.2-GCCcore-13.2.0.eb b/easybuild/easyconfigs/b/BeautifulSoup/BeautifulSoup-4.12.2-GCCcore-13.2.0.eb index 4aeb23721ad..bbf74453cfd 100644 --- a/easybuild/easyconfigs/b/BeautifulSoup/BeautifulSoup-4.12.2-GCCcore-13.2.0.eb +++ b/easybuild/easyconfigs/b/BeautifulSoup/BeautifulSoup-4.12.2-GCCcore-13.2.0.eb @@ -9,12 +9,12 @@ description = "Beautiful Soup is a Python library designed for quick turnaround toolchain = {'name': 'GCCcore', 'version': '13.2.0'} builddependencies = [ - ('binutils', '2.40') + ('binutils', '2.40'), + ('hatchling', '1.18.0'), ] dependencies = [ ('Python', '3.11.5'), - ('hatchling', '1.18.0'), ] use_pip = True diff --git a/easybuild/easyconfigs/b/Bio-FeatureIO/Bio-FeatureIO-1.6.905-GCCcore-12.3.0.eb b/easybuild/easyconfigs/b/Bio-FeatureIO/Bio-FeatureIO-1.6.905-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..703507a8069 --- /dev/null +++ b/easybuild/easyconfigs/b/Bio-FeatureIO/Bio-FeatureIO-1.6.905-GCCcore-12.3.0.eb @@ -0,0 +1,55 @@ +easyblock = 'PerlModule' + +name = 'Bio-FeatureIO' +version = '1.6.905' + +homepage = 'https://metacpan.org/pod/Bio::FeatureIO' +description = "An I/O iterator subsystem for genomic sequence features" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +builddependencies = [('binutils', '2.40')] + +dependencies = [ + ('Perl', '5.36.1'), + ('Perl-bundle-CPAN', '5.36.1'), + ('BioPerl', '1.7.8'), +] + +exts_defaultclass = 'PerlModule' +exts_filter = ("perldoc -lm %(ext_name)s ", "") + +exts_list = [ + ('XML::XPathEngine', '0.14', { + 'source_urls': ['https://cpan.metacpan.org/authors/id/M/MI/MIROD/'], + 'sources': ['XML-XPathEngine-%(version)s.tar.gz'], + 'checksums': ['d2fe7bcbbd0beba1444f4a733401e7b8aa5282fad4266d42735dd74582b2e264'], + }), + ('XML::DOM::XPath', '0.14', { + 'patches': ['XML-DOM-XPath-0.14_fix-test.patch'], + 'source_urls': ['https://cpan.metacpan.org/authors/id/M/MI/MIROD'], + 'sources': ['XML-DOM-XPath-%(version)s.tar.gz'], + 'checksums': [ + {'XML-DOM-XPath-0.14.tar.gz': '0173a74a515211997a3117a47e7b9ea43594a04b865b69da5a71c0886fa829ea'}, + {'XML-DOM-XPath-0.14_fix-test.patch': 'c93f3e4bf3ead76dd1a167cee963cc81cd5409ea95d3c6a01d93369f4267648e'}, + ], + }), + ('Bio::FeatureIO', version, { + 'source_urls': ['https://cpan.metacpan.org/authors/id/C/CJ/CJFIELDS/'], + 'sources': ['Bio-FeatureIO-%(version)s.tar.gz'], + 'checksums': ['322e5757b374f2fb90b8f20bdbdc75631f5cb4d122f81a4d35c3a177cf950c7a'], + }), +] + +options = {'modulename': 'Bio::FeatureIO'} + +modextrapaths = { + 'PERL5LIB': 'lib/perl5/site_perl/%(perlver)s/', +} + +sanity_check_paths = { + 'files': ['lib/perl5/site_perl/%(perlver)s/Bio/FeatureIO.pm'], + 'dirs': ['lib/perl5/site_perl/%(perlver)s/Bio/FeatureIO'], +} + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/b/Bio-FeatureIO/XML-DOM-XPath-0.14_fix-test.patch b/easybuild/easyconfigs/b/Bio-FeatureIO/XML-DOM-XPath-0.14_fix-test.patch new file mode 100644 index 00000000000..164f74f9cc3 --- /dev/null +++ b/easybuild/easyconfigs/b/Bio-FeatureIO/XML-DOM-XPath-0.14_fix-test.patch @@ -0,0 +1,16 @@ +fix for failing test: + The encoding pragma is no longer supported. Check cperl at t/test_non_ascii.t line 10. + BEGIN failed--compilation aborted at t/test_non_ascii.t line 10. +see https://rt.cpan.org/Public/Bug/Display.html?id=115098 +diff -rup XML-DOM-XPath-0.14-_1HaPx-orig/t/test_non_ascii.t XML-DOM-XPath-0.14-_1HaPx/t/test_non_ascii.t +--- XML-DOM-XPath-0.14-_1HaPx-orig/t/test_non_ascii.t 2016-07-14 22:05:39.000000000 -0700 ++++ XML-DOM-XPath-0.14-_1HaPx/t/test_non_ascii.t 2016-07-14 22:05:56.000000000 -0700 +@@ -7,7 +7,7 @@ use strict; + use Test::More tests => 10; + use XML::DOM::XPath; + +-use encoding 'utf8'; ++use utf8; + + my $display_warning=0; + diff --git a/easybuild/easyconfigs/b/Bison/Bison-3.8.2-GCCcore-13.3.0.eb b/easybuild/easyconfigs/b/Bison/Bison-3.8.2-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..168af69373e --- /dev/null +++ b/easybuild/easyconfigs/b/Bison/Bison-3.8.2-GCCcore-13.3.0.eb @@ -0,0 +1,28 @@ +easyblock = 'ConfigureMake' + +name = 'Bison' +version = '3.8.2' + +homepage = 'https://www.gnu.org/software/bison' +description = """Bison is a general-purpose parser generator that converts an annotated context-free grammar + into a deterministic LR or generalized LR (GLR) parser employing LALR(1) parser tables.""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = [GNU_SOURCE] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['06c9e13bdf7eb24d4ceb6b59205a4f67c2c7e7213119644430fe82fbd14a0abb'] + +builddependencies = [ + ('M4', '1.4.19'), + # use same binutils version that was used when building GCCcore toolchain + ('binutils', '2.42', '', SYSTEM), +] + + +sanity_check_paths = { + 'files': ['bin/%s' % x for x in ['bison', 'yacc']] + [('lib/liby.a', 'lib64/liby.a')], + 'dirs': [], +} + +moduleclass = 'lang' diff --git a/easybuild/easyconfigs/b/Bison/Bison-3.8.2-GCCcore-14.1.0.eb b/easybuild/easyconfigs/b/Bison/Bison-3.8.2-GCCcore-14.1.0.eb new file mode 100644 index 00000000000..dc255caae50 --- /dev/null +++ b/easybuild/easyconfigs/b/Bison/Bison-3.8.2-GCCcore-14.1.0.eb @@ -0,0 +1,28 @@ +easyblock = 'ConfigureMake' + +name = 'Bison' +version = '3.8.2' + +homepage = 'https://www.gnu.org/software/bison' +description = """Bison is a general-purpose parser generator that converts an annotated context-free grammar + into a deterministic LR or generalized LR (GLR) parser employing LALR(1) parser tables.""" + +toolchain = {'name': 'GCCcore', 'version': '14.1.0'} + +source_urls = [GNU_SOURCE] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['06c9e13bdf7eb24d4ceb6b59205a4f67c2c7e7213119644430fe82fbd14a0abb'] + +builddependencies = [ + ('M4', '1.4.19'), + # use same binutils version that was used when building GCCcore toolchain + ('binutils', '2.42', '', SYSTEM), +] + + +sanity_check_paths = { + 'files': ['bin/%s' % x for x in ['bison', 'yacc']] + [('lib/liby.a', 'lib64/liby.a')], + 'dirs': [], +} + +moduleclass = 'lang' diff --git a/easybuild/easyconfigs/b/Boost/Boost-1.74.0-GCC-12.3.0.eb b/easybuild/easyconfigs/b/Boost/Boost-1.74.0-GCC-12.3.0.eb new file mode 100644 index 00000000000..3c078f88361 --- /dev/null +++ b/easybuild/easyconfigs/b/Boost/Boost-1.74.0-GCC-12.3.0.eb @@ -0,0 +1,35 @@ +## +# Authors:: Denis Kristak , Pavel Tománek (INUITS) +## +name = 'Boost' +version = '1.74.0' + +homepage = 'https://www.boost.org/' +description = """Boost provides free peer-reviewed portable C++ source libraries.""" + +toolchain = {'name': 'GCC', 'version': '12.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://boostorg.jfrog.io/artifactory/main/release/%(version)s/source/'] +sources = ['%%(namelower)s_%s.tar.gz' % '_'.join(version.split('.'))] +patches = ['Boost-%(version)s-library_version_type_serialization.patch'] +checksums = [ + {'boost_1_74_0.tar.gz': 'afff36d392885120bcac079148c177d1f6f7730ec3d47233aa51b0afa4db94a5'}, + {'Boost-1.74.0-library_version_type_serialization.patch': + 'ee61e889ce9473ad82b69c9a8cbe1bf9650d633b74fdf7e4f4a4825aa990feca'}, +] + +dependencies = [ + ('bzip2', '1.0.8'), + ('zlib', '1.2.13'), + ('XZ', '5.4.2'), + ('zstd', '1.5.5'), +] + +configopts = '--without-libraries=python,mpi' + +# disable MPI, build Boost libraries with tagged layout +boost_mpi = False +tagged_layout = True + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/b/Boost/Boost-1.85.0-GCC-13.3.0.eb b/easybuild/easyconfigs/b/Boost/Boost-1.85.0-GCC-13.3.0.eb new file mode 100644 index 00000000000..10518dc36a3 --- /dev/null +++ b/easybuild/easyconfigs/b/Boost/Boost-1.85.0-GCC-13.3.0.eb @@ -0,0 +1,31 @@ +## +# Authors:: Denis Kristak +## +name = 'Boost' +version = '1.85.0' + +homepage = 'https://www.boost.org/' +description = """Boost provides free peer-reviewed portable C++ source libraries.""" + +toolchain = {'name': 'GCC', 'version': '13.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://boostorg.jfrog.io/artifactory/main/release/%(version)s/source/'] +sources = ['%%(namelower)s_%s.tar.gz' % '_'.join(version.split('.'))] +checksums = ['be0d91732d5b0cc6fbb275c7939974457e79b54d6f07ce2e3dfdd68bef883b0b'] + +dependencies = [ + ('bzip2', '1.0.8'), + ('zlib', '1.3.1'), + ('XZ', '5.4.5'), + ('zstd', '1.5.6'), + ('ICU', '75.1'), +] + +configopts = '--without-libraries=python,mpi' + +# disable MPI, build Boost libraries with tagged layout +boost_mpi = False +tagged_layout = True + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/b/Braindecode/Braindecode-0.8.1-foss-2023a-PyTorch-2.1.2-CUDA-12.1.1.eb b/easybuild/easyconfigs/b/Braindecode/Braindecode-0.8.1-foss-2023a-PyTorch-2.1.2-CUDA-12.1.1.eb new file mode 100644 index 00000000000..80012266f49 --- /dev/null +++ b/easybuild/easyconfigs/b/Braindecode/Braindecode-0.8.1-foss-2023a-PyTorch-2.1.2-CUDA-12.1.1.eb @@ -0,0 +1,47 @@ +easyblock = 'PythonBundle' + +name = 'Braindecode' +version = '0.8.1' +local_torch_version = '2.1.2' +versionsuffix = '-PyTorch-' + local_torch_version + '-CUDA-%(cudaver)s' + +homepage = 'https://braindecode.org/' +description = """Braindecode is an open-source Python toolbox for decoding raw +electrophysiological brain data with deep learning models. It includes dataset +fetchers, data preprocessing and visualization tools, as well as +implementations of several deep learning architectures and data augmentations +for analysis of EEG, ECoG and MEG.""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +dependencies = [ + ('CUDA', '12.1.1', '', SYSTEM), + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), + ('einops', '0.7.0'), + ('h5py', '3.9.0'), + ('matplotlib', '3.7.2'), + ('MNE-Python', '1.6.1'), + ('MOABB', '1.0.0'), + ('skorch', '0.15.0', versionsuffix), +] + +use_pip = True + +exts_list = [ + ('docstring-inheritance', '2.1.2', { + 'modulename': 'docstring_inheritance', + 'checksums': ['ac9af95a7b06a305d43720274d0e62523d23f835bf94ce2bb814687e6fe3957b'], + }), + ('torchinfo', '1.8.0', { + 'checksums': ['72e94b0e9a3e64dc583a8e5b7940b8938a1ac0f033f795457f27e6f4e7afa2e9'], + }), + ('braindecode', version, { + 'use_pip_extras': 'moabb', + 'checksums': ['e80515c3d20a80f16800770936d1eb0012de15830a8175dce376256bdaf928e7'], + }), +] + +sanity_pip_check = True + +moduleclass = 'ai' diff --git a/easybuild/easyconfigs/b/Brotli-python/Brotli-python-1.0.9-GCCcore-12.3.0.eb b/easybuild/easyconfigs/b/Brotli-python/Brotli-python-1.0.9-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..48f717c030a --- /dev/null +++ b/easybuild/easyconfigs/b/Brotli-python/Brotli-python-1.0.9-GCCcore-12.3.0.eb @@ -0,0 +1,34 @@ +easyblock = 'PythonPackage' + +name = 'Brotli-python' +version = '1.0.9' + +homepage = 'https://github.com/google/brotli' +description = """Brotli is a generic-purpose lossless compression algorithm that compresses data using a combination + of a modern variant of the LZ77 algorithm, Huffman coding and 2nd order context modeling, with a compression ratio + comparable to the best currently available general-purpose compression methods. It is similar in speed with deflate + but offers more dense compression. +The specification of the Brotli Compressed Data Format is defined in RFC 7932.""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +source_urls = ['https://pypi.python.org/packages/source/B/Brotli'] +sources = ['Brotli-%(version)s.zip'] +checksums = ['4d1b810aa0ed773f81dceda2cc7b403d01057458730e309856356d4ef4188438'] + +builddependencies = [ + ('binutils', '2.40'), +] + +dependencies = [ + ('Brotli', '1.0.9'), + ('Python', '3.11.3'), +] + +download_dep_fail = True +use_pip = True +sanity_pip_check = True + +options = {'modulename': 'brotli'} + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/b/Brotli/Brotli-1.1.0-GCCcore-13.2.0.eb b/easybuild/easyconfigs/b/Brotli/Brotli-1.1.0-GCCcore-13.2.0.eb index eeacd739652..2e194e0d508 100644 --- a/easybuild/easyconfigs/b/Brotli/Brotli-1.1.0-GCCcore-13.2.0.eb +++ b/easybuild/easyconfigs/b/Brotli/Brotli-1.1.0-GCCcore-13.2.0.eb @@ -21,8 +21,11 @@ builddependencies = [ ('CMake', '3.27.6'), ] +configopts = ['-DBUILD_SHARED_LIBS=ON', '-DBUILD_SHARED_LIBS=OFF'] + sanity_check_paths = { - 'files': ['bin/brotli', 'lib/libbrotlidec.%s' % SHLIB_EXT, 'lib/libbrotlienc.%s' % SHLIB_EXT], + 'files': ['bin/brotli', 'lib/libbrotlidec.%s' % SHLIB_EXT, 'lib/libbrotlienc.%s' % SHLIB_EXT, + 'lib/libbrotlidec.a', 'lib/libbrotlienc.a'], 'dirs': [], } diff --git a/easybuild/easyconfigs/b/Brotli/Brotli-1.1.0-GCCcore-13.3.0.eb b/easybuild/easyconfigs/b/Brotli/Brotli-1.1.0-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..fe7258a493f --- /dev/null +++ b/easybuild/easyconfigs/b/Brotli/Brotli-1.1.0-GCCcore-13.3.0.eb @@ -0,0 +1,34 @@ +easyblock = 'CMakeMake' + +name = 'Brotli' +version = '1.1.0' + +homepage = 'https://github.com/google/brotli' +description = """Brotli is a generic-purpose lossless compression algorithm that compresses data using a combination + of a modern variant of the LZ77 algorithm, Huffman coding and 2nd order context modeling, with a compression ratio + comparable to the best currently available general-purpose compression methods. It is similar in speed with deflate + but offers more dense compression. +The specification of the Brotli Compressed Data Format is defined in RFC 7932.""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = ['https://github.com/google/brotli/archive'] +sources = ['v%(version)s.tar.gz'] +checksums = ['e720a6ca29428b803f4ad165371771f5398faba397edf6778837a18599ea13ff'] + +builddependencies = [ + ('binutils', '2.42'), + ('CMake', '3.29.3'), +] + +configopts = ['-DBUILD_SHARED_LIBS=ON', '-DBUILD_SHARED_LIBS=OFF'] + +sanity_check_paths = { + 'files': ['bin/brotli', 'lib/libbrotlidec.%s' % SHLIB_EXT, 'lib/libbrotlienc.%s' % SHLIB_EXT, + 'lib/libbrotlidec.a', 'lib/libbrotlienc.a'], + 'dirs': [], +} + +sanity_check_commands = ["brotli --help"] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/b/bcrypt/bcrypt-4.1.3-GCCcore-13.2.0.eb b/easybuild/easyconfigs/b/bcrypt/bcrypt-4.1.3-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..cbada951cfd --- /dev/null +++ b/easybuild/easyconfigs/b/bcrypt/bcrypt-4.1.3-GCCcore-13.2.0.eb @@ -0,0 +1,147 @@ +easyblock = 'CargoPythonPackage' + +name = 'bcrypt' +version = '4.1.3' + +homepage = 'https://github.com/pyca/bcrypt/' +description = """Acceptable password hashing for your software and your servers (but you should +really use argon2id or scrypt) +""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} +toolchainopts = {'pic': True} + + +builddependencies = [ + ('binutils', '2.40'), + ('Rust', '1.73.0'), + ('setuptools-rust', '1.8.0'), +] + +dependencies = [ + ('Python', '3.11.5'), +] + +crates = [ + ('autocfg', '1.3.0'), + ('base64', '0.22.1'), + ('bcrypt', '0.15.1'), + ('bcrypt-pbkdf', '0.10.0'), + ('bitflags', '2.5.0'), + ('block-buffer', '0.10.4'), + ('blowfish', '0.9.1'), + ('byteorder', '1.5.0'), + ('cfg-if', '1.0.0'), + ('cipher', '0.4.4'), + ('cpufeatures', '0.2.12'), + ('crypto-common', '0.1.6'), + ('digest', '0.10.7'), + ('generic-array', '0.14.7'), + ('getrandom', '0.2.14'), + ('heck', '0.4.1'), + ('indoc', '2.0.5'), + ('inout', '0.1.3'), + ('libc', '0.2.154'), + ('lock_api', '0.4.12'), + ('memoffset', '0.9.1'), + ('once_cell', '1.19.0'), + ('parking_lot', '0.12.2'), + ('parking_lot_core', '0.9.10'), + ('pbkdf2', '0.12.2'), + ('portable-atomic', '1.6.0'), + ('proc-macro2', '1.0.81'), + ('pyo3', '0.21.2'), + ('pyo3-build-config', '0.21.2'), + ('pyo3-ffi', '0.21.2'), + ('pyo3-macros', '0.21.2'), + ('pyo3-macros-backend', '0.21.2'), + ('quote', '1.0.36'), + ('redox_syscall', '0.5.1'), + ('scopeguard', '1.2.0'), + ('sha2', '0.10.8'), + ('smallvec', '1.13.2'), + ('subtle', '2.5.0'), + ('syn', '2.0.60'), + ('target-lexicon', '0.12.14'), + ('typenum', '1.17.0'), + ('unicode-ident', '1.0.12'), + ('unindent', '0.2.3'), + ('version_check', '0.9.4'), + ('wasi', '0.11.0+wasi-snapshot-preview1'), + ('windows-targets', '0.52.5'), + ('windows_aarch64_gnullvm', '0.52.5'), + ('windows_aarch64_msvc', '0.52.5'), + ('windows_i686_gnu', '0.52.5'), + ('windows_i686_gnullvm', '0.52.5'), + ('windows_i686_msvc', '0.52.5'), + ('windows_x86_64_gnu', '0.52.5'), + ('windows_x86_64_gnullvm', '0.52.5'), + ('windows_x86_64_msvc', '0.52.5'), + ('zeroize', '1.7.0'), +] + +sources = [SOURCE_TAR_GZ] +checksums = [ + {'bcrypt-4.1.3.tar.gz': '2ee15dd749f5952fe3f0430d0ff6b74082e159c50332a1413d51b5689cf06623'}, + {'autocfg-1.3.0.tar.gz': '0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0'}, + {'base64-0.22.1.tar.gz': '72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6'}, + {'bcrypt-0.15.1.tar.gz': 'e65938ed058ef47d92cf8b346cc76ef48984572ade631927e9937b5ffc7662c7'}, + {'bcrypt-pbkdf-0.10.0.tar.gz': '6aeac2e1fe888769f34f05ac343bbef98b14d1ffb292ab69d4608b3abc86f2a2'}, + {'bitflags-2.5.0.tar.gz': 'cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1'}, + {'block-buffer-0.10.4.tar.gz': '3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71'}, + {'blowfish-0.9.1.tar.gz': 'e412e2cd0f2b2d93e02543ceae7917b3c70331573df19ee046bcbc35e45e87d7'}, + {'byteorder-1.5.0.tar.gz': '1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b'}, + {'cfg-if-1.0.0.tar.gz': 'baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd'}, + {'cipher-0.4.4.tar.gz': '773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad'}, + {'cpufeatures-0.2.12.tar.gz': '53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504'}, + {'crypto-common-0.1.6.tar.gz': '1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3'}, + {'digest-0.10.7.tar.gz': '9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292'}, + {'generic-array-0.14.7.tar.gz': '85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a'}, + {'getrandom-0.2.14.tar.gz': '94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c'}, + {'heck-0.4.1.tar.gz': '95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8'}, + {'indoc-2.0.5.tar.gz': 'b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5'}, + {'inout-0.1.3.tar.gz': 'a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5'}, + {'libc-0.2.154.tar.gz': 'ae743338b92ff9146ce83992f766a31066a91a8c84a45e0e9f21e7cf6de6d346'}, + {'lock_api-0.4.12.tar.gz': '07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17'}, + {'memoffset-0.9.1.tar.gz': '488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a'}, + {'once_cell-1.19.0.tar.gz': '3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92'}, + {'parking_lot-0.12.2.tar.gz': '7e4af0ca4f6caed20e900d564c242b8e5d4903fdacf31d3daf527b66fe6f42fb'}, + {'parking_lot_core-0.9.10.tar.gz': '1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8'}, + {'pbkdf2-0.12.2.tar.gz': 'f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2'}, + {'portable-atomic-1.6.0.tar.gz': '7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0'}, + {'proc-macro2-1.0.81.tar.gz': '3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba'}, + {'pyo3-0.21.2.tar.gz': 'a5e00b96a521718e08e03b1a622f01c8a8deb50719335de3f60b3b3950f069d8'}, + {'pyo3-build-config-0.21.2.tar.gz': '7883df5835fafdad87c0d888b266c8ec0f4c9ca48a5bed6bbb592e8dedee1b50'}, + {'pyo3-ffi-0.21.2.tar.gz': '01be5843dc60b916ab4dad1dca6d20b9b4e6ddc8e15f50c47fe6d85f1fb97403'}, + {'pyo3-macros-0.21.2.tar.gz': '77b34069fc0682e11b31dbd10321cbf94808394c56fd996796ce45217dfac53c'}, + {'pyo3-macros-backend-0.21.2.tar.gz': '08260721f32db5e1a5beae69a55553f56b99bd0e1c3e6e0a5e8851a9d0f5a85c'}, + {'quote-1.0.36.tar.gz': '0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7'}, + {'redox_syscall-0.5.1.tar.gz': '469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e'}, + {'scopeguard-1.2.0.tar.gz': '94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49'}, + {'sha2-0.10.8.tar.gz': '793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8'}, + {'smallvec-1.13.2.tar.gz': '3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67'}, + {'subtle-2.5.0.tar.gz': '81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc'}, + {'syn-2.0.60.tar.gz': '909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3'}, + {'target-lexicon-0.12.14.tar.gz': 'e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f'}, + {'typenum-1.17.0.tar.gz': '42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825'}, + {'unicode-ident-1.0.12.tar.gz': '3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b'}, + {'unindent-0.2.3.tar.gz': 'c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce'}, + {'version_check-0.9.4.tar.gz': '49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f'}, + {'wasi-0.11.0+wasi-snapshot-preview1.tar.gz': '9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423'}, + {'windows-targets-0.52.5.tar.gz': '6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb'}, + {'windows_aarch64_gnullvm-0.52.5.tar.gz': '7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263'}, + {'windows_aarch64_msvc-0.52.5.tar.gz': '9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6'}, + {'windows_i686_gnu-0.52.5.tar.gz': '88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670'}, + {'windows_i686_gnullvm-0.52.5.tar.gz': '87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9'}, + {'windows_i686_msvc-0.52.5.tar.gz': 'db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf'}, + {'windows_x86_64_gnu-0.52.5.tar.gz': '4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9'}, + {'windows_x86_64_gnullvm-0.52.5.tar.gz': '852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596'}, + {'windows_x86_64_msvc-0.52.5.tar.gz': 'bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0'}, + {'zeroize-1.7.0.tar.gz': '525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d'}, +] + +download_dep_fail = True +use_pip = True +sanity_pip_check = True + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/b/binutils/binutils-2.42-GCCcore-13.3.0.eb b/easybuild/easyconfigs/b/binutils/binutils-2.42-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..7a10c5ed2bc --- /dev/null +++ b/easybuild/easyconfigs/b/binutils/binutils-2.42-GCCcore-13.3.0.eb @@ -0,0 +1,31 @@ +name = 'binutils' +version = '2.42' + +homepage = 'https://directory.fsf.org/project/binutils/' +description = "binutils: GNU binary utilities" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = [GNU_SOURCE] +sources = [SOURCE_TAR_GZ] +checksums = ['5d2a6c1d49686a557869caae08b6c2e83699775efd27505e01b2f4db1a024ffc'] + +builddependencies = [ + ('flex', '2.6.4'), + ('Bison', '3.8.2'), + # use same binutils version that was used when building GCC toolchain, to 'bootstrap' this binutils + ('binutils', version, '', SYSTEM) +] + +dependencies = [ + # zlib is a runtime dep to avoid that it gets embedded in libbfd.so, + # see https://github.com/easybuilders/easybuild-easyblocks/issues/1350 + ('zlib', '1.3.1'), +] + +# avoid build failure when makeinfo command is not available +# see https://sourceware.org/bugzilla/show_bug.cgi?id=15345 +buildopts = 'MAKEINFO=true' +installopts = buildopts + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/b/binutils/binutils-2.42-GCCcore-14.1.0.eb b/easybuild/easyconfigs/b/binutils/binutils-2.42-GCCcore-14.1.0.eb new file mode 100644 index 00000000000..0ef5c688a3e --- /dev/null +++ b/easybuild/easyconfigs/b/binutils/binutils-2.42-GCCcore-14.1.0.eb @@ -0,0 +1,31 @@ +name = 'binutils' +version = '2.42' + +homepage = 'https://directory.fsf.org/project/binutils/' +description = "binutils: GNU binary utilities" + +toolchain = {'name': 'GCCcore', 'version': '14.1.0'} + +source_urls = [GNU_SOURCE] +sources = [SOURCE_TAR_GZ] +checksums = ['5d2a6c1d49686a557869caae08b6c2e83699775efd27505e01b2f4db1a024ffc'] + +builddependencies = [ + ('flex', '2.6.4'), + ('Bison', '3.8.2'), + # use same binutils version that was used when building GCC toolchain, to 'bootstrap' this binutils + ('binutils', version, '', SYSTEM) +] + +dependencies = [ + # zlib is a runtime dep to avoid that it gets embedded in libbfd.so, + # see https://github.com/easybuilders/easybuild-easyblocks/issues/1350 + ('zlib', '1.3.1'), +] + +# avoid build failure when makeinfo command is not available +# see https://sourceware.org/bugzilla/show_bug.cgi?id=15345 +buildopts = 'MAKEINFO=true' +installopts = buildopts + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/b/binutils/binutils-2.42.eb b/easybuild/easyconfigs/b/binutils/binutils-2.42.eb new file mode 100644 index 00000000000..93223d7387d --- /dev/null +++ b/easybuild/easyconfigs/b/binutils/binutils-2.42.eb @@ -0,0 +1,26 @@ +name = 'binutils' +version = '2.42' + +homepage = 'https://directory.fsf.org/project/binutils/' + +description = "binutils: GNU binary utilities" + +toolchain = SYSTEM + +source_urls = [GNU_SOURCE] +sources = [SOURCE_TAR_GZ] +checksums = ['5d2a6c1d49686a557869caae08b6c2e83699775efd27505e01b2f4db1a024ffc'] + +builddependencies = [ + ('flex', '2.6.4'), + ('Bison', '3.8.2'), + # zlib required, but being linked in statically, so not a runtime dep + ('zlib', '1.3.1'), +] + +# avoid build failure when makeinfo command is not available +# see https://sourceware.org/bugzilla/show_bug.cgi?id=15345 +buildopts = 'MAKEINFO=true' +installopts = buildopts + +moduleclass = 'tools' 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..097ccb0a7e7 --- /dev/null +++ b/easybuild/easyconfigs/b/biom-format/biom-format-2.1.15-foss-2023a.eb @@ -0,0 +1,48 @@ +## +# 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'), +] + +use_pip = True +sanity_pip_check = True +download_dep_fail = True + +sanity_check_paths = { + 'files': ['bin/biom'], + 'dirs': ['lib'], +} + +options = {'modulename': 'biom'} + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/b/bitshuffle/bitshuffle-0.5.1-foss-2023a.eb b/easybuild/easyconfigs/b/bitshuffle/bitshuffle-0.5.1-foss-2023a.eb new file mode 100644 index 00000000000..3faf7d3a1ee --- /dev/null +++ b/easybuild/easyconfigs/b/bitshuffle/bitshuffle-0.5.1-foss-2023a.eb @@ -0,0 +1,32 @@ +easyblock = 'PythonBundle' + +name = 'bitshuffle' +version = '0.5.1' + +homepage = 'https://github.com/kiyo-masui/bitshuffle' +description = """ +Filter for improving compression of typed binary data. +Bitshuffle is an algorithm that rearranges typed, binary data for improving compression, as +well as a python/C package that implements this algorithm within the Numpy framework. +The library can be used along side HDF5 to compress and decompress datasets and is integrated +through the dynamically loaded filters framework. Bitshuffle is HDF5 filter number 32008. +""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +dependencies = [ + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), + ('h5py', '3.9.0'), +] + +use_pip = True +sanity_pip_check = True + +exts_list = [ + (name, version, { + 'checksums': ['988f224739aa6858475a4c59172968c7b51cc657d2249580c8f96848708fbae3'], + }), +] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/b/bokeh/bokeh-3.4.1-gfbf-2023b.eb b/easybuild/easyconfigs/b/bokeh/bokeh-3.4.1-gfbf-2023b.eb new file mode 100644 index 00000000000..58f15fcf3e9 --- /dev/null +++ b/easybuild/easyconfigs/b/bokeh/bokeh-3.4.1-gfbf-2023b.eb @@ -0,0 +1,50 @@ +easyblock = 'PythonBundle' + +name = 'bokeh' +version = '3.4.1' + +homepage = 'https://github.com/bokeh/bokeh' +description = "Statistical and novel interactive HTML plots for Python" + +toolchain = {'name': 'gfbf', 'version': '2023b'} + +builddependencies = [ + ('meson-python', '0.15.0'), +] + +dependencies = [ + ('Python', '3.11.5'), + ('Python-bundle-PyPI', '2023.10'), + ('SciPy-bundle', '2023.11'), + ('matplotlib', '3.8.2'), + ('PyYAML', '6.0.1'), + ('Pillow', '10.2.0'), + ('tornado', '6.4'), +] + +use_pip = True + +exts_list = [ + ('contourpy', '1.2.1', { + 'checksums': ['4d8908b3bee1c889e547867ca4cdc54e5ab6be6d3e078556814a22457f49423c'], + }), + ('xyzservices', '2024.4.0', { + 'checksums': ['6a04f11487a6fb77d92a98984cd107fbd9157fd5e65f929add9c3d6e604ee88c'], + }), + (name, version, { + # bokeh uses git tags to get version, so we'll instead inject the version into setup.py + 'preinstallopts': """sed -i 's/setup(/setup(version="%(version)s",/g' setup.py && """, + 'checksums': ['d824961e4265367b0750ce58b07e564ad0b83ca64b335521cd3421e9b9f10d89'], + }), +] + +sanity_check_paths = { + 'files': ['bin/bokeh'], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +sanity_check_commands = ["bokeh --help"] + +sanity_pip_check = True + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/b/bwa-mem2/bwa-mem2-2.2.1-intel-compilers-2023.1.0.eb b/easybuild/easyconfigs/b/bwa-mem2/bwa-mem2-2.2.1-intel-compilers-2023.1.0.eb index 74c175b5994..e4edd8be316 100644 --- a/easybuild/easyconfigs/b/bwa-mem2/bwa-mem2-2.2.1-intel-compilers-2023.1.0.eb +++ b/easybuild/easyconfigs/b/bwa-mem2/bwa-mem2-2.2.1-intel-compilers-2023.1.0.eb @@ -15,10 +15,14 @@ toolchainopts = {'pic': True, 'oneapi': False} github_account = 'bwa-mem2' source_urls = [GITHUB_SOURCE] sources = ['v%(version)s.tar.gz'] -patches = ['%(name)s-%(version)s_use_external_deps.patch'] +patches = [ + 'bwa-mem2-%(version)s_use_external_deps.patch', + 'bwa-mem2-%(version)s_common_avx512_flags.patch', +] checksums = [ {'v2.2.1.tar.gz': '36ddd28ce7020d5a036ddeffa00e692296fd40c80380671bd4ea5757bd28841b'}, {'bwa-mem2-2.2.1_use_external_deps.patch': '0a9d7f7b3289029e19cf7dbab1778448097b9e0f92fa41a74a8cf81c9e114967'}, + {'bwa-mem2-2.2.1_common_avx512_flags.patch': '1a784bca167c6e3576a83c11715cbf6f8dced09d46021c0d283f7a1b185d6569'}, ] dependencies = [('safestringlib', '20240228')] diff --git a/easybuild/easyconfigs/b/bwa-mem2/bwa-mem2-2.2.1_common_avx512_flags.patch b/easybuild/easyconfigs/b/bwa-mem2/bwa-mem2-2.2.1_common_avx512_flags.patch new file mode 100644 index 00000000000..b7e55ecf1f1 --- /dev/null +++ b/easybuild/easyconfigs/b/bwa-mem2/bwa-mem2-2.2.1_common_avx512_flags.patch @@ -0,0 +1,15 @@ +Use common AVX512 flagset to increase compatibility of bwa-mem2.avx512bw binary +across platforms supporting AVX512 +see https://github.com/bwa-mem2/bwa-mem2/issues/236 +author: Alex Domingo (Vrije Universiteit Brussel) +--- Makefile.orig 2024-04-29 14:52:21.634066000 +0200 ++++ Makefile 2024-04-29 14:52:48.590282000 +0200 +@@ -76,7 +76,7 @@ + endif + else ifeq ($(arch),avx512) + ifeq ($(CXX), icpc) +- ARCH_FLAGS=-xCORE-AVX512 ++ ARCH_FLAGS=-march=common-avx512 #-xCORE-AVX512 + else + ARCH_FLAGS=-mavx512bw + endif diff --git a/easybuild/easyconfigs/b/bzip2/bzip2-1.0.8-GCCcore-13.3.0.eb b/easybuild/easyconfigs/b/bzip2/bzip2-1.0.8-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..adb4b34a9bb --- /dev/null +++ b/easybuild/easyconfigs/b/bzip2/bzip2-1.0.8-GCCcore-13.3.0.eb @@ -0,0 +1,27 @@ +name = 'bzip2' +version = '1.0.8' + +homepage = 'https://sourceware.org/bzip2' +description = """ + bzip2 is a freely available, patent free, high-quality data compressor. It + typically compresses files to within 10% to 15% of the best available + techniques (the PPM family of statistical compressors), whilst being around + twice as fast at compression and six times faster at decompression. +""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://sourceware.org/pub/%(name)s/'] +sources = [SOURCE_TAR_GZ] +patches = ['bzip2-%(version)s-pkgconfig.patch'] +checksums = [ + 'ab5a03176ee106d3f0fa90e381da478ddae405918153cca248e682cd0c4a2269', # bzip2-1.0.8.tar.gz + '9299e8ee4d014ea973777b6ea90661fe329dfa991f822add4c763ea9ddb9aab1', # bzip2-1.0.8-pkgconfig.patch +] + +builddependencies = [ + ('binutils', '2.42'), +] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/c/CAMPARI/CAMPARI-4.0-intel-2023a.eb b/easybuild/easyconfigs/c/CAMPARI/CAMPARI-4.0-intel-2023a.eb new file mode 100644 index 00000000000..203b4e4cd9f --- /dev/null +++ b/easybuild/easyconfigs/c/CAMPARI/CAMPARI-4.0-intel-2023a.eb @@ -0,0 +1,53 @@ +easyblock = 'ConfigureMake' + +name = 'CAMPARI' +version = '4.0' +_date = '12202020' + +homepage = 'http://campari.sourceforge.net/V4/index.html' +description = """ +CAMPARI is a joint package for performing and analyzing molecular simulations, in particular of systems of biological +relevance. It focuses on a wide availability of algorithms for (advanced) sampling and is capable of combining Monte +Carlo and molecular dynamics in seamless fashion.""" + +toolchain = {'name': 'intel', 'version': '2023a'} + +source_urls = [SOURCEFORGE_SOURCE] +sources = ['campari_v%s_%s.zip' % (version.split('.')[0], _date)] +checksums = ['bc627fb286b5461a5c68aa3e1a551ecd81016495163685800163c734f7c4f1bd'] + +builddependencies = [ + ('Autotools', '20220317'), +] + +dependencies = [ + ('netCDF-Fortran', '4.6.1'), + ('libtirpc', '1.3.3'), +] + +start_dir = 'source' + +# remove hardcoded paths in configure script +preconfigopts = 'sed -i "s|/usr/share|$EBROOTAUTOMAKE/share|" configure &&' +# ignore default compiler settings and use EB build environment +configopts = '--enable-compiler=ignore --with-trailing-user-fcflags="$FCFLAGS" ' +configopts += '--enable-mpi=auto ' +configopts += 'LIBS="$LIBS $LIBFFT -ltirpc"' + +buildopts = 'all' + +maxparallel = 10 + +postinstallcmds = ['cp -a %(builddir)s/campari/{data,doc,examples,params,tools,LICENSE} %(installdir)s/'] + +_binaries = ['campari', 'campari_mpi', 'campari_mpi_threads', 'campari_threads', 'camp_ncminer', 'camp_ncminer_threads'] +_libraries = ['lcampari.a', 'lcampari_mpi.a', 'lcampari_mpi_threads.a', 'lcampari_threads.a', 'libxdrf.a'] + +sanity_check_paths = { + 'files': ['bin/%s' % x for x in _binaries] + ['lib/%s' % x for x in _libraries], + 'dirs': [], +} + +sanity_check_commands = ['campari -h | grep "USAGE: CAMPARI"'] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/c/CCCL/CCCL-2.3.0-GCCcore-12.3.0-CUDA-12.1.1.eb b/easybuild/easyconfigs/c/CCCL/CCCL-2.3.0-GCCcore-12.3.0-CUDA-12.1.1.eb new file mode 100644 index 00000000000..062f686dccd --- /dev/null +++ b/easybuild/easyconfigs/c/CCCL/CCCL-2.3.0-GCCcore-12.3.0-CUDA-12.1.1.eb @@ -0,0 +1,38 @@ +easyblock = 'CMakeMake' + +name = 'CCCL' +version = '2.3.0' +versionsuffix = '-CUDA-%(cudaver)s' + +homepage = 'https://github.com/NVIDIA/cccl' + +description = """CUDA C++ Core Libraries (header only)""" +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +github_account = 'NVIDIA' +source_urls = [GITHUB_SOURCE] +sources = ['v%(version)s.tar.gz'] +checksums = ['922c9e72a7d6d91ef6a1421f2545a947529a179d307853be1b1615c02241c271'] + +builddependencies = [ + ('binutils', '2.40'), + ('CMake', '3.26.3'), +] + +dependencies = [ + ('CUDA', '12.1.1', '', SYSTEM), +] + +configopts = '-DCMAKE_CUDA_ARCHITECTURES="%(cuda_cc_cmake)s" ' +# Testing disabled due to it trying to use the wrong compiler (needs nvcc) due to the toolchain +configopts += '-DCCCL_ENABLE_EXAMPLES=OFF -DCCCL_ENABLE_TESTING=OFF ' +configopts += '-DLIBCUDACXX_ENABLE_CMAKE_TESTS=OFF -DLIBCUDACXX_ENABLE_LIBCUDACXX_TESTS=OFF ' +configopts += '-DCUB_ENABLE_HEADER_TESTING=OFF -DCUB_ENABLE_TESTING=OFF ' +configopts += '-DTHRUST_ENABLE_HEADER_TESTING=OFF -DTHRUST_ENABLE_TESTING=OFF ' + +sanity_check_paths = { + 'files': ['include/cuda/version'], + 'dirs': ['include/cub', 'include/thrust', 'include/cuda'], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/c/CGAL/CGAL-5.4-GCCcore-12.3.0.eb b/easybuild/easyconfigs/c/CGAL/CGAL-5.4-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..aa9a56f6fc1 --- /dev/null +++ b/easybuild/easyconfigs/c/CGAL/CGAL-5.4-GCCcore-12.3.0.eb @@ -0,0 +1,26 @@ +easyblock = 'CMakeMake' +name = 'CGAL' +version = '5.4' + +homepage = 'https://www.cgal.org/' +description = """The goal of the CGAL Open Source Project is to provide easy access to efficient + and reliable geometric algorithms in the form of a C++ library.""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} +toolchainopts = {'strict': True} + +source_urls = ['https://github.com/CGAL/cgal/releases/download/v%(version)s/'] +sources = [SOURCE_TAR_XZ] +checksums = ['b3d735ec42fd65ac1413c70e7a197bf3d971e4499347ccfaad92cc82d62dc256'] + +builddependencies = [ + ('CMake', '3.26.3'), + ('binutils', '2.40'), +] + +sanity_check_paths = { + 'files': ['include/CGAL/Simple_cartesian.h'], + 'dirs': ['include/CGAL', 'lib/cmake/CGAL'], +} + +moduleclass = 'numlib' diff --git a/easybuild/easyconfigs/c/CGAL/CGAL-5.6.1-GCCcore-13.2.0.eb b/easybuild/easyconfigs/c/CGAL/CGAL-5.6.1-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..e0dfb771aa6 --- /dev/null +++ b/easybuild/easyconfigs/c/CGAL/CGAL-5.6.1-GCCcore-13.2.0.eb @@ -0,0 +1,26 @@ +easyblock = 'CMakeMake' +name = 'CGAL' +version = '5.6.1' + +homepage = 'https://www.cgal.org/' +description = """The goal of the CGAL Open Source Project is to provide easy access to efficient + and reliable geometric algorithms in the form of a C++ library.""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} +toolchainopts = {'strict': True} + +source_urls = ['https://github.com/CGAL/cgal/releases/download/v%(version)s/'] +sources = [SOURCE_TAR_XZ] +checksums = ['cdb15e7ee31e0663589d3107a79988a37b7b1719df3d24f2058545d1bcdd5837'] + +builddependencies = [ + ('CMake', '3.27.6'), + ('binutils', '2.40'), +] + +sanity_check_paths = { + 'files': ['include/CGAL/Simple_cartesian.h'], + 'dirs': ['include/CGAL', 'lib/cmake/CGAL'], +} + +moduleclass = 'numlib' diff --git a/easybuild/easyconfigs/c/CMake/CMake-3.29.3-GCCcore-13.3.0.eb b/easybuild/easyconfigs/c/CMake/CMake-3.29.3-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..d8c9cce51ca --- /dev/null +++ b/easybuild/easyconfigs/c/CMake/CMake-3.29.3-GCCcore-13.3.0.eb @@ -0,0 +1,30 @@ +name = 'CMake' +version = '3.29.3' + +homepage = 'https://www.cmake.org' + +description = """ + CMake, the cross-platform, open-source build system. CMake is a family of + tools designed to build, test and package software. +""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = ['https://www.cmake.org/files/v%(version_major_minor)s'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['252aee1448d49caa04954fd5e27d189dd51570557313e7b281636716a238bccb'] + +builddependencies = [ + ('binutils', '2.42'), +] + +dependencies = [ + ('ncurses', '6.5'), + ('zlib', '1.3.1'), + ('bzip2', '1.0.8'), + ('cURL', '8.7.1'), + ('libarchive', '3.7.4'), + ('OpenSSL', '3', '', SYSTEM), +] + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/c/COMEBin/COMEBin-1.0.3-20240310-foss-2022a.eb b/easybuild/easyconfigs/c/COMEBin/COMEBin-1.0.3-20240310-foss-2022a.eb new file mode 100644 index 00000000000..4bc881dc9c1 --- /dev/null +++ b/easybuild/easyconfigs/c/COMEBin/COMEBin-1.0.3-20240310-foss-2022a.eb @@ -0,0 +1,77 @@ +easyblock = 'Tarball' + +name = 'COMEBin' +local_commit = '987db95' +version = '1.0.3-20240310' + +homepage = 'https://github.com/ziyewang/COMEBin' +description = "Effective binning of metagenomic contigs using COntrastive Multi-viEw representation learning" + +toolchain = {'name': 'foss', 'version': '2022a'} + +source_urls = ['https://github.com/ziyewang/COMEBin/archive/'] +sources = [{'download_filename': '%s.tar.gz' % local_commit, 'filename': SOURCE_TAR_GZ}] +patches = ['COMEBin-1.0.3_fix-run-script.patch'] +checksums = [ + {'COMEBin-1.0.3-20240310.tar.gz': 'aa9c9e98d0cd121b2be60cae85d735527f510ad07df1a84ed6405cbc66eea684'}, + {'COMEBin-1.0.3_fix-run-script.patch': 'e9ac578667d4f7233cf716cc98b134b8bd7cb7bcc70a06322500319d84b67773'}, +] + +dependencies = [ + ('Python', '3.10.4'), + ('SciPy-bundle', '2022.05'), + ('matplotlib', '3.5.2'), + ('PyTorch', '1.12.0'), + ('tensorboard', '2.10.0'), + ('Biopython', '1.79'), + ('scikit-learn', '1.1.2'), + ('tqdm', '4.64.0'), + ('leidenalg', '0.9.1'), + ('BEDTools', '2.30.0'), + ('BWA', '0.7.17'), + ('CheckM', '1.2.2'), + ('FragGeneScan', '1.31'), + ('HMMER', '3.3.2'), + ('pplacer', '1.1.alpha19', '', SYSTEM), + ('prodigal', '2.6.3'), + ('SAMtools', '1.16.1'), + ('python-igraph', '0.10.3'), + ('PyYAML', '6.0'), +] + +exts_defaultclass = 'PythonPackage' + +exts_default_options = { + 'source_urls': [PYPI_SOURCE], + 'use_pip': True, + 'download_dep_fail': True, + 'sanity_pip_check': True, +} + +exts_list = [ + ('fastjsonschema', '2.19.1', { + 'checksums': ['e3126a94bdc4623d3de4485f8d468a12f02a67921315ddc87836d6e456dc789d'], + }), + ('hnswlib', '0.8.0', { + 'checksums': ['cb6d037eedebb34a7134e7dc78966441dfd04c9cf5ee93911be911ced951c44c'], + }), + ('biolib', '0.1.9', { + 'checksums': ['bc9ae68c6d76d46e4295fe0b1df5a48b575fe96374bd96d624c3330feb94856f'], + }), +] + +postinstallcmds = ["chmod a+x %(installdir)s/bin/run_comebin.sh"] + +modextrapaths = {'PYTHONPATH': 'lib/python%(pyshortver)s/site-packages'} + +sanity_check_paths = { + 'files': ['bin/run_comebin.sh', 'COMEBin/main.py'], + 'dirs': ['COMEBin/models', 'COMEBin/scripts'], +} + +sanity_check_commands = [ + "run_comebin.sh | grep '^Usage: bash run_comebin.sh'" + "python %(installdir)s/COMEBin/main.py --help", +] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/c/COMEBin/COMEBin-1.0.3_fix-run-script.patch b/easybuild/easyconfigs/c/COMEBin/COMEBin-1.0.3_fix-run-script.patch new file mode 100644 index 00000000000..1752260e69b --- /dev/null +++ b/easybuild/easyconfigs/c/COMEBin/COMEBin-1.0.3_fix-run-script.patch @@ -0,0 +1,12 @@ +fix determining path to top-level directory, +since run_comebin.sh is located in bin/run_comebin.sh +--- bin/run_comebin.sh.orig 2024-06-04 16:27:24.373968000 +0200 ++++ bin/run_comebin.sh 2024-06-04 16:27:38.413830000 +0200 +@@ -25,6 +25,7 @@ + echo "";} + + run_file_path=$(dirname $(which run_comebin.sh)) ++run_file_path=$(dirname $(dirname $(which run_comebin.sh))) + + if [[ $? -ne 0 ]]; then + echo "cannot find run_comebin.sh file - something went wrong with the installation!" diff --git a/easybuild/easyconfigs/c/CREST/CREST-20240319-gfbf-2023a.eb b/easybuild/easyconfigs/c/CREST/CREST-20240319-gfbf-2023a.eb new file mode 100644 index 00000000000..7649571fc62 --- /dev/null +++ b/easybuild/easyconfigs/c/CREST/CREST-20240319-gfbf-2023a.eb @@ -0,0 +1,44 @@ +# Author: Jasper Grimm (UoY) +# Update to 2.12: +# Author: J. Sassmannshausen (Imperial College London) + +easyblock = 'CMakeMake' + +name = 'CREST' +version = '20240319' +_commit = '2719412edf8bb606cebdd4cd6bbb4cdbd249e1e5' + +homepage = 'https://xtb-docs.readthedocs.io/en/latest/crest.html' +description = """CREST is an utility/driver program for the xtb program. Originally it was designed + as conformer sampling program, hence the abbreviation Conformer–Rotamer Ensemble Sampling Tool, + but now offers also some utility functions for calculations with the GFNn–xTB methods. Generally + the program functions as an IO based OMP scheduler (i.e., calculations are performed by the xtb + program) and tool for the creation and analysation of structure ensembles. +""" + +toolchain = {'name': 'gfbf', 'version': '2023a'} +toolchainopts = {'opt': True, 'optarch': True, 'extra_fflags': '-ffree-line-length-none'} + +separate_build_dir = False + +github_account = 'grimme-lab' +source_urls = [GITHUB_LOWER_SOURCE] +sources = [{'download_filename': '%s.tar.gz' % _commit, 'filename': SOURCE_TAR_GZ}] +checksums = ['770b7ca72bc47bc4e1ffd8ca56566df7b03f4d3b702b04ec6b83bad9a125884d'] + +builddependencies = [('CMake', '3.26.3')] + +dependencies = [('xtb', '6.6.1')] # required to run the program + +# Simple test command just to check if the program is working: +test_cmd = 'export PATH=%%(builddir)s/%%(namelower)s-%s:$PATH && ' % _commit +test_cmd += 'cd %%(builddir)s/%%(namelower)s-%s/examples/expl-0/ && ./run.sh ' % _commit + +sanity_check_paths = { + 'files': ['bin/%s' % name.lower()], + 'dirs': [], +} + +sanity_check_commands = ["crest -h", "crest --cite"] + +moduleclass = 'chem' diff --git a/easybuild/easyconfigs/c/CREST/CREST-3.0.1-gfbf-2022b.eb b/easybuild/easyconfigs/c/CREST/CREST-3.0.1-gfbf-2022b.eb new file mode 100644 index 00000000000..5f1a29e51d3 --- /dev/null +++ b/easybuild/easyconfigs/c/CREST/CREST-3.0.1-gfbf-2022b.eb @@ -0,0 +1,47 @@ +easyblock = 'CMakeMake' + +name = 'CREST' +version = '3.0.1' + +homepage = 'https://xtb-docs.readthedocs.io/en/latest/crest.html' +description = """CREST is an utility/driver program for the xtb program. Originally it was designed + as conformer sampling program, hence the abbreviation Conformer–Rotamer Ensemble Sampling Tool, + but now offers also some utility functions for calculations with the GFNn–xTB methods. Generally + the program functions as an IO based OMP scheduler (i.e., calculations are performed by the xtb + program) and tool for the creation and analysation of structure ensembles. +""" + +toolchain = {'name': 'gfbf', 'version': '2022b'} +toolchainopts = {'opt': True} + +sources = [{ + 'filename': SOURCE_TAR_GZ, + 'git_config': { + 'url': 'https://github.com/crest-lab', + 'repo_name': 'crest', + 'tag': 'v%s' % version, + 'recursive': True, + }, +}] +checksums = [None] + +builddependencies = [('CMake', '3.24.3')] + +dependencies = [ + ('dftd4', '3.4.0'), + ('mctc-lib', '0.3.1'), + ('mstore', '0.2.0'), + ('multicharge', '0.2.0'), + ('xtb', '6.6.1'), +] + +runtest = "test" + +sanity_check_paths = { + 'files': ['bin/%(namelower)s'], + 'dirs': [], +} + +sanity_check_commands = ["crest -h", "crest --cite"] + +moduleclass = 'chem' diff --git a/easybuild/easyconfigs/c/CUnit/CUnit-2.1-3-GCCcore-12.3.0.eb b/easybuild/easyconfigs/c/CUnit/CUnit-2.1-3-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..827f7ea4e80 --- /dev/null +++ b/easybuild/easyconfigs/c/CUnit/CUnit-2.1-3-GCCcore-12.3.0.eb @@ -0,0 +1,27 @@ +easyblock = 'ConfigureMake' + +name = 'CUnit' +version = '2.1-3' + +homepage = 'https://sourceforge.net/projects/cunit/' +description = "Automated testing framework for C." + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +source_urls = [SOURCEFORGE_SOURCE] +sources = [SOURCE_TAR_BZ2] +checksums = ['f5b29137f845bb08b77ec60584fdb728b4e58f1023e6f249a464efa49a40f214'] + +builddependencies = [ + ('binutils', '2.40'), + ('Autotools', '20220317'), +] + +preconfigopts = "autoreconf -i && " + +sanity_check_paths = { + 'files': ['lib/libcunit.a', 'lib/libcunit.%s' % SHLIB_EXT], + 'dirs': ['include/CUnit', 'lib/pkgconfig', 'share'], +} + +moduleclass = 'lang' diff --git a/easybuild/easyconfigs/c/CVX/CVX-2.2-MATLAB-2023a.eb b/easybuild/easyconfigs/c/CVX/CVX-2.2-MATLAB-2023a.eb new file mode 100644 index 00000000000..b3c3ec1b113 --- /dev/null +++ b/easybuild/easyconfigs/c/CVX/CVX-2.2-MATLAB-2023a.eb @@ -0,0 +1,36 @@ +easyblock = 'Tarball' + +name = 'CVX' +version = '2.2' +_matlab_ver = '2023a' +versionsuffix = '-MATLAB-%s' % _matlab_ver + +homepage = 'https://cvxr.com/cvx/' +description = """CVX is a Matlab-based modeling system for convex optimization. + CVX turns Matlab into a modeling language, allowing constraints and objectives + to be specified using standard Matlab expression syntax. +""" + +toolchain = SYSTEM + +source_urls = ['https://web.cvxr.com/cvx/'] +sources = ['%(namelower)s-a64.tar.gz'] +checksums = ['16e4622c80f2bf63152aaee59db4fe42afa4d2282179e5d216358953c7f9ea4d'] + +dependencies = [ + ('MATLAB', _matlab_ver), +] + +sanity_check_paths = { + 'files': [], + 'dirs': ['lib', 'commands', 'sedumi', 'sdpt3'], +} + +modloadmsg = "IMPORTANT: You need to run `cvx_setup` once inside MATLAB before using CVX." + +modextrapaths = { + 'MATLABPATH': ['', 'functions/vec_', 'structures', 'lib', 'functions', + 'commands', 'builtins'], +} + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/c/CVXOPT/CVXOPT-1.3.1-foss-2022a.eb b/easybuild/easyconfigs/c/CVXOPT/CVXOPT-1.3.1-foss-2022a.eb index 9bac0454227..2c32ff36414 100644 --- a/easybuild/easyconfigs/c/CVXOPT/CVXOPT-1.3.1-foss-2022a.eb +++ b/easybuild/easyconfigs/c/CVXOPT/CVXOPT-1.3.1-foss-2022a.eb @@ -32,8 +32,15 @@ use_pip = True sanity_pip_check = True download_dep_fail = True -preinstallopts = 'CVXOPT_BUILD_FFTW=1 CVXOPT_BUILD_GSL=1 CVXOPT_BLAS_EXTRA_LINK_ARGS="$LIBLAPACK" ' -preinstallopts += 'CVXOPT_FFTW_EXTRA_LINK_ARGS="$LIBFFT" CVXOPT_SUITESPARSE_SRC_DIR=$EBROOTSUITESPARSE' +preinstallopts = " ".join([ + 'CVXOPT_BUILD_FFTW=1', + 'CVXOPT_BUILD_GSL=1', + 'CVXOPT_BLAS_EXTRA_LINK_ARGS="$LIBBLAS"', + 'CVXOPT_LAPACK_EXTRA_LINK_ARGS="$LIBLAPACK"', + 'CVXOPT_FFTW_EXTRA_LINK_ARGS="$LIBFFT"', + 'CVXOPT_SUITESPARSE_LIB_DIR=$EBROOTSUITESPARSE/lib', + 'CVXOPT_SUITESPARSE_INC_DIR=$EBROOTSUITESPARSE/include', +]) installopts = ' --no-binary cvxopt' diff --git a/easybuild/easyconfigs/c/Cartopy/Cartopy-0.22.0-foss-2023a.eb b/easybuild/easyconfigs/c/Cartopy/Cartopy-0.22.0-foss-2023a.eb index 9dfe231d9e6..73fc95af612 100644 --- a/easybuild/easyconfigs/c/Cartopy/Cartopy-0.22.0-foss-2023a.eb +++ b/easybuild/easyconfigs/c/Cartopy/Cartopy-0.22.0-foss-2023a.eb @@ -16,7 +16,7 @@ dependencies = [ # sufficiently recent Cython is required, to fix issues like: # pykdtree/kdtree.c:2437:76: error: PyArrayObject {aka struct tagPyArrayObject} has no member named data # Cython included with Python-bundle-PyPI (0.29.35) is not sufficient - ('Cython', '3.0.7'), + ('Cython', '3.0.8'), ('Fiona', '1.9.5'), ('GDAL', '3.7.1'), ('GEOS', '3.12.0'), diff --git a/easybuild/easyconfigs/c/Cassiopeia/Cassiopeia-2.0.0-foss-2023a.eb b/easybuild/easyconfigs/c/Cassiopeia/Cassiopeia-2.0.0-foss-2023a.eb new file mode 100644 index 00000000000..69b70834b9b --- /dev/null +++ b/easybuild/easyconfigs/c/Cassiopeia/Cassiopeia-2.0.0-foss-2023a.eb @@ -0,0 +1,132 @@ +easyblock = 'PythonBundle' + +name = 'Cassiopeia' +version = '2.0.0' + +homepage = 'https://github.com/YosefLab/Cassiopeia' +description = """A Package for Cas9-Enabled Single Cell Lineage Tracing Tree Reconstruction.""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +builddependencies = [ + ('CMake', '3.26.3'), + ('poetry', '1.5.1'), +] + +dependencies = [ + ('Python', '3.11.3'), + ('Python-bundle-PyPI', '2023.06'), + ('Biopython', '1.83'), + ('scikit-build', '0.17.6'), + ('bokeh', '3.2.2'), + ('ETE', '3.1.3'), + ('matplotlib', '3.7.2'), + ('networkx', '3.1'), + ('numba', '0.58.1'), + ('Pysam', '0.22.0'), + ('PyYAML', '6.0'), + ('typing-extensions', '4.9.0'), + ('tqdm', '4.66.1'), + ('hatchling', '1.18.0'), + ('BeautifulSoup', '4.12.2'), + ('statsmodels', '0.14.1'), + ('Seaborn', '0.13.2'), + ('IPython', '8.14.0'), + ('PyZMQ', '25.1.1'), +] + +use_pip = True +sanity_pip_check = True + +exts_list = [ + ('hatch_jupyter_builder', '0.9.1', { + 'checksums': ['79278198d124c646b799c5e8dca8504aed9dcaaa88d071a09eb0b5c2009a58ad'], + }), + ('hatch_nodejs_version', '0.3.2', { + 'checksums': ['8a7828d817b71e50bbbbb01c9bfc0b329657b7900c56846489b9c958de15b54c'], + }), + ('deprecation', '2.1.0', { + 'checksums': ['72b3bde64e5d778694b0cf68178aed03d15e15477116add3fb773e581f9518ff'], + }), + ('jupyter_packaging', '0.12.3', { + 'checksums': ['9d9b2b63b97ffd67a8bc5391c32a421bc415b264a32c99e4d8d8dd31daae9cf4'], + }), + ('jupyter_client', '8.6.1', { + 'checksums': ['e842515e2bab8e19186d89fdfea7abd15e39dd581f94e399f00e2af5a1652d3f'], + }), + ('widgetsnbextension', '4.0.10', { + 'checksums': ['64196c5ff3b9a9183a8e699a4227fb0b7002f252c814098e66c4d1cd0644688f'], + }), + ('jupyterlab_widgets', '3.0.10', { + 'checksums': ['04f2ac04976727e4f9d0fa91cdc2f1ab860f965e504c29dbd6a65c882c9d04c0'], + }), + ('comm', '0.2.2', { + 'checksums': ['3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e'], + }), + ('fastjsonschema', '2.19.1', { + 'checksums': ['e3126a94bdc4623d3de4485f8d468a12f02a67921315ddc87836d6e456dc789d'], + }), + ('ipywidgets', '8.1.2', { + 'checksums': ['d0b9b41e49bae926a866e613a39b0f0097745d2b9f1f3dd406641b4a57ec42c9'], + }), + ('bleach', '6.1.0', { + 'checksums': ['0a31f1837963c41d46bbf1331b8778e1308ea0791db03cc4e7357b97cf42a8fe'], + }), + ('defusedxml', '0.7.1', { + 'checksums': ['1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69'], + }), + ('jupyter_core', '5.7.2', { + 'checksums': ['aa5f8d32bbf6b431ac830496da7392035d6f61b4f54872f15c4bd2a9c3f536d9'], + }), + ('jupyterlab_pygments', '0.3.0', { + 'checksums': ['721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d'], + }), + ('mistune', '3.0.2', { + 'checksums': ['fc7f93ded930c92394ef2cb6f04a8aabab4117a91449e72dcc8dfa646a508be8'], + }), + ('nbclient', '0.10.0', { + 'checksums': ['4b3f1b7dba531e498449c4db4f53da339c91d449dc11e9af3a43b4eb5c5abb09'], + }), + ('pandocfilters', '1.5.1', { + 'checksums': ['002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e'], + }), + ('tinycss2', '1.2.1', { + 'checksums': ['8cff3a8f066c2ec677c06dbc7b45619804a6938478d9d73c284b29d14ecb0627'], + }), + ('traitlets', '5.14.2', { + 'checksums': ['8cdd83c040dab7d1dee822678e5f5d100b514f7b72b01615b26fc5718916fdf9'], + }), + ('shortuuid', '1.0.13', { + 'checksums': ['3bb9cf07f606260584b1df46399c0b87dd84773e7b25912b7e391e30797c5e72'], + }), + ('ngs-tools', '1.8.5', { + 'checksums': ['380e236a101c5b1ac3c0fcdbcc908a210179b6ef2a93fbea9f4eb0ec2edc1de0'], + }), + ('nbformat', '5.10.3', { + 'checksums': ['60ed5e910ef7c6264b87d644f276b1b49e24011930deef54605188ddeb211685'], + }), + ('nbconvert', '7.16.3', { + 'checksums': ['a6733b78ce3d47c3f85e504998495b07e6ea9cf9bf6ec1c98dda63ec6ad19142'], + }), + ('itolapi', '4.1.4', { + 'checksums': ['68e87ba51d209da556b0e373b3b0456b644a1a732c193fedbd7785ff37b6a2cb'], + }), + ('hits', '0.4.0', { + 'checksums': ['743bfc1b56ab8fcf9fefacfcad4c1f23e9bafec1b42225709dbe097c8e669383'], + }), + ('Levenshtein', '0.22.0', { + 'modulename': False, + 'checksums': ['86d285d770551cb648d4fcfe5243449a479e694e56b65272dc6cbda879012051'], + }), + ('python-Levenshtein', '0.22.0', { + 'modulename': 'Levenshtein', + 'checksums': ['6f8e2216fbd4610ccfa1bab2e0052fb23de34c2333c192de08150eeb99717702'], + }), + (name, version, { + 'source_urls': ['https://github.com/YosefLab/Cassiopeia/archive/'], + 'sources': [{'download_filename': '%(version)s.tar.gz', 'filename': '%(name)s-%(version)s.tar.gz'}], + 'checksums': ['28ae7495152683f5733222255056a1e7b2f7a51e1cee2f23f0d9f8ae5f4c3742'], + }), +] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/c/CellBender/CellBender-0.3.0-foss-2023a-CUDA-12.1.1.eb b/easybuild/easyconfigs/c/CellBender/CellBender-0.3.0-foss-2023a-CUDA-12.1.1.eb new file mode 100644 index 00000000000..94c6fc2c609 --- /dev/null +++ b/easybuild/easyconfigs/c/CellBender/CellBender-0.3.0-foss-2023a-CUDA-12.1.1.eb @@ -0,0 +1,72 @@ +easyblock = 'PythonBundle' + +name = 'CellBender' +version = '0.3.0' +versionsuffix = '-CUDA-%(cudaver)s' + +homepage = 'http://github.com/broadinstitute/CellBender' +description = """ +CellBender is a software package for eliminating technical artifacts from +high-throughput single-cell RNA sequencing (scRNA-seq) data. +""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +dependencies = [ + ('CUDA', '12.1.1', '', SYSTEM), + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), + ('matplotlib', '3.7.2'), + ('PyTorch', '2.1.2', versionsuffix), + ('IPython', '8.14.0'), + ('anndata', '0.10.5.post1'), + ('jupyter-contrib-nbextensions', '0.7.0'), + ('pyro-ppl', '1.9.0', versionsuffix), + ('loompy', '3.0.7'), + ('PyTables', '3.8.0'), + ('Qtconsole', '5.5.1'), +] + +use_pip = True + +exts_list = [ + ('async-timeout', '4.0.3', { + 'checksums': ['4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f'], + }), + ('traitlets', '5.14.1', { + 'source_tmpl': SOURCE_PY3_WHL, + 'checksums': ['2e5a030e6eff91737c643231bfcf04a65b0132078dad75e4936700b213652e74'], + }), + ('jupyter_console', '6.6.3', { + 'source_tmpl': SOURCE_PY3_WHL, + 'checksums': ['309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485'], + }), + ('jupyter', '1.0.0', { + 'checksums': ['d9dc4b3318f310e34c82951ea5d6683f67bed7def4b259fafbfe4f1beb1d8e5f'], + }), + ('notebook', '6.5.7', { + 'checksums': ['04eb9011dfac634fbd4442adaf0a8c27cd26beef831fe1d19faf930c327768e4'], + }), + ('mistune', '0.8.4', { + 'checksums': ['59a3429db53c50b5c6bcc8a07f8848cb00d7dc8bdb431a4ab41920d201d4756e'], + }), + ('nbconvert', '6.5.4', { + 'checksums': ['9e3c7c6d491374cbdd5f35d268c05809357716d346f4573186bbeab32ee50bc1'], + }), + ('cellbender', version, { + 'checksums': ['94a46fb2b5921414ea86213cfdebca267b9ba6ba02df854cbd353980ab3aff42'], + }), +] + +sanity_check_paths = { + 'files': ['bin/cellbender'], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +sanity_check_commands = [ + "cellbender --help", +] + +sanity_pip_check = True + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/c/CellBender/CellBender-0.3.0-foss-2023a.eb b/easybuild/easyconfigs/c/CellBender/CellBender-0.3.0-foss-2023a.eb new file mode 100644 index 00000000000..5fb9920fb70 --- /dev/null +++ b/easybuild/easyconfigs/c/CellBender/CellBender-0.3.0-foss-2023a.eb @@ -0,0 +1,70 @@ +easyblock = 'PythonBundle' + +name = 'CellBender' +version = '0.3.0' + +homepage = 'http://github.com/broadinstitute/CellBender' +description = """ +CellBender is a software package for eliminating technical artifacts from +high-throughput single-cell RNA sequencing (scRNA-seq) data. +""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +dependencies = [ + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), + ('matplotlib', '3.7.2'), + ('PyTorch', '2.1.2'), + ('IPython', '8.14.0'), + ('anndata', '0.10.5.post1'), + ('jupyter-contrib-nbextensions', '0.7.0'), + ('pyro-ppl', '1.9.0'), + ('loompy', '3.0.7'), + ('PyTables', '3.8.0'), + ('Qtconsole', '5.5.1'), +] + +use_pip = True + +exts_list = [ + ('async-timeout', '4.0.3', { + 'checksums': ['4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f'], + }), + ('traitlets', '5.14.1', { + 'source_tmpl': SOURCE_PY3_WHL, + 'checksums': ['2e5a030e6eff91737c643231bfcf04a65b0132078dad75e4936700b213652e74'], + }), + ('jupyter_console', '6.6.3', { + 'source_tmpl': SOURCE_PY3_WHL, + 'checksums': ['309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485'], + }), + ('jupyter', '1.0.0', { + 'checksums': ['d9dc4b3318f310e34c82951ea5d6683f67bed7def4b259fafbfe4f1beb1d8e5f'], + }), + ('notebook', '6.5.7', { + 'checksums': ['04eb9011dfac634fbd4442adaf0a8c27cd26beef831fe1d19faf930c327768e4'], + }), + ('mistune', '0.8.4', { + 'checksums': ['59a3429db53c50b5c6bcc8a07f8848cb00d7dc8bdb431a4ab41920d201d4756e'], + }), + ('nbconvert', '6.5.4', { + 'checksums': ['9e3c7c6d491374cbdd5f35d268c05809357716d346f4573186bbeab32ee50bc1'], + }), + ('cellbender', version, { + 'checksums': ['94a46fb2b5921414ea86213cfdebca267b9ba6ba02df854cbd353980ab3aff42'], + }), +] + +sanity_check_paths = { + 'files': ['bin/cellbender'], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +sanity_check_commands = [ + "cellbender --help", +] + +sanity_pip_check = True + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/c/CellBender/CellBender-0.3.1-foss-2022a-CUDA-11.7.0.eb b/easybuild/easyconfigs/c/CellBender/CellBender-0.3.1-foss-2022a-CUDA-11.7.0.eb deleted file mode 100644 index 88f92ec75ab..00000000000 --- a/easybuild/easyconfigs/c/CellBender/CellBender-0.3.1-foss-2022a-CUDA-11.7.0.eb +++ /dev/null @@ -1,85 +0,0 @@ -easyblock = 'PythonBundle' - -name = 'CellBender' -local_commit = 'e2fb597' -version = '0.3.1' -versionsuffix = '-CUDA-%(cudaver)s' - -homepage = 'http://github.com/broadinstitute/CellBender' -description = """ -CellBender is a software package for eliminating technical artifacts from -high-throughput single-cell RNA sequencing (scRNA-seq) data. -""" - -toolchain = {'name': 'foss', 'version': '2022a'} - -dependencies = [ - ('CUDA', '11.7.0', '', SYSTEM), - ('Python', '3.10.4'), - ('SciPy-bundle', '2022.05'), - ('matplotlib', '3.5.2'), - ('PyTorch', '1.12.0', versionsuffix), - ('IPython', '8.5.0'), - ('anndata', '0.8.0'), - ('jupyter-contrib-nbextensions', '0.7.0'), - ('pyro-ppl', '1.8.4', versionsuffix), - ('loompy', '3.0.7'), - ('PyTables', '3.8.0'), - ('Qtconsole', '5.4.0'), -] - -use_pip = True - -local_comm_preinstallopts = """sed -i -e 's/^requires.*hatchling.*/requires = ["setuptools"]/g' """ -local_comm_preinstallopts += """-e 's/^build-backend.*/build-backend = "setuptools.build_meta"/g' """ -local_comm_preinstallopts += """-e 's/^dynamic = .*version.*/version = "%(version)s"/g' pyproject.toml && """ - -exts_list = [ - ('setuptools', '69.0.3', { - 'checksums': ['be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78'], - }), - ('comm', '0.2.1', { - 'checksums': ['0bc91edae1344d39d3661dcbc36937181fdaddb304790458f8b044dbc064b89a'], - 'preinstallopts': local_comm_preinstallopts, - }), - # jupyter-console 6.6.3 requires ipykernel>=6.14 - ('ipykernel', '6.20.2', { - 'source_tmpl': SOURCE_PY3_WHL, - 'checksums': ['5d0675d5f48bf6a95fd517d7b70bcb3b2c5631b2069949b5c2d6e1d7477fb5a0'], - }), - # jupyter-console 6.6.3 requires jupyter-core!=5.0.*,>=4.12 - ('jupyter_core', '4.12.0', { - 'source_tmpl': SOURCE_PY3_WHL, - 'checksums': ['a54672c539333258495579f6964144924e0aa7b07f7069947bef76d7ea5cb4c1'], - }), - # jupyter-console 6.6.3 requires traitlets>=5.4 - ('traitlets', '5.14.1', { - 'source_tmpl': SOURCE_PY3_WHL, - 'checksums': ['2e5a030e6eff91737c643231bfcf04a65b0132078dad75e4936700b213652e74'], - }), - ('jupyter_console', '6.6.3', { - 'source_tmpl': SOURCE_PY3_WHL, - 'checksums': ['309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485'], - }), - ('jupyter', '1.0.0', { - 'checksums': ['d9dc4b3318f310e34c82951ea5d6683f67bed7def4b259fafbfe4f1beb1d8e5f'], - }), - ('cellbender', version, { - 'source_urls': ['https://github.com/broadinstitute/CellBender/archive'], - 'sources': [{'download_filename': '%s.tar.gz' % local_commit, 'filename': '%(name)s-%(version)s.tar.gz'}], - 'checksums': ['7eb67837d28495adb82147e80a2ab58eeb406c5d91aa69dd0cc120d9cb3d6396'], - }), -] - -sanity_check_paths = { - 'files': ['bin/cellbender'], - 'dirs': ['lib/python%(pyshortver)s/site-packages'], -} - -sanity_check_commands = [ - "cellbender --help", -] - -sanity_pip_check = True - -moduleclass = 'bio' diff --git a/easybuild/easyconfigs/c/CellBender/CellBender-0.3.1-foss-2022a.eb b/easybuild/easyconfigs/c/CellBender/CellBender-0.3.1-foss-2022a.eb deleted file mode 100644 index 798e18442ab..00000000000 --- a/easybuild/easyconfigs/c/CellBender/CellBender-0.3.1-foss-2022a.eb +++ /dev/null @@ -1,83 +0,0 @@ -easyblock = 'PythonBundle' - -name = 'CellBender' -local_commit = 'e2fb597' -version = '0.3.1' - -homepage = 'http://github.com/broadinstitute/CellBender' -description = """ -CellBender is a software package for eliminating technical artifacts from -high-throughput single-cell RNA sequencing (scRNA-seq) data. -""" - -toolchain = {'name': 'foss', 'version': '2022a'} - -dependencies = [ - ('Python', '3.10.4'), - ('SciPy-bundle', '2022.05'), - ('matplotlib', '3.5.2'), - ('PyTorch', '1.12.0'), - ('IPython', '8.5.0'), - ('anndata', '0.8.0'), - ('jupyter-contrib-nbextensions', '0.7.0'), - ('pyro-ppl', '1.8.4'), - ('loompy', '3.0.7'), - ('PyTables', '3.8.0'), - ('Qtconsole', '5.4.0'), -] - -use_pip = True - -local_comm_preinstallopts = """sed -i -e 's/^requires.*hatchling.*/requires = ["setuptools"]/g' """ -local_comm_preinstallopts += """-e 's/^build-backend.*/build-backend = "setuptools.build_meta"/g' """ -local_comm_preinstallopts += """-e 's/^dynamic = .*version.*/version = "%(version)s"/g' pyproject.toml && """ - -exts_list = [ - ('setuptools', '69.0.3', { - 'checksums': ['be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78'], - }), - ('comm', '0.2.1', { - 'checksums': ['0bc91edae1344d39d3661dcbc36937181fdaddb304790458f8b044dbc064b89a'], - 'preinstallopts': local_comm_preinstallopts, - }), - # jupyter-console 6.6.3 requires ipykernel>=6.14 - ('ipykernel', '6.20.2', { - 'source_tmpl': SOURCE_PY3_WHL, - 'checksums': ['5d0675d5f48bf6a95fd517d7b70bcb3b2c5631b2069949b5c2d6e1d7477fb5a0'], - }), - # jupyter-console 6.6.3 requires jupyter-core!=5.0.*,>=4.12 - ('jupyter_core', '4.12.0', { - 'source_tmpl': SOURCE_PY3_WHL, - 'checksums': ['a54672c539333258495579f6964144924e0aa7b07f7069947bef76d7ea5cb4c1'], - }), - # jupyter-console 6.6.3 requires traitlets>=5.4 - ('traitlets', '5.14.1', { - 'source_tmpl': SOURCE_PY3_WHL, - 'checksums': ['2e5a030e6eff91737c643231bfcf04a65b0132078dad75e4936700b213652e74'], - }), - ('jupyter_console', '6.6.3', { - 'source_tmpl': SOURCE_PY3_WHL, - 'checksums': ['309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485'], - }), - ('jupyter', '1.0.0', { - 'checksums': ['d9dc4b3318f310e34c82951ea5d6683f67bed7def4b259fafbfe4f1beb1d8e5f'], - }), - ('cellbender', version, { - 'source_urls': ['https://github.com/broadinstitute/CellBender/archive'], - 'sources': [{'download_filename': '%s.tar.gz' % local_commit, 'filename': '%(name)s-%(version)s.tar.gz'}], - 'checksums': ['7eb67837d28495adb82147e80a2ab58eeb406c5d91aa69dd0cc120d9cb3d6396'], - }), -] - -sanity_check_paths = { - 'files': ['bin/cellbender'], - 'dirs': ['lib/python%(pyshortver)s/site-packages'], -} - -sanity_check_commands = [ - "cellbender --help", -] - -sanity_pip_check = True - -moduleclass = 'bio' diff --git a/easybuild/easyconfigs/c/CellRanger-ARC/CellRanger-ARC-2.0.2.eb b/easybuild/easyconfigs/c/CellRanger-ARC/CellRanger-ARC-2.0.2.eb new file mode 100644 index 00000000000..fc7d6955925 --- /dev/null +++ b/easybuild/easyconfigs/c/CellRanger-ARC/CellRanger-ARC-2.0.2.eb @@ -0,0 +1,37 @@ +# The STAR binary included in this version has been vectorized with AVX +# hence it is not recommended for systems that do not support it. + +easyblock = 'Tarball' + +name = 'CellRanger-ARC' +version = '2.0.2' + +homepage = 'https://support.10xgenomics.com/single-cell-multiome-atac-gex/software/pipelines/latest/' +homepage += 'what-is-cell-ranger-arc' +description = """Cell Ranger ARC is a set of analysis pipelines that process + Chromium Single Cell Multiome ATAC + Gene Expression sequencing data to generate a + variety of analyses pertaining to gene expression, chromatin accessibility and + their linkage. Furthermore, since the ATAC and gene expression measurements are on + the very same cell, we are able to perform analyses that link chromatin + accessibility and gene expression.""" + +toolchain = SYSTEM + +download_instructions = """ +Download manually from: +https://www.10xgenomics.com/support/software/cell-ranger-arc/downloads +""" + +sources = [SOURCELOWER_TAR_GZ] +checksums = ['02a02457938dcf8dcb418b6c65effac06b210282d167437bfa8b2f10023dacae'] + +keepsymlinks = True + +sanity_check_paths = { + 'files': ["bin/cellranger-arc"], + 'dirs': ["bin/rna", "bin/tenkit"], +} + +sanity_check_commands = ['cellranger-arc -h'] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/c/CellRanger/CellRanger-8.0.0.eb b/easybuild/easyconfigs/c/CellRanger/CellRanger-8.0.0.eb new file mode 100644 index 00000000000..db95a8aae20 --- /dev/null +++ b/easybuild/easyconfigs/c/CellRanger/CellRanger-8.0.0.eb @@ -0,0 +1,31 @@ +# The STAR binary included in this version has been vectorized with AVX +# hence it is not recommended for systems that do not support it. + +easyblock = 'Tarball' + +name = 'CellRanger' +version = '8.0.0' + +homepage = 'https://support.10xgenomics.com/single-cell-gene-expression/software/pipelines/latest/what-is-cell-ranger' +description = """Cell Ranger is a set of analysis pipelines that process Chromium + single-cell RNA-seq output to align reads, generate gene-cell matrices and perform + clustering and gene expression analysis.""" + +toolchain = SYSTEM + +download_instructions = """ +Download manually from https://support.10xgenomics.com/single-cell-gene-expression/software/downloads/latest +""" +sources = [SOURCELOWER_TAR_GZ] +checksums = ['58b077b66b2b48966b3712a1f16a61be938237addbdf611a7a924bc99211bca6'] + +keepsymlinks = True + +sanity_check_paths = { + 'files': ['bin/cellranger'], + 'dirs': ['bin/rna', 'bin/tenkit'], +} + +sanity_check_commands = ['cellranger testrun --id=tiny'] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/c/CellRanger/CellRanger-8.0.1.eb b/easybuild/easyconfigs/c/CellRanger/CellRanger-8.0.1.eb new file mode 100644 index 00000000000..baa6b095438 --- /dev/null +++ b/easybuild/easyconfigs/c/CellRanger/CellRanger-8.0.1.eb @@ -0,0 +1,31 @@ +# The STAR binary included in this version has been vectorized with AVX +# hence it is not recommended for systems that do not support it. + +easyblock = 'Tarball' + +name = 'CellRanger' +version = '8.0.1' + +homepage = 'https://support.10xgenomics.com/single-cell-gene-expression/software/pipelines/latest/what-is-cell-ranger' +description = """Cell Ranger is a set of analysis pipelines that process Chromium + single-cell RNA-seq output to align reads, generate gene-cell matrices and perform + clustering and gene expression analysis.""" + +toolchain = SYSTEM + +download_instructions = """ +Download manually from https://support.10xgenomics.com/single-cell-gene-expression/software/downloads/latest +""" +sources = [SOURCELOWER_TAR_GZ] +checksums = ['ea2a35ac0f03961bab2ea485565d60cc6709a981c833a5e6c2b13a8fef641e81'] + +keepsymlinks = True + +sanity_check_paths = { + 'files': ['bin/cellranger'], + 'dirs': ['bin/rna', 'bin/tenkit'], +} + +sanity_check_commands = ['cellranger testrun --id=tiny'] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/c/CellRank/CellRank-2.0.2-foss-2023a.eb b/easybuild/easyconfigs/c/CellRank/CellRank-2.0.2-foss-2023a.eb new file mode 100644 index 00000000000..5b7ab31d93d --- /dev/null +++ b/easybuild/easyconfigs/c/CellRank/CellRank-2.0.2-foss-2023a.eb @@ -0,0 +1,77 @@ +easyblock = 'PythonBundle' + +name = 'CellRank' +version = '2.0.2' + +homepage = 'https://cellrank.readthedocs.io/en/stable/' +description = """CellRank is a toolkit to uncover cellular dynamics based on + Markov state modeling of single-cell data. It contains two main modules: +kernels compute cell-cell transition probabilities and estimators generate +hypothesis based on these. """ + +toolchain = {'name': 'foss', 'version': '2023a'} + +builddependencies = [('poetry', '1.5.1')] + +dependencies = [ + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), + ('anndata', '0.10.5.post1'), + ('matplotlib', '3.7.2'), + ('networkx', '3.1'), + ('numba', '0.58.1'), + ('scanpy', '1.9.8'), + ('scikit-learn', '1.3.1'), + ('scVelo', '0.3.1'), + ('Seaborn', '0.13.2'), + ('wrapt', '1.15.0'), + ('PyTorch', '2.1.2'), + ('wandb', '0.16.1'), + ('PyTorch-Lightning', '2.2.1'), +] + +use_pip = True +sanity_pip_check = True + +exts_list = [ + ('loguru', '0.7.2', { + 'checksums': ['e671a53522515f34fd406340ee968cb9ecafbc4b36c679da03c18fd8d0bd51ac'], + }), + ('nam', '0.0.3', { + 'checksums': ['48400d12b5f29fdd1671aebdf78d7f41bcac4f5c8ab7ed48770ee0c4fbc0673b'], + }), + ('python-utils', '3.8.2', { + 'checksums': ['c5d161e4ca58ce3f8c540f035e018850b261a41e7cb98f6ccf8e1deb7174a1f1'], + }), + ('progressbar2', '4.4.1', { + 'modulename': 'progressbar', + 'checksums': ['97d323ba03ad3d017a4d047fd0b2d3e733c5a360c07f87d269f96641c3de729f'], + }), + ('dunamai', '1.19.2', { + 'checksums': ['3be4049890763e19b8df1d52960dbea60b3e263eb0c96144a677ae0633734d2e'], + }), + ('poetry_dynamic_versioning', '1.2.0', { + 'checksums': ['1a7bbdba2530499e73dfc6ac0af19de29020ab4aaa3e507573877114e6b71ed6'], + }), + ('pygpcca', '1.0.4', { + 'preinstallopts': "sed -i 's/jinja2==3.0.3/jinja2>=3.0.3/' requirements.txt && ", + 'checksums': ['5e3b49279abc62d25133811daeee050715f995ff02042c46e2a2034331d090d1'], + }), + ('pygam', '0.9.1', { + 'checksums': ['a321a017bf485ed93fc6233e02621f8e7eab3d4f8971371c9ae9e079c55be01d'], + }), + ('joblib', '1.3.2', { + 'checksums': ['92f865e621e17784e7955080b6d042489e3b8e294949cc44c6eac304f59772b1'], + }), + ('docrep', '0.3.2', { + 'checksums': ['ed8a17e201abd829ef8da78a0b6f4d51fb99a4cbd0554adbed3309297f964314'], + }), + (name, version, { + 'modulename': 'cellrank', + 'preinstallopts': "sed -i 's/matplotlib>=3.5.0,<3.7.2/matplotlib>=3.5.0/' pyproject.toml && ", + 'source_tmpl': '%(namelower)s-%(version)s.tar.gz', + 'checksums': ['47c1d2e953ac91f572937d816142b4ac5f0c876174c60f857562de76a9f8aa61'], + }), +] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/c/Cellpose/Cellpose-2.2.2-foss-2022a-CUDA-11.7.0.eb b/easybuild/easyconfigs/c/Cellpose/Cellpose-2.2.2-foss-2022a-CUDA-11.7.0.eb index d0f93dfe418..feace92583f 100644 --- a/easybuild/easyconfigs/c/Cellpose/Cellpose-2.2.2-foss-2022a-CUDA-11.7.0.eb +++ b/easybuild/easyconfigs/c/Cellpose/Cellpose-2.2.2-foss-2022a-CUDA-11.7.0.eb @@ -27,10 +27,17 @@ dependencies = [ ('tqdm', '4.64.0'), ('imagecodecs', '2022.9.26'), ('scikit-build', '0.15.0'), + ('QtPy', '2.3.0'), ] use_pip = True +# avoid hatchling requirement to install +# (since installing it introduces conflicting version requirements with poetry included with Python) +_preinstallopts_no_hatchling = """sed -i -e 's/^build-backend = .*/build-backend = "setuptools.build_meta"/g' """ +_preinstallopts_no_hatchling += """-e 's/^requires = .*/requires = ["setuptools"]/g' """ +_preinstallopts_no_hatchling += r"""-e 's/dynamic = \["version"\]/version = "%(version)s"/g' pyproject.toml && """ + exts_list = [ ('tifffile', '2023.4.12', { 'checksums': ['2fa99f9890caab919d932a0acaa9d0f5843dc2ef3594e212963932e20713badd'], @@ -47,6 +54,10 @@ exts_list = [ ('roifile', '2023.5.12', { 'checksums': ['32eeba0d9ad52cc249d6a234b737c1808a6c5d7d9baae6453709eb74222b3433'], }), + ('superqt', '0.6.6', { + 'preinstallopts': _preinstallopts_no_hatchling, + 'checksums': ['792e09165c8a788ee245bdb784e018f9077fb309253354d86793cdf1d092f99f'], + }), (name, version, { # OpenCV dependency provides opencv-contrib-python (equivalent to opencv-python-headless) 'preinstallopts': "sed -i 's/opencv-python-headless/opencv-contrib-python/g' setup.py && ", diff --git a/easybuild/easyconfigs/c/Cellpose/Cellpose-2.2.2-foss-2022a.eb b/easybuild/easyconfigs/c/Cellpose/Cellpose-2.2.2-foss-2022a.eb index ccb478c890b..90f73c6aef8 100644 --- a/easybuild/easyconfigs/c/Cellpose/Cellpose-2.2.2-foss-2022a.eb +++ b/easybuild/easyconfigs/c/Cellpose/Cellpose-2.2.2-foss-2022a.eb @@ -25,10 +25,17 @@ dependencies = [ ('tqdm', '4.64.0'), ('imagecodecs', '2022.9.26'), ('scikit-build', '0.15.0'), + ('QtPy', '2.3.0'), ] use_pip = True +# avoid hatchling requirement to install +# (since installing it introduces conflicting version requirements with poetry included with Python) +_preinstallopts_no_hatchling = """sed -i -e 's/^build-backend = .*/build-backend = "setuptools.build_meta"/g' """ +_preinstallopts_no_hatchling += """-e 's/^requires = .*/requires = ["setuptools"]/g' """ +_preinstallopts_no_hatchling += r"""-e 's/dynamic = \["version"\]/version = "%(version)s"/g' pyproject.toml && """ + exts_list = [ ('tifffile', '2023.4.12', { 'checksums': ['2fa99f9890caab919d932a0acaa9d0f5843dc2ef3594e212963932e20713badd'], @@ -45,6 +52,10 @@ exts_list = [ ('roifile', '2023.5.12', { 'checksums': ['32eeba0d9ad52cc249d6a234b737c1808a6c5d7d9baae6453709eb74222b3433'], }), + ('superqt', '0.6.6', { + 'preinstallopts': _preinstallopts_no_hatchling, + 'checksums': ['792e09165c8a788ee245bdb784e018f9077fb309253354d86793cdf1d092f99f'], + }), (name, version, { # OpenCV dependency provides opencv-contrib-python (equivalent to opencv-python-headless) 'preinstallopts': "sed -i 's/opencv-python-headless/opencv-contrib-python/g' setup.py && ", diff --git a/easybuild/easyconfigs/c/CharLS/CharLS-2.4.2-GCCcore-12.3.0.eb b/easybuild/easyconfigs/c/CharLS/CharLS-2.4.2-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..9d814bdfc23 --- /dev/null +++ b/easybuild/easyconfigs/c/CharLS/CharLS-2.4.2-GCCcore-12.3.0.eb @@ -0,0 +1,30 @@ +easyblock = 'CMakeMake' + +name = 'CharLS' +version = '2.4.2' + +homepage = 'https://github.com/team-charls/charls' +description = """CharLS is a C++ implementation of the JPEG-LS standard for lossless and near-lossless image +compression and decompression. JPEG-LS is a low-complexity image compression standard that matches JPEG 2000 +compression ratios.""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/team-charls/charls/archive/'] +sources = ['%(version)s.tar.gz'] +checksums = ['d1c2c35664976f1e43fec7764d72755e6a50a80f38eca70fcc7553cad4fe19d9'] + +builddependencies = [ + ('binutils', '2.40'), + ('CMake', '3.26.3') +] + +configopts = '-DBUILD_SHARED_LIBS=ON ' + +sanity_check_paths = { + 'files': ['lib/libcharls.%s' % SHLIB_EXT], + 'dirs': ['include'], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/c/Check/Check-0.15.2-GCCcore-12.2.0.eb b/easybuild/easyconfigs/c/Check/Check-0.15.2-GCCcore-12.2.0.eb new file mode 100644 index 00000000000..80669a6c261 --- /dev/null +++ b/easybuild/easyconfigs/c/Check/Check-0.15.2-GCCcore-12.2.0.eb @@ -0,0 +1,37 @@ +easyblock = 'ConfigureMake' + +name = 'Check' +version = '0.15.2' + +homepage = 'https://libcheck.github.io/check/' +description = """ +Check is a unit testing framework for C. It features a simple interface for +defining unit tests, putting little in the way of the developer. Tests are +run in a separate address space, so both assertion failures and code errors +that cause segmentation faults or other signals can be caught. Test results +are reportable in the following: Subunit, TAP, XML, and a generic logging +format.""" + +toolchain = {'name': 'GCCcore', 'version': '12.2.0'} +toolchainopts = {'pic': True} + +github_account = 'libcheck' +source_urls = [GITHUB_LOWER_SOURCE] +sources = ['%(version)s.tar.gz'] +checksums = ['998d355294bb94072f40584272cf4424571c396c631620ce463f6ea97aa67d2e'] + +builddependencies = [ + ('binutils', '2.39'), + ('Autotools', '20220317'), + ('pkgconf', '1.9.3'), +] + +preconfigopts = "autoreconf -f -i && " +configopts = "--disable-build-docs" + +sanity_check_paths = { + 'files': ['bin/checkmk', 'lib/libcheck.a', 'lib/libcheck.%s' % SHLIB_EXT], + 'dirs': ['include', 'share'] +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/c/Check/Check-0.15.2-GCCcore-12.3.0.eb b/easybuild/easyconfigs/c/Check/Check-0.15.2-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..c700af315af --- /dev/null +++ b/easybuild/easyconfigs/c/Check/Check-0.15.2-GCCcore-12.3.0.eb @@ -0,0 +1,37 @@ +easyblock = 'ConfigureMake' + +name = 'Check' +version = '0.15.2' + +homepage = 'https://libcheck.github.io/check/' +description = """ +Check is a unit testing framework for C. It features a simple interface for +defining unit tests, putting little in the way of the developer. Tests are +run in a separate address space, so both assertion failures and code errors +that cause segmentation faults or other signals can be caught. Test results +are reportable in the following: Subunit, TAP, XML, and a generic logging +format.""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} +toolchainopts = {'pic': True} + +github_account = 'libcheck' +source_urls = [GITHUB_LOWER_SOURCE] +sources = ['%(version)s.tar.gz'] +checksums = ['998d355294bb94072f40584272cf4424571c396c631620ce463f6ea97aa67d2e'] + +builddependencies = [ + ('binutils', '2.40'), + ('Autotools', '20220317'), + ('pkgconf', '1.9.5'), +] + +preconfigopts = "autoreconf -f -i && " +configopts = "--disable-build-docs" + +sanity_check_paths = { + 'files': ['bin/checkmk', 'lib/libcheck.a', 'lib/libcheck.%s' % SHLIB_EXT], + 'dirs': ['include', 'share'] +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/c/CheckM2/CheckM2-1.0.2-foss-2022b.eb b/easybuild/easyconfigs/c/CheckM2/CheckM2-1.0.2-foss-2022b.eb new file mode 100644 index 00000000000..9f834b1a38f --- /dev/null +++ b/easybuild/easyconfigs/c/CheckM2/CheckM2-1.0.2-foss-2022b.eb @@ -0,0 +1,64 @@ +easyblock = 'PythonBundle' + +name = 'CheckM2' +version = '1.0.2' + +homepage = 'https://github.com/chklovski/CheckM2/' +description = "Assessing the quality of metagenome-derived genome bins using machine learning" + +toolchain = {'name': 'foss', 'version': '2022b'} + +builddependencies = [('CMake', '3.24.3')] +dependencies = [ + ('Python', '3.10.8'), + ('SciPy-bundle', '2023.02'), + ('DIAMOND', '2.1.8'), + ('TensorFlow', '2.13.0'), + ('prodigal', '2.6.3'), + ('h5py', '3.8.0'), + ('tqdm', '4.64.1'), +] + +exts_list = [ + ('scikit-learn', '0.23.2', { + 'modulename': 'sklearn', + 'checksums': ['20766f515e6cd6f954554387dfae705d93c7b544ec0e6c6a5d8e006f6f7ef480'], + }), + ('lightgbm', '3.2.1', { + 'checksums': ['bd98e3b501b4c24dc127f4ad93e467f42923fe3eefa99e143b5b93158f024395'], + }), + (name, version, { + 'patches': ['%(name)s-%(version)s_fileManager.py-database-fix.patch'], + 'source_urls': ['https://github.com/chklovski/CheckM2/archive/'], + 'sources': ['%(version)s.tar.gz'], + 'checksums': [ + {'1.0.2.tar.gz': '9d3129e4d0b53acc38519a259cc1e20a215dff0cbce51cef874545ca2fff005a'}, + {'CheckM2-1.0.2_fileManager.py-database-fix.patch': + '953f0eeef49ea537c0cb97c173a2488c29f09b58cd10800c60078b436a7ea2c7'}, + ], + }), +] + +postinstallcmds = [ + # np.float is depreciated in newer numpy + 'sed -i "s/np.float/float/g" %(installdir)s/lib/python%(pyshortver)s/site-packages/checkm2/predictQuality.py', + # update DB_LOCATION_DEFINITION in defaultValues.py to env CHECKM2DB + "cd %(installdir)s/lib/python%(pyshortver)s/site-packages/checkm2 && " + r"sed -i 's/\(DB_LOCATION_DEFINITION\) = .*/\1 = os.environ.get(\"CHECKM2DB\", \"Not Set\")/' defaultValues.py", +] + +modloadmsg = """You need download a diamond database now and setup a path to this db: +First you need to setup $CHECKM2DB as: +$ export CHECKM2DB="path/to/database/CheckM2_database/uniref100.KO.1.dmnd" +Next, download the database (/CheckM2_database/uniref100.KO.1.dmnd will be created): +$ checkm2 database --download --path path/to/database +You can check path to the database by: +$ checkm2 database --current +You can either test if everything is setup properly by: +$ checkm2 testrun +""" + +use_pip = True +sanity_pip_check = True + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/c/CheckM2/CheckM2-1.0.2_fileManager.py-database-fix.patch b/easybuild/easyconfigs/c/CheckM2/CheckM2-1.0.2_fileManager.py-database-fix.patch new file mode 100644 index 00000000000..5c64bd20738 --- /dev/null +++ b/easybuild/easyconfigs/c/CheckM2/CheckM2-1.0.2_fileManager.py-database-fix.patch @@ -0,0 +1,126 @@ +Author: Pavel Tomanek (Inuits) + Kenneth Hoste (HPC-UGent) +This patch changes the way a path to the diamond database is set. It used to be stored in install dir in +diamond_path.json, but since this is unmodifiable file for user, the path is stored in env variable CHECKM2DB. +The patch needs to change whole file - there was a problem with dos style endings (CRLF). +diff -ruZ CheckM2-1.0.2.orig/checkm2/fileManager.py CheckM2-1.0.2/checkm2/fileManager.py +--- CheckM2-1.0.2.orig/checkm2/fileManager.py 2023-05-19 01:56:46.000000000 +0200 ++++ CheckM2-1.0.2/checkm2/fileManager.py 2024-05-30 22:13:45.230761282 +0200 +@@ -22,62 +22,34 @@ + + diamond_definition = self.__get_db_file() + +- if diamond_definition['DBPATH'] == 'Not Set': ++ if diamond_definition == 'Not Set': + self.DATABASE_DIR = 'Not Set' + else: +- self.DATABASE_DIR = diamond_definition['DBPATH'] ++ self.DATABASE_DIR = diamond_definition + else: + diamond_definition = self.__get_db_file() + +- if diamond_definition['DBPATH'] == 'Not Set': ++ if diamond_definition == 'Not Set': + self.DATABASE_DIR = 'Not Set' + else: +- self.DATABASE_DIR = diamond_definition['DBPATH'] ++ self.DATABASE_DIR = diamond_definition + + + def __get_db_file(self): +- diamond_location = DefaultValues.DB_LOCATION_DEFINITION +- try: +- with open(diamond_location) as f: +- diamond_definition = json.load(f) +- return diamond_definition +- except: +- logging.warning('Could not open DIAMOND location definition file. Creating new file.') +- db_ref_file = {"Type": "DIAMONDDB", "DBPATH": "Not Set"} +- with open(diamond_location, 'w') as dl: +- json.dump(db_ref_file, dl) +- try: +- with open(diamond_location) as f: +- diamond_definition = json.load(f) +- return diamond_definition +- except Exception as e: +- logging.error('Could not create new file: {}'.format(e)) +- sys.exit(1) +- ++ return DefaultValues.DB_LOCATION_DEFINITION + + def get_DB_location(self): + if self.DATABASE_DIR == 'Not Set': +- logging.error('DIAMOND database not found. Please download database using ') ++ logging.error( ++ 'DIAMOND database not found. Please download database using $ checkm2 database --download --path /path/to/database ' ++ + ',but FIRST set CHECKM2DB to PATH by $ export CHECKM2DB=\"/path/to/database/CheckM2_database/uniref100.KO.1.dmnd\"' ++ ) + sys.exit(1) + else: + return self.DATABASE_DIR + + def set_DB_location(self, provided_location): +- logging.info('Checking provided DIAMOND database location') +- if versionControl.VersionControl().checksum_version_validate_DIAMOND(provided_location): +- #great - let's set it +- diamond_definition = self.__get_db_file() +- +- diamond_definition['DBPATH'] = os.path.abspath(provided_location) +- with open(DefaultValues.DB_LOCATION_DEFINITION, 'w') as dd: +- json.dump(diamond_definition, dd) +- +- logging.info("Database check successful! Database path successfully added.") +- +- else: +- logging.error("Checksum in CheckM2 reference doesn't match provided database. Please check your files.") +- sys.exit(1) +- ++ logging.info("Set path to database location by: $ export CHECKM2DB=path/to/database/CheckM2_database/uniref100.KO.1.dmnd") + + def download_database(self, download_location): + +@@ -87,32 +59,11 @@ + + diamond_location = DefaultValues.DB_LOCATION_DEFINITION + +- try: +- with open(diamond_location) as f: +- diamond_definition = json.load(f) +- except: +- logging.warning('Could not open DIAMOND location definition file. Creating new file.') +- x = {"Type": "DIAMONDDB", "DBPATH": "Not Set"} +- with open(diamond_location, 'w') as dl: +- json.dump(x, dl) +- try: +- with open(diamond_location) as f: +- diamond_definition = json.load(f) +- except Exception as e: +- logging.error('Could not create new file: {}'.format(e)) +- sys.exit(1) +- if diamond_definition['DBPATH'] != 'Not Set': +- logging.warning('DIAMOND database found at {}. Overwriting previous database.'.format(diamond_definition['DBPATH'])) +- +- + make_sure_path_exists(os.path.join(download_location, 'CheckM2_database')) + + backpack_downloader = zenodo_backpack.zenodo_backpack_downloader('INFO') + highest_compatible_version, DOI = versionControl.VersionControl().return_highest_compatible_DB_version() + +- +- diamond_loc_final = os.path.join(download_location, 'CheckM2_database', 'uniref100.KO.1.dmnd') +- + if download_location is not None: + #check we have writing permission + try: +@@ -126,12 +77,6 @@ + + backpack_downloader.download_and_extract(download_location, DOI, progress_bar=True, no_check_version=False) + +- diamond_definition['DBPATH'] = os.path.abspath(diamond_loc_final) +- +- with open(diamond_location, 'w') as dd: +- json.dump(diamond_definition, dd) +- +- + else: + logging.info('Failed to determine download location') + sys.exit(1) diff --git a/easybuild/easyconfigs/c/Clang/Clang-17.0.6-GCCcore-13.2.0.eb b/easybuild/easyconfigs/c/Clang/Clang-17.0.6-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..1cb99d62d99 --- /dev/null +++ b/easybuild/easyconfigs/c/Clang/Clang-17.0.6-GCCcore-13.2.0.eb @@ -0,0 +1,55 @@ +## +# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild +# +# Copyright:: Copyright 2013-2015 Dmitri Gribenko, Ward Poelmans +# Authors:: Dmitri Gribenko +# Authors:: Ward Poelmans +# License:: GPLv2 or later, MIT, three-clause BSD. +# $Id$ +## + +name = 'Clang' +version = '17.0.6' + +homepage = 'https://clang.llvm.org/' +description = """C, C++, Objective-C compiler, based on LLVM. Does not + include C++ standard library -- use libstdc++ from GCC.""" + +# Clang also depends on libstdc++ during runtime, but this dependency is +# already specified as the toolchain. +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +source_urls = ["https://github.com/llvm/llvm-project/releases/download/llvmorg-%(version)s"] +sources = [ + 'llvm-project-%(version)s.src.tar.xz', +] +checksums = ['58a8818c60e6627064f312dbf46c02d9949956558340938b71cf731ad8bc0813'] + +builddependencies = [ + ('CMake', '3.27.6'), + ('Perl', '5.38.0'), + # Including Python bindings would require this as a runtime dep + # and SWIG as an additional build dep + ('Python', '3.11.5'), +] +dependencies = [ + # since Clang is a compiler, binutils is a runtime dependency too + ('binutils', '2.40'), + ('hwloc', '2.9.2'), + ('libxml2', '2.11.5'), + ('ncurses', '6.4'), + ('GMP', '6.3.0'), + ('Z3', '4.13.0'), +] + +# If True, Flang does not currently support building with LLVM exceptions enabled. +enable_rtti = False + +assertions = True +python_bindings = False +skip_all_tests = True + +llvm_runtimes = ['libunwind', 'libcxx', 'libcxxabi'] +llvm_projects = ['polly', 'lld', 'lldb', 'clang-tools-extra', 'flang'] + +moduleclass = 'compiler' diff --git a/easybuild/easyconfigs/c/CoCoALib/CoCoALib-0.99850-GCC-13.2.0.eb b/easybuild/easyconfigs/c/CoCoALib/CoCoALib-0.99850-GCC-13.2.0.eb new file mode 100644 index 00000000000..f85edd9ec85 --- /dev/null +++ b/easybuild/easyconfigs/c/CoCoALib/CoCoALib-0.99850-GCC-13.2.0.eb @@ -0,0 +1,42 @@ +easyblock = 'ConfigureMake' + +name = 'CoCoALib' +version = '0.99850' + +homepage = 'https://cocoa.dima.unige.it/cocoa/cocoalib/' +description = "CoCoALib is a free GPL3 C++ library for doing Computations in Commutative Algebra." + +toolchain = {'name': 'GCC', 'version': '13.2.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://cocoa.dima.unige.it/cocoa/cocoalib/tgz'] +sources = [SOURCE_TGZ] +checksums = ['d3e7af0153c6950f83f4e3556540f0177fedf5179f0f7667b7d6d670268fd445'] + +dependencies = [ + ('GMP', '6.3.0'), + ('cddlib', '0.94m'), # optional +] + +# libreadline only needed for CoCoA-5 +configopts = "--only-cocoalib --no-readline --threadsafe-hack " +# Use cddlib and GMP from EB +configopts += "--with-libcddgmp=${EBROOTCDDLIB}/lib/libcddgmp.a --with-libgmp=$EBROOTGMP/lib/libgmp.a " + +buildopts = 'CXX="$CXX" CXXFLAGS="$CXXFLAGS"' + +# Makefile is not smart enough to create missing directories +preinstallopts = "mkdir %(installdir)s/{include,lib} && " + +# Move doc and examples from include to share +postinstallcmds = [ + "mkdir %(installdir)s/share", + "mv %(installdir)s/include/CoCoA-%(version)s/{doc,examples} %(installdir)s/share/", +] + +sanity_check_paths = { + 'files': ['lib/libcocoa.a'], + 'dirs': ['include/CoCoA-%(version)s', 'share/doc', 'share/examples'] +} + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/c/Compass/Compass-2024.04-foss-2021b.eb b/easybuild/easyconfigs/c/Compass/Compass-2024.04-foss-2021b.eb new file mode 100644 index 00000000000..0ff4a4f9bdb --- /dev/null +++ b/easybuild/easyconfigs/c/Compass/Compass-2024.04-foss-2021b.eb @@ -0,0 +1,42 @@ +easyblock = 'PythonBundle' + +name = 'Compass' +version = '2024.04' + +homepage = 'https://github.com/YosefLab/Compass' +description = """In-Silico Modeling of Metabolic Heterogeneity using Single-Cell Transcriptomes.""" +local_commit = "7664cb0" + +toolchain = {'name': 'foss', 'version': '2021b'} + +dependencies = [ + ('Python', '3.9.6'), + ('SciPy-bundle', '2021.10'), + ('tqdm', '4.62.3'), + ('python-libsbml', '5.20.2'), + ('scikit-learn', '1.0.1'), + ('python-igraph', '0.9.8'), + ('leidenalg', '0.8.8'), + ('anndata', '0.9.2'), + ('CPLEX', '22.1.1'), +] + +use_pip = True +sanity_pip_check = True + +exts_list = [ + ('compass', version, { + 'source_urls': ['https://github.com/YosefLab/Compass/archive/'], + 'sources': [{'download_filename': '7664cb0.tar.gz', 'filename': '%(name)s-%(version)s-7664cb0.tar.gz'}], + 'checksums': ['87529c5fae108fa2a8e3e35438d3b25874faa78af670a2349228c76fa0843376'], + 'preinstallopts': "sed -i '/python-igraph/d' setup.py && ", + }), +] + +sanity_check_commands = [ + "compass -h", + "python -c 'import cplex'", + "python -c 'import igraph'", +] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/c/CppUnit/CppUnit-1.15.1-GCCcore-12.2.0.eb b/easybuild/easyconfigs/c/CppUnit/CppUnit-1.15.1-GCCcore-12.2.0.eb new file mode 100644 index 00000000000..404431b947f --- /dev/null +++ b/easybuild/easyconfigs/c/CppUnit/CppUnit-1.15.1-GCCcore-12.2.0.eb @@ -0,0 +1,28 @@ +easyblock = 'ConfigureMake' + +name = 'CppUnit' +version = '1.15.1' + +homepage = 'https://freedesktop.org/wiki/Software/cppunit/' + +description = """ + CppUnit is the C++ port of the famous JUnit framework for unit testing. +""" + +toolchain = {'name': 'GCCcore', 'version': '12.2.0'} + +source_urls = ['https://dev-www.libreoffice.org/src'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['89c5c6665337f56fd2db36bc3805a5619709d51fb136e51937072f63fcc717a7'] + +builddependencies = [ + ('binutils', '2.39'), +] + +sanity_check_paths = { + 'files': ['lib/libcppunit.a', 'lib/libcppunit.%s' % SHLIB_EXT, + 'lib/pkgconfig/cppunit.pc'], + 'dirs': ['bin', 'include/cppunit', 'share'], +} + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/c/Cython/Cython-3.0.10-GCCcore-13.2.0.eb b/easybuild/easyconfigs/c/Cython/Cython-3.0.10-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..194048d611d --- /dev/null +++ b/easybuild/easyconfigs/c/Cython/Cython-3.0.10-GCCcore-13.2.0.eb @@ -0,0 +1,40 @@ +easyblock = 'PythonPackage' + +name = 'Cython' +version = '3.0.10' + +homepage = 'https://cython.org/' +description = """ +Cython is an optimising static compiler for both the Python programming +language and the extended Cython programming language (based on Pyrex). +""" +docurls = [ + 'https://cython.org/#documentation', + 'https://github.com/cython/cython', +] + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +sources = [SOURCE_TAR_GZ] +checksums = ['dcc96739331fb854dcf503f94607576cfe8488066c61ca50dfd55836f132de99'] + +builddependencies = [ + ('binutils', '2.40'), +] + +dependencies = [ + ('Python', '3.11.5'), +] + +download_dep_fail = True +use_pip = True +sanity_pip_check = True + +sanity_check_paths = { + 'files': ['bin/cygdb', 'bin/cython', 'bin/cythonize'], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +sanity_check_commands = ["cython --version"] + +moduleclass = 'lang' diff --git a/easybuild/easyconfigs/c/Cython/Cython-3.0.8-GCCcore-12.3.0.eb b/easybuild/easyconfigs/c/Cython/Cython-3.0.8-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..ac694119ebc --- /dev/null +++ b/easybuild/easyconfigs/c/Cython/Cython-3.0.8-GCCcore-12.3.0.eb @@ -0,0 +1,40 @@ +easyblock = 'PythonPackage' + +name = 'Cython' +version = '3.0.8' + +homepage = 'https://cython.org/' +description = """ +Cython is an optimising static compiler for both the Python programming +language and the extended Cython programming language (based on Pyrex). +""" +docurls = [ + 'https://cython.org/#documentation', + 'https://github.com/cython/cython', +] + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +sources = [SOURCE_TAR_GZ] +checksums = ['8333423d8fd5765e7cceea3a9985dd1e0a5dfeb2734629e1a2ed2d6233d39de6'] + +builddependencies = [ + ('binutils', '2.40'), +] + +dependencies = [ + ('Python', '3.11.3'), +] + +download_dep_fail = True +use_pip = True +sanity_pip_check = True + +sanity_check_paths = { + 'files': ['bin/cygdb', 'bin/cython', 'bin/cythonize'], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +sanity_check_commands = ["cython --version"] + +moduleclass = 'lang' diff --git a/easybuild/easyconfigs/c/cURL/cURL-8.7.1-GCCcore-13.3.0.eb b/easybuild/easyconfigs/c/cURL/cURL-8.7.1-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..02470220971 --- /dev/null +++ b/easybuild/easyconfigs/c/cURL/cURL-8.7.1-GCCcore-13.3.0.eb @@ -0,0 +1,43 @@ +easyblock = 'ConfigureMake' + +name = 'cURL' +version = '8.7.1' + +homepage = 'https://curl.haxx.se' + +description = """ + libcurl is a free and easy-to-use client-side URL transfer library, + supporting DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, + LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet and TFTP. + libcurl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP + form based upload, proxies, cookies, user+password authentication (Basic, + Digest, NTLM, Negotiate, Kerberos), file transfer resume, http proxy tunneling + and more. +""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = ['https://curl.haxx.se/download/'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['f91249c87f68ea00cf27c44fdfa5a78423e41e71b7d408e5901a9896d905c495'] + +builddependencies = [ + ('binutils', '2.42'), +] + +dependencies = [ + ('zlib', '1.3.1'), + ('OpenSSL', '3', '', SYSTEM), +] + +configopts = '--with-zlib ' +configopts += '--with-ssl=$EBROOTOPENSSL ' + +modextravars = {'CURL_INCLUDES': '%(installdir)s/include'} + +sanity_check_paths = { + 'files': ['bin/curl', 'lib/libcurl.a', 'lib/libcurl.%s' % SHLIB_EXT], + 'dirs': ['lib/pkgconfig', 'include/curl'], +} + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/c/cddlib/cddlib-0.94m-GCCcore-13.2.0.eb b/easybuild/easyconfigs/c/cddlib/cddlib-0.94m-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..c747475d137 --- /dev/null +++ b/easybuild/easyconfigs/c/cddlib/cddlib-0.94m-GCCcore-13.2.0.eb @@ -0,0 +1,38 @@ +easyblock = 'ConfigureMake' + +name = 'cddlib' +version = '0.94m' + +homepage = 'https://github.com/cddlib/cddlib' +description = "An efficient implementation of the Double Description Method" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} +toolchainopts = {'pic': True} + +github_account = 'cddlib' +source_urls = [GITHUB_SOURCE] +sources = ['%(version)s.tar.gz'] +checksums = ['766d8ec2135989830748e5e2fe57f307ed0706431c135541c3c081cbec0bc34f'] + +builddependencies = [ + ('Autotools', '20220317'), + ('binutils', '2.40'), +] + +dependencies = [('GMP', '6.3.0')] + +preconfigopts = "autoreconf -f -i && " + +buildopts = "SUBDIRS='lib-src src'" # build sources but spare the documentation in latex +installopts = buildopts + +local_exes = ['adjacency', 'allfaces', 'cddexec', 'fourier', 'lcdd', 'projection', 'redcheck', 'scdd', 'testcdd1', + 'testcdd2', 'testlp1', 'testlp2', 'testlp3', 'testshoot'] +sanity_check_paths = { + 'files': ['bin/%s' % x for x in local_exes] + ['bin/%s_gmp' % x for x in local_exes] + + ['lib/%s.%s' % (l, e) for l in ['libcdd', 'libcddgmp'] for e in ['a', SHLIB_EXT]] + + ['include/cddlib/%s.h' % h for h in ['cdd', 'cddmp', 'cddtypes', 'setoper', 'splitmix64']], + 'dirs': ['share/doc'] +} + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/c/cffi/cffi-1.16.0-GCCcore-13.3.0.eb b/easybuild/easyconfigs/c/cffi/cffi-1.16.0-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..94a734e98da --- /dev/null +++ b/easybuild/easyconfigs/c/cffi/cffi-1.16.0-GCCcore-13.3.0.eb @@ -0,0 +1,38 @@ +easyblock = "PythonBundle" + +name = 'cffi' +version = '1.16.0' + +homepage = 'https://cffi.readthedocs.io/en/latest/' +description = """C Foreign Function Interface for Python. Interact with almost any C code from +Python, based on C-like declarations that you can often copy-paste from header +files or documentation. +""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} +toolchainopts = {'pic': True} + +builddependencies = [ + ('binutils', '2.42'), +] + +dependencies = [ + ('Python', '3.12.3'), +] + +exts_default_options = { + 'download_dep_fail': True, + 'sanity_pip_check': True, + 'use_pip': True, +} + +exts_list = [ + ('pycparser', '2.22', { + 'checksums': ['491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6'], + }), + (name, version, { + 'checksums': ['bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0'], + }), +] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/c/charm-gems/charm-gems-1.3.3-foss-2023a.eb b/easybuild/easyconfigs/c/charm-gems/charm-gems-1.3.3-foss-2023a.eb new file mode 100644 index 00000000000..6f01647c03b --- /dev/null +++ b/easybuild/easyconfigs/c/charm-gems/charm-gems-1.3.3-foss-2023a.eb @@ -0,0 +1,55 @@ +easyblock = 'PythonBundle' + +name = 'charm-gems' +version = '1.3.3' + +homepage = 'https://github.com/simnibs/charm-gems' +description = """This repository contains the gems C++ code and python bindings used in +Freesurfer's Sequence-Adaptive Multimodal SEGmentation (SAMSEG) and in +SimNIBS 4.0 Complete Head Anatomy Reconstruction Method (CHARM) to +create individualized head models for electric field simulations.""" + +toolchain = {'name': 'foss', 'version': '2023a'} +toolchainopts = {'pic': True} + +builddependencies = [ + ('CMake', '3.26.3'), + ('make', '4.4.1'), +] + +dependencies = [ + ('Python', '3.11.3'), + ('Python-bundle-PyPI', '2023.06'), + ('SciPy-bundle', '2023.07'), +] + +use_pip = True +sanity_pip_check = True + +# update GCC version in vcl_compiler.h and install ITK from submodule +local_preinstallopts = "sed -i 's/error \"Dunno about this gcc\"/define VCL_GCC_123/' \\" +local_preinstallopts += "ITK/Modules/ThirdParty/VNL/src/vxl/vcl/vcl_compiler.h && " +local_preinstallopts += "mkdir ITK-build && cd ITK-build && " +local_preinstallopts += "cmake -DBUILD_SHARED_LIBS=OFF -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF \\" +local_preinstallopts += "-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=%(installdir)s/ITK-install ../ITK && " +local_preinstallopts += "make install && cd .. && " +local_preinstallopts += "export ITK_DIR=%(installdir)s/ITK-install && " + +exts_list = [ + (name, version, { + 'preinstallopts': local_preinstallopts, + 'sources': [{ + 'filename': '%(name)s-%(version)s.tar.gz', + 'git_config': { + 'url': 'https://github.com/simnibs', + 'repo_name': 'charm-gems', + 'tag': 'v%(version)s', + 'recursive': True, + 'keep_git_dir': True, + } + }], + 'checksums': [None], + }), +] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/c/chromVARmotifs/chromVARmotifs-0.2.0-foss-2023a-R-4.3.2.eb b/easybuild/easyconfigs/c/chromVARmotifs/chromVARmotifs-0.2.0-foss-2023a-R-4.3.2.eb new file mode 100644 index 00000000000..bd7943a2e76 --- /dev/null +++ b/easybuild/easyconfigs/c/chromVARmotifs/chromVARmotifs-0.2.0-foss-2023a-R-4.3.2.eb @@ -0,0 +1,30 @@ +easyblock = 'RPackage' + +name = 'chromVARmotifs' +local_commit = '38bed55' +# see DESCRIPTION file +version = '0.2.0' +versionsuffix = '-R-%(rver)s' + +homepage = 'https://github.com/GreenleafLab/chromVARmotifs' +description = """The goal of chromVARmotifs is to make it easy to use several different motif collections in R, + particularly for use with motifmatchr and chromVAR packages.""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +dependencies = [ + ('R', '4.3.2'), + ('R-bundle-CRAN', '2023.12'), + ('R-bundle-Bioconductor', '3.18', versionsuffix), +] + +source_urls = ['https://github.com/GreenleafLab/chromVARmotifs/archive'] +sources = [{'download_filename': '%s.tar.gz' % local_commit, 'filename': SOURCE_TAR_GZ}] +checksums = ['6bc0894e1ffc9aa51d7eefce71ca0a586b271e7c6fd60211b179862eb51e4f1b'] + +sanity_check_paths = { + 'files': [], + 'dirs': [name], +} + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/c/cliquer/cliquer-1.21-GCCcore-13.2.0.eb b/easybuild/easyconfigs/c/cliquer/cliquer-1.21-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..3fa7d597761 --- /dev/null +++ b/easybuild/easyconfigs/c/cliquer/cliquer-1.21-GCCcore-13.2.0.eb @@ -0,0 +1,42 @@ +easyblock = 'MakeCp' + +name = 'cliquer' +version = '1.21' + +homepage = 'https://users.aalto.fi/~pat/cliquer.html' +description = """Cliquer is a set of C routines for finding cliques in an arbitrary weighted graph. + It uses an exact branch-and-bound algorithm developed by Patric Ostergard. It is designed with + the aim of being efficient while still being flexible and easy to use.""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} +toolchainopts = {'pic': True} + +source_urls = ['http://users.aalto.fi/~pat/cliquer/'] +sources = [SOURCE_TAR_GZ] +checksums = ['ff306d27eda82383c0257065e3ffab028415ac9af73bccfdd9c2405b797ed1f1'] + +builddependencies = [('binutils', '2.40')] + +local_sharedlib = 'libcliquer.%s' % SHLIB_EXT + +prebuildopts = 'sed -i "s/^CFLAGS=/CFLAGS=$CFLAGS /" Makefile && ' + +buildopts = ' && $CC -shared $CFLAGS $LDFLAGS -o %s *.o' % local_sharedlib + +local_headers = ['cliquer', 'set', 'graph', 'misc', 'reorder', 'cliquerconf'] + +files_to_copy = [ + (['cl'], 'bin'), + ([local_sharedlib], 'lib'), + (['%s.h' % h for h in local_headers], 'include/cliquer'), +] + +sanity_check_paths = { + 'files': ['bin/cl', 'lib/%s' % local_sharedlib] + + ['include/cliquer/%s.h' % h for h in local_headers], + 'dirs': [], +} + +sanity_check_commands = ["cl --help"] + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/c/cmph/cmph-2.0-GCCcore-12.3.0.eb b/easybuild/easyconfigs/c/cmph/cmph-2.0-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..93f75f90c53 --- /dev/null +++ b/easybuild/easyconfigs/c/cmph/cmph-2.0-GCCcore-12.3.0.eb @@ -0,0 +1,29 @@ +easyblock = 'ConfigureMake' + +name = 'cmph' +version = '2.0' + +homepage = 'https://sourceforge.net/projects/cmph/' +description = """ +Cmph is a free minimal perfect hash C library, providing several algorithms in the literature +in a consistent, ease to use, API. +""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +source_urls = ['https://sourceforge.net/projects/%(name)s/files/%(name)s'] +sources = ['%(name)s-%(version)s.tar.gz'] +checksums = ['ad6c9a75ff3da1fb1222cac0c1d9877f4f2366c5c61c92338c942314230cba76'] + +builddependencies = [('binutils', '2.40')] + +sanity_check_paths = { + 'files': ['bin/cmph'], + 'dirs': ['include', 'lib'], +} + +sanity_check_commands = [ + "cmph -h", +] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/c/code-server/code-server-4.89.1.eb b/easybuild/easyconfigs/c/code-server/code-server-4.89.1.eb new file mode 100644 index 00000000000..dfd586cb4fc --- /dev/null +++ b/easybuild/easyconfigs/c/code-server/code-server-4.89.1.eb @@ -0,0 +1,20 @@ +name = 'code-server' +version = '4.89.1' + +homepage = 'https://github.com/coder/code-server' +description = """Run VS Code on any machine anywhere and access it in the browser.""" + +toolchain = SYSTEM + +source_urls = ['https://github.com/coder/code-server/releases/download/v%(version)s/'] +sources = ['code-server-%(version)s-linux-%(mapped_arch)s.tar.gz'] +checksums = [ + { + 'code-server-%(version)s-linux-amd64.tar.gz': + '5c3769b1ab5cbb2eceb092524dc46f558905e4260155b477d3a313f9ea25ca33', + 'code-server-%(version)s-linux-arm64.tar.gz': + '69d3d1f7158d6e2125bd2f831611ab959a2aa80d5a7d96422a44070eb2b8645b', + } +] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/c/configurable-http-proxy/configurable-http-proxy-4.6.1-GCCcore-13.2.0.eb b/easybuild/easyconfigs/c/configurable-http-proxy/configurable-http-proxy-4.6.1-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..c8aae63595d --- /dev/null +++ b/easybuild/easyconfigs/c/configurable-http-proxy/configurable-http-proxy-4.6.1-GCCcore-13.2.0.eb @@ -0,0 +1,32 @@ +easyblock = 'Binary' + +name = 'configurable-http-proxy' +version = '4.6.1' + +homepage = 'https://github.com/jupyterhub/configurable-http-proxy' +description = """HTTP proxy for node.js including a REST API for updating the routing table. + Developed as a part of the Jupyter Hub multi-user server.""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +source_urls = ['https://github.com/jupyterhub/%(name)s/archive/'] +sources = ['%(version)s.tar.gz'] +checksums = ['52bac444b1a0629e7817102949f685bdb719d0cbfd0abbaeaa91d42f1ed60852'] + +builddependencies = [ + ('binutils', '2.40'), +] +dependencies = [ + ('nodejs', '20.9.0'), +] + +install_cmd = "npm install --no-package-lock -g --prefix %(installdir)s %(version)s.tar.gz" + +sanity_check_paths = { + 'files': ['bin/%(name)s'], + 'dirs': [], +} + +sanity_check_commands = ['%(name)s --version'] + +moduleclass = 'tools' 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..b35ff457d61 --- /dev/null +++ b/easybuild/easyconfigs/c/coverage/coverage-7.4.4-GCCcore-13.2.0.eb @@ -0,0 +1,30 @@ +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')] + +use_pip = True +sanity_pip_check = True + +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/cpio/cpio-2.15-GCCcore-12.2.0.eb b/easybuild/easyconfigs/c/cpio/cpio-2.15-GCCcore-12.2.0.eb new file mode 100644 index 00000000000..f97452acc3d --- /dev/null +++ b/easybuild/easyconfigs/c/cpio/cpio-2.15-GCCcore-12.2.0.eb @@ -0,0 +1,28 @@ +easyblock = 'ConfigureMake' +name = 'cpio' +version = '2.15' + +homepage = "https://savannah.gnu.org/projects/cpio/" +description = """The cpio package contains tools for archiving.""" + +toolchain = {'name': 'GCCcore', 'version': '12.2.0'} + +source_urls = [GNU_SOURCE] +sources = [SOURCE_TAR_BZ2] +checksums = ['937610b97c329a1ec9268553fb780037bcfff0dcffe9725ebc4fd9c1aa9075db'] + +builddependencies = [ + ('binutils', '2.39'), + ('makeinfo', '7.0.3'), +] + +postinstallcmds = ['makeinfo --plaintext -o %(installdir)s/doc/cpio.txt doc/cpio.texi'] + +sanity_check_paths = { + 'files': ['bin/cpio'], + 'dirs': [] +} + +sanity_check_commands = ['cpio --help'] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/c/cpio/cpio-2.15-GCCcore-12.3.0.eb b/easybuild/easyconfigs/c/cpio/cpio-2.15-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..88be666ec15 --- /dev/null +++ b/easybuild/easyconfigs/c/cpio/cpio-2.15-GCCcore-12.3.0.eb @@ -0,0 +1,28 @@ +easyblock = 'ConfigureMake' +name = 'cpio' +version = '2.15' + +homepage = "https://savannah.gnu.org/projects/cpio/" +description = """The cpio package contains tools for archiving.""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +source_urls = [GNU_SOURCE] +sources = [SOURCE_TAR_BZ2] +checksums = ['937610b97c329a1ec9268553fb780037bcfff0dcffe9725ebc4fd9c1aa9075db'] + +builddependencies = [ + ('binutils', '2.40'), + ('makeinfo', '7.0.3'), +] + +postinstallcmds = ['makeinfo --plaintext -o %(installdir)s/doc/cpio.txt doc/cpio.texi'] + +sanity_check_paths = { + 'files': ['bin/cpio'], + 'dirs': [] +} + +sanity_check_commands = ['cpio --help'] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/c/cpio/cpio-2.15-GCCcore-13.2.0.eb b/easybuild/easyconfigs/c/cpio/cpio-2.15-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..43cc1783368 --- /dev/null +++ b/easybuild/easyconfigs/c/cpio/cpio-2.15-GCCcore-13.2.0.eb @@ -0,0 +1,28 @@ +easyblock = 'ConfigureMake' +name = 'cpio' +version = '2.15' + +homepage = "https://savannah.gnu.org/projects/cpio/" +description = """The cpio package contains tools for archiving.""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +source_urls = [GNU_SOURCE] +sources = [SOURCE_TAR_BZ2] +checksums = ['937610b97c329a1ec9268553fb780037bcfff0dcffe9725ebc4fd9c1aa9075db'] + +builddependencies = [ + ('binutils', '2.40'), + ('makeinfo', '7.1'), +] + +postinstallcmds = ['makeinfo --plaintext -o %(installdir)s/doc/cpio.txt doc/cpio.texi'] + +sanity_check_paths = { + 'files': ['bin/cpio'], + 'dirs': [] +} + +sanity_check_commands = ['cpio --help'] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/c/cpio/cpio-2.15-GCCcore-13.3.0.eb b/easybuild/easyconfigs/c/cpio/cpio-2.15-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..3640f333607 --- /dev/null +++ b/easybuild/easyconfigs/c/cpio/cpio-2.15-GCCcore-13.3.0.eb @@ -0,0 +1,28 @@ +easyblock = 'ConfigureMake' +name = 'cpio' +version = '2.15' + +homepage = "https://savannah.gnu.org/projects/cpio/" +description = """The cpio package contains tools for archiving.""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = [GNU_SOURCE] +sources = [SOURCE_TAR_BZ2] +checksums = ['937610b97c329a1ec9268553fb780037bcfff0dcffe9725ebc4fd9c1aa9075db'] + +builddependencies = [ + ('binutils', '2.42'), + ('makeinfo', '7.1'), +] + +postinstallcmds = ['makeinfo --plaintext -o %(installdir)s/doc/cpio.txt doc/cpio.texi'] + +sanity_check_paths = { + 'files': ['bin/cpio'], + 'dirs': [] +} + +sanity_check_commands = ['cpio --help'] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/c/cppyy/cppyy-3.1.2-GCCcore-13.2.0.eb b/easybuild/easyconfigs/c/cppyy/cppyy-3.1.2-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..bcd242d9d23 --- /dev/null +++ b/easybuild/easyconfigs/c/cppyy/cppyy-3.1.2-GCCcore-13.2.0.eb @@ -0,0 +1,46 @@ +easyblock = 'PythonBundle' + +name = 'cppyy' +version = '3.1.2' + +homepage = "https://cppyy.readthedocs.io" +description = """cppyy is an automatic, run-time, Python-C++ bindings generator, + for calling C++ from Python and Python from C++.""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +builddependencies = [ + ('binutils', '2.40'), + ('CMake', '3.27.6'), +] + +dependencies = [ + ('Python', '3.11.5'), +] + +exts_list = [ + ('cppyy-cling', '6.30.0', { + 'modulename': False, + 'preinstallopts': "export STDCXX=14 && ", + 'checksums': ['5d9e0551a4cb618eb3392001b3dc2c6294f02257f02fcd4d868999ba04f92af1'], + }), + ('cppyy-backend', '1.15.2', { + 'checksums': ['8d0ec169f6ea40d26999a61b274ce2ac880082e8d16aace6a0702933d3d835fc'], + }), + ('CPyCppyy', '1.12.16', { + 'modulename': False, + 'checksums': ['09a845652ac1a82777ec499dda862f54493c1560e9df4cadecda09ecde9e4202'], + }), + (name, version, { + 'checksums': ['7937d184af02e1510f44d5655e0bcc3c6a7888ef5b3f06c3dd09ba93d1c1f19b'], + }), + ('cppyythonizations', '1.2.3', { + 'source_tmpl': 'cppyythonizations-%(version)s-py3-none-any.whl', + 'checksums': ['a08bb4fbaf0fc6b980211e7b549b06869f5b9f9cb835b3ab6224cae5905fd8c2'], + }), +] + +use_pip = True +sanity_pip_check = True + +moduleclass = 'lang' diff --git a/easybuild/easyconfigs/c/ctffind5/ctffind5-5.0.2-foss-2023a.eb b/easybuild/easyconfigs/c/ctffind5/ctffind5-5.0.2-foss-2023a.eb new file mode 100644 index 00000000000..29cb349d816 --- /dev/null +++ b/easybuild/easyconfigs/c/ctffind5/ctffind5-5.0.2-foss-2023a.eb @@ -0,0 +1,83 @@ +# Thomas Hoffmann, EMBL Heidelberg, structures-it@embl.de, 2024/05 +easyblock = 'ConfigureMake' + +name = 'ctffind5' +version = '5.0.2' + +local_commit = 'b21db55a91366fe4f75301c56091d213bbd326eb' +local_branch = 'ctffind5_merge' + +homepage = 'https://grigoriefflab.umassmed.edu/ctf_estimation_ctffind_ctftilt' +description = """Program for finding CTFs of electron micrographs.""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +# Use git_config in order to allow setting CISTEM_CURRENT_BRANCH and CISTEM_VERSION_TEXT by configure +sources = [{ + 'download_filename': '%s.tar.gz' % local_commit, + 'filename': 'cisTEM-ctffind5-%s.tar.gz' % local_commit[:7], + 'git_config': { + 'url': 'https://github.com/timothygrant80', + 'repo_name': 'cisTEM', + 'commit': local_commit, + 'keep_git_dir': True, + } +}] + +# no checksume, due to git_config +checksums = [None] + +# Alternative source: +# https://grigoriefflab.umassmed.edu/sites/default/files/cisTEM-ctffind5-b21db55.tar.gz + +# switch branch in order to inject proper branch name into binary: +preconfigopts = 'git switch --create %s &&' % local_branch + +# disable all targets except for ctffind and applyctf (do not build any other cisTEM tool): +local_remove_targets = """sed -i "s/^bin_PROGRAMS/""" +local_remove_targets += """bin_PROGRAMS=ctffind applyctf\\nnoinst_PROGRAMS/g" """ +local_remove_targets += """ src/Makefile.am &&""" +preconfigopts += local_remove_targets + +# run autotools +preconfigopts += './regenerate_project.b &&' + + +local_configureopts = [ + # '--enable-latest-instruction-set', # don't use; managed by CFLAGS + '--enable-shared', + '--with-gnu-ld', + '--with-wx-config=$EBROOTWXWIDGETS/bin/wx-config', + '--disable-silent-rules', + '--enable-openmp', + '--disable-debugmode' + '--disable-staticmode', + '--enable-experimental', + '--without-cuda', +] + +configopts = ' '.join(local_configureopts) + +builddependencies = [ + ('Autotools', '20220317'), + ('git', '2.41.0', '-nodocs') +] + +dependencies = [ + ('wxWidgets', '3.2.2.1') +] + +sanity_check_paths = { + 'files': ['bin/ctffind', 'bin/applyctf'], + 'dirs': ['bin'], +} + +sanity_check_commands = [ + # ctffind command expects filename of input image via stdin, + # so we pipe in a newline via 'echo' to make it exit + 'echo | ctffind | grep Version | grep %(version)s', + 'echo | ctffind | grep "Library Version" | grep %s' % local_commit[:7], + 'echo | ctffind | grep "Branch" | grep %s' % local_branch, +] + +moduleclass = 'bio' 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/c/currentNe/currentNe-1.0.0-GCCcore-12.3.0.eb b/easybuild/easyconfigs/c/currentNe/currentNe-1.0.0-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..d90b8442fa5 --- /dev/null +++ b/easybuild/easyconfigs/c/currentNe/currentNe-1.0.0-GCCcore-12.3.0.eb @@ -0,0 +1,38 @@ +easyblock = 'MakeCp' + +name = 'currentNe' +version = '1.0.0' +local_commit = '37daed5' + +homepage = 'https://github.com/esrud/currentNe' +description = """Estimation of current effective population using artificial neural networks.""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +github_account = 'esrud' +source_urls = [GITHUB_SOURCE] +sources = [{ + "download_filename": "%s.tar.gz" % local_commit, + "filename": "%(name)s-%(version)s.tar.gz", +}] +checksums = ['77aab8e7403b726b30f34474d3177a3b118afb4b0dc57636dc0b2b93274c6bca'] + +builddependencies = [ + ('binutils', '2.40'), + ('make', '4.4.1'), +] + +files_to_copy = [ + 'lib', + (['currentNe.cpp'], 'lib'), + (['currentNe'], 'bin'), +] + +sanity_check_paths = { + 'files': ['lib/currentNe.cpp'], + 'dirs': ['bin', 'lib'] +} + +sanity_check_commands = ['currentNe -h 2>&1 | grep "USAGE"'] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/c/cysignals/cysignals-1.11.4-GCCcore-13.2.0.eb b/easybuild/easyconfigs/c/cysignals/cysignals-1.11.4-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..08a87d938bb --- /dev/null +++ b/easybuild/easyconfigs/c/cysignals/cysignals-1.11.4-GCCcore-13.2.0.eb @@ -0,0 +1,41 @@ +# +# Author: Fenglai Liu +# fenglai@accre.vanderbilt.edu +# Vanderbilt University +# +# Update: Petr Král (INUITS) +# +easyblock = 'PythonPackage' + +name = 'cysignals' +version = '1.11.4' + +homepage = 'https://pypi.org/project/cysignals/' +description = """The cysignals package provides mechanisms to handle +interrupts (and other signals and errors) in Cython code.""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +sources = [SOURCE_TAR_GZ] +checksums = ['0f1e321e55a07f901c86a36a1e4497f6ff9dfe700681d0130a38c36e4eb238c3'] + +builddependencies = [ + ('Autotools', '20220317'), + ('binutils', '2.40'), + ('Cython', '3.0.10'), +] + +dependencies = [ + ('Python', '3.11.5'), +] + +use_pip = True +download_dep_fail = True +sanity_pip_check = True + +sanity_check_paths = { + 'files': ['bin/cysignals-CSI'], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +moduleclass = 'lang' diff --git a/easybuild/easyconfigs/d/Doxygen/Doxygen-1.11.0-GCCcore-13.3.0.eb b/easybuild/easyconfigs/d/Doxygen/Doxygen-1.11.0-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..da8dc7f5808 --- /dev/null +++ b/easybuild/easyconfigs/d/Doxygen/Doxygen-1.11.0-GCCcore-13.3.0.eb @@ -0,0 +1,41 @@ +easyblock = 'CMakeMake' + +name = 'Doxygen' +version = '1.11.0' + +homepage = 'https://www.doxygen.org' +description = """ + Doxygen is a documentation system for C++, C, Java, Objective-C, Python, + IDL (Corba and Microsoft flavors), Fortran, VHDL, PHP, C#, and to some + extent D. +""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = [SOURCEFORGE_SOURCE] +sources = ['%(namelower)s-%(version)s.src.tar.gz'] +checksums = ['c9edfdf8c5f3e8bee0c4c967850caead27099883ee7ff8b11044e6d63faf3607'] + +builddependencies = [ + ('binutils', '2.42'), + ('Bison', '3.8.2'), + ('CMake', '3.29.3'), + ('flex', '2.6.4'), + ('pkgconf', '2.2.0'), + ('Python', '3.12.3'), +] + +dependencies = [ + ('libiconv', '1.17'), +] + +configopts = "-DICONV_DIR=$EBROOTLIBICONV -DICONV_IN_GLIBC=OFF" + +sanity_check_paths = { + 'files': ["bin/doxygen"], + 'dirs': [], +} + +sanity_check_commands = ["doxygen --help"] + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/d/dask-labextension/dask-labextension-7.0.0-foss-2023a.eb b/easybuild/easyconfigs/d/dask-labextension/dask-labextension-7.0.0-foss-2023a.eb new file mode 100644 index 00000000000..a0baf17a0ae --- /dev/null +++ b/easybuild/easyconfigs/d/dask-labextension/dask-labextension-7.0.0-foss-2023a.eb @@ -0,0 +1,37 @@ +easyblock = 'PythonBundle' + +name = 'dask-labextension' +version = '7.0.0' + +homepage = 'https://github.com/dask/dask-labextension' +description = """This package provides a JupyterLab extension to manage Dask clusters, as well +as embed Dask's dashboard plots directly into JupyterLab panes.""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +dependencies = [ + ('Python', '3.11.3'), + ('JupyterLab', '4.0.5'), + ('jupyter-server-proxy', '4.0.0'), + ('dask', '2023.9.2'), +] + +use_pip = True + +exts_list = [ + ('dask_labextension', version, { + 'sources': ['%(name)s-%(version)s-py3-none-any.whl'], + 'checksums': ['34fd1ee80a7259dc292a789cc82e4563d7cd1f5a26eb2ee8b434517482f82027'], + }), +] + +sanity_pip_check = True + +sanity_check_paths = { + 'files': [], + 'dirs': ['lib/python%(pyshortver)s/site-packages/dask_labextension', 'etc/jupyter', 'share/jupyter'], +} + +modextrapaths = {'EB_ENV_JUPYTER_ROOT': ''} + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/d/dask-labextension/dask-labextension-7.0.0-gfbf-2023b.eb b/easybuild/easyconfigs/d/dask-labextension/dask-labextension-7.0.0-gfbf-2023b.eb new file mode 100644 index 00000000000..7ff6ec31bf7 --- /dev/null +++ b/easybuild/easyconfigs/d/dask-labextension/dask-labextension-7.0.0-gfbf-2023b.eb @@ -0,0 +1,37 @@ +easyblock = 'PythonBundle' + +name = 'dask-labextension' +version = '7.0.0' + +homepage = 'https://github.com/dask/dask-labextension' +description = """This package provides a JupyterLab extension to manage Dask clusters, as well +as embed Dask's dashboard plots directly into JupyterLab panes.""" + +toolchain = {'name': 'gfbf', 'version': '2023b'} + +dependencies = [ + ('Python', '3.11.5'), + ('JupyterLab', '4.2.0'), + ('jupyter-server-proxy', '4.1.2'), + ('dask', '2024.5.1'), +] + +use_pip = True + +exts_list = [ + ('dask_labextension', version, { + 'sources': ['%(name)s-%(version)s-py3-none-any.whl'], + 'checksums': ['34fd1ee80a7259dc292a789cc82e4563d7cd1f5a26eb2ee8b434517482f82027'], + }), +] + +sanity_pip_check = True + +sanity_check_paths = { + 'files': [], + 'dirs': ['lib/python%(pyshortver)s/site-packages/dask_labextension', 'etc/jupyter', 'share/jupyter'], +} + +modextrapaths = {'EB_ENV_JUPYTER_ROOT': ''} + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/d/dask/dask-2024.5.1-gfbf-2023b.eb b/easybuild/easyconfigs/d/dask/dask-2024.5.1-gfbf-2023b.eb new file mode 100644 index 00000000000..36229e3f967 --- /dev/null +++ b/easybuild/easyconfigs/d/dask/dask-2024.5.1-gfbf-2023b.eb @@ -0,0 +1,67 @@ +easyblock = 'PythonBundle' + +name = 'dask' +version = '2024.5.1' + +homepage = 'https://dask.org/' +description = """ Dask natively scales Python. Dask provides advanced parallelism for analytics, +enabling performance at scale for the tools you love.""" + +toolchain = {'name': 'gfbf', 'version': '2023b'} + +dependencies = [ + ('Python', '3.11.5'), + ('Python-bundle-PyPI', '2023.10'), + ('SciPy-bundle', '2023.11'), + ('PyYAML', '6.0.1'), + ('bokeh', '3.4.1'), +] + +use_pip = True + +exts_list = [ + ('toolz', '0.12.1', { + 'checksums': ['ecca342664893f177a13dac0e6b41cbd8ac25a358e5f215316d43e2100224f4d'], + }), + ('locket', '1.0.0', { + 'checksums': ['5c0d4c052a8bbbf750e056a8e65ccd309086f4f0f18a2eac306a8dfa4112a632'], + }), + ('partd', '1.4.2', { + 'checksums': ['d022c33afbdc8405c226621b015e8067888173d85f7f5ecebb3cafed9a20f02c'], + }), + ('HeapDict', '1.0.1', { + 'checksums': ['8495f57b3e03d8e46d5f1b2cc62ca881aca392fd5cc048dc0aa2e1a6d23ecdb6'], + }), + ('zict', '3.0.0', { + 'checksums': ['e321e263b6a97aafc0790c3cfb3c04656b7066e6738c37fffcca95d803c9fba5'], + }), + ('tblib', '3.0.0', { + 'checksums': ['93622790a0a29e04f0346458face1e144dc4d32f493714c6c3dff82a4adb77e6'], + }), + (name, version, { + 'checksums': ['e071fda67031c314569e37ca70b3e88bb30f1d91ff8ee4122b541845847cc264'], + }), + ('distributed', version, { + 'checksums': ['c4e641e5fc014de3b43c584c70f703a7d44557b51b1143db812b8bc861aa84e2'], + }), + ('dask-mpi', '2022.4.0', { + 'checksums': ['0a04f1d7d35a06cdff506593330d4414ea242c9172498ce191f5742eac499e17'], + }), + ('docrep', '0.3.2', { + 'checksums': ['ed8a17e201abd829ef8da78a0b6f4d51fb99a4cbd0554adbed3309297f964314'], + }), + ('dask-jobqueue', '0.8.5', { + 'checksums': ['f6923f9d7ff894b96efbf706118b2cd37fd37751d567e91c22dfd3e2eaa93202'], + }), +] + +sanity_check_paths = { + 'files': ['bin/dask-%s' % x for x in ['mpi', 'scheduler', 'ssh', 'worker']], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +sanity_check_commands = ["dask-scheduler --help"] + +sanity_pip_check = True + +moduleclass = 'data' diff --git a/easybuild/easyconfigs/d/deal.II/deal.II-9.5.2-foss-2023a.eb b/easybuild/easyconfigs/d/deal.II/deal.II-9.5.2-foss-2023a.eb new file mode 100644 index 00000000000..025a60136b3 --- /dev/null +++ b/easybuild/easyconfigs/d/deal.II/deal.II-9.5.2-foss-2023a.eb @@ -0,0 +1,42 @@ +easyblock = 'CMakeMake' + +name = 'deal.II' +version = '9.5.2' + +homepage = 'https://www.dealii.org' +description = """deal.II is a C++ program library targeted at the computational solution of + partial differential equations using adaptive finite elements.""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +source_urls = ['https://github.com/dealii/dealii/releases/download/v%(version)s/'] +sources = ['dealii-%(version)s.tar.gz'] +checksums = ['7930e5218a9807d60cc05c300a3b70f36f4af22c3551a2cd1141fbab013bbaf1'] + +builddependencies = [('CMake', '3.26.3')] + +dependencies = [ + ('Boost', '1.82.0'), + ('GSL', '2.7'), + ('HDF5', '1.14.0'), + ('METIS', '5.1.0'), + ('p4est', '2.8.6'), + ('PETSc', '3.20.3'), + ('zlib', '1.2.13'), +] + +configopts = "-DDEAL_II_WITH_LAPACK=ON -DDEAL_II_WITH_MPI=ON " +configopts += "-DDEAL_II_WITH_BOOST=ON -DBOOST_DIR=$EBROOTBOOST " +configopts += "-DDEAL_II_WITH_GSL=ON -DGSL_DIR=$EBROOTGSL " +configopts += "-DDEAL_II_WITH_HDF5=ON -DHDF5_DIR=$EBROOTHDF5 " +configopts += "-DDEAL_II_WITH_METIS=ON -DMETIS_DIR=$EBROOTMETIS " +configopts += "-DDEAL_II_WITH_P4EST=ON -DP4EST_DIR=$EBROOTP4EST " +configopts += "-DDEAL_II_WITH_PETSC=ON -DPETSC_DIR=$EBROOTPETSC " +configopts += "-DDEAL_II_WITH_ZLIB=ON -DZLIB_DIR=$EBROOTZLIB " + +sanity_check_paths = { + 'files': ['lib/libdeal_II.%s' % SHLIB_EXT], + 'dirs': ['include/deal.II', 'lib/cmake', 'share/deal.II'], +} + +moduleclass = 'phys' diff --git a/easybuild/easyconfigs/d/deepfold/deepfold-20240308-foss-2022a-CUDA-11.7.0.eb b/easybuild/easyconfigs/d/deepfold/deepfold-20240308-foss-2022a-CUDA-11.7.0.eb new file mode 100644 index 00000000000..a997ea3c39f --- /dev/null +++ b/easybuild/easyconfigs/d/deepfold/deepfold-20240308-foss-2022a-CUDA-11.7.0.eb @@ -0,0 +1,95 @@ +easyblock = 'PythonBundle' + +name = 'deepfold' +version = '20240308' +_commit = 'c91701d1d92db341e85fba687644046d416b1f19' +versionsuffix = '-CUDA-%(cudaver)s' + +homepage = 'https://github.com/newtonjoo/deepfold' +description = """ +This package provides an implementation of DeepFold, a trainable, Transformer-based deep +protein folding model. We modified the open-source code of DeepMind AlphaFold v2.0 and +Uni-Fold-jax. +Pretrained models can be found in environment variable $DEEPFOLD_PARAMETERS +""" + +toolchain = {'name': 'foss', 'version': '2022a'} + +dependencies = [ + ('CUDA', '11.7.0', '', SYSTEM), + ('Python', '3.10.4'), + ('SciPy-bundle', '2022.05'), + ('Biopython', '1.79'), + ('dm-haiku', '0.0.9', versionsuffix), + ('dm-tree', '0.1.8'), + ('TensorFlow', '2.11.0', versionsuffix), + ('tensorboardX', '2.5.1'), + ('HMMER', '3.3.2'), + ('Kalign', '3.3.5'), + ('ml-collections', '0.1.1'), + ('OpenMM', '8.0.0'), +] + +use_pip = True +sanity_pip_check = True + +exts_list = [ + ('toolz', '0.12.1', { + 'checksums': ['ecca342664893f177a13dac0e6b41cbd8ac25a358e5f215316d43e2100224f4d'], + }), + ('chex', '0.1.6', { + 'checksums': ['adb5d2352b5f0d248ccf594be1b1bf9ee7a2bee2a57f0eac78547538d479b0e7'], + }), + ('immutabledict', '2.0.0', { + 'checksums': ['1b3ab650dc9db0df80fc198b9d31bee45062c4774b3dfbf3d2f3e1f6d4929258'], + }), + ('tzdata', '2024.1', { + 'checksums': ['2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd'], + }), + ('PDBFixer', '1.8.1', { + 'source_urls': ['https://github.com/openmm/pdbfixer/archive/refs/tags/'], + 'sources': [{'download_filename': 'v%(version)s.tar.gz', 'filename': '%(name)s-%(version)s.tar.gz'}], + 'checksums': ['d50551abfe9dbaefc066f4d9d400cdebe57f1fefd9de9d01e12beb87efd99595'], + }), +] + +local_install_cmd = "mkdir -p %(installdir)s/bin && " +local_install_cmd += "cp %(name)s-*/*.py %(installdir)s/bin/ && " +local_install_cmd += "cp -r %(name)s-*/example_data %(installdir)s/ && " +local_install_cmd += "mkdir -p %(installdir)s/lib/python%(pyshortver)s/site-packages/ && " +local_install_cmd += "cp -r %(name)s-*/%(name)s %(installdir)s/lib/python%(pyshortver)s/site-packages/ && " +local_install_cmd += "chmod a+x %(installdir)s/bin/*.py" + +components = [ + (name, version, { + 'easyblock': 'PackedBinary', + 'sources': [{ + 'source_urls': ['https://github.com/newtonjoo/deepfold/archive'], + 'download_filename': '%s.tar.gz' % _commit, + 'filename': '%(name)s-%(version)s.tar.gz', + }], + 'patches': ['%(name)s-%(version)s_fix-simtk-deprecation.patch'], + 'install_cmd': local_install_cmd, + 'checksums': [ + # deepfold-20240308.tar.gz + 'f75140ed5e5b3e64591d73593b8cefdee5b63a8adedc93da6fa62a564ae77803', + # deepfold-20240308_fix-simtk-deprecation.patch + '8a551dd8dc1d141aad391f287a65477bed6d204fbedbd5bd45c74bc6d5efcdf4', + ], + }), +] + +modextravars = { + 'DEEPFOLD_PARAMETERS': '/databases/bio/deepfold/params', +} + +fix_python_shebang_for = ['bin/*.py'] + +sanity_check_paths = { + 'files': ['bin/run_from_pkl.py', 'bin/generate_pkl_features.py', 'bin/train.py'], + 'dirs': [], +} + +sanity_check_commands = ['train.py --help'] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/d/deepfold/deepfold-20240308_fix-simtk-deprecation.patch b/easybuild/easyconfigs/d/deepfold/deepfold-20240308_fix-simtk-deprecation.patch new file mode 100644 index 00000000000..d08f7d7a2b1 --- /dev/null +++ b/easybuild/easyconfigs/d/deepfold/deepfold-20240308_fix-simtk-deprecation.patch @@ -0,0 +1,44 @@ +Fix ModuleNotFoundError for simtk.openmm. +Author: Cintia Willemyns (Vrije Universiteit Brussel) +diff -Naru deepfold-c91701d1d92db341e85fba687644046d416b1f19.orig/deepfold/relax/amber_minimize.py deepfold-c91701d1d92db341e85fba687644046d416b1f19/deepfold/relax/amber_minimize.py +--- deepfold-c91701d1d92db341e85fba687644046d416b1f19.orig/deepfold/relax/amber_minimize.py 2024-03-22 16:58:35.884771000 +0100 ++++ deepfold-c91701d1d92db341e85fba687644046d416b1f19/deepfold/relax/amber_minimize.py 2024-03-22 16:38:55.688749393 +0100 +@@ -28,8 +28,8 @@ + import numpy as np + from simtk import openmm + from simtk import unit +-from simtk.openmm import app as openmm_app +-from simtk.openmm.app.internal.pdbstructure import PdbStructure ++from openmm import app as openmm_app ++from openmm.app.internal.pdbstructure import PdbStructure + + + ENERGY = unit.kilocalories_per_mole +diff -Naru deepfold-c91701d1d92db341e85fba687644046d416b1f19.orig/deepfold/relax/cleanup.py deepfold-c91701d1d92db341e85fba687644046d416b1f19/deepfold/relax/cleanup.py +--- deepfold-c91701d1d92db341e85fba687644046d416b1f19.orig/deepfold/relax/cleanup.py 2024-03-22 16:58:35.884999000 +0100 ++++ deepfold-c91701d1d92db341e85fba687644046d416b1f19/deepfold/relax/cleanup.py 2024-03-29 14:23:44.288779000 +0100 +@@ -19,8 +19,8 @@ + import io + + import pdbfixer +-from simtk.openmm import app +-from simtk.openmm.app import element ++from openmm import app ++from openmm.app import element + + + def fix_pdb(pdbfile, alterations_info): +diff -Naru deepfold-c91701d1d92db341e85fba687644046d416b1f19.orig/deepfold/relax/utils.py deepfold-c91701d1d92db341e85fba687644046d416b1f19/deepfold/relax/utils.py +--- deepfold-c91701d1d92db341e85fba687644046d416b1f19.orig/deepfold/relax/utils.py 2024-03-22 16:58:35.887221923 +0100 ++++ deepfold-c91701d1d92db341e85fba687644046d416b1f19/deepfold/relax/utils.py 2024-03-22 17:00:41.078566002 +0100 +@@ -17,8 +17,8 @@ + from deepfold.common import residue_constants + from Bio import PDB + import numpy as np +-from simtk.openmm import app as openmm_app +-from simtk.openmm.app.internal.pdbstructure import PdbStructure ++from openmm import app as openmm_app ++from openmm.app.internal.pdbstructure import PdbStructure + + + def overwrite_pdb_coordinates(pdb_str: str, pos) -> str: diff --git a/easybuild/easyconfigs/d/dm-haiku/dm-haiku-0.0.9-foss-2022a-CUDA-11.7.0.eb b/easybuild/easyconfigs/d/dm-haiku/dm-haiku-0.0.9-foss-2022a-CUDA-11.7.0.eb new file mode 100644 index 00000000000..b2e1c44658a --- /dev/null +++ b/easybuild/easyconfigs/d/dm-haiku/dm-haiku-0.0.9-foss-2022a-CUDA-11.7.0.eb @@ -0,0 +1,34 @@ +easyblock = 'PythonBundle' + +name = 'dm-haiku' +version = '0.0.9' +versionsuffix = '-CUDA-%(cudaver)s' + +homepage = 'https://github.com/deepmind/dm-haiku' +description = """Haiku is a simple neural network library for JAX developed by some of the authors of Sonnet, a neural +network library for TensorFlow.""" + +toolchain = {'name': 'foss', 'version': '2022a'} + +dependencies = [ + ('CUDA', '11.7.0', '', SYSTEM), + ('Python', '3.10.4'), + ('SciPy-bundle', '2022.05'), + ('jax', '0.3.25', versionsuffix), # required by jmp, also provides absl-py +] + +use_pip = True + +exts_list = [ + ('jmp', '0.0.4', { + 'checksums': ['5dfeb0fd7c7a9f72a70fff0aab9d0cbfae32a809c02f4037ff3485ceb33e1730'], + }), + (name, version, { + 'modulename': 'haiku', + 'checksums': ['97752b32cdbe5a3e2d1c60ea884d33eb4b36e7d410000f0d61b571417c925435'], + }), +] + +sanity_pip_check = True + +moduleclass = 'lib' 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/d/dotNET-Core/dotNET-Core-6.0.420.eb b/easybuild/easyconfigs/d/dotNET-Core/dotNET-Core-6.0.420.eb new file mode 100644 index 00000000000..46eb6c127d7 --- /dev/null +++ b/easybuild/easyconfigs/d/dotNET-Core/dotNET-Core-6.0.420.eb @@ -0,0 +1,56 @@ +easyblock = "Tarball" + +name = "dotNET-Core" +version = "6.0.420" # uses the SDK version string, runtime is 6.0.28 + +homepage = "https://www.microsoft.com/net/" +description = """.NET is a free, cross-platform, open source developer platform for building many different types of +applications. With .NET, you can use multiple languages, editors, and libraries to build for web, mobile, desktop, +gaming, and IoT. + +Contains the SDK and the Runtime. +""" + +toolchain = SYSTEM + +local_variant = {'aarch64': 'linux-x64', 'x86_64': 'linux-x64', 'arm64': 'osx-x86'}.get(ARCH) +source_urls = [ + 'https://download.visualstudio.microsoft.com/download/pr/' + 'b521d7d2-108b-43d9-861a-58b2505a125a/0023553690a68328b33bc30a38f151db', # x86_64 + 'https://download.visualstudio.microsoft.com/download/pr/' + 'd4704678-77d5-433e-97d3-a72b5a1f3316/b73d2c0c05f3df0c119b68418404a618', # arm64 + 'https://download.visualstudio.microsoft.com/download/pr/' + '4a4728b7-96e6-48f1-a072-6906205e6a58/de54331936784caded5ecd5d10b0ee81', # osx arm64 +] +sources = ["dotnet-sdk-%%(version)s-%s.tar.gz" % local_variant] +checksums = [{ + 'dotnet-sdk-6.0.420-linux-x64.tar.gz': 'd6ed3530d0d01a5b2210c5ee7eb9ffb8510b6cdb94fe41704eb72e2543a5bbc7', + 'dotnet-sdk-6.0.420-linux-arm64.tar.gz': 'bdb39576bde027736200a636fecd116ddbef02b3249b96c6e129dda040198654', + 'dotnet-sdk-6.0.420-osx-arm64.tar.gz': 'f2e57cb199a00d9d4cabd04dde23445dda78bca30cc6fa758a0ef1fb7a9d1a21', +}] + +sanity_check_paths = { + "files": ["dotnet", "LICENSE.txt"], + "dirs": [ + "shared/Microsoft.NETCore.App/", + "shared/Microsoft.AspNetCore.App/", + "sdk", + ], +} + +sanity_check_commands = ['dotnet --help'] + +modextrapaths = {"PATH": ""} + +# We are not sending usage stats to Microsoft...hopefully. +# The .NET Core tools collect usage data in order to help us improve your experience. The data is anonymous. +# It is collected by Microsoft and shared with the community. +# You can opt-out of telemetry by setting the DOTNET_CLI_TELEMETRY_OPTOUT environment variable to '1' or 'true' using +# your favorite shell. +# Read more about .NET Core CLI Tools telemetry: https://aka.ms/dotnet-cli-telemetry +modextravars = { + "DOTNET_ROOT": "%(installdir)s", + "DOTNET_CLI_TELEMETRY_OPTOUT": "1", +} + +moduleclass = 'lang' diff --git a/easybuild/easyconfigs/d/dotNET-Core/dotNET-Core-6.0.eb b/easybuild/easyconfigs/d/dotNET-Core/dotNET-Core-6.0.eb new file mode 100644 index 00000000000..ee025cdf51d --- /dev/null +++ b/easybuild/easyconfigs/d/dotNET-Core/dotNET-Core-6.0.eb @@ -0,0 +1,18 @@ +easyblock = 'ModuleRC' + +name = 'dotNET-Core' +version = '6.0' + +homepage = "https://www.microsoft.com/net/" +description = """.NET is a free, cross-platform, open source developer platform for building many different types of +applications. With .NET, you can use multiple languages, editors, and libraries to build for web, mobile, desktop, +gaming, and IoT. + +Contains the SDK and the Runtime. +""" + +toolchain = SYSTEM + +dependencies = [('dotNET-Core', '%(version)s.420')] + +moduleclass = 'lang' diff --git a/easybuild/easyconfigs/d/dotNET-Core/dotNET-Core-8.0.203.eb b/easybuild/easyconfigs/d/dotNET-Core/dotNET-Core-8.0.203.eb new file mode 100644 index 00000000000..af56fd166a2 --- /dev/null +++ b/easybuild/easyconfigs/d/dotNET-Core/dotNET-Core-8.0.203.eb @@ -0,0 +1,56 @@ +easyblock = "Tarball" + +name = "dotNET-Core" +version = "8.0.203" # uses the SDK version string, runtime is 8.0.3 + +homepage = "https://www.microsoft.com/net/" +description = """.NET is a free, cross-platform, open source developer platform for building many different types of +applications. With .NET, you can use multiple languages, editors, and libraries to build for web, mobile, desktop, +gaming, and IoT. + +Contains the SDK and the Runtime. +""" + +toolchain = SYSTEM + +local_variant = {'aarch64': 'linux-x64', 'x86_64': 'linux-x64', 'arm64': 'osx-x86'}.get(ARCH) +source_urls = [ + 'https://download.visualstudio.microsoft.com/download/pr/' + '656a3402-6889-400f-927f-7f956856e58b/93750973d6eedd17c6d963658e7ec214', # x86_64 + 'https://download.visualstudio.microsoft.com/download/pr/' + 'aed2eece-af6d-42e6-8683-21e7835b7479/786b4f225591440a741c1702407fb7b3', # arm64 + 'https://download.visualstudio.microsoft.com/download/pr/' + '9019f736-bf0c-45c6-8ea1-c2370f7c59f1/e88a79c0abd77fd38de8271b7c06b293', # osx arm64 +] +sources = ["dotnet-sdk-%%(version)s-%s.tar.gz" % local_variant] +checksums = [{ + 'dotnet-sdk-8.0.203-linux-x64.tar.gz': 'ce96088bec5b3a19397a4269b3c6041ca1da6147723c24603bbe0e6b36e0dd72', + 'dotnet-sdk-8.0.203-linux-arm64.tar.gz': '245834a0218a3ecd85f5adbef14e57a9970f2e56c498ad8fbfd3efcdad5c0b98', + 'dotnet-sdk-8.0.203-osx-arm64.tar.gz': '57221d5f2f558d368c7c9d1619f1450672443cd578d2db1f967dfc46b6e41447', +}] + +sanity_check_paths = { + "files": ["dotnet", "LICENSE.txt"], + "dirs": [ + "shared/Microsoft.NETCore.App/", + "shared/Microsoft.AspNetCore.App/", + "sdk", + ], +} + +sanity_check_commands = ['dotnet --help'] + +modextrapaths = {"PATH": ""} + +# We are not sending usage stats to Microsoft...hopefully. +# The .NET Core tools collect usage data in order to help us improve your experience. The data is anonymous. +# It is collected by Microsoft and shared with the community. +# You can opt-out of telemetry by setting the DOTNET_CLI_TELEMETRY_OPTOUT environment variable to '1' or 'true' using +# your favorite shell. +# Read more about .NET Core CLI Tools telemetry: https://aka.ms/dotnet-cli-telemetry +modextravars = { + "DOTNET_ROOT": "%(installdir)s", + "DOTNET_CLI_TELEMETRY_OPTOUT": "1", +} + +moduleclass = 'lang' diff --git a/easybuild/easyconfigs/d/dotNET-Core/dotNET-Core-8.0.eb b/easybuild/easyconfigs/d/dotNET-Core/dotNET-Core-8.0.eb new file mode 100644 index 00000000000..e96d2cda876 --- /dev/null +++ b/easybuild/easyconfigs/d/dotNET-Core/dotNET-Core-8.0.eb @@ -0,0 +1,18 @@ +easyblock = 'ModuleRC' + +name = 'dotNET-Core' +version = '8.0' + +homepage = "https://www.microsoft.com/net/" +description = """.NET is a free, cross-platform, open source developer platform for building many different types of +applications. With .NET, you can use multiple languages, editors, and libraries to build for web, mobile, desktop, +gaming, and IoT. + +Contains the SDK and the Runtime. +""" + +toolchain = SYSTEM + +dependencies = [('dotNET-Core', '%(version)s.203')] + +moduleclass = 'lang' diff --git a/easybuild/easyconfigs/e/E-ANTIC/E-ANTIC-2.0.2-gfbf-2023b.eb b/easybuild/easyconfigs/e/E-ANTIC/E-ANTIC-2.0.2-gfbf-2023b.eb new file mode 100644 index 00000000000..fcb851f1091 --- /dev/null +++ b/easybuild/easyconfigs/e/E-ANTIC/E-ANTIC-2.0.2-gfbf-2023b.eb @@ -0,0 +1,38 @@ +easyblock = 'ConfigureMake' + +name = 'E-ANTIC' +version = '2.0.2' + +homepage = 'https://github.com/flatsurf/e-antic' +description = """E-ANTIC is a C/C++ library to deal with real embedded number fields built on +top of ANTIC (https://github.com/wbhart/antic). Its aim is to have as fast as +possible exact arithmetic operations and comparisons.""" + +toolchain = {'name': 'gfbf', 'version': '2023b'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/flatsurf/e-antic/releases/download/%(version)s'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['8328e6490129dfec7f4aa478ebd54dc07686bd5e5e7f5f30dcf20c0f11b67f60'] + +dependencies = [ + ('FLINT', '3.1.1'), + ('Boost', '1.83.0'), + ('Python', '3.11.5'), + ('cppyy', '3.1.2'), +] + +configopts = '--without-benchmark --without-byexample --without-pytest --without-doc' + +sanity_check_paths = { + 'files': ['lib/lib%s.%s' % (lib, ext) for lib in ['eantic', 'eanticxx'] for ext in ['a', SHLIB_EXT]] + + ['include/e-antic/%s.h' % h for h in ['e-antic', 'fmpq_poly_extra', 'renf', + 'renf_elem', 'renfxx']], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +sanity_check_commands = ["python -c 'import pyeantic'"] + +modextrapaths = {'PYTHONPATH': 'lib/python%(pyshortver)s/site-packages'} + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/e/ECL/ECL-24.5.10-GCCcore-13.2.0.eb b/easybuild/easyconfigs/e/ECL/ECL-24.5.10-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..cb4390c3499 --- /dev/null +++ b/easybuild/easyconfigs/e/ECL/ECL-24.5.10-GCCcore-13.2.0.eb @@ -0,0 +1,32 @@ +easyblock = 'ConfigureMake' + +name = 'ECL' +version = '24.5.10' + +homepage = 'https://ecl.common-lisp.dev/' +description = """ECL (Embeddable Common-Lisp) is an interpreter of the Common-Lisp language + as described in the X3J13 Ansi specification, featuring CLOS (Common-Lisp Object System), + conditions, loops, etc, plus a translator to C, which can produce standalone executables.""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +source_urls = ['https://common-lisp.net/project/ecl/static/files/release'] +sources = [SOURCELOWER_TGZ] +checksums = ['e4ea65bb1861e0e495386bfa8bc673bd014e96d3cf9d91e9038f91435cbe622b'] + +builddependencies = [('binutils', '2.40')] + +dependencies = [ + ('GMP', '6.3.0'), +] + +configopts = "--enable-manual=no " + +sanity_check_paths = { + 'files': ['bin/ecl', 'bin/ecl-config', 'include/ecl/ecl.h', 'lib/libecl.%s' % SHLIB_EXT], + 'dirs': ['share'], +} + +sanity_check_commands = ["ecl --help"] + +moduleclass = 'lang' diff --git a/easybuild/easyconfigs/e/ESM-2/ESM-2-2.0.0-foss-2023a-CUDA-12.1.1.eb b/easybuild/easyconfigs/e/ESM-2/ESM-2-2.0.0-foss-2023a-CUDA-12.1.1.eb new file mode 100644 index 00000000000..eae9330bcdb --- /dev/null +++ b/easybuild/easyconfigs/e/ESM-2/ESM-2-2.0.0-foss-2023a-CUDA-12.1.1.eb @@ -0,0 +1,42 @@ +easyblock = 'PythonBundle' + +name = 'ESM-2' +version = '2.0.0' +versionsuffix = '-CUDA-%(cudaver)s' + +homepage = 'https://github.com/facebookresearch/esm' +description = """ESM-2 outperforms all tested single-sequence protein language models + across a range of structure prediction tasks. ESMFold harnesses the ESM-2 language model to generate + accurate structure predictions end to end directly from the sequence of a protein.""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +builddependencies = [ + ('Java', '11', '', SYSTEM), # needed by ANTLR4 runtime +] + +dependencies = [ + ('CUDA', '12.1.1', '', SYSTEM), + ('Python', '3.11.3'), + ('PyTorch', '2.1.2', versionsuffix), +] + +use_pip = True +sanity_pip_check = True + +# omegaconf is required for esmfold (in addition to OpenFold-1.0.1) +exts_list = [ + ('antlr4-python3-runtime', '4.9.3', { + 'modulename': 'antlr4', + 'checksums': ['f224469b4168294902bb1efa80a8bf7855f24c99aef99cbefc1bcd3cce77881b'], + }), + ('omegaconf', '2.3.0', { + 'checksums': ['d5d4b6d29955cc50ad50c46dc269bcd92c6e00f5f90d23ab5fee7bfca4ba4cc7'], + }), + ('fair-esm', version, { + 'modulename': "esm, esm.pretrained", + 'checksums': ['4ed34d4598ec75ed6550a4e581d023bf8d4a8375317ecba6269bb68135f80c85'], + }), +] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/e/ESPResSo/ESPResSo-4.2.2-foss-2023a.eb b/easybuild/easyconfigs/e/ESPResSo/ESPResSo-4.2.2-foss-2023a.eb new file mode 100644 index 00000000000..eb16f7546f5 --- /dev/null +++ b/easybuild/easyconfigs/e/ESPResSo/ESPResSo-4.2.2-foss-2023a.eb @@ -0,0 +1,55 @@ +easyblock = 'CMakeMake' + +name = 'ESPResSo' +version = '4.2.2' + +homepage = 'https://espressomd.org/wordpress' +description = """A software package for performing and analyzing scientific Molecular Dynamics simulations.""" + +source_urls = ['https://github.com/espressomd/espresso/releases/download/%(version)s/'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['2bc02f91632b0030f1203759768bd718bd8a0005f72696980b12331b4bfa0d76'] + +toolchain = {'name': 'foss', 'version': '2023a'} +toolchainopts = {'usempi': True, 'pic': True} + +builddependencies = [('CMake', '3.26.3')] + +dependencies = [ + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), + ('Boost.MPI', '1.82.0'), + ('HDF5', '1.14.0'), + ('Mesa', '23.1.4'), + ('GSL', '2.7'), + ('IPython', '8.14.0'), + ('Pint', '0.23'), +] + +configopts = ' -DCMAKE_SKIP_RPATH=OFF -DWITH_TESTS=ON -DWITH_CUDA=OFF' +# make sure the right Python is used (note: -DPython3_EXECUTABLE or -DPython_EXECUTABLE does not work!) +configopts += ' -DPYTHON_EXECUTABLE=$EBROOTPYTHON/bin/python ' + +runtest = 'check_unit_tests && make check_python' + +modextrapaths = {'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages']} + +_binaries = ['ipypresso', 'pypresso'] +_libs = [ + 'Espresso_config', 'Espresso_core', 'Espresso_script_interface', 'Espresso_shapes', + '_init', 'analyze', 'code_info', 'electrokinetics', 'galilei', + 'integrate', 'interactions', 'lb', 'particle_data', 'polymer', 'profiler', + 'script_interface', 'system', 'thermostat', 'utils', 'version', +] + +_lib_path = 'lib/python%(pyshortver)s/site-packages/espressomd' + +sanity_check_paths = { + 'files': ['bin/%s' % x for x in _binaries] + + [_lib_path + '/%s.' % x + SHLIB_EXT for x in _libs], + 'dirs': ['bin', 'lib'] +} + +sanity_check_commands = ['pypresso -h', 'ipypresso -h'] + +moduleclass = 'chem' diff --git a/easybuild/easyconfigs/e/EVcouplings/EVcouplings-0.1.1-foss-2023a.eb b/easybuild/easyconfigs/e/EVcouplings/EVcouplings-0.1.1-foss-2023a.eb new file mode 100644 index 00000000000..cc4bc9b90bc --- /dev/null +++ b/easybuild/easyconfigs/e/EVcouplings/EVcouplings-0.1.1-foss-2023a.eb @@ -0,0 +1,61 @@ +easyblock = 'PythonBundle' + +name = 'EVcouplings' +version = '0.1.1' + +homepage = 'https://github.com/debbiemarkslab/EVcouplings' +description = """ +Predict protein structure, function and mutations using evolutionary sequence covariation. +""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +builddependencies = [ + ('hatchling', '1.18.0'), +] + +dependencies = [ + ('Python', '3.11.3'), + ('numba', '0.58.1'), + ('SciPy-bundle', '2023.07'), + ('ruamel.yaml', '0.17.32'), + ('matplotlib', '3.7.2'), + ('bokeh', '3.2.2'), + ('Biopython', '1.83'), + ('Seaborn', '0.13.2'), + ('scikit-learn', '1.3.1'), + ('HMMER', '3.4'), + # Needs plmc installed with single precision + ('plmc', '20230121', '-32bit'), +] + +exts_list = [ + ('mmtf-python', '1.1.3', { + 'modulename': 'mmtf', + 'checksums': ['12a02fe1b7131f0a2b8ce45b46f1e0cdd28b9818fe4499554c26884987ea0c32'], + }), + ('filelock', '3.13.4', { + 'checksums': ['d13f466618bfde72bd2c18255e269f72542c6e70e7bac83a0232d6b1cc5c8cf4'], + }), + ('billiard', '4.2.0', { + 'checksums': ['9a3c3184cb275aa17a732f93f65b20c525d3d9f253722d26a82194803ade5a2c'], + }), + ('evcouplings', version, { + 'patches': ['EVcouplings-%(version)s_fix-import-Iterable-Mapping.patch'], + 'sources': ['%(name)s-%(version)s.zip'], + 'checksums': [ + {'evcouplings-0.1.1.zip': 'aba07acdc39a0da73f39f48a8cac915d5b671abc008c123bbe30e6759a2499d2'}, + {'EVcouplings-0.1.1_fix-import-Iterable-Mapping.patch': + 'db2cff1de3488baaa1f0ac186c02c61432c27a3e5221525f1c773817722e7ba9'}, + ], + }), +] + +sanity_check_commands = [ + "evcouplings --help", +] + +use_pip = True +sanity_pip_check = True + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/e/EVcouplings/EVcouplings-0.1.1_fix-import-Iterable-Mapping.patch b/easybuild/easyconfigs/e/EVcouplings/EVcouplings-0.1.1_fix-import-Iterable-Mapping.patch new file mode 100644 index 00000000000..59caa949d96 --- /dev/null +++ b/easybuild/easyconfigs/e/EVcouplings/EVcouplings-0.1.1_fix-import-Iterable-Mapping.patch @@ -0,0 +1,77 @@ +The Iterable and Mapping were removed from collections in Python 3.10 +Import Iterable and Mapping from collections.abc +Author: Cintia Willemyns (Vrije Universiteit Brussel) +diff -Naru evcouplings-0.1.1.orig/evcouplings/align/protocol.py evcouplings-0.1.1/evcouplings/align/protocol.py +--- evcouplings-0.1.1.orig/evcouplings/align/protocol.py 2024-06-04 17:15:24.409905000 +0200 ++++ evcouplings-0.1.1/evcouplings/align/protocol.py 2024-06-04 17:16:54.492901448 +0200 +@@ -8,7 +8,8 @@ + + """ + +-from collections import OrderedDict, Iterable ++from collections import OrderedDict ++from collections.abc import Iterable + import re + from shutil import copy + import os +diff -Naru evcouplings-0.1.1.orig/evcouplings/compare/pdb.py evcouplings-0.1.1/evcouplings/compare/pdb.py +--- evcouplings-0.1.1.orig/evcouplings/compare/pdb.py 2024-06-04 17:15:24.419850000 +0200 ++++ evcouplings-0.1.1/evcouplings/compare/pdb.py 2024-06-04 17:52:31.882593767 +0200 +@@ -5,7 +5,8 @@ + Thomas A. Hopf + """ + +-from collections import OrderedDict, Iterable ++from collections import OrderedDict ++from collections.abc import Iterable + from os import path + from urllib.error import HTTPError + +diff -Naru evcouplings-0.1.1.orig/evcouplings/couplings/mapping.py evcouplings-0.1.1/evcouplings/couplings/mapping.py +--- evcouplings-0.1.1.orig/evcouplings/couplings/mapping.py 2024-06-04 17:15:24.405238000 +0200 ++++ evcouplings-0.1.1/evcouplings/couplings/mapping.py 2024-06-04 17:52:59.165312780 +0200 +@@ -7,7 +7,7 @@ + Anna G. Green (MultiSegmentCouplingsModel) + """ + +-from collections import Iterable ++from collections.abc import Iterable + from copy import deepcopy + from evcouplings.couplings.model import CouplingsModel + import pandas as pd +diff -Naru evcouplings-0.1.1.orig/evcouplings/couplings/model.py evcouplings-0.1.1/evcouplings/couplings/model.py +--- evcouplings-0.1.1.orig/evcouplings/couplings/model.py 2024-06-04 17:15:24.407628000 +0200 ++++ evcouplings-0.1.1/evcouplings/couplings/model.py 2024-06-04 17:53:16.476317130 +0200 +@@ -6,7 +6,7 @@ + Authors: + Thomas A. Hopf + """ +-from collections import Iterable ++from collections.abc import Iterable + from copy import deepcopy + + from numba import jit +diff -Naru evcouplings-0.1.1.orig/evcouplings/utils/app.py evcouplings-0.1.1/evcouplings/utils/app.py +--- evcouplings-0.1.1.orig/evcouplings/utils/app.py 2024-06-04 17:15:24.424719000 +0200 ++++ evcouplings-0.1.1/evcouplings/utils/app.py 2024-06-04 17:53:56.971793813 +0200 +@@ -14,7 +14,7 @@ + import re + from copy import deepcopy + from os import path, environ +-from collections import Mapping ++from collections.abc import Mapping + + import click + +diff -Naru evcouplings-0.1.1.orig/evcouplings/utils/tracker/mongodb.py evcouplings-0.1.1/evcouplings/utils/tracker/mongodb.py +--- evcouplings-0.1.1.orig/evcouplings/utils/tracker/mongodb.py 2024-06-04 17:15:24.421959000 +0200 ++++ evcouplings-0.1.1/evcouplings/utils/tracker/mongodb.py 2024-06-04 17:54:25.411050098 +0200 +@@ -16,7 +16,7 @@ + + import os + from datetime import datetime +-from collections import Mapping ++from collections.abc import Mapping + + from pymongo import MongoClient, errors + import gridfs 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/EasyMocap/EasyMocap-0.2-foss-2022a-CUDA-11.7.0.eb b/easybuild/easyconfigs/e/EasyMocap/EasyMocap-0.2-foss-2022a-CUDA-11.7.0.eb new file mode 100644 index 00000000000..f5a93adc6f7 --- /dev/null +++ b/easybuild/easyconfigs/e/EasyMocap/EasyMocap-0.2-foss-2022a-CUDA-11.7.0.eb @@ -0,0 +1,81 @@ +easyblock = 'PythonBundle' + +name = 'EasyMocap' +version = '0.2' +versionsuffix = '-CUDA-%(cudaver)s' + +homepage = 'https://chingswy.github.io/easymocap-public-doc/' +description = """EasyMoCap is an open-source toolbox designed for markerless + human motion capture from RGB videos. This project offers a wide range of motion + capture methods across various settings.""" + +toolchain = {'name': 'foss', 'version': '2022a'} + +dependencies = [ + ('CUDA', '11.7.0', '', SYSTEM), + ('Python', '3.10.4'), + ('PyTorch', '1.12.0', versionsuffix), + ('torchvision', '0.13.1', versionsuffix), + ('tqdm', '4.64.0'), + ('OpenCV', '4.6.0', '-CUDA-%(cudaver)s-contrib'), + ('flatbuffers', '2.0.7'), + ('matplotlib', '3.5.2'), + ('PortAudio', '19.7.0'), + # for pyrender + ('freetype-py', '2.4.0'), + ('imageio', '2.22.2'), + ('networkx', '2.8.4'), + ('PyOpenGL', '3.1.6'), + ('trimesh', '3.17.1'), + # for ipdb + ('IPython', '8.5.0'), +] + +use_pip = True +sanity_pip_check = True + +exts_list = [ + ('chumpy', '0.70', { + 'checksums': ['a0275c2018784ca1302875567dc81761f5fd469fab9f3ac0f3e7c39e9180350a'], + }), + ('func_timeout', '4.3.5', { + 'checksums': ['74cd3c428ec94f4edfba81f9b2f14904846d5ffccc27c92433b8b5939b5575dd'], + }), + ('ipdb', '0.13.13', { + 'source_tmpl': SOURCE_PY3_WHL, + 'checksums': ['45529994741c4ab6d2388bfa5d7b725c2cf7fe9deffabdb8a6113aa5ed449ed4'], + }), + ('termcolor', '2.4.0', { + 'source_tmpl': SOURCE_PY3_WHL, + 'checksums': ['9297c0df9c99445c2412e832e882a7884038a25617c60cea2ad69488d4040d63'], + }), + ('yacs', '0.1.8', { + 'source_tmpl': SOURCE_PY3_WHL, + 'checksums': ['99f893e30497a4b66842821bac316386f7bd5c4f47ad35c9073ef089aa33af32'], + }), + ('pyglet', '2.0.15', { + 'source_tmpl': SOURCE_PY3_WHL, + 'checksums': ['9e4cc16efc308106fd3a9ff8f04e7a6f4f6a807c6ac8a331375efbbac8be85af'], + }), + ('pyrender', '0.1.45', { + # PyOpenGL requirement is too strict + 'preinstallopts': "sed -i 's/PyOpenGL==3.1.0/PyOpenGL>=3.1.0/g' setup.py && ", + 'checksums': ['284b2432bf6832f05c5216c4b979ceb514ea78163bf53b8ce2bdf0069cb3b92e'], + }), + # Building from source fails. See https://github.com/google/mediapipe/issues/5247 + ('mediapipe', '0.10.11', { + 'sources': ['mediapipe-%(version)s-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl'], + 'checksums': ['fc5283a50227a93d7755fd0f83d0d6daeb0f1c841df1ac9101e96e32e7e03ba1'], + }), + ('sounddevice', '0.4.6', { + 'source_tmpl': SOURCE_PY3_WHL, + 'checksums': ['5de768ba6fe56ad2b5aaa2eea794b76b73e427961c95acad2ee2ed7f866a4b20'], + }), + (name, version, { + 'source_urls': ['https://github.com/zju3dv/EasyMocap/archive'], + 'sources': ['v%(version)s.tar.gz'], + 'checksums': ['d4c42b82ea8a53662354ff70b775e505c654ca4fd51524029214acbc16aa9773'], + }), +] + +moduleclass = 'vis' diff --git a/easybuild/easyconfigs/e/EasyMocap/EasyMocap-0.2-foss-2022a.eb b/easybuild/easyconfigs/e/EasyMocap/EasyMocap-0.2-foss-2022a.eb new file mode 100644 index 00000000000..b3ea4435687 --- /dev/null +++ b/easybuild/easyconfigs/e/EasyMocap/EasyMocap-0.2-foss-2022a.eb @@ -0,0 +1,79 @@ +easyblock = 'PythonBundle' + +name = 'EasyMocap' +version = '0.2' + +homepage = 'https://chingswy.github.io/easymocap-public-doc/' +description = """EasyMoCap is an open-source toolbox designed for markerless + human motion capture from RGB videos. This project offers a wide range of motion + capture methods across various settings.""" + +toolchain = {'name': 'foss', 'version': '2022a'} + +dependencies = [ + ('Python', '3.10.4'), + ('PyTorch', '1.12.0'), + ('torchvision', '0.13.1'), + ('tqdm', '4.64.0'), + ('OpenCV', '4.6.0', '-contrib'), + ('flatbuffers', '2.0.7'), + ('matplotlib', '3.5.2'), + ('PortAudio', '19.7.0'), + # for pyrender + ('freetype-py', '2.4.0'), + ('imageio', '2.22.2'), + ('networkx', '2.8.4'), + ('PyOpenGL', '3.1.6'), + ('trimesh', '3.17.1'), + # for ipdb + ('IPython', '8.5.0'), +] + +use_pip = True +sanity_pip_check = True + +exts_list = [ + ('chumpy', '0.70', { + 'checksums': ['a0275c2018784ca1302875567dc81761f5fd469fab9f3ac0f3e7c39e9180350a'], + }), + ('func_timeout', '4.3.5', { + 'checksums': ['74cd3c428ec94f4edfba81f9b2f14904846d5ffccc27c92433b8b5939b5575dd'], + }), + ('ipdb', '0.13.13', { + 'source_tmpl': SOURCE_PY3_WHL, + 'checksums': ['45529994741c4ab6d2388bfa5d7b725c2cf7fe9deffabdb8a6113aa5ed449ed4'], + }), + ('termcolor', '2.4.0', { + 'source_tmpl': SOURCE_PY3_WHL, + 'checksums': ['9297c0df9c99445c2412e832e882a7884038a25617c60cea2ad69488d4040d63'], + }), + ('yacs', '0.1.8', { + 'source_tmpl': SOURCE_PY3_WHL, + 'checksums': ['99f893e30497a4b66842821bac316386f7bd5c4f47ad35c9073ef089aa33af32'], + }), + ('pyglet', '2.0.15', { + 'source_tmpl': SOURCE_PY3_WHL, + 'checksums': ['9e4cc16efc308106fd3a9ff8f04e7a6f4f6a807c6ac8a331375efbbac8be85af'], + }), + ('pyrender', '0.1.45', { + # PyOpenGL requirement is too strict + 'preinstallopts': "sed -i 's/PyOpenGL==3.1.0/PyOpenGL>=3.1.0/g' setup.py && ", + 'checksums': ['284b2432bf6832f05c5216c4b979ceb514ea78163bf53b8ce2bdf0069cb3b92e'], + }), + # Building from source fails. See https://github.com/google/mediapipe/issues/5247 + ('mediapipe', '0.10.11', { + 'sources': ['mediapipe-%(version)s-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl'], + 'checksums': ['fc5283a50227a93d7755fd0f83d0d6daeb0f1c841df1ac9101e96e32e7e03ba1'], + }), + ('sounddevice', '0.4.6', { + 'source_tmpl': SOURCE_PY3_WHL, + 'checksums': ['5de768ba6fe56ad2b5aaa2eea794b76b73e427961c95acad2ee2ed7f866a4b20'], + }), + (name, version, { + 'source_urls': ['https://github.com/zju3dv/EasyMocap/archive'], + 'sources': ['v%(version)s.tar.gz'], + 'checksums': ['d4c42b82ea8a53662354ff70b775e505c654ca4fd51524029214acbc16aa9773'], + }), +] + +moduleclass = 'vis' diff --git a/easybuild/easyconfigs/e/Eigen/Eigen-3.4.0-GCCcore-13.3.0.eb b/easybuild/easyconfigs/e/Eigen/Eigen-3.4.0-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..f6a47336ef1 --- /dev/null +++ b/easybuild/easyconfigs/e/Eigen/Eigen-3.4.0-GCCcore-13.3.0.eb @@ -0,0 +1,21 @@ +name = 'Eigen' +version = '3.4.0' + +homepage = 'https://eigen.tuxfamily.org' +description = """Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, + and related algorithms.""" + +# only includes header files, but requires CMake so using non-system toolchain +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = ['https://gitlab.com/libeigen/eigen/-/archive/%(version)s'] +sources = [SOURCELOWER_TAR_BZ2] +checksums = ['b4c198460eba6f28d34894e3a5710998818515104d6e74e5cc331ce31e46e626'] + +# using CMake built with GCCcore to avoid relying on the system compiler to build it +builddependencies = [ + ('binutils', '2.42'), # to make CMake compiler health check pass on old systems + ('CMake', '3.29.3'), +] + +moduleclass = 'math' 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..2be3d9bf74c --- /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,40 @@ +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'), +] + +use_pip = True + +exts_list = [ + ('opt_einsum', '3.3.0', { + 'checksums': ['59f6475f77bbc37dcf7cd748519c0ec60722e91e63ca114e68821c0c54a46549'], + }), + ('opt_einsum_fx', '0.1.4', { + 'checksums': ['7eeb7f91ecb70be65e6179c106ea7f64fc1db6319e3d1289a4518b384f81e74f'], + }), + (name, version, { + 'checksums': ['532b34a5644153659253c59943fe4224cd9c3c46ce8a79f1dc7c00afccb44ecb'], + }), +] + +sanity_pip_check = True + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/e/e3nn/e3nn-0.3.3-foss-2023a-CUDA-12.1.1.eb b/easybuild/easyconfigs/e/e3nn/e3nn-0.3.3-foss-2023a-CUDA-12.1.1.eb new file mode 100644 index 00000000000..8c30352e396 --- /dev/null +++ b/easybuild/easyconfigs/e/e3nn/e3nn-0.3.3-foss-2023a-CUDA-12.1.1.eb @@ -0,0 +1,40 @@ +easyblock = 'PythonBundle' + +name = 'e3nn' +version = '0.3.3' +versionsuffix = '-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': '2023a'} + +dependencies = [ + ('CUDA', '12.1.1', '', SYSTEM), + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), + ('PyTorch', '2.1.2', versionsuffix), + ('sympy', '1.12'), +] + +use_pip = True + +exts_list = [ + ('opt-einsum', '3.3.0', { + 'source_tmpl': 'opt_einsum-%(version)s.tar.gz', + 'checksums': ['59f6475f77bbc37dcf7cd748519c0ec60722e91e63ca114e68821c0c54a46549'], + }), + ('opt_einsum_fx', '0.1.4', { + 'checksums': ['7eeb7f91ecb70be65e6179c106ea7f64fc1db6319e3d1289a4518b384f81e74f'], + }), + (name, version, { + 'checksums': ['532b34a5644153659253c59943fe4224cd9c3c46ce8a79f1dc7c00afccb44ecb'], + }), +] + +sanity_pip_check = True + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/e/eclib/eclib-20240408-GCC-13.2.0.eb b/easybuild/easyconfigs/e/eclib/eclib-20240408-GCC-13.2.0.eb new file mode 100644 index 00000000000..10142dd830f --- /dev/null +++ b/easybuild/easyconfigs/e/eclib/eclib-20240408-GCC-13.2.0.eb @@ -0,0 +1,36 @@ +easyblock = 'ConfigureMake' + +name = 'eclib' +version = '20240408' + +homepage = 'https://github.com/JohnCremona/eclib' +description = """The eclib package includes mwrank (for 2-descent on elliptic curves over Q) + and modular symbol code used to create the elliptic curve database.""" + +toolchain = {'name': 'GCC', 'version': '13.2.0'} + +source_urls = ['https://github.com/JohnCremona/eclib/releases/download/v%(version)s'] +sources = [SOURCE_TAR_BZ2] +checksums = ['3ba908e2019de53fcba141449caa6fa82f03605bf83bf9da8092df538adabe7c'] + +builddependencies = [('Autotools', '20220317')] + +dependencies = [ + ('NTL', '11.5.1'), + ('PARI-GP', '2.15.5'), +] + +preconfigopts = "autoreconf --install && " + +configopts = "--with-ntl=$EBROOTNTL --with-pari=$EBROOTPARI" + +sanity_check_paths = { + 'files': ['bin/%s' % x for x in ['ecnf', 'mwrank', 'pcurve', 'qexp']] + + ['include/eclib/%s.h' % h for h in ['curve', 'egr', 'vector']] + + ['lib/libec.%s' % e for e in ['a', SHLIB_EXT]], + 'dirs': ['share'], +} + +sanity_check_commands = ["mwrank -h"] + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/e/ensmallen/ensmallen-2.21.1-foss-2023a.eb b/easybuild/easyconfigs/e/ensmallen/ensmallen-2.21.1-foss-2023a.eb new file mode 100644 index 00000000000..b0a8a512f6d --- /dev/null +++ b/easybuild/easyconfigs/e/ensmallen/ensmallen-2.21.1-foss-2023a.eb @@ -0,0 +1,28 @@ +easyblock = 'CMakeMake' + +name = 'ensmallen' +version = '2.21.1' + +homepage = 'https://ensmallen.org/' +description = """ensmallen is a high-quality C++ library for non-linear numerical optimization""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +source_urls = ['https://github.com/mlpack/ensmallen/archive/refs/tags/'] +sources = ['%(version)s.tar.gz'] +checksums = ['820eee4d8aa32662ff6a7d883a1bcaf4e9bf9ca0a3171d94c5398fe745008750'] + +builddependencies = [ + ('CMake', '3.26.3'), +] + +dependencies = [ + ('Armadillo', '12.6.2'), +] + +sanity_check_paths = { + 'files': ['include/ensmallen.hpp', 'include/ensmallen_bits/function.hpp'], + 'dirs': ['lib', 'include', 'include/ensmallen_bits/', 'lib/cmake'], +} + +moduleclass = 'numlib' diff --git a/easybuild/easyconfigs/e/expat/expat-2.6.2-GCCcore-13.3.0.eb b/easybuild/easyconfigs/e/expat/expat-2.6.2-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..41b5a1340fb --- /dev/null +++ b/easybuild/easyconfigs/e/expat/expat-2.6.2-GCCcore-13.3.0.eb @@ -0,0 +1,31 @@ +easyblock = 'ConfigureMake' + +name = 'expat' +version = '2.6.2' + +homepage = 'https://libexpat.github.io' + +description = """Expat is an XML parser library written in C. It is a stream-oriented parser +in which an application registers handlers for things the parser might find +in the XML document (like start tags).""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/libexpat/libexpat/releases/download/R_%s/' % version.replace('.', '_')] +sources = [SOURCE_TAR_BZ2] +checksums = ['9c7c1b5dcbc3c237c500a8fb1493e14d9582146dd9b42aa8d3ffb856a3b927e0'] + +builddependencies = [('binutils', '2.42')] + +# Since expat 2.2.6, docbook2X is needed to produce manpage of xmlwf. +# Docbook2X needs XML-Parser and XML-Parser needs expat. +# -> circular dependency. "--without-docbook" breaks this circle. +configopts = ['--without-docbook'] + +sanity_check_paths = { + 'files': ['include/expat.h', 'lib/libexpat.a', 'lib/libexpat.%s' % SHLIB_EXT], + 'dirs': [], +} + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/f/FDMNES/FDMNES-2024-02-29-gomkl-2023a.eb b/easybuild/easyconfigs/f/FDMNES/FDMNES-2024-02-29-gomkl-2023a.eb new file mode 100644 index 00000000000..f177acda709 --- /dev/null +++ b/easybuild/easyconfigs/f/FDMNES/FDMNES-2024-02-29-gomkl-2023a.eb @@ -0,0 +1,61 @@ +easyblock = 'MakeCp' + +name = 'FDMNES' + +version = '2024-02-29' + +homepage = 'https://fdmnes.neel.cnrs.fr' +description = """X-ray spectroscopies are techniques which probe the electronic and structural +properties of the materials. Most often performed at synchrotron, they are extensively used +to analyse all classes of materials. The advances on the experimental side need the complementary +progress on the theoretical side to extract confidentely all the information the data can furnish. + +In this context, the purpose of our FDMNES project is to supply to the community a user friendly +ab initio code to simulate X-ray absorption and emission spectroscopies as well as resonant x-ray +scattering and x-ray Raman spectroscopies, among other techniques. + +FDMNES, for Finite Difference Method Near Edge Structure, uses the density functional theory (DFT). +It is thus specially devoted to the simulation of the K edges of all the chemical +elements and of the L23 edges of the heavy ones. +For the other edges, it includes advances by the use of the time dependent DFT (TD-DFT).""" + +toolchain = {'name': 'gomkl', 'version': '2023a'} +toolchainopts = {'usempi': True} + +sources = [{ + 'source_urls': ['https://cloud.neel.cnrs.fr/index.php/s/tDpQWmec7S4Ei4G'], + 'download_filename': 'download', + 'filename': '%(namelower)s_fortran_prog_%(version)s.zip', +}] +checksums = ['bcf0928dd8f44bb0098aed4b8d45c8cf4cedf7cee1a598342de6115d7066c2fb'] + +dependencies = [ + ('MUMPS', '5.6.1', '-metis-seq'), + ('OpenMPI', '4.1.5'), + ('SCOTCH', '7.0.3'), +] + +parallel = 1 + +prebuildopts = "sed -i 's/-llapack -lblas/$LIBLAPACK/g;" +# to avoid the `/bin/sh: line 1: -lscotch: command not found` error +prebuildopts += '/-lscotch/d;' +prebuildopts += 's/lpord \\\\/lpord -lscotch -lscotcherr -lpthread -Wl,--start-group ' +prebuildopts += '-lmkl_gf_lp64 -lmkl_sequential -lmkl_core -Wl,--end-group -lgfortran/g;' +# to avoid the `undefined reference to 'main_rixs_'` error +prebuildopts += "s/mat_solve_mumps.o/mat_solve_mumps.o RIXS.o/g' makefile && echo Here && cat makefile && " + +buildopts = 'FC="$FC" FFLAGS="-c $FFLAGS -fallow-argument-mismatch -fallow-invalid-boz -I$EBROOTMUMPS/include"' + +files_to_copy = [ + (['%(builddir)s/fdmnes'], 'bin'), +] + +sanity_check_paths = { + 'files': ['bin/fdmnes'], + 'dirs': [] +} + +sanity_check_commands = ['fdmnes --help'] + +moduleclass = 'chem' diff --git a/easybuild/easyconfigs/f/FFLAS-FFPACK/FFLAS-FFPACK-2.5.0-gfbf-2023b.eb b/easybuild/easyconfigs/f/FFLAS-FFPACK/FFLAS-FFPACK-2.5.0-gfbf-2023b.eb new file mode 100644 index 00000000000..2bd469f7978 --- /dev/null +++ b/easybuild/easyconfigs/f/FFLAS-FFPACK/FFLAS-FFPACK-2.5.0-gfbf-2023b.eb @@ -0,0 +1,43 @@ +## +# This file is an EasyBuild recipe; see https://github.com/easybuilders/easybuild +# +# Copyright:: Copyright (c) 2016 Riccardo Murri +# Authors:: Riccardo Murri +# License:: GPL +# +# Update: Petr Král (INUITS) +# +## + +easyblock = 'ConfigureMake' + +name = 'FFLAS-FFPACK' +version = '2.5.0' + +homepage = 'https://linbox-team.github.io/fflas-ffpack/' +description = "Finite Field Linear Algebra Subroutines / Package" + +toolchain = {'name': 'gfbf', 'version': '2023b'} + +source_urls = ['https://github.com/linbox-team/fflas-ffpack/releases/download/v%(version)s'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['dafb4c0835824d28e4f823748579be6e4c8889c9570c6ce9cce1e186c3ebbb23'] + +dependencies = [ + ('GMP', '6.3.0'), + ('Givaro', '4.2.0'), +] + +configopts = '--with-blas-libs="$LIBBLAS_MT" --with-blas-cflags="-I$BLAS_INC_DIR" ' +configopts += '--with-gmp=$EBROOTGMP --with-givaro=$EBROOTGIVARO --enable-openmp' + +buildopts = " && make autotune " + +sanity_check_paths = { + 'files': ['bin/fflas-ffpack-config', 'include/fflas-ffpack/fflas-ffpack.h'], + 'dirs': ['bin', 'include', 'lib'], +} + +sanity_check_commands = ["fflas-ffpack-config --help"] + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/f/FFTW.MPI/FFTW.MPI-3.3.10-gompi-2024.05.eb b/easybuild/easyconfigs/f/FFTW.MPI/FFTW.MPI-3.3.10-gompi-2024.05.eb new file mode 100644 index 00000000000..b6ab2a2d4f0 --- /dev/null +++ b/easybuild/easyconfigs/f/FFTW.MPI/FFTW.MPI-3.3.10-gompi-2024.05.eb @@ -0,0 +1,19 @@ +name = 'FFTW.MPI' +version = '3.3.10' + +homepage = 'https://www.fftw.org' +description = """FFTW is a C subroutine library for computing the discrete Fourier transform (DFT) +in one or more dimensions, of arbitrary input size, and of both real and complex data.""" + +toolchain = {'name': 'gompi', 'version': '2024.05'} +toolchainopts = {'pic': True} + +source_urls = [homepage] +sources = ['fftw-%(version)s.tar.gz'] +checksums = ['56c932549852cddcfafdab3820b0200c7742675be92179e59e6215b340e26467'] + +dependencies = [('FFTW', '3.3.10')] + +runtest = 'check' + +moduleclass = 'numlib' diff --git a/easybuild/easyconfigs/f/FFTW/FFTW-3.3.10-GCC-13.3.0.eb b/easybuild/easyconfigs/f/FFTW/FFTW-3.3.10-GCC-13.3.0.eb new file mode 100644 index 00000000000..bf18544e701 --- /dev/null +++ b/easybuild/easyconfigs/f/FFTW/FFTW-3.3.10-GCC-13.3.0.eb @@ -0,0 +1,17 @@ +name = 'FFTW' +version = '3.3.10' + +homepage = 'https://www.fftw.org' +description = """FFTW is a C subroutine library for computing the discrete Fourier transform (DFT) +in one or more dimensions, of arbitrary input size, and of both real and complex data.""" + +toolchain = {'name': 'GCC', 'version': '13.3.0'} +toolchainopts = {'pic': True} + +source_urls = [homepage] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['56c932549852cddcfafdab3820b0200c7742675be92179e59e6215b340e26467'] + +runtest = 'check' + +moduleclass = 'numlib' diff --git a/easybuild/easyconfigs/f/FFmpeg/FFmpeg-5.0.1-GCCcore-11.3.0.eb b/easybuild/easyconfigs/f/FFmpeg/FFmpeg-5.0.1-GCCcore-11.3.0.eb index 5f6462eec21..6a468c1f81d 100644 --- a/easybuild/easyconfigs/f/FFmpeg/FFmpeg-5.0.1-GCCcore-11.3.0.eb +++ b/easybuild/easyconfigs/f/FFmpeg/FFmpeg-5.0.1-GCCcore-11.3.0.eb @@ -33,7 +33,7 @@ dependencies = [ configopts = '--enable-pic --enable-shared --enable-gpl --enable-version3 --enable-nonfree --cc="$CC" --cxx="$CXX" ' configopts += '--enable-libx264 --enable-libx265 --enable-libmp3lame --enable-libfreetype --enable-fontconfig ' -configopts += '--enable-libfribidi --enable-sdl2' +configopts += '--enable-libfribidi --enable-sdl2 --disable-htmlpages' sanity_check_paths = { 'files': ['bin/ff%s' % x for x in ['mpeg', 'probe', 'play']] + diff --git a/easybuild/easyconfigs/f/FFmpeg/FFmpeg-5.1.2-GCCcore-12.2.0.eb b/easybuild/easyconfigs/f/FFmpeg/FFmpeg-5.1.2-GCCcore-12.2.0.eb index b06aee26953..dfe40032efc 100644 --- a/easybuild/easyconfigs/f/FFmpeg/FFmpeg-5.1.2-GCCcore-12.2.0.eb +++ b/easybuild/easyconfigs/f/FFmpeg/FFmpeg-5.1.2-GCCcore-12.2.0.eb @@ -33,7 +33,7 @@ dependencies = [ configopts = '--enable-pic --enable-shared --enable-gpl --enable-version3 --enable-nonfree --cc="$CC" --cxx="$CXX" ' configopts += '--enable-libx264 --enable-libx265 --enable-libmp3lame --enable-libfreetype --enable-fontconfig ' -configopts += '--enable-libfribidi --enable-sdl2' +configopts += '--enable-libfribidi --enable-sdl2 --disable-htmlpages' sanity_check_paths = { 'files': ['bin/ff%s' % x for x in ['mpeg', 'probe', 'play']] + diff --git a/easybuild/easyconfigs/f/FFmpeg/FFmpeg-6.0-GCCcore-12.3.0.eb b/easybuild/easyconfigs/f/FFmpeg/FFmpeg-6.0-GCCcore-12.3.0.eb index 4f5fb4a0bc5..caa80fed59d 100644 --- a/easybuild/easyconfigs/f/FFmpeg/FFmpeg-6.0-GCCcore-12.3.0.eb +++ b/easybuild/easyconfigs/f/FFmpeg/FFmpeg-6.0-GCCcore-12.3.0.eb @@ -33,7 +33,7 @@ dependencies = [ configopts = '--enable-pic --enable-shared --enable-gpl --enable-version3 --enable-nonfree --cc="$CC" --cxx="$CXX" ' configopts += '--enable-libx264 --enable-libx265 --enable-libmp3lame --enable-libfreetype --enable-fontconfig ' -configopts += '--enable-libfribidi --enable-sdl2' +configopts += '--enable-libfribidi --enable-sdl2 --disable-htmlpages' sanity_check_paths = { 'files': ['bin/ff%s' % x for x in ['mpeg', 'probe', 'play']] + diff --git a/easybuild/easyconfigs/f/FFmpeg/FFmpeg-6.0-GCCcore-13.2.0.eb b/easybuild/easyconfigs/f/FFmpeg/FFmpeg-6.0-GCCcore-13.2.0.eb index fab8972c089..c75695951f6 100644 --- a/easybuild/easyconfigs/f/FFmpeg/FFmpeg-6.0-GCCcore-13.2.0.eb +++ b/easybuild/easyconfigs/f/FFmpeg/FFmpeg-6.0-GCCcore-13.2.0.eb @@ -33,7 +33,7 @@ dependencies = [ configopts = '--enable-pic --enable-shared --enable-gpl --enable-version3 --enable-nonfree --cc="$CC" --cxx="$CXX" ' configopts += '--enable-libx264 --enable-libx265 --enable-libmp3lame --enable-libfreetype --enable-fontconfig ' -configopts += '--enable-libfribidi --enable-sdl2' +configopts += '--enable-libfribidi --enable-sdl2 --disable-htmlpages' sanity_check_paths = { 'files': ['bin/ff%s' % x for x in ['mpeg', 'probe', 'play']] + diff --git a/easybuild/easyconfigs/f/FLTK/FLTK-1.3.9-GCCcore-13.2.0.eb b/easybuild/easyconfigs/f/FLTK/FLTK-1.3.9-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..3afeffc0a2c --- /dev/null +++ b/easybuild/easyconfigs/f/FLTK/FLTK-1.3.9-GCCcore-13.2.0.eb @@ -0,0 +1,43 @@ +easyblock = 'ConfigureMake' + +name = 'FLTK' +version = '1.3.9' + +homepage = 'https://www.fltk.org' +description = """FLTK is a cross-platform C++ GUI toolkit for UNIX/Linux (X11), Microsoft Windows, + and MacOS X. FLTK provides modern GUI functionality without the bloat and supports 3D graphics via OpenGL + and its built-in GLUT emulation.""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://fltk.org/pub/%(namelower)s/%(version)s/'] +sources = ['%(namelower)s-%(version)s-source.tar.gz'] +patches = ['FLTK-1.3.6_fix-LDFLAGS.patch'] +checksums = [ + {'fltk-1.3.9-source.tar.gz': 'd736b0445c50d607432c03d5ba5e82f3fba2660b10bc1618db8e077a42d9511b'}, + {'FLTK-1.3.6_fix-LDFLAGS.patch': 'f8af2414a1ee193a186b0d98d1e3567add0ee003f44ec64dce2ce2dfd6d95ebf'}, +] + +configopts = '--enable-shared --enable-threads --enable-xft' + +builddependencies = [ + ('binutils', '2.40'), + ('groff', '1.23.0'), +] + +dependencies = [ + ('Mesa', '23.1.9'), + ('libGLU', '9.0.3'), + ('libpng', '1.6.40'), + ('libjpeg-turbo', '3.0.1'), + ('xprop', '1.2.7'), + ('zlib', '1.2.13'), +] + +sanity_check_paths = { + 'files': ['bin/fltk-config', 'bin/fluid', 'lib/libfltk.a', 'lib/libfltk.%s' % SHLIB_EXT], + 'dirs': ['lib'], +} + +moduleclass = 'vis' diff --git a/easybuild/easyconfigs/f/FMM3D/FMM3D-1.0.4-foss-2023a.eb b/easybuild/easyconfigs/f/FMM3D/FMM3D-1.0.4-foss-2023a.eb new file mode 100644 index 00000000000..19cdbd46743 --- /dev/null +++ b/easybuild/easyconfigs/f/FMM3D/FMM3D-1.0.4-foss-2023a.eb @@ -0,0 +1,45 @@ +easyblock = 'ConfigureMake' + +name = 'FMM3D' +version = '1.0.4' + +homepage = 'https://fmm3d.readthedocs.io' +description = """Flatiron Institute Fast Multipole Libraries: a set of libraries to compute N-body +interactions governed by the Laplace and Helmholtz equations, to a specified precision, in three dimensions, on a +multi-core shared-memory machine.""" + +toolchain = {'name': 'foss', 'version': '2023a'} +toolchainopts = {'openmp': True} + +source_urls = ['https://github.com/flatironinstitute/FMM3D/archive/'] +sources = ['v%(version)s.tar.gz'] +checksums = ['26b16ce6f963bf33011cbd690a27d4cba2c3a3eb9ab8505febe1ca39abcfc40a'] + +dependencies = [ + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), + ('Python-bundle-PyPI', '2023.06'), +] + +skipsteps = ['configure', 'build'] + +installopts = 'FAST_KER=ON PREFIX="%(installdir)s/lib" && ' +installopts += 'export FMM_FLIBS="%(installdir)s/lib/libfmm3d.a $FFLAGS" && ' +# also install Python bindings +installopts += "make python-dist && pip install --no-deps --ignore-installed --prefix %(installdir)s python/dist/*.whl" + +sanity_check_paths = { + 'files': ['lib/libfmm3d.a', 'lib/libfmm3d.%s' % SHLIB_EXT], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +sanity_check_commands = [ + "cd %(builddir)s/FMM3D-* && make test", + "python -c 'import fmm3dpy'", + "cd %(builddir)s/FMM3D-* && python python/test/test_hfmm.py", + "cd %(builddir)s/FMM3D-* && python python/test/test_lfmm.py", +] + +modextrapaths = {'PYTHONPATH': 'lib/python%(pyshortver)s/site-packages'} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/f/Faiss/Faiss-1.7.4-foss-2023a-CUDA-12.1.1.eb b/easybuild/easyconfigs/f/Faiss/Faiss-1.7.4-foss-2023a-CUDA-12.1.1.eb new file mode 100644 index 00000000000..a55db18bfc6 --- /dev/null +++ b/easybuild/easyconfigs/f/Faiss/Faiss-1.7.4-foss-2023a-CUDA-12.1.1.eb @@ -0,0 +1,68 @@ +# Author: Jasper Grimm (UoY) +easyblock = 'CMakePythonPackage' + +name = 'Faiss' +version = '1.7.4' +versionsuffix = '-CUDA-%(cudaver)s' + +homepage = 'https://github.com/facebookresearch/faiss' +description = """ +Faiss is a library for efficient similarity search and clustering of dense + vectors. It contains algorithms that search in sets of vectors of any size, up + to ones that possibly do not fit in RAM. It also contains supporting code for + evaluation and parameter tuning. Faiss is written in C++ with complete + wrappers for Python/numpy. Some of the most useful algorithms are implemented + on the GPU. It is developed primarily at Meta's Fundamental AI Research group. +""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +github_account = 'facebookresearch' +source_urls = [GITHUB_LOWER_SOURCE] +sources = ['v%(version)s.tar.gz'] +checksums = ['d9a7b31bf7fd6eb32c10b7ea7ff918160eed5be04fe63bb7b4b4b5f2bbde01ad'] + +builddependencies = [ + ('CMake', '3.26.3'), + ('SWIG', '4.1.1'), +] + +dependencies = [ + ('CUDA', '12.1.1', '', SYSTEM), + ('Python', '3.11.3'), + ('PyTorch', '2.1.2', versionsuffix), + ('SciPy-bundle', '2023.07'), +] + +_copts = [ + '-DFAISS_ENABLE_GPU=ON', + '-DFAISS_ENABLE_PYTHON=ON', + '-DFAISS_ENABLE_C_API=ON', + '-DBUILD_TESTING=ON', + '-DBUILD_SHARED_LIBS=ON', + '-DPython_EXECUTABLE="${EBROOTPYTHON}/bin/python"', + '-DCUDAToolkit_ROOT="${CUDA_ROOT}"', + '-DCMAKE_CUDA_ARCHITECTURES="%(cuda_cc_cmake)s"', + '-DCMAKE_INSTALL_LIBDIR=%(installdir)s/lib', +] + +configopts = ' '.join(_copts) + +buildopts = 'faiss swigfaiss' + +postinstallcmds = [ + ' && '.join([ + # run a pip install in the 'faiss/python' subdir + 'cd ../easybuild_obj/%(namelower)s/python', + 'python -m pip install --prefix=%(installdir)s --no-build-isolation .', + # for some reason, 'libfaiss_python_callbacks.so' doesn't get installed, so copy this manually + 'cp libfaiss_python_callbacks.%s %%(installdir)s/lib/python%%(pyshortver)s/site-packages/faiss' % SHLIB_EXT + ]) +] + +sanity_check_paths = { + 'files': ['lib/lib%%(namelower)s.%s' % SHLIB_EXT], + 'dirs': ['include/%(namelower)s', 'lib/python%(pyshortver)s/site-packages/%(namelower)s'], +} + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/f/FlexiBLAS/FlexiBLAS-3.4.4-GCC-13.3.0.eb b/easybuild/easyconfigs/f/FlexiBLAS/FlexiBLAS-3.4.4-GCC-13.3.0.eb new file mode 100644 index 00000000000..9b9f5e8edb2 --- /dev/null +++ b/easybuild/easyconfigs/f/FlexiBLAS/FlexiBLAS-3.4.4-GCC-13.3.0.eb @@ -0,0 +1,59 @@ +easyblock = 'Bundle' + +name = 'FlexiBLAS' +version = '3.4.4' + +homepage = 'https://gitlab.mpi-magdeburg.mpg.de/software/flexiblas-release' +description = """FlexiBLAS is a wrapper library that enables the exchange of the BLAS and LAPACK implementation +used by a program without recompiling or relinking it.""" + +toolchain = {'name': 'GCC', 'version': '13.3.0'} +local_extra_flags = "-fstack-protector-strong -fstack-clash-protection" +toolchainopts = {'pic': True, 'extra_cflags': local_extra_flags, 'extra_fflags': local_extra_flags} + +builddependencies = [ + ('CMake', '3.29.3'), + ('Python', '3.12.3'), # required for running the tests + ('BLIS', '1.0'), +] + +dependencies = [ + ('OpenBLAS', '0.3.27'), +] + +# note: first listed backend will be used as default by FlexiBLAS, +# unless otherwise specified via easyconfig parameter flexiblas_default +local_backends = ['OpenBLAS', 'BLIS'] + +# imkl supplies its backend via the imkl module, not as a dependency +if ARCH == 'x86_64': + local_backends.append('imkl') + +default_component_specs = {'start_dir': '%(namelower)s-%(version)s'} +sanity_check_all_components = True + +# Also build and install LAPACKE, which FlexiBLAS does not support yet +components = [ + (name, version, { + 'source_urls': + ['https://gitlab.mpi-magdeburg.mpg.de/api/v4/projects/386/packages/generic/flexiblas-source/v3.4.4/'], + 'sources': [SOURCELOWER_TAR_GZ], + 'checksums': ['05040ae092142dd0bf38d1bb9ce33f6b475d9f9bb455e33be997932ae855c22b'], + 'backends': local_backends, + }), + ('LAPACK', '3.12.0', { + 'easyblock': 'CMakeMake', + 'source_urls': ['https://github.com/Reference-LAPACK/lapack/archive/'], + 'sources': ['v%(version)s.tar.gz'], + 'checksums': ['eac9570f8e0ad6f30ce4b963f4f033f0f643e7c3912fc9ee6cd99120675ad48b'], + 'configopts': ('-DBUILD_SHARED_LIBS=ON -DUSE_OPTIMIZED_BLAS=ON -DLAPACKE=ON ' + '-DUSE_OPTIMIZED_LAPACK=ON -DBUILD_DEPRECATED=ON ' + '-DCMAKE_INSTALL_INCLUDEDIR=%(installdir)s/include/flexiblas'), + 'sanity_check_paths': { + 'files': ['lib/liblapacke.%s' % SHLIB_EXT, 'include/flexiblas/lapacke.h'], + 'dirs': [], + }, + }), +] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/f/f90wrap/f90wrap-0.2.13-foss-2023a.eb b/easybuild/easyconfigs/f/f90wrap/f90wrap-0.2.13-foss-2023a.eb new file mode 100644 index 00000000000..153e5ca422f --- /dev/null +++ b/easybuild/easyconfigs/f/f90wrap/f90wrap-0.2.13-foss-2023a.eb @@ -0,0 +1,44 @@ +easyblock = 'PythonPackage' + +name = 'f90wrap' +version = '0.2.13' + +homepage = 'https://github.com/jameskermode/f90wrap' +description = """f90wrap is a tool to automatically generate Python extension modules which +interface to Fortran code that makes use of derived types. It builds on the +capabilities of the popular f2py utility by generating a simpler Fortran 90 +interface to the original Fortran code which is then suitable for wrapping with +f2py, together with a higher-level Pythonic wrapper that makes the existance of +an additional layer transparent to the final user.""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +sources = [SOURCE_TAR_GZ] +patches = ['f90wrap-0.2.13_fix_old_typing.patch'] +checksums = [ + {'f90wrap-0.2.13.tar.gz': 'a61b73bb1cf028db54ad4b0c48627080d88e14463803dd55713c70f3e88b911e'}, + {'f90wrap-0.2.13_fix_old_typing.patch': 'e6fad329e4436b0ad2bd093d0a8dd22bf03fe6128dfe9e38d0db6bd0c2ed79e1'}, +] + +builddependencies = [ + ('meson-python', '0.15.0') +] +dependencies = [ + ('Python', '3.11.3'), + ("SciPy-bundle", "2023.07"), +] + +download_dep_fail = True +use_pip = True +sanity_pip_check = True + +sanity_check_paths = { + 'files': ['bin/f2py-f90wrap', 'bin/f90doc', 'bin/f90wrap'], + 'dirs': ['lib/python%(pyshortver)s/site-packages/%(name)s'], +} + +sanity_check_commands = [ + ('f90wrap', '--help'), +] + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/f/f90wrap/f90wrap-0.2.13_fix_old_typing.patch b/easybuild/easyconfigs/f/f90wrap/f90wrap-0.2.13_fix_old_typing.patch new file mode 100644 index 00000000000..a232ec81e8f --- /dev/null +++ b/easybuild/easyconfigs/f/f90wrap/f90wrap-0.2.13_fix_old_typing.patch @@ -0,0 +1,37 @@ +Fixed old numpy API usage in f90wrap. This has been fixed in commit 108f819 and version 0.2.14 +--- f90wrap/arraydatamodule.c.orig 2024-04-19 14:22:57.488265190 +0200 ++++ f90wrap/arraydatamodule.c 2024-04-19 14:30:08.923493156 +0200 +@@ -59,13 +59,13 @@ + /* Processing variable this */ + this_Dims[0]=sizeof_fortran_t; + capi_this_intent |= F2PY_INTENT_IN; +- capi_this_tmp = array_from_pyobj(PyArray_INT,this_Dims,this_Rank,capi_this_intent,this_capi); ++ capi_this_tmp = array_from_pyobj(NPY_INT,this_Dims,this_Rank,capi_this_intent,this_capi); + if (capi_this_tmp == NULL) { + if (!PyErr_Occurred()) + PyErr_SetString(PyExc_TypeError,"failed in converting 1st argument `this' of get_array to C/Fortran array" ); + goto fail; + } else { +- this = (int *)(capi_this_tmp->data); ++ this = (int *)(PyArray_DATA(capi_this_tmp)); + } + + /* Processing variable arrayfunc */ +@@ -107,7 +107,7 @@ + /* Construct array */ + descr = PyArray_DescrNewFromType(typenum); + array = (PyArrayObject*) PyArray_NewFromDescr(&PyArray_Type, descr, nd, dimensions, NULL, +- data, NPY_FORTRAN | NPY_WRITEABLE | NPY_ALIGNED, NULL); ++ data, NPY_ARRAY_F_CONTIGUOUS | NPY_ARRAY_WRITEABLE | NPY_ARRAY_ALIGNED, NULL); + free(dimensions); + if((PyObject *)capi_this_tmp!=this_capi) { + Py_XDECREF(capi_this_tmp); +@@ -125,7 +125,7 @@ + + static PyMethodDef arraydata_methods[] = { + {"get_array", get_array, METH_VARARGS, +- "Make an array from integer(sizeof_fortran_t) array containing reference to derived type object,\n and fortran array function.\n\get_array(sizeof_fortran_t, fpointer,array_fobj[,key]) -> array"}, ++ "Make an array from integer(sizeof_fortran_t) array containing reference to derived type object,\n and fortran array function.\n\\get_array(sizeof_fortran_t, fpointer,array_fobj[,key]) -> array"}, + {NULL, NULL} + }; + diff --git a/easybuild/easyconfigs/f/fastparquet/fastparquet-2023.4.0-gfbf-2022b.eb b/easybuild/easyconfigs/f/fastparquet/fastparquet-2023.4.0-gfbf-2022b.eb index 2320c4b7539..95fbef237e5 100644 --- a/easybuild/easyconfigs/f/fastparquet/fastparquet-2023.4.0-gfbf-2022b.eb +++ b/easybuild/easyconfigs/f/fastparquet/fastparquet-2023.4.0-gfbf-2022b.eb @@ -1,4 +1,4 @@ -easyblock = 'PythonBundle' +easyblock = 'CargoPythonBundle' name = 'fastparquet' version = '2023.4.0' @@ -12,12 +12,77 @@ toolchain = {'name': 'gfbf', 'version': '2022b'} builddependencies = [ ('patchelf', '0.17.2'), + ('maturin', '1.1.0'), # for cramjam ] dependencies = [ ('Python', '3.10.8'), ('SciPy-bundle', '2023.02'), - ('maturin', '1.1.0'), +] + +crates = [ + ('adler', '1.0.2'), + ('ahash', '0.7.6'), + ('alloc-no-stdlib', '2.0.4'), + ('alloc-stdlib', '0.2.2'), + ('autocfg', '1.1.0'), + ('bitflags', '1.3.2'), + ('brotli', '3.3.4'), + ('brotli-decompressor', '2.3.2'), + ('bzip2', '0.4.3'), + ('bzip2-sys', '0.1.11+1.0.8'), + ('cc', '1.0.73'), + ('cfg-if', '1.0.0'), + ('crc32fast', '1.3.2'), + ('flate2', '1.0.23'), + ('getrandom', '0.2.8'), + ('indoc', '1.0.6'), + ('jobserver', '0.1.24'), + ('libc', '0.2.126'), + ('libmimalloc-sys', '0.1.25'), + ('lock_api', '0.4.7'), + ('lz4', '1.23.3'), + ('lz4-sys', '1.9.4'), + ('matrixmultiply', '0.3.2'), + ('memoffset', '0.6.5'), + ('mimalloc', '0.1.29'), + ('miniz_oxide', '0.5.1'), + ('ndarray', '0.15.4'), + ('num-complex', '0.4.1'), + ('num-integer', '0.1.45'), + ('num-traits', '0.2.15'), + ('numpy', '0.17.2'), + ('once_cell', '1.10.0'), + ('parking_lot', '0.12.0'), + ('parking_lot_core', '0.9.3'), + ('pkg-config', '0.3.25'), + ('proc-macro2', '1.0.39'), + ('pyo3', '0.17.3'), + ('pyo3-build-config', '0.17.3'), + ('pyo3-ffi', '0.17.3'), + ('pyo3-macros', '0.17.3'), + ('pyo3-macros-backend', '0.17.3'), + ('quote', '1.0.18'), + ('rawpointer', '0.2.1'), + ('redox_syscall', '0.2.13'), + ('scopeguard', '1.1.0'), + ('smallvec', '1.8.0'), + ('snap', '1.0.5'), + ('syn', '1.0.95'), + ('target-lexicon', '0.12.3'), + ('unicode-ident', '1.0.0'), + ('unindent', '0.1.9'), + ('version_check', '0.9.4'), + ('wasi', '0.11.0+wasi-snapshot-preview1'), + ('windows-sys', '0.36.1'), + ('windows_aarch64_msvc', '0.36.1'), + ('windows_i686_gnu', '0.36.1'), + ('windows_i686_msvc', '0.36.1'), + ('windows_x86_64_gnu', '0.36.1'), + ('windows_x86_64_msvc', '0.36.1'), + ('zstd', '0.11.2+zstd.1.5.2'), + ('zstd-safe', '5.0.2+zstd.1.5.2'), + ('zstd-sys', '2.0.1+zstd.1.5.2'), ] use_pip = True diff --git a/easybuild/easyconfigs/f/fgbio/fgbio-2.2.1-Java-8.eb b/easybuild/easyconfigs/f/fgbio/fgbio-2.2.1-Java-8.eb new file mode 100644 index 00000000000..56e28293e92 --- /dev/null +++ b/easybuild/easyconfigs/f/fgbio/fgbio-2.2.1-Java-8.eb @@ -0,0 +1,43 @@ +easyblock = 'CmdCp' + +name = 'fgbio' +version = '2.2.1' +versionsuffix = '-Java-%(javaver)s' + +homepage = 'https://fulcrumgenomics.github.io/fgbio' +description = "A set of tools to analyze genomic data with a focus on Next Generation Sequencing." + +toolchain = SYSTEM + +source_urls = ['https://github.com/fulcrumgenomics/fgbio/archive/'] +sources = ['%(version)s.zip'] +checksums = ['0810b10365f501bcba1e00e02bd4543270bc8eb8bfb18cca07e89bafedbc2a79'] + +builddependencies = [ + ('sbt', '1.3.13', versionsuffix), +] + +dependencies = [('Java', '8')] + +cmds_map = [( + '.*', + 'sed -i \'s/scala.sys.process.Process("git rev-parse --short HEAD").lineStream.head/"%(version)s"/\' version.sbt' + ' && sbt --sbt-dir "$TMPDIR/sbt" assembly --ivy "$TMPDIR/ivy2"' + ' && echo -e \'#!/bin/bash\\nexec java -jar "${EBROOTFGBIO}/lib/%(name)s-%(version)s.jar" "$@"\' >> %(name)s' + ' && chmod +x %(name)s' +)] + +files_to_copy = [ + (['%(name)s'], 'bin'), + (['target/scala-*/%(name)s-%(version)s.jar'], 'lib'), +] + +sanity_check_paths = { + 'files': ['bin/%(name)s', 'lib/%(name)s-%(version)s.jar'], + 'dirs': [], +} + +# --help, --version, ... all exit with status code one, so we need to check the output +sanity_check_commands = ['%(name)s --help 2>&1 | grep -q Version'] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/f/file/file-5.43-GCCcore-12.2.0.eb b/easybuild/easyconfigs/f/file/file-5.43-GCCcore-12.2.0.eb new file mode 100644 index 00000000000..b02ba70dd64 --- /dev/null +++ b/easybuild/easyconfigs/f/file/file-5.43-GCCcore-12.2.0.eb @@ -0,0 +1,28 @@ +easyblock = 'ConfigureMake' + +name = 'file' +version = '5.43' + +homepage = 'https://www.darwinsys.com/file/' +description = """The file command is 'a file type guesser', that is, a command-line tool + that tells you in words what kind of data a file contains.""" + +toolchain = {'name': 'GCCcore', 'version': '12.2.0'} + +source_urls = ['ftp://ftp.astron.com/pub/file/'] +sources = [SOURCE_TAR_GZ] +checksums = ['8c8015e91ae0e8d0321d94c78239892ef9dbc70c4ade0008c0e95894abfb1991'] + +builddependencies = [ + ('Autotools', '20220317'), + ('binutils', '2.39'), +] + +preconfigopts = "autoreconf -f -i && " + +sanity_check_paths = { + 'files': ['bin/file', 'include/magic.h', 'lib/libmagic.%s' % SHLIB_EXT], + 'dirs': ['share'] +} + +moduleclass = 'system' diff --git a/easybuild/easyconfigs/f/flex/flex-2.6.4-GCCcore-13.3.0.eb b/easybuild/easyconfigs/f/flex/flex-2.6.4-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..dda9307eaea --- /dev/null +++ b/easybuild/easyconfigs/f/flex/flex-2.6.4-GCCcore-13.3.0.eb @@ -0,0 +1,34 @@ +name = 'flex' +version = '2.6.4' + +homepage = 'https://github.com/westes/flex' + +description = """ + Flex (Fast Lexical Analyzer) is a tool for generating scanners. A scanner, + sometimes called a tokenizer, is a program which recognizes lexical patterns + in text. +""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/westes/flex/releases/download/v%(version)s/'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['e87aae032bf07c26f85ac0ed3250998c37621d95f8bd748b31f15b33c45ee995'] + +builddependencies = [ + ('Bison', '3.8.2'), + ('help2man', '1.49.3'), + # use same binutils version that was used when building GCC toolchain + ('binutils', '2.42', '', SYSTEM), +] + +dependencies = [ + ('M4', '1.4.19'), +] + +# glibc 2.26 requires _GNU_SOURCE defined to expose reallocarray in the correct +# header, see https://github.com/westes/flex/issues/241 +preconfigopts = 'export CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" && ' + +moduleclass = 'lang' diff --git a/easybuild/easyconfigs/f/flex/flex-2.6.4-GCCcore-14.1.0.eb b/easybuild/easyconfigs/f/flex/flex-2.6.4-GCCcore-14.1.0.eb new file mode 100644 index 00000000000..fc4217d30c2 --- /dev/null +++ b/easybuild/easyconfigs/f/flex/flex-2.6.4-GCCcore-14.1.0.eb @@ -0,0 +1,34 @@ +name = 'flex' +version = '2.6.4' + +homepage = 'https://github.com/westes/flex' + +description = """ + Flex (Fast Lexical Analyzer) is a tool for generating scanners. A scanner, + sometimes called a tokenizer, is a program which recognizes lexical patterns + in text. +""" + +toolchain = {'name': 'GCCcore', 'version': '14.1.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/westes/flex/releases/download/v%(version)s/'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['e87aae032bf07c26f85ac0ed3250998c37621d95f8bd748b31f15b33c45ee995'] + +builddependencies = [ + ('Bison', '3.8.2'), + ('help2man', '1.49.3'), + # use same binutils version that was used when building GCC toolchain + ('binutils', '2.42', '', SYSTEM), +] + +dependencies = [ + ('M4', '1.4.19'), +] + +# glibc 2.26 requires _GNU_SOURCE defined to expose reallocarray in the correct +# header, see https://github.com/westes/flex/issues/241 +preconfigopts = 'export CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" && ' + +moduleclass = 'lang' diff --git a/easybuild/easyconfigs/f/fontconfig/fontconfig-2.15.0-GCCcore-13.3.0.eb b/easybuild/easyconfigs/f/fontconfig/fontconfig-2.15.0-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..e2586c86e8c --- /dev/null +++ b/easybuild/easyconfigs/f/fontconfig/fontconfig-2.15.0-GCCcore-13.3.0.eb @@ -0,0 +1,40 @@ +easyblock = 'ConfigureMake' + +name = 'fontconfig' +version = '2.15.0' + +homepage = 'https://www.freedesktop.org/wiki/Software/fontconfig/' + +description = """ + Fontconfig is a library designed to provide system-wide font configuration, + customization and application access. +""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://www.freedesktop.org/software/fontconfig/release/'] +sources = [SOURCE_TAR_GZ] +checksums = ['f5f359d6332861bd497570848fcb42520964a9e83d5e3abe397b6b6db9bcaaf4'] + +builddependencies = [ + ('binutils', '2.42'), + ('gperf', '3.1'), + ('pkgconf', '2.2.0'), + ('Python', '3.12.3'), +] + +dependencies = [ + ('expat', '2.6.2'), + ('freetype', '2.13.2'), + ('util-linux', '2.40'), +] + +configopts = '--disable-docs ' + +sanity_check_paths = { + 'files': ['include/fontconfig/fontconfig.h', 'lib/libfontconfig.%s' % SHLIB_EXT], + 'dirs': [] +} + +moduleclass = 'vis' diff --git a/easybuild/easyconfigs/f/foss/foss-2024.05.eb b/easybuild/easyconfigs/f/foss/foss-2024.05.eb new file mode 100644 index 00000000000..0d3f8fac41a --- /dev/null +++ b/easybuild/easyconfigs/f/foss/foss-2024.05.eb @@ -0,0 +1,28 @@ +easyblock = 'Toolchain' + +name = 'foss' +version = '2024.05' + +homepage = 'https://easybuild.readthedocs.io/en/master/Common-toolchains.html#foss-toolchain' +description = """GNU Compiler Collection (GCC) based compiler toolchain, including + OpenMPI for MPI support, OpenBLAS (BLAS and LAPACK support), FFTW and ScaLAPACK.""" + +toolchain = SYSTEM + +local_gccver = '13.3.0' + +# toolchain used to build foss dependencies +local_comp_mpi_tc = ('gompi', version) + +# we need GCC and OpenMPI as explicit dependencies instead of gompi toolchain +# because of toolchain preparation functions +dependencies = [ + ('GCC', local_gccver), + ('OpenMPI', '5.0.3', '', ('GCC', local_gccver)), + ('FlexiBLAS', '3.4.4', '', ('GCC', local_gccver)), + ('FFTW', '3.3.10', '', ('GCC', local_gccver)), + ('FFTW.MPI', '3.3.10', '', local_comp_mpi_tc), + ('ScaLAPACK', '2.2.0', '-fb', local_comp_mpi_tc), +] + +moduleclass = 'toolchain' diff --git a/easybuild/easyconfigs/f/freetype-py/freetype-py-2.4.0-GCCcore-11.3.0.eb b/easybuild/easyconfigs/f/freetype-py/freetype-py-2.4.0-GCCcore-11.3.0.eb new file mode 100644 index 00000000000..88afc9e98b1 --- /dev/null +++ b/easybuild/easyconfigs/f/freetype-py/freetype-py-2.4.0-GCCcore-11.3.0.eb @@ -0,0 +1,29 @@ +easyblock = 'PythonPackage' + +name = 'freetype-py' +version = '2.4.0' + +homepage = 'https://github.com/rougier/freetype-py' +description = "Python binding for the freetype library" + +toolchain = {'name': 'GCCcore', 'version': '11.3.0'} + +sources = [SOURCE_ZIP] +checksums = ['8ad81195d2f8f339aba61700cebfbd77defad149c51f59b75a2a5e37833ae12e'] + +builddependencies = [ + ('binutils', '2.38'), +] + +dependencies = [ + ('freetype', '2.12.1'), + ('Python', '3.10.4'), +] + +use_pip = True +download_dep_fail = True +sanity_pip_check = True + +options = {'modulename': 'freetype'} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/f/freetype/freetype-2.13.2-GCCcore-13.3.0.eb b/easybuild/easyconfigs/f/freetype/freetype-2.13.2-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..1c6fa03dfa0 --- /dev/null +++ b/easybuild/easyconfigs/f/freetype/freetype-2.13.2-GCCcore-13.3.0.eb @@ -0,0 +1,43 @@ +name = 'freetype' +version = '2.13.2' + +homepage = 'https://www.freetype.org' + +description = """ + FreeType 2 is a software font engine that is designed to be small, efficient, + highly customizable, and portable while capable of producing high-quality + output (glyph images). It can be used in graphics libraries, display servers, + font conversion tools, text image generation tools, and many other products + as well. +""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} +toolchainopts = {'pic': True} + +source_urls = [ + GNU_SAVANNAH_SOURCE, + SOURCEFORGE_SOURCE, +] +sources = [SOURCE_TAR_GZ] +checksums = ['1ac27e16c134a7f2ccea177faba19801131116fd682efc1f5737037c5db224b5'] + +builddependencies = [('binutils', '2.42')] + +dependencies = [ + ('bzip2', '1.0.8'), + ('libpng', '1.6.43'), + ('zlib', '1.3.1'), + ('Brotli', '1.1.0'), +] + +configopts = '--enable-freetype-config --with-harfbuzz=no' + +sanity_check_paths = { + 'files': ['bin/freetype-config', 'lib/libfreetype.a', + 'lib/libfreetype.%s' % SHLIB_EXT, 'lib/pkgconfig/freetype2.pc'], + 'dirs': ['include/freetype2'], +} + +sanity_check_commands = ["freetype-config --help"] + +moduleclass = 'vis' diff --git a/easybuild/easyconfigs/f/funannotate/funannotate-1.8.13-foss-2021b.eb b/easybuild/easyconfigs/f/funannotate/funannotate-1.8.13-foss-2021b.eb index 78068a53cc2..18991c61de3 100644 --- a/easybuild/easyconfigs/f/funannotate/funannotate-1.8.13-foss-2021b.eb +++ b/easybuild/easyconfigs/f/funannotate/funannotate-1.8.13-foss-2021b.eb @@ -9,6 +9,7 @@ description = """funannotate is a pipeline for genome annotation (built specific toolchain = {'name': 'foss', 'version': '2021b'} +# see also https://github.com/nextgenusfs/funannotate/blob/master/docs/dependencies.rst dependencies = [ ('Python', '3.9.6'), ('SciPy-bundle', '2021.10'), @@ -17,6 +18,41 @@ dependencies = [ ('matplotlib', '3.4.3'), ('scikit-learn', '1.0.1'), ('Seaborn', '0.11.2'), + ('tbl2asn', '20220427', '-linux64', SYSTEM), + ('DBD-mysql', '4.050'), + ('CodingQuarry', '2.0'), + ('Trinity', '2.15.1'), + ('AUGUSTUS', '3.4.0'), + ('BamTools', '2.5.2'), + ('BEDTools', '2.30.0'), + ('BLAST+', '2.12.0'), # provides makeblastdb, tblastn + ('BLAT', '3.7'), + ('DIAMOND', '2.0.13'), + ('eggnog-mapper', '2.1.7'), + ('ETE', '3.1.2'), + ('Exonerate', '2.4.0'), + ('FASTA', '36.3.8i'), + ('GlimmerHMM', '3.0.4c'), + ('GMAP-GSNAP', '2021-12-17'), # provides gmap + ('GeneMark-ET', '4.71'), # provides gmes_petap.pl + ('HISAT2', '2.2.1'), + ('HMMER', '3.3.2'), # provides hmmscan, hmmsearch + ('kallisto', '0.48.0'), + ('MAFFT', '7.490', '-with-extensions'), + ('minimap2', '2.22'), + ('pigz', '2.6'), + ('Proteinortho', '6.2.3'), + ('Kent_tools', '422'), # provides pslCDnaFilter + ('Salmon', '1.4.0'), + ('SAMtools', '1.14'), + ('SignalP', '6.0g', '-fast'), + ('SNAP', '2.0.1'), + ('StringTie', '2.2.1'), + ('tRNAscan-SE', '2.0.12'), + ('tantan', '40'), + ('trimAl', '1.4.1'), + ('Trimmomatic', '0.39', '-Java-11', SYSTEM), + ('BioPerl', '1.7.8'), ] use_pip = True @@ -38,7 +74,10 @@ sanity_check_paths = { 'dirs': [], } -sanity_check_commands = ["funannotate --help 2>&1 | grep 'Usage:[ ]*funannotate'"] +sanity_check_commands = [ + "funannotate --help 2>&1 | grep 'Usage:[ ]*funannotate'", + "funannotate check --show-versions", +] sanity_pip_check = True diff --git a/easybuild/easyconfigs/g/GAMESS-US/GAMESS-US-20220930-R2-gompi-2022a.eb b/easybuild/easyconfigs/g/GAMESS-US/GAMESS-US-20220930-R2-gompi-2022a.eb new file mode 100644 index 00000000000..2b3ea044a2d --- /dev/null +++ b/easybuild/easyconfigs/g/GAMESS-US/GAMESS-US-20220930-R2-gompi-2022a.eb @@ -0,0 +1,44 @@ +# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild +# +# Copyright:: Copyright 2012-2017 University of Luxembourg / LCSB, Cyprus Institute / CaSToRC, +# Ghent University / The Francis Crick Institute +# +# Authors:: +# * Kenneth Hoste +# * Ward Poelmans +# * Oliver Stueker +# License:: MIT/GPL +## +name = 'GAMESS-US' +version = '20220930-R2' + +maxcpus = '1024' +maxnodes = '1024' +hyperthreading = False + +homepage = 'https://www.msg.chem.iastate.edu/gamess/' +description = """The General Atomic and Molecular Electronic Structure System (GAMESS) +is a general ab initio quantum chemistry package. +This module can be used on a maximum of %s nodes and %s CPUs per node. + """ % (maxnodes, maxcpus) + +toolchain = {'name': 'gompi', 'version': '2022a'} +toolchainopts = {'usempi': True, 'openmp': False} + +dependencies = [ + ('OpenBLAS', '0.3.20', '-int8'), + ('libxc', '5.2.3'), +] + +download_instructions = """ +1. Manually download via http://www.msg.chem.iastate.edu/gamess/download.html (requires registration) +2. Rename gamess-current.tar.gz to gamess-%(version)s.tar.gz +""" +sources = ['gamess-%(version)s.tar.gz'] +checksums = ['22c8c2dc3ef007c36a32d9ff5a9e1803ac9006f24065455c22de40dd26fb2a7a'] + +# custom location of gamess workdir +# scratch_dir = '/path/to/fast/storage' +# user_scratch_dir = '/path/to/fast/storage' + +moduleclass = 'chem' diff --git a/easybuild/easyconfigs/g/GAMESS-US/GAMESS-US-20230630_add_slurm_support_mpi_target.patch b/easybuild/easyconfigs/g/GAMESS-US/GAMESS-US-20230630_add_slurm_support_mpi_target.patch new file mode 100644 index 00000000000..1f5e924f957 --- /dev/null +++ b/easybuild/easyconfigs/g/GAMESS-US/GAMESS-US-20230630_add_slurm_support_mpi_target.patch @@ -0,0 +1,26 @@ +Add support for Slurm scheduler on MPI targets that do not have any nodefile +given by the user. +author: Alex Domingo (Vrije Universiteit Brussel) +--- rungms.orig 2023-07-01 08:04:29.000000000 +0200 ++++ rungms 2023-12-13 16:29:19.738351362 +0100 +@@ -188,6 +188,7 @@ + set SCHED=none + if ($?PBS_O_LOGNAME) set SCHED=PBS + if ($?SGE_O_LOGNAME) set SCHED=SGE ++if ($?SLURM_JOB_ID) set SCHED=SLURM + if ($SCHED == SGE) then + set SCR=$TMPDIR + echo "SGE has assigned the following compute nodes to this run:" +@@ -805,6 +806,12 @@ + set NNODES=$NNODES[1] + echo "MPI was given $NNODES nodes by PBS..." + breaksw ++ case SLURM: ++ scontrol show hostname "$SLURM_NODELIST" > $HOSTFILE ++ set NNODES=`wc -l $HOSTFILE` ++ set NNODES=$NNODES[1] ++ echo "MPI was given $NNODES nodes by Slurm..." ++ breaksw + default: + # Use use provided list (a new feature to be tested). + if (-e $NCPUS) then diff --git a/easybuild/easyconfigs/g/GAMESS-US/GAMESS-US-20230930-R2-gompi-2022a.eb b/easybuild/easyconfigs/g/GAMESS-US/GAMESS-US-20230930-R2-gompi-2022a.eb new file mode 100644 index 00000000000..b396d24c18b --- /dev/null +++ b/easybuild/easyconfigs/g/GAMESS-US/GAMESS-US-20230930-R2-gompi-2022a.eb @@ -0,0 +1,49 @@ +# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild +# +# Copyright:: Copyright 2012-2017 University of Luxembourg / LCSB, Cyprus Institute / CaSToRC, +# Ghent University / The Francis Crick Institute +# +# Authors:: +# * Kenneth Hoste +# * Ward Poelmans +# * Oliver Stueker +# License:: MIT/GPL +## +name = 'GAMESS-US' +version = '20230930-R2' + +maxcpus = '1024' +maxnodes = '1024' +hyperthreading = False + +homepage = 'https://www.msg.chem.iastate.edu/gamess/' +description = """The General Atomic and Molecular Electronic Structure System (GAMESS) +is a general ab initio quantum chemistry package. +This module can be used on a maximum of %s nodes and %s CPUs per node. + """ % (maxnodes, maxcpus) + +toolchain = {'name': 'gompi', 'version': '2022a'} +toolchainopts = {'usempi': True, 'openmp': False} + +dependencies = [ + ('OpenBLAS', '0.3.20', '-int8'), + ('libxc', '5.2.3'), +] + +download_instructions = """ +1. Manually download via http://www.msg.chem.iastate.edu/gamess/download.html (requires registration) +2. Rename gamess-current.tar.gz to gamess-%(version)s.tar.gz +""" +sources = ['gamess-%(version)s.tar.gz'] +patches = ['GAMESS-US-20230930_add_slurm_support_mpi_target.patch'] +checksums = [ + {'gamess-20230930-R2.tar.gz': '2b7cf4af17fb2eab5bf3609bf820437728cd36d87f44857dce25bafa9e9622ad'}, + {'GAMESS-US-20230930_add_slurm_support_mpi_target.patch': + 'ceed5f160678aba3b1885337a3e5955177b9df465c0ef2f50e4c5e52fe11f70d'}, +] + +# custom location of gamess workdir +# scratch_dir = '/path/to/fast/storage' +# user_scratch_dir = '/path/to/fast/storage' + +moduleclass = 'chem' diff --git a/easybuild/easyconfigs/g/GAMESS-US/GAMESS-US-20230930-R2-intel-compilers-2022.1.0.eb b/easybuild/easyconfigs/g/GAMESS-US/GAMESS-US-20230930-R2-intel-compilers-2022.1.0.eb new file mode 100644 index 00000000000..2a6fc990c6f --- /dev/null +++ b/easybuild/easyconfigs/g/GAMESS-US/GAMESS-US-20230930-R2-intel-compilers-2022.1.0.eb @@ -0,0 +1,50 @@ +# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild +# +# Copyright:: Copyright 2012-2017 University of Luxembourg / LCSB, Cyprus Institute / CaSToRC, +# Ghent University / The Francis Crick Institute +# +# Authors:: +# * Kenneth Hoste +# * Ward Poelmans +# * Oliver Stueker +# License:: MIT/GPL +## +name = 'GAMESS-US' +version = '20230930-R2' + +ddi_comm = 'sockets' +maxcpus = '1024' +maxnodes = '1' +hyperthreading = False + +homepage = 'https://www.msg.chem.iastate.edu/gamess/' +description = """The General Atomic and Molecular Electronic Structure System (GAMESS) +is a general ab initio quantum chemistry package. +This module can be used on a maximum of %s nodes and %s CPUs per node. + """ % (maxnodes, maxcpus) + +toolchain = {'name': 'intel-compilers', 'version': '2022.1.0'} +toolchainopts = {'openmp': True} + +dependencies = [ + ('imkl', '2022.1.0', '', SYSTEM), + ('libxc', '5.2.3'), +] + +download_instructions = """ +1. Manually download via http://www.msg.chem.iastate.edu/gamess/download.html (requires registration) +2. Rename gamess-current.tar.gz to gamess-%(version)s.tar.gz +""" +sources = ['gamess-%(version)s.tar.gz'] +patches = ['GAMESS-US-20230930_add_slurm_support_mpi_target.patch'] +checksums = [ + {'gamess-20230930-R2.tar.gz': '2b7cf4af17fb2eab5bf3609bf820437728cd36d87f44857dce25bafa9e9622ad'}, + {'GAMESS-US-20230930_add_slurm_support_mpi_target.patch': + 'ceed5f160678aba3b1885337a3e5955177b9df465c0ef2f50e4c5e52fe11f70d'}, +] + +# custom location of gamess workdir +# scratch_dir = '/path/to/fast/storage' +# user_scratch_dir = '/path/to/fast/storage' + +moduleclass = 'chem' diff --git a/easybuild/easyconfigs/g/GAMESS-US/GAMESS-US-20230930_add_slurm_support_mpi_target.patch b/easybuild/easyconfigs/g/GAMESS-US/GAMESS-US-20230930_add_slurm_support_mpi_target.patch new file mode 100644 index 00000000000..1f5e924f957 --- /dev/null +++ b/easybuild/easyconfigs/g/GAMESS-US/GAMESS-US-20230930_add_slurm_support_mpi_target.patch @@ -0,0 +1,26 @@ +Add support for Slurm scheduler on MPI targets that do not have any nodefile +given by the user. +author: Alex Domingo (Vrije Universiteit Brussel) +--- rungms.orig 2023-07-01 08:04:29.000000000 +0200 ++++ rungms 2023-12-13 16:29:19.738351362 +0100 +@@ -188,6 +188,7 @@ + set SCHED=none + if ($?PBS_O_LOGNAME) set SCHED=PBS + if ($?SGE_O_LOGNAME) set SCHED=SGE ++if ($?SLURM_JOB_ID) set SCHED=SLURM + if ($SCHED == SGE) then + set SCR=$TMPDIR + echo "SGE has assigned the following compute nodes to this run:" +@@ -805,6 +806,12 @@ + set NNODES=$NNODES[1] + echo "MPI was given $NNODES nodes by PBS..." + breaksw ++ case SLURM: ++ scontrol show hostname "$SLURM_NODELIST" > $HOSTFILE ++ set NNODES=`wc -l $HOSTFILE` ++ set NNODES=$NNODES[1] ++ echo "MPI was given $NNODES nodes by Slurm..." ++ breaksw + default: + # Use use provided list (a new feature to be tested). + if (-e $NCPUS) then diff --git a/easybuild/easyconfigs/g/GCC/GCC-13.3.0.eb b/easybuild/easyconfigs/g/GCC/GCC-13.3.0.eb new file mode 100644 index 00000000000..3428422c0b9 --- /dev/null +++ b/easybuild/easyconfigs/g/GCC/GCC-13.3.0.eb @@ -0,0 +1,22 @@ +easyblock = 'Bundle' + +name = 'GCC' +version = '13.3.0' + +homepage = 'https://gcc.gnu.org/' +description = """The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Java, and Ada, + as well as libraries for these languages (libstdc++, libgcj,...).""" + +toolchain = SYSTEM + +dependencies = [ + ('GCCcore', version), + # binutils built on top of GCCcore, which was built on top of binutils (built with system toolchain) + ('binutils', '2.42', '', ('GCCcore', version)), +] + +altroot = 'GCCcore' +altversion = 'GCCcore' + +# this bundle serves as a compiler-only toolchain, so it should be marked as compiler (important for HMNS) +moduleclass = 'compiler' diff --git a/easybuild/easyconfigs/g/GCC/GCC-14.1.0.eb b/easybuild/easyconfigs/g/GCC/GCC-14.1.0.eb new file mode 100644 index 00000000000..5d90c08c99e --- /dev/null +++ b/easybuild/easyconfigs/g/GCC/GCC-14.1.0.eb @@ -0,0 +1,22 @@ +easyblock = 'Bundle' + +name = 'GCC' +version = '14.1.0' + +homepage = 'https://gcc.gnu.org/' +description = """The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Java, and Ada, + as well as libraries for these languages (libstdc++, libgcj,...).""" + +toolchain = SYSTEM + +dependencies = [ + ('GCCcore', version), + # binutils built on top of GCCcore, which was built on top of binutils (built with system toolchain) + ('binutils', '2.42', '', ('GCCcore', version)), +] + +altroot = 'GCCcore' +altversion = 'GCCcore' + +# this bundle serves as a compiler-only toolchain, so it should be marked as compiler (important for HMNS) +moduleclass = 'compiler' diff --git a/easybuild/easyconfigs/g/GCCcore/GCCcore-13.3.0.eb b/easybuild/easyconfigs/g/GCCcore/GCCcore-13.3.0.eb new file mode 100644 index 00000000000..77acc578454 --- /dev/null +++ b/easybuild/easyconfigs/g/GCCcore/GCCcore-13.3.0.eb @@ -0,0 +1,65 @@ +easyblock = 'EB_GCC' + +name = 'GCCcore' +version = '13.3.0' + +homepage = 'https://gcc.gnu.org/' +description = """The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Java, and Ada, + as well as libraries for these languages (libstdc++, libgcj,...).""" + +toolchain = SYSTEM + +source_urls = [ + 'https://ftpmirror.gnu.org/gnu/gcc/gcc-%(version)s', # GCC auto-resolving HTTP mirror + 'https://sourceware.org/pub/gcc/releases/gcc-%(version)s', # fallback URL for GCC + 'https://ftpmirror.gnu.org/gnu/gmp', # idem for GMP + 'https://ftpmirror.gnu.org/gnu/mpfr', # idem for MPFR + 'https://ftpmirror.gnu.org/gnu/mpc', # idem for MPC + 'ftp://gcc.gnu.org/pub/gcc/infrastructure/', # GCC dependencies + 'https://gcc.gnu.org/pub/gcc/infrastructure/', # HTTPS mirror for GCC dependencies + 'https://libisl.sourceforge.io/', # fallback URL for isl + 'https://sourceware.org/pub/newlib/', # for newlib + 'https://github.com/MentorEmbedded/nvptx-tools/archive', # for nvptx-tools +] +sources = [ + 'gcc-%(version)s.tar.gz', + 'gmp-6.3.0.tar.bz2', + 'mpfr-4.2.1.tar.bz2', + 'mpc-1.3.1.tar.gz', + 'isl-0.26.tar.bz2', + 'newlib-4.4.0.20231231.tar.gz', + {'download_filename': '9962793.tar.gz', 'filename': 'nvptx-tools-20240419.tar.gz'}, +] +patches = [ + 'GCCcore-6.2.0-fix-find-isl.patch', + 'GCCcore-9.3.0_gmp-c99.patch', + 'GCCcore-12.x_riscv_multiarch_support.patch', +] +checksums = [ + {'gcc-13.3.0.tar.gz': '3a2b10cab86e32358fdac871546d57e2700e9bdb5875ef33fff5b601265b9e32'}, + {'gmp-6.3.0.tar.bz2': 'ac28211a7cfb609bae2e2c8d6058d66c8fe96434f740cf6fe2e47b000d1c20cb'}, + {'mpfr-4.2.1.tar.bz2': 'b9df93635b20e4089c29623b19420c4ac848a1b29df1cfd59f26cab0d2666aa0'}, + {'mpc-1.3.1.tar.gz': 'ab642492f5cf882b74aa0cb730cd410a81edcdbec895183ce930e706c1c759b8'}, + {'isl-0.26.tar.bz2': '5eac8664e9d67be6bd0bee5085d6840b8baf738c06814df47eaf4166d9776436'}, + {'newlib-4.4.0.20231231.tar.gz': '0c166a39e1bf0951dfafcd68949fe0e4b6d3658081d6282f39aeefc6310f2f13'}, + {'nvptx-tools-20240419.tar.gz': 'a4f65efe0ba960d75a18741faf2b93dbf51c2492a53b734d590ce5da4bd3f237'}, + {'GCCcore-6.2.0-fix-find-isl.patch': '5ad909606d17d851c6ad629b4fddb6c1621844218b8d139fed18c502a7696c68'}, + {'GCCcore-9.3.0_gmp-c99.patch': '0e135e1cc7cec701beea9d7d17a61bab34cfd496b4b555930016b98db99f922e'}, + {'GCCcore-12.x_riscv_multiarch_support.patch': '92fc2b17b6943611a657904500fbf3db8160eddbcea320828d4a50a885e2778f'}, +] + +builddependencies = [ + ('M4', '1.4.19'), + ('binutils', '2.42'), +] + +languages = ['c', 'c++', 'fortran'] + +withisl = True +withnvptx = True + +# Perl is only required when building with NVPTX support +if withnvptx: + osdependencies = ['perl'] + +moduleclass = 'compiler' diff --git a/easybuild/easyconfigs/g/GCCcore/GCCcore-14.1.0.eb b/easybuild/easyconfigs/g/GCCcore/GCCcore-14.1.0.eb new file mode 100644 index 00000000000..fc0025ce01c --- /dev/null +++ b/easybuild/easyconfigs/g/GCCcore/GCCcore-14.1.0.eb @@ -0,0 +1,63 @@ +easyblock = 'EB_GCC' + +name = 'GCCcore' +version = '14.1.0' + +homepage = 'https://gcc.gnu.org/' +description = """The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Java, and Ada, + as well as libraries for these languages (libstdc++, libgcj,...).""" + +toolchain = SYSTEM + +source_urls = [ + 'https://ftpmirror.gnu.org/gnu/gcc/gcc-%(version)s', # GCC auto-resolving HTTP mirror + 'https://sourceware.org/pub/gcc/releases/gcc-%(version)s', # fallback URL for GCC + 'https://ftpmirror.gnu.org/gnu/gmp', # idem for GMP + 'https://ftpmirror.gnu.org/gnu/mpfr', # idem for MPFR + 'https://ftpmirror.gnu.org/gnu/mpc', # idem for MPC + 'ftp://gcc.gnu.org/pub/gcc/infrastructure/', # GCC dependencies + 'https://gcc.gnu.org/pub/gcc/infrastructure/', # HTTPS mirror for GCC dependencies + 'https://libisl.sourceforge.io/', # fallback URL for isl + 'https://sourceware.org/pub/newlib/', # for newlib + 'https://github.com/MentorEmbedded/nvptx-tools/archive', # for nvptx-tools +] +sources = [ + 'gcc-%(version)s.tar.gz', + 'gmp-6.3.0.tar.bz2', + 'mpfr-4.2.1.tar.bz2', + 'mpc-1.3.1.tar.gz', + 'isl-0.26.tar.bz2', + 'newlib-4.4.0.20231231.tar.gz', + {'download_filename': '9962793.tar.gz', 'filename': 'nvptx-tools-20240419.tar.gz'}, +] +patches = [ + 'GCCcore-6.2.0-fix-find-isl.patch', + 'GCCcore-9.3.0_gmp-c99.patch', +] +checksums = [ + {'gcc-14.1.0.tar.gz': 'a0be066c02775002a0fa65ad3c65fb56a8bfd923d072a26ed148c0439ecdb68f'}, + {'gmp-6.3.0.tar.bz2': 'ac28211a7cfb609bae2e2c8d6058d66c8fe96434f740cf6fe2e47b000d1c20cb'}, + {'mpfr-4.2.1.tar.bz2': 'b9df93635b20e4089c29623b19420c4ac848a1b29df1cfd59f26cab0d2666aa0'}, + {'mpc-1.3.1.tar.gz': 'ab642492f5cf882b74aa0cb730cd410a81edcdbec895183ce930e706c1c759b8'}, + {'isl-0.26.tar.bz2': '5eac8664e9d67be6bd0bee5085d6840b8baf738c06814df47eaf4166d9776436'}, + {'newlib-4.4.0.20231231.tar.gz': '0c166a39e1bf0951dfafcd68949fe0e4b6d3658081d6282f39aeefc6310f2f13'}, + {'nvptx-tools-20240419.tar.gz': 'a4f65efe0ba960d75a18741faf2b93dbf51c2492a53b734d590ce5da4bd3f237'}, + {'GCCcore-6.2.0-fix-find-isl.patch': '5ad909606d17d851c6ad629b4fddb6c1621844218b8d139fed18c502a7696c68'}, + {'GCCcore-9.3.0_gmp-c99.patch': '0e135e1cc7cec701beea9d7d17a61bab34cfd496b4b555930016b98db99f922e'}, +] + +builddependencies = [ + ('M4', '1.4.19'), + ('binutils', '2.42'), +] + +languages = ['c', 'c++', 'fortran'] + +withisl = True +withnvptx = True + +# Perl is only required when building with NVPTX support +if withnvptx: + osdependencies = ['perl'] + +moduleclass = 'compiler' diff --git a/easybuild/easyconfigs/g/GDB/GDB-14.2-GCCcore-13.3.0.eb b/easybuild/easyconfigs/g/GDB/GDB-14.2-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..7cb65516ac9 --- /dev/null +++ b/easybuild/easyconfigs/g/GDB/GDB-14.2-GCCcore-13.3.0.eb @@ -0,0 +1,49 @@ +easyblock = 'ConfigureMake' + +name = 'GDB' +version = '14.2' + +homepage = 'https://www.gnu.org/software/gdb/gdb.html' +description = "The GNU Project Debugger" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = [GNU_SOURCE] +sources = [SOURCELOWER_TAR_XZ] +checksums = ['2d4dd8061d8ded12b6c63f55e45344881e8226105f4d2a9b234040efa5ce7772'] + +builddependencies = [ + ('binutils', '2.42'), + ('makeinfo', '7.1'), +] + +dependencies = [ + ('zlib', '1.3.1'), + ('libreadline', '8.2'), + ('ncurses', '6.5'), + ('expat', '2.6.2'), + ('Python', '3.12.3'), + ('ISL', '0.26'), + ('MPC', '1.3.1'), +] + +preconfigopts = "mkdir obj && cd obj && " +configure_cmd_prefix = '../' +prebuildopts = "cd obj && " +preinstallopts = prebuildopts + +configopts = '--with-system-zlib --with-system-readline --with-expat=$EBROOTEXPAT ' +configopts += '--with-python=$EBROOTPYTHON/bin/python --with-isl=$EBROOTISL --with-mpc=$EBROOTMPC ' +configopts += '--enable-tui --enable-plugins --disable-install-libbfd ' + +sanity_check_paths = { + 'files': ['bin/gdb', 'bin/gdbserver'], + 'dirs': [], +} + +sanity_check_commands = [ + 'gdb --help', + 'gdbserver --help', +] + +moduleclass = 'debugger' diff --git a/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.1-GCCcore-10.2.0-CUDA-11.1.1.eb b/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.1-GCCcore-10.2.0-CUDA-11.1.1.eb index c99c15a13e4..915d01b254a 100644 --- a/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.1-GCCcore-10.2.0-CUDA-11.1.1.eb +++ b/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.1-GCCcore-10.2.0-CUDA-11.1.1.eb @@ -27,21 +27,21 @@ dependencies = [ ('Check', '0.15.2'), ] -# This easyconfig only installs the library and binaries of GDRCopy. Please -# keep in mind that GDRCopy also needs the following kernel modules at runtime: -# -# 1. Kernel module for GDRCopy: improves Host to GPU communication -# https://github.com/NVIDIA/gdrcopy -# RPM: 'gdrcopy-kmod', DEB: 'gdrdrv-dkms' -# Requirements: version of GDRCopy kernel module (gdrdrv.ko) >= 2.0 -# -# 2. (optional) Kernel module for GPUDirect RDMA: improves GPU to GPU communication -# https://github.com/Mellanox/nv_peer_memory -# RPM: 'nvidia_peer_memory' -# Requirements: Mellanox HCA with MLNX_OFED 2.1 -# -# These kernel modules are not listed as system dependencies to lower the system -# requirements to build this easyconfig, as they are not needed for the build. +build_info_msg = """This easyconfig only installs the library and binaries of GDRCopy. Please +keep in mind that GDRCopy also needs the following kernel modules at runtime: + +1. Kernel module for GDRCopy: improves Host to GPU communication + https://github.com/NVIDIA/gdrcopy + RPM: 'gdrcopy-kmod', DEB: 'gdrdrv-dkms' + Requirements: version of GDRCopy kernel module (gdrdrv.ko) >= 2.0 + +2. (optional) Kernel module for GPUDirect RDMA: improves GPU to GPU communication + https://github.com/Mellanox/nv_peer_memory + RPM: 'nvidia_peer_memory' + Requirements: Mellanox HCA with MLNX_OFED 2.1 + +These kernel modules are not listed as system dependencies to lower the system +requirements to build this easyconfig, as they are not needed for the build.""" skipsteps = ['configure'] diff --git a/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.1-GCCcore-10.2.0-CUDA-11.2.1.eb b/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.1-GCCcore-10.2.0-CUDA-11.2.1.eb index accc04a5bde..443bbdd4af7 100644 --- a/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.1-GCCcore-10.2.0-CUDA-11.2.1.eb +++ b/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.1-GCCcore-10.2.0-CUDA-11.2.1.eb @@ -27,21 +27,21 @@ dependencies = [ ('Check', '0.15.2'), ] -# This easyconfig only installs the library and binaries of GDRCopy. Please -# keep in mind that GDRCopy also needs the following kernel modules at runtime: -# -# 1. Kernel module for GDRCopy: improves Host to GPU communication -# https://github.com/NVIDIA/gdrcopy -# RPM: 'gdrcopy-kmod', DEB: 'gdrdrv-dkms' -# Requirements: version of GDRCopy kernel module (gdrdrv.ko) >= 2.0 -# -# 2. (optional) Kernel module for GPUDirect RDMA: improves GPU to GPU communication -# https://github.com/Mellanox/nv_peer_memory -# RPM: 'nvidia_peer_memory' -# Requirements: Mellanox HCA with MLNX_OFED 2.1 -# -# These kernel modules are not listed as system dependencies to lower the system -# requirements to build this easyconfig, as they are not needed for the build. +build_info_msg = """This easyconfig only installs the library and binaries of GDRCopy. Please +keep in mind that GDRCopy also needs the following kernel modules at runtime: + +1. Kernel module for GDRCopy: improves Host to GPU communication + https://github.com/NVIDIA/gdrcopy + RPM: 'gdrcopy-kmod', DEB: 'gdrdrv-dkms' + Requirements: version of GDRCopy kernel module (gdrdrv.ko) >= 2.0 + +2. (optional) Kernel module for GPUDirect RDMA: improves GPU to GPU communication + https://github.com/Mellanox/nv_peer_memory + RPM: 'nvidia_peer_memory' + Requirements: Mellanox HCA with MLNX_OFED 2.1 + +These kernel modules are not listed as system dependencies to lower the system +requirements to build this easyconfig, as they are not needed for the build.""" skipsteps = ['configure'] diff --git a/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.1-GCCcore-9.3.0-CUDA-11.0.2.eb b/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.1-GCCcore-9.3.0-CUDA-11.0.2.eb index 864159cc441..3c02c5d5c02 100644 --- a/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.1-GCCcore-9.3.0-CUDA-11.0.2.eb +++ b/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.1-GCCcore-9.3.0-CUDA-11.0.2.eb @@ -27,21 +27,21 @@ dependencies = [ ('Check', '0.15.2'), ] -# This easyconfig only installs the library and binaries of GDRCopy. Please -# keep in mind that GDRCopy also needs the following kernel modules at runtime: -# -# 1. Kernel module for GDRCopy: improves Host to GPU communication -# https://github.com/NVIDIA/gdrcopy -# RPM: 'gdrcopy-kmod', DEB: 'gdrdrv-dkms' -# Requirements: version of GDRCopy kernel module (gdrdrv.ko) >= 2.0 -# -# 2. (optional) Kernel module for GPUDirect RDMA: improves GPU to GPU communication -# https://github.com/Mellanox/nv_peer_memory -# RPM: 'nvidia_peer_memory' -# Requirements: Mellanox HCA with MLNX_OFED 2.1 -# -# These kernel modules are not listed as system dependencies to lower the system -# requirements to build this easyconfig, as they are not needed for the build. +build_info_msg = """This easyconfig only installs the library and binaries of GDRCopy. Please +keep in mind that GDRCopy also needs the following kernel modules at runtime: + +1. Kernel module for GDRCopy: improves Host to GPU communication + https://github.com/NVIDIA/gdrcopy + RPM: 'gdrcopy-kmod', DEB: 'gdrdrv-dkms' + Requirements: version of GDRCopy kernel module (gdrdrv.ko) >= 2.0 + +2. (optional) Kernel module for GPUDirect RDMA: improves GPU to GPU communication + https://github.com/Mellanox/nv_peer_memory + RPM: 'nvidia_peer_memory' + Requirements: Mellanox HCA with MLNX_OFED 2.1 + +These kernel modules are not listed as system dependencies to lower the system +requirements to build this easyconfig, as they are not needed for the build.""" skipsteps = ['configure'] diff --git a/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.2-GCCcore-10.2.0.eb b/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.2-GCCcore-10.2.0.eb index 85810e2394d..f6498b61ef3 100644 --- a/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.2-GCCcore-10.2.0.eb +++ b/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.2-GCCcore-10.2.0.eb @@ -20,21 +20,21 @@ builddependencies = [ ('pkg-config', '0.29.2'), ] -# This easyconfig only installs the library of GDRCopy. Please keep in mind -# that GDRCopy also needs the following kernel modules at runtime: -# -# 1. Kernel module for GDRCopy: improves Host to GPU communication -# https://github.com/NVIDIA/gdrcopy -# RPM: 'gdrcopy-kmod', DEB: 'gdrdrv-dkms' -# Requirements: version of GDRCopy kernel module (gdrdrv.ko) >= 2.0 -# -# 2. (optional) Kernel module for GPUDirect RDMA: improves GPU to GPU communication -# https://github.com/Mellanox/nv_peer_memory -# RPM: 'nvidia_peer_memory' -# Requirements: Mellanox HCA with MLNX_OFED 2.1 -# -# These kernel modules are not listed as system dependencies to lower the system -# requirements to build this easyconfig, as they are not needed for the build. +build_info_msg = """This easyconfig only installs the library of GDRCopy. Please keep in mind +that GDRCopy also needs the following kernel modules at runtime: + +1. Kernel module for GDRCopy: improves Host to GPU communication + https://github.com/NVIDIA/gdrcopy + RPM: 'gdrcopy-kmod', DEB: 'gdrdrv-dkms' + Requirements: version of GDRCopy kernel module (gdrdrv.ko) >= 2.0 + +2. (optional) Kernel module for GPUDirect RDMA: improves GPU to GPU communication + https://github.com/Mellanox/nv_peer_memory + RPM: 'nvidia_peer_memory' + Requirements: Mellanox HCA with MLNX_OFED 2.1 + +These kernel modules are not listed as system dependencies to lower the system +requirements to build this easyconfig, as they are not needed for the build.""" skipsteps = ['configure'] diff --git a/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.2-GCCcore-10.3.0.eb b/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.2-GCCcore-10.3.0.eb index e9750d55747..cd3d0ee01c6 100644 --- a/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.2-GCCcore-10.3.0.eb +++ b/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.2-GCCcore-10.3.0.eb @@ -20,21 +20,21 @@ builddependencies = [ ('pkg-config', '0.29.2'), ] -# This easyconfig only installs the library of GDRCopy. Please keep in mind -# that GDRCopy also needs the following kernel modules at runtime: -# -# 1. Kernel module for GDRCopy: improves Host to GPU communication -# https://github.com/NVIDIA/gdrcopy -# RPM: 'gdrcopy-kmod', DEB: 'gdrdrv-dkms' -# Requirements: version of GDRCopy kernel module (gdrdrv.ko) >= 2.0 -# -# 2. (optional) Kernel module for GPUDirect RDMA: improves GPU to GPU communication -# https://github.com/Mellanox/nv_peer_memory -# RPM: 'nvidia_peer_memory' -# Requirements: Mellanox HCA with MLNX_OFED 2.1 -# -# These kernel modules are not listed as system dependencies to lower the system -# requirements to build this easyconfig, as they are not needed for the build. +build_info_msg = """This easyconfig only installs the library of GDRCopy. Please keep in mind +that GDRCopy also needs the following kernel modules at runtime: + +1. Kernel module for GDRCopy: improves Host to GPU communication + https://github.com/NVIDIA/gdrcopy + RPM: 'gdrcopy-kmod', DEB: 'gdrdrv-dkms' + Requirements: version of GDRCopy kernel module (gdrdrv.ko) >= 2.0 + +2. (optional) Kernel module for GPUDirect RDMA: improves GPU to GPU communication + https://github.com/Mellanox/nv_peer_memory + RPM: 'nvidia_peer_memory' + Requirements: Mellanox HCA with MLNX_OFED 2.1 + +These kernel modules are not listed as system dependencies to lower the system +requirements to build this easyconfig, as they are not needed for the build.""" skipsteps = ['configure'] diff --git a/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.3-GCCcore-11.2.0.eb b/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.3-GCCcore-11.2.0.eb index 7074317643e..b6d234c96b7 100644 --- a/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.3-GCCcore-11.2.0.eb +++ b/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.3-GCCcore-11.2.0.eb @@ -20,21 +20,21 @@ builddependencies = [ ('pkg-config', '0.29.2'), ] -# This easyconfig only installs the library of GDRCopy. Please keep in mind -# that GDRCopy also needs the following kernel modules at runtime: -# -# 1. Kernel module for GDRCopy: improves Host to GPU communication -# https://github.com/NVIDIA/gdrcopy -# RPM: 'gdrcopy-kmod', DEB: 'gdrdrv-dkms' -# Requirements: version of GDRCopy kernel module (gdrdrv.ko) >= 2.0 -# -# 2. (optional) Kernel module for GPUDirect RDMA: improves GPU to GPU communication -# https://github.com/Mellanox/nv_peer_memory -# RPM: 'nvidia_peer_memory' -# Requirements: Mellanox HCA with MLNX_OFED 2.1 -# -# These kernel modules are not listed as system dependencies to lower the system -# requirements to build this easyconfig, as they are not needed for the build. +build_info_msg = """This easyconfig only installs the library of GDRCopy. Please keep in mind +that GDRCopy also needs the following kernel modules at runtime: + +1. Kernel module for GDRCopy: improves Host to GPU communication + https://github.com/NVIDIA/gdrcopy + RPM: 'gdrcopy-kmod', DEB: 'gdrdrv-dkms' + Requirements: version of GDRCopy kernel module (gdrdrv.ko) >= 2.0 + +2. (optional) Kernel module for GPUDirect RDMA: improves GPU to GPU communication + https://github.com/Mellanox/nv_peer_memory + RPM: 'nvidia_peer_memory' + Requirements: Mellanox HCA with MLNX_OFED 2.1 + +These kernel modules are not listed as system dependencies to lower the system +requirements to build this easyconfig, as they are not needed for the build.""" skipsteps = ['configure'] diff --git a/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.3-GCCcore-11.3.0.eb b/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.3-GCCcore-11.3.0.eb index 43ffd95b310..d155d8ae274 100644 --- a/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.3-GCCcore-11.3.0.eb +++ b/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.3-GCCcore-11.3.0.eb @@ -20,21 +20,21 @@ builddependencies = [ ('pkgconf', '1.8.0'), ] -# This easyconfig only installs the library of GDRCopy. Please keep in mind -# that GDRCopy also needs the following kernel modules at runtime: -# -# 1. Kernel module for GDRCopy: improves Host to GPU communication -# https://github.com/NVIDIA/gdrcopy -# RPM: 'gdrcopy-kmod', DEB: 'gdrdrv-dkms' -# Requirements: version of GDRCopy kernel module (gdrdrv.ko) >= 2.0 -# -# 2. (optional) Kernel module for GPUDirect RDMA: improves GPU to GPU communication -# https://github.com/Mellanox/nv_peer_memory -# RPM: 'nvidia_peer_memory' -# Requirements: Mellanox HCA with MLNX_OFED 2.1 -# -# These kernel modules are not listed as system dependencies to lower the system -# requirements to build this easyconfig, as they are not needed for the build. +build_info_msg = """This easyconfig only installs the library of GDRCopy. Please keep in mind +that GDRCopy also needs the following kernel modules at runtime: + +1. Kernel module for GDRCopy: improves Host to GPU communication + https://github.com/NVIDIA/gdrcopy + RPM: 'gdrcopy-kmod', DEB: 'gdrdrv-dkms' + Requirements: version of GDRCopy kernel module (gdrdrv.ko) >= 2.0 + +2. (optional) Kernel module for GPUDirect RDMA: improves GPU to GPU communication + https://github.com/Mellanox/nv_peer_memory + RPM: 'nvidia_peer_memory' + Requirements: Mellanox HCA with MLNX_OFED 2.1 + +These kernel modules are not listed as system dependencies to lower the system +requirements to build this easyconfig, as they are not needed for the build.""" skipsteps = ['configure'] diff --git a/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.3-GCCcore-12.2.0.eb b/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.3-GCCcore-12.2.0.eb index c9c58812cf5..44973308cfc 100644 --- a/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.3-GCCcore-12.2.0.eb +++ b/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.3-GCCcore-12.2.0.eb @@ -20,21 +20,21 @@ builddependencies = [ ('pkgconf', '1.9.3'), ] -# This easyconfig only installs the library of GDRCopy. Please keep in mind -# that GDRCopy also needs the following kernel modules at runtime: -# -# 1. Kernel module for GDRCopy: improves Host to GPU communication -# https://github.com/NVIDIA/gdrcopy -# RPM: 'gdrcopy-kmod', DEB: 'gdrdrv-dkms' -# Requirements: version of GDRCopy kernel module (gdrdrv.ko) >= 2.0 -# -# 2. (optional) Kernel module for GPUDirect RDMA: improves GPU to GPU communication -# https://github.com/Mellanox/nv_peer_memory -# RPM: 'nvidia_peer_memory' -# Requirements: Mellanox HCA with MLNX_OFED 2.1 -# -# These kernel modules are not listed as system dependencies to lower the system -# requirements to build this easyconfig, as they are not needed for the build. +build_info_msg = """This easyconfig only installs the library of GDRCopy. Please keep in mind +that GDRCopy also needs the following kernel modules at runtime: + +1. Kernel module for GDRCopy: improves Host to GPU communication + https://github.com/NVIDIA/gdrcopy + RPM: 'gdrcopy-kmod', DEB: 'gdrdrv-dkms' + Requirements: version of GDRCopy kernel module (gdrdrv.ko) >= 2.0 + +2. (optional) Kernel module for GPUDirect RDMA: improves GPU to GPU communication + https://github.com/Mellanox/nv_peer_memory + RPM: 'nvidia_peer_memory' + Requirements: Mellanox HCA with MLNX_OFED 2.1 + +These kernel modules are not listed as system dependencies to lower the system +requirements to build this easyconfig, as they are not needed for the build.""" skipsteps = ['configure'] diff --git a/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.3.1-GCCcore-12.3.0.eb b/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.3.1-GCCcore-12.3.0.eb index 9eb358afb3f..b0c0227e952 100644 --- a/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.3.1-GCCcore-12.3.0.eb +++ b/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.3.1-GCCcore-12.3.0.eb @@ -20,21 +20,21 @@ builddependencies = [ ('pkgconf', '1.9.5'), ] -# This easyconfig only installs the library of GDRCopy. Please keep in mind -# that GDRCopy also needs the following kernel modules at runtime: -# -# 1. Kernel module for GDRCopy: improves Host to GPU communication -# https://github.com/NVIDIA/gdrcopy -# RPM: 'gdrcopy-kmod', DEB: 'gdrdrv-dkms' -# Requirements: version of GDRCopy kernel module (gdrdrv.ko) >= 2.0 -# -# 2. (optional) Kernel module for GPUDirect RDMA: improves GPU to GPU communication -# https://github.com/Mellanox/nv_peer_memory -# RPM: 'nvidia_peer_memory' -# Requirements: Mellanox HCA with MLNX_OFED 2.1 -# -# These kernel modules are not listed as system dependencies to lower the system -# requirements to build this easyconfig, as they are not needed for the build. +build_info_msg = """This easyconfig only installs the library of GDRCopy. Please keep in mind +that GDRCopy also needs the following kernel modules at runtime: + +1. Kernel module for GDRCopy: improves Host to GPU communication + https://github.com/NVIDIA/gdrcopy + RPM: 'gdrcopy-kmod', DEB: 'gdrdrv-dkms' + Requirements: version of GDRCopy kernel module (gdrdrv.ko) >= 2.0 + +2. (optional) Kernel module for GPUDirect RDMA: improves GPU to GPU communication + https://github.com/Mellanox/nv_peer_memory + RPM: 'nvidia_peer_memory' + Requirements: Mellanox HCA with MLNX_OFED 2.1 + +These kernel modules are not listed as system dependencies to lower the system +requirements to build this easyconfig, as they are not needed for the build.""" skipsteps = ['configure'] diff --git a/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.4-GCCcore-13.2.0.eb b/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.4-GCCcore-13.2.0.eb index d871eaf60d3..56d6902c8a7 100644 --- a/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.4-GCCcore-13.2.0.eb +++ b/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.4-GCCcore-13.2.0.eb @@ -20,21 +20,21 @@ builddependencies = [ ('pkgconf', '2.0.3'), ] -# This easyconfig only installs the library of GDRCopy. Please keep in mind -# that GDRCopy also needs the following kernel modules at runtime: -# -# 1. Kernel module for GDRCopy: improves Host to GPU communication -# https://github.com/NVIDIA/gdrcopy -# RPM: 'gdrcopy-kmod', DEB: 'gdrdrv-dkms' -# Requirements: version of GDRCopy kernel module (gdrdrv.ko) >= 2.0 -# -# 2. (optional) Kernel module for GPUDirect RDMA: improves GPU to GPU communication -# https://github.com/Mellanox/nv_peer_memory -# RPM: 'nvidia_peer_memory' -# Requirements: Mellanox HCA with MLNX_OFED 2.1 -# -# These kernel modules are not listed as system dependencies to lower the system -# requirements to build this easyconfig, as they are not needed for the build. +build_info_msg = """This easyconfig only installs the library of GDRCopy. Please keep in mind +that GDRCopy also needs the following kernel modules at runtime: + +1. Kernel module for GDRCopy: improves Host to GPU communication + https://github.com/NVIDIA/gdrcopy + RPM: 'gdrcopy-kmod', DEB: 'gdrdrv-dkms' + Requirements: version of GDRCopy kernel module (gdrdrv.ko) >= 2.0 + +2. (optional) Kernel module for GPUDirect RDMA: improves GPU to GPU communication + https://github.com/Mellanox/nv_peer_memory + RPM: 'nvidia_peer_memory' + Requirements: Mellanox HCA with MLNX_OFED 2.1 + +These kernel modules are not listed as system dependencies to lower the system +requirements to build this easyconfig, as they are not needed for the build.""" skipsteps = ['configure'] diff --git a/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.4.1-GCCcore-13.3.0.eb b/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.4.1-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..f8e2370943b --- /dev/null +++ b/easybuild/easyconfigs/g/GDRCopy/GDRCopy-2.4.1-GCCcore-13.3.0.eb @@ -0,0 +1,52 @@ +easyblock = 'ConfigureMake' + +name = 'GDRCopy' +version = '2.4.1' + +homepage = 'https://github.com/NVIDIA/gdrcopy' +description = "A low-latency GPU memory copy library based on NVIDIA GPUDirect RDMA technology." + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} +toolchainopts = {'pic': True} + +github_account = 'NVIDIA' +source_urls = [GITHUB_SOURCE] +sources = ['v%(version)s.tar.gz'] +checksums = ['faa7e816e9bad3301e53d6721457f7ef5ab42b7aa3b01ffda51f8e5620bb20ed'] + +builddependencies = [ + ('binutils', '2.42'), + ('Autotools', '20231222'), + ('pkgconf', '2.2.0'), +] + +build_info_msg = """This easyconfig only installs the library of GDRCopy. Please keep in mind +that GDRCopy also needs the following kernel modules at runtime: + +1. Kernel module for GDRCopy: improves Host to GPU communication + https://github.com/NVIDIA/gdrcopy + RPM: 'gdrcopy-kmod', DEB: 'gdrdrv-dkms' + Requirements: version of GDRCopy kernel module (gdrdrv.ko) >= 2.0 + +2. (optional) Kernel module for GPUDirect RDMA: improves GPU to GPU communication + https://github.com/Mellanox/nv_peer_memory + RPM: 'nvidia_peer_memory' + Requirements: Mellanox HCA with MLNX_OFED 2.1 + +These kernel modules are not listed as system dependencies to lower the system +requirements to build this easyconfig, as they are not needed for the build.""" + +skipsteps = ['configure'] + +local_envopts = "prefix=%(installdir)s" +prebuildopts = "PATH=$PATH:/sbin " # ensures that ldconfig is found +buildopts = "config lib %s" % local_envopts +install_cmd = "make lib_install" +installopts = local_envopts + +sanity_check_paths = { + 'files': ['lib/libgdrapi.%s' % SHLIB_EXT], + 'dirs': ['include'], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/g/GL2PS/GL2PS-1.4.2-GCCcore-12.3.0.eb b/easybuild/easyconfigs/g/GL2PS/GL2PS-1.4.2-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..55df4c13600 --- /dev/null +++ b/easybuild/easyconfigs/g/GL2PS/GL2PS-1.4.2-GCCcore-12.3.0.eb @@ -0,0 +1,34 @@ +easyblock = 'CMakeMake' + +name = 'GL2PS' +version = '1.4.2' + +homepage = 'https://www.geuz.org/gl2ps/' +description = """GL2PS: an OpenGL to PostScript printing library""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +source_urls = ['https://geuz.org/gl2ps/src/'] +sources = [SOURCELOWER_TGZ] +checksums = ['8d1c00c1018f96b4b97655482e57dcb0ce42ae2f1d349cd6d4191e7848d9ffe9'] + +builddependencies = [ + ('CMake', '3.26.3'), + ('binutils', '2.40'), +] + +dependencies = [ + ('X11', '20230603'), + ('Mesa', '23.1.4'), + ('libGLU', '9.0.3'), + ('freeglut', '3.4.0'), + ('libpng', '1.6.39'), + ('zlib', '1.2.13'), +] + +sanity_check_paths = { + 'files': ['include/gl2ps.h', 'lib/libgl2ps.%s' % SHLIB_EXT], + 'dirs': [], +} + +moduleclass = 'vis' diff --git a/easybuild/easyconfigs/g/GLFW/GLFW-3.4-GCCcore-12.3.0.eb b/easybuild/easyconfigs/g/GLFW/GLFW-3.4-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..dda659e47c2 --- /dev/null +++ b/easybuild/easyconfigs/g/GLFW/GLFW-3.4-GCCcore-12.3.0.eb @@ -0,0 +1,39 @@ +easyblock = 'CMakeMake' + +name = 'GLFW' +version = '3.4' + +homepage = 'https://www.glfw.org' +description = """GLFW is an Open Source, multi-platform library for OpenGL, +OpenGL ES and Vulkan development on the desktop""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +source_urls = ['https://github.com/%(namelower)s/%(namelower)s/archive/'] +sources = ['%(version)s.tar.gz'] +checksums = ['c038d34200234d071fae9345bc455e4a8f2f544ab60150765d7704e08f3dac01'] + +builddependencies = [ + ('CMake', '3.26.3'), + ('binutils', '2.40'), + ('pkgconf', '1.9.5'), +] +dependencies = [ + ('Wayland', '1.22.0'), + ('X11', '20230603'), +] + +# build both static and shared libraries +configopts = [ + '-DBUILD_SHARED_LIBS=OFF', + '-DBUILD_SHARED_LIBS=ON', +] + + +sanity_check_paths = { + 'files': ['include/%(name)s/glfw3.h', 'include/%(name)s/glfw3native.h'] + + ['lib/libglfw3.a', 'lib/libglfw.%s' % SHLIB_EXT, 'lib/pkgconfig/glfw3.pc'], + 'dirs': ['include/%(name)s', 'lib/cmake/glfw3', 'lib/pkgconfig'], +} + +moduleclass = 'vis' diff --git a/easybuild/easyconfigs/g/GMP-ECM/GMP-ECM-7.0.5-GCCcore-13.2.0.eb b/easybuild/easyconfigs/g/GMP-ECM/GMP-ECM-7.0.5-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..41f00635646 --- /dev/null +++ b/easybuild/easyconfigs/g/GMP-ECM/GMP-ECM-7.0.5-GCCcore-13.2.0.eb @@ -0,0 +1,29 @@ +easyblock = 'ConfigureMake' + +name = 'GMP-ECM' +version = '7.0.5' + +homepage = 'https://gitlab.inria.fr/zimmerma/ecm' +description = "Yet another implementation of the Elliptic Curve Method." + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +source_urls = ['https://gitlab.inria.fr/zimmerma/ecm/uploads/89f6f0d65d3e980cef33dc922004e4b2'] +sources = ['ecm-%(version)s.tar.gz'] +checksums = ['c721dd22e557c4a5dac9ac7e156a400cd2298812dd1f9b56e89966de01471ba8'] + +builddependencies = [ + ('M4', '1.4.19'), + ('binutils', '2.40'), +] + +dependencies = [('GMP', '6.3.0')] + +configopts = "--with-gmp=$EBROOTGMP --enable-shared " + +sanity_check_paths = { + 'files': ['bin/ecm', 'include/ecm.h'] + ['lib/libecm.%s' % e for e in ['a', SHLIB_EXT]], + 'dirs': [], +} + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/g/GMP/GMP-6.3.0-GCCcore-13.3.0.eb b/easybuild/easyconfigs/g/GMP/GMP-6.3.0-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..29f69f73299 --- /dev/null +++ b/easybuild/easyconfigs/g/GMP/GMP-6.3.0-GCCcore-13.3.0.eb @@ -0,0 +1,40 @@ +easyblock = 'ConfigureMake' + +name = 'GMP' +version = '6.3.0' + +homepage = 'https://gmplib.org/' +description = """ + GMP is a free library for arbitrary precision arithmetic, operating on signed + integers, rational numbers, and floating point numbers. +""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} +toolchainopts = {'precise': True, 'pic': True} + +source_urls = ['https://ftp.gnu.org/gnu/%(namelower)s'] +sources = [SOURCELOWER_TAR_BZ2] +checksums = ['ac28211a7cfb609bae2e2c8d6058d66c8fe96434f740cf6fe2e47b000d1c20cb'] + +builddependencies = [ + ('Autotools', '20231222'), + ('binutils', '2.42'), +] + +# enable C++ interface +configopts = '--enable-cxx' + +# copy libgmp.so* to /lib to make sure that it is picked up by tests +# when EasyBuild is configured with --rpath, and clean up afterwards (let 'make install' do its job) +pretestopts = "mkdir -p %%(installdir)s/lib && cp -a .libs/libgmp.%s* %%(installdir)s/lib && " % SHLIB_EXT +testopts = " && rm -r %(installdir)s/lib" + +runtest = 'check' + +sanity_check_paths = { + 'files': ['lib/lib%s.%s' % (l, e) for l in ['gmp', 'gmpxx'] for e in [SHLIB_EXT, 'a']] + + ['include/gmp.h', 'include/gmpxx.h'], + 'dirs': ['share'], +} + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/g/GOATOOLS/GOATOOLS-1.4.5-foss-2023a.eb b/easybuild/easyconfigs/g/GOATOOLS/GOATOOLS-1.4.5-foss-2023a.eb new file mode 100644 index 00000000000..02e35cba627 --- /dev/null +++ b/easybuild/easyconfigs/g/GOATOOLS/GOATOOLS-1.4.5-foss-2023a.eb @@ -0,0 +1,72 @@ +# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild +# Author: Denis Kristak +# Update: Pavel Tománek (Inuits) + +easyblock = 'PythonPackage' + +name = 'GOATOOLS' +version = '1.4.5' + +homepage = 'https://github.com/tanghaibao/goatools' +description = "A Python library for Gene Ontology analyses" + +toolchain = {'name': 'foss', 'version': '2023a'} + +sources = [{ + 'git_config': { + 'url': 'https://github.com/tanghaibao', + 'repo_name': 'goatools', + 'tag': 'v%(version)s', + 'keep_git_dir': True, + }, + 'filename': SOURCE_TAR_GZ, +}] +checksums = [None] + +builddependencies = [('cURL', '8.0.1')] + +dependencies = [ + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), + ('XlsxWriter', '3.1.3'), + ('statsmodels', '0.14.1'), + ('pydot', '2.0.0'), + ('openpyxl', '3.1.2'), +] + +exts_defaultclass = 'PythonPackage' +exts_default_options = { + 'source_urls': [PYPI_SOURCE], + 'download_dep_fail': True, + 'use_pip': True, + 'sanity_pip_check': True, +} + +exts_list = [ + ('ftpretty', '0.4.0', { + 'checksums': ['61233b9212f2cceec96ee2c972738fa31cae7248e92d0874c99c04ee739bb5a9'], + }), +] + +download_dep_fail = True +use_pip = True + +postinstallcmds = ["cp -a %(builddir)s/goatools/data/ %(installdir)s/"] + +sanity_check_paths = { + 'files': ['bin/find_enrichment.py'], + 'dirs': ['data', 'lib/python%(pyshortver)s/site-packages'], +} + +# example test run, see https://github.com/tanghaibao/goatools/blob/master/run.sh +sanity_check_commands = [ + "mkdir -p %(builddir)s", + "cd %(builddir)s && curl -OL http://geneontology.org/ontology/go-basic.obo", + "cd %(builddir)s && curl -OL http://www.geneontology.org/ontology/subsets/goslim_generic.obo", + "cd %(builddir)s && cp -a %(installdir)s/data .", + "cd %(builddir)s && find_enrichment.py --pval=0.05 --indent data/study data/population data/association", +] + +sanity_pip_check = True + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/g/GROMACS/GROMACS-2024.1-foss-2023b.eb b/easybuild/easyconfigs/g/GROMACS/GROMACS-2024.1-foss-2023b.eb index 20a40cd3952..1aa835572d7 100644 --- a/easybuild/easyconfigs/g/GROMACS/GROMACS-2024.1-foss-2023b.eb +++ b/easybuild/easyconfigs/g/GROMACS/GROMACS-2024.1-foss-2023b.eb @@ -40,6 +40,7 @@ sources = [SOURCELOWER_TAR_GZ] patches = [ 'GROMACS-2023.1_set_omp_num_threads_env_for_ntomp_tests.patch', 'GROMACS-2023.1_fix_tests_for_gmx_thread_mpi.patch', + 'GROMACS-2024.1_fix-tests-filesystem-race.patch', ] checksums = [ {'gromacs-2024.1.tar.gz': '937d8f12a36fffbf2af7add71adbb5aa5c5537892d46c9a76afbecab1aa0aac7'}, @@ -47,11 +48,13 @@ checksums = [ '7f41bda16c9c2837624265dda4be252f655d1288ddc4486b1a2422af30d5d199'}, {'GROMACS-2023.1_fix_tests_for_gmx_thread_mpi.patch': '6df844bb3bbc51180446a3595c61a4ef195e5f975533a04cef76841aa763aec1'}, + {'GROMACS-2024.1_fix-tests-filesystem-race.patch': + '25b933b37bc40576ee25ebae24442ae15fafe7cd5ac4b066e1dc8de488d58b4c'}, ] builddependencies = [ ('CMake', '3.27.6'), - ('scikit-build', '0.17.6'), + ('scikit-build-core', '0.9.3'), ] dependencies = [ @@ -71,12 +74,12 @@ exts_default_options = { } exts_list = [ - ('gmxapi', '0.4.2', { + ('gmxapi', '0.5.0', { 'preinstallopts': 'export CMAKE_ARGS="-Dgmxapi_ROOT=%(installdir)s ' + '-C %(installdir)s/share/cmake/gromacs_mpi/gromacs-hints_mpi.cmake" && ', - 'source_tmpl': 'gromacs-2023.3.tar.gz', + 'source_tmpl': 'gromacs-2024.1.tar.gz', 'start_dir': 'python_packaging/gmxapi', - 'checksums': ['4ec8f8d0c7af76b13f8fd16db8e2c120e749de439ae9554d9f653f812d78d1cb'], + 'checksums': ['937d8f12a36fffbf2af7add71adbb5aa5c5537892d46c9a76afbecab1aa0aac7'], }), ] diff --git a/easybuild/easyconfigs/g/GROMACS/GROMACS-2024.1_fix-tests-filesystem-race.patch b/easybuild/easyconfigs/g/GROMACS/GROMACS-2024.1_fix-tests-filesystem-race.patch new file mode 100644 index 00000000000..f32de88e608 --- /dev/null +++ b/easybuild/easyconfigs/g/GROMACS/GROMACS-2024.1_fix-tests-filesystem-race.patch @@ -0,0 +1,152 @@ +diff --git a/api/gmxapi/cpp/tests/CMakeLists.txt b/api/gmxapi/cpp/tests/CMakeLists.txt +index ca741dc930b4ed9cbde2ba4c84e50d4579e1adc6..7c00e390a32e92926d08b006df4ad335273143fb 100644 +--- a/api/gmxapi/cpp/tests/CMakeLists.txt ++++ b/api/gmxapi/cpp/tests/CMakeLists.txt +@@ -107,4 +107,10 @@ if (GMX_MPI) + set_tests_properties(GmxapiMpiTests PROPERTIES + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) + endif () ++ if (TEST GmxapiExternalInterfaceTests AND TEST GmxapiMpiTests) ++ # Because the gmxapi tests depend on writing files whose names are not ++ # unique across test cases, prevent CTest from running these tests ++ # concurrently. See #4654 ++ set_tests_properties(GmxapiMpiTests PROPERTIES DEPENDS GmxapiExternalInterfaceTests) ++ endif() + endif () +diff --git a/src/programs/mdrun/tests/CMakeLists.txt b/src/programs/mdrun/tests/CMakeLists.txt +index 23dc2840aed9660f6fb84a4d5a295a2cb36feace..e24ae102d511b735257d60ce2c59e6a1d1956400 100644 +--- a/src/programs/mdrun/tests/CMakeLists.txt ++++ b/src/programs/mdrun/tests/CMakeLists.txt +@@ -113,6 +113,12 @@ gmx_add_gtest_executable(${exename} MPI + target_link_libraries(${exename} PRIVATE mdrun_test_infrastructure) + gmx_register_gtest_test(MdrunTestsOneRank ${exename} MPI_RANKS 1 OPENMP_THREADS 2 INTEGRATION_TEST SLOW_TEST IGNORE_LEAKS SLOW_GPU_TEST) + gmx_register_gtest_test(MdrunTestsTwoRanks ${exename} MPI_RANKS 2 OPENMP_THREADS 2 INTEGRATION_TEST SLOW_TEST IGNORE_LEAKS SLOW_GPU_TEST) ++# Because the mdrun tests depend on writing files whose names are not ++# unique across test cases, prevent CTest from running these tests ++# concurrently. See #4654 ++if (TEST MdrunTestsTwoRanks AND TEST MdrunTestsOneRank) ++ set_tests_properties(MdrunTestsTwoRanks PROPERTIES DEPENDS MdrunTestsOneRank) ++endif() + + # The orires test is separate, as it supports only a single MPI rank + set(testname "MdrunSingleRankAlgorithmsTests") +@@ -129,13 +135,31 @@ gmx_add_gtest_executable(${exename} + target_link_libraries(${exename} PRIVATE mdrun_test_infrastructure) + gmx_register_gtest_test(${testname} ${exename} OPENMP_THREADS 2 INTEGRATION_TEST IGNORE_LEAKS SLOW_GPU_TEST) + ++set(exename "minimize-test") ++ ++gmx_add_gtest_executable(${exename} MPI ++ CPP_SOURCE_FILES ++ # files with code for tests ++ minimize.cpp ++ # pseudo-library for code for mdrun ++ $ ++ ) ++target_link_libraries(${exename} PRIVATE mdrun_test_infrastructure) ++gmx_register_gtest_test(Minimize1RankTests ${exename} MPI_RANKS 1 OPENMP_THREADS 2 INTEGRATION_TEST IGNORE_LEAKS QUICK_GPU_TEST) ++gmx_register_gtest_test(Minimize2RankTests ${exename} MPI_RANKS 2 OPENMP_THREADS 2 INTEGRATION_TEST IGNORE_LEAKS QUICK_GPU_TEST) ++# Because the minimizer tests depend on writing files whose names are not ++# unique across test cases, prevent CTest from running these tests ++# concurrently. See #4654 ++if (TEST Minimize2RankTests AND TEST Minimize1RankTests) ++ set_tests_properties(Minimize2RankTests PROPERTIES DEPENDS Minimize1RankTests) ++endif() ++ + set(testname "MdrunNonIntegratorTests") + set(exename "mdrun-non-integrator-test") + + gmx_add_gtest_executable(${exename} + CPP_SOURCE_FILES + # files with code for tests +- minimize.cpp + nonbonded_bench.cpp + normalmodes.cpp + rerun.cpp +@@ -169,7 +193,6 @@ gmx_add_gtest_executable(${exename} MPI + CPP_SOURCE_FILES + # files with code for tests + domain_decomposition.cpp +- minimize.cpp + mimic.cpp + # pseudo-library for code for mdrun + $ +@@ -177,6 +200,13 @@ gmx_add_gtest_executable(${exename} MPI + target_link_libraries(${exename} PRIVATE mdrun_test_infrastructure) + gmx_register_gtest_test(${testname} ${exename} MPI_RANKS 2 OPENMP_THREADS 2 INTEGRATION_TEST IGNORE_LEAKS QUICK_GPU_TEST) + ++# Because the mdrun tests depend on writing files whose names are not ++# unique across test cases, prevent CTest from running these tests ++# concurrently. See #4654. These test binaries both test aspects of MiMiC. ++if (TEST MdrunMpiTests AND TEST MdrunModulesTests) ++ set_tests_properties(MdrunMpiTests PROPERTIES DEPENDS MdrunModulesTests) ++endif() ++ + # Multi sim only makes sense with real MPI, and ideally at least 4 ranks, + # to allow for multiple simulations (>= 2 sims) each using DD (>= 2 ranks per sim) + set(testname "MdrunMultiSimTests") +@@ -235,6 +265,12 @@ gmx_add_gtest_executable(${exename} MPI + target_link_libraries(${exename} PRIVATE mdrun_test_infrastructure) + gmx_register_gtest_test(MdrunMpi1RankPmeTests ${exename} MPI_RANKS 1 OPENMP_THREADS 2 INTEGRATION_TEST IGNORE_LEAKS SLOW_GPU_TEST) + gmx_register_gtest_test(MdrunMpi2RankPmeTests ${exename} MPI_RANKS 2 OPENMP_THREADS 2 INTEGRATION_TEST IGNORE_LEAKS SLOW_GPU_TEST) ++# Because the mdrun tests depend on writing files whose names are not ++# unique across test cases, prevent CTest from running these tests ++# concurrently. See #4654 ++if (TEST MdrunMpi2RankPmeTests AND TEST MdrunMpi1RankPmeTests) ++ set_tests_properties(MdrunMpi2RankPmeTests PROPERTIES DEPENDS MdrunMpi1RankPmeTests) ++endif() + + # Slow-running tests that target testing multiple-rank coordination behaviors + # These tests are extremely slow without optimization or OpenMP, so only run them for +@@ -256,6 +292,12 @@ if (CMAKE_BUILD_TYPE MATCHES "Rel" AND GMX_OPENMP) + gmx_register_gtest_test(${testname} ${exename} MPI_RANKS 1 SLOW_TEST IGNORE_LEAKS QUICK_GPU_TEST) + set(testname "MdrunCoordinationBasicTests2Ranks") + gmx_register_gtest_test(${testname} ${exename} MPI_RANKS 2 SLOW_TEST IGNORE_LEAKS QUICK_GPU_TEST) ++ # Because the mdrun tests depend on writing files whose names are not ++ # unique across test cases, prevent CTest from running these tests ++ # concurrently. See #4654 ++ if (TEST MdrunCoordinationBasicTests2Ranks AND TEST MdrunCoordinationBasicTests1Rank) ++ set_tests_properties(MdrunCoordinationBasicTests2Ranks PROPERTIES DEPENDS MdrunCoordinationBasicTests1Rank) ++ endif() + endif() + + set(exename "mdrun-coordination-coupling-test") +@@ -274,6 +316,12 @@ if (CMAKE_BUILD_TYPE MATCHES "Rel" AND GMX_OPENMP) + gmx_register_gtest_test(${testname} ${exename} MPI_RANKS 1 SLOW_TEST IGNORE_LEAKS SLOW_GPU_TEST) + set(testname "MdrunCoordinationCouplingTests2Ranks") + gmx_register_gtest_test(${testname} ${exename} MPI_RANKS 2 SLOW_TEST IGNORE_LEAKS SLOW_GPU_TEST) ++ # Because the mdrun tests depend on writing files whose names are not ++ # unique across test cases, prevent CTest from running these tests ++ # concurrently. See #4654 ++ if (TEST MdrunCoordinationCouplingTests2Ranks AND TEST MdrunCoordinationCouplingTests1Rank) ++ set_tests_properties(MdrunCoordinationCouplingTests2Ranks PROPERTIES DEPENDS MdrunCoordinationCouplingTests1Rank) ++ endif() + endif() + + set(exename "mdrun-coordination-constraints-test") +@@ -292,6 +340,12 @@ if (CMAKE_BUILD_TYPE MATCHES "Rel" AND GMX_OPENMP) + gmx_register_gtest_test(${testname} ${exename} MPI_RANKS 1 SLOW_TEST IGNORE_LEAKS SLOW_GPU_TEST) + set(testname "MdrunCoordinationConstraintsTests2Ranks") + gmx_register_gtest_test(${testname} ${exename} MPI_RANKS 2 SLOW_TEST IGNORE_LEAKS SLOW_GPU_TEST) ++ # Because the mdrun tests depend on writing files whose names are not ++ # unique across test cases, prevent CTest from running these tests ++ # concurrently. See #4654 ++ if (TEST MdrunCoordinationConstraintsTests2Ranks AND TEST MdrunCoordinationConstraintsTests1Rank) ++ set_tests_properties(MdrunCoordinationConstraintsTests2Ranks PROPERTIES DEPENDS MdrunCoordinationConstraintsTests1Rank) ++ endif() + endif() + + # Keeping the FEP tests separate for now to be able to judge runtime more easily +diff --git a/src/testutils/testinit.cpp b/src/testutils/testinit.cpp +index ca3ed8db2c52940a128701e2e5ae4999904a2802..5db9bb1af05631eab768c259e4e4f328e0efa7ff 100644 +--- a/src/testutils/testinit.cpp ++++ b/src/testutils/testinit.cpp +@@ -191,7 +191,7 @@ void initTestUtils(const std::filesystem::path& dataPath, + { + fprintf(stderr, + "NOTE: You are running %s on %d MPI ranks, " +- "but it is does not contain MPI-enabled tests. " ++ "but it does not contain MPI-enabled tests. " + "The test will now exit.\n", + context.programName(), + gmx_node_num()); diff --git a/easybuild/easyconfigs/g/GTDB-Tk/GTDB-Tk-2.4.0-foss-2023a.eb b/easybuild/easyconfigs/g/GTDB-Tk/GTDB-Tk-2.4.0-foss-2023a.eb new file mode 100644 index 00000000000..271be65a5dd --- /dev/null +++ b/easybuild/easyconfigs/g/GTDB-Tk/GTDB-Tk-2.4.0-foss-2023a.eb @@ -0,0 +1,46 @@ +# Updated from previous config +# Author: Pavel Grochal (INUITS) +# License: GPLv2 + +easyblock = 'PythonBundle' + +name = 'GTDB-Tk' +version = '2.4.0' + +homepage = 'https://github.com/Ecogenomics/GTDBTk' +description = "A toolkit for assigning objective taxonomic classifications to bacterial and archaeal genomes." + +toolchain = {'name': 'foss', 'version': '2023a'} + +dependencies = [ + ('Python', '3.11.3'), + ('DendroPy', '4.6.1'), + ('matplotlib', '3.7.2'), + ('prodigal', '2.6.3'), + ('HMMER', '3.4'), + ('pplacer', '1.1.alpha19', '', SYSTEM), + ('FastANI', '1.34'), + ('FastTree', '2.1.11'), + ('Mash', '2.3'), + ('tqdm', '4.66.1'), + ('pydantic', '1.10.13'), +] + +use_pip = True + +exts_list = [ + ('gtdbtk', version, { + 'checksums': ['e67bab2c8f3e47c7242c70236c78e85bb9dc4721636bbf5044b171f18f22b1f7'], + }), +] + +sanity_pip_check = True + +sanity_check_paths = { + 'files': ['bin/gtdbtk'], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +sanity_check_commands = ["gtdbtk --help"] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/g/Givaro/Givaro-4.2.0-GCCcore-13.2.0.eb b/easybuild/easyconfigs/g/Givaro/Givaro-4.2.0-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..5f488bdd7d0 --- /dev/null +++ b/easybuild/easyconfigs/g/Givaro/Givaro-4.2.0-GCCcore-13.2.0.eb @@ -0,0 +1,48 @@ +## +# This file is an EasyBuild recipe; see https://github.com/easybuilders/easybuild +# +# Copyright:: Copyright (c) 2016 Riccardo Murri +# Authors:: Riccardo Murri +# License:: GPL +# +# Update: Petr Král (INUITS) +# +## + +easyblock = 'ConfigureMake' + +name = 'Givaro' +version = '4.2.0' + +homepage = 'https://github.com/linbox-team/givaro' +description = "C++ library for arithmetic and algebraic computations" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +source_urls = ['https://github.com/linbox-team/givaro/archive'] +sources = ['v%(version)s.zip'] +checksums = ['bf51b47ac9a02be233fc39ac78d959d13630bcc78997007ffec410d940ed4c64'] + +builddependencies = [ + ('Autotools', '20220317'), + ('binutils', '2.40'), +] + +dependencies = [ + ('GMP', '6.3.0'), +] + +preconfigopts = "env NOCONFIGURE=1 ./autogen.sh && " +configopts = "--with-gmp=$EBROOTGMP --enable-inline" + +prebuildopts = "sed -i 's/#include /#include \\n" +prebuildopts += "#include /g' src/library/poly1/givdegree.h && " + +sanity_check_paths = { + 'files': ['bin/givaro-config', 'include/givaro-config.h'], + 'dirs': ['bin', 'include', 'lib'], +} + +sanity_check_commands = ["givaro-config --help"] + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/g/Giza/Giza-1.4.1-GCCcore-13.2.0.eb b/easybuild/easyconfigs/g/Giza/Giza-1.4.1-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..10f1e5eb15e --- /dev/null +++ b/easybuild/easyconfigs/g/Giza/Giza-1.4.1-GCCcore-13.2.0.eb @@ -0,0 +1,33 @@ +easyblock = 'ConfigureMake' + +name = 'Giza' +version = '1.4.1' + +homepage = "https://danieljprice.github.io/giza/" +description = """Giza is an open, lightweight scientific plotting library built on +top of cairo that provides uniform output to multiple devices.""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +source_urls = ['https://github.com/danieljprice/giza/archive/'] +sources = ['v%(version)s.tar.gz'] +checksums = ['67c8eba2cc44a4eb16ff89b10147fa1a157be5801668391726200735c522faf7'] + +builddependencies = [ + ('binutils', '2.40'), +] + +dependencies = [ + ('cairo', '1.18.0'), + ('Pango', '1.51.0'), + ('X11', '20231019'), +] + +preconfigopts = 'CFLAGS=-std=gnu99 ' + +sanity_check_paths = { + 'files': ['lib/libgiza.%s' % SHLIB_EXT, 'lib/libcpgplot.%s' % SHLIB_EXT, 'lib/libpgplot.%s' % SHLIB_EXT], + 'dirs': ['include', 'lib', 'share'] +} + +moduleclass = 'vis' diff --git a/easybuild/easyconfigs/g/GnuTLS/GnuTLS-3.7.8-GCCcore-12.3.0.eb b/easybuild/easyconfigs/g/GnuTLS/GnuTLS-3.7.8-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..320c4782a22 --- /dev/null +++ b/easybuild/easyconfigs/g/GnuTLS/GnuTLS-3.7.8-GCCcore-12.3.0.eb @@ -0,0 +1,48 @@ +easyblock = 'ConfigureMake' + +name = 'GnuTLS' +version = '3.7.8' + +homepage = 'https://www.gnutls.org' +description = """GnuTLS is a secure communications library implementing the SSL, TLS + and DTLS protocols and technologies around them. It provides a simple + C language application programming interface (API) to access the secure + communications protocols as well as APIs to parse and write X.509, PKCS #12, + OpenPGP and other required structures. It is aimed to be portable + and efficient with focus on security and interoperability.""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +source_urls = ['https://www.gnupg.org/ftp/gcrypt/gnutls/v%(version_major_minor)s'] +sources = [SOURCELOWER_TAR_XZ] +checksums = ['c58ad39af0670efe6a8aee5e3a8b2331a1200418b64b7c51977fb396d4617114'] + +builddependencies = [ + ('binutils', '2.40'), + ('pkgconf', '1.9.5'), +] + +dependencies = [ + ('GMP', '6.2.1'), + ('nettle', '3.9.1'), + ('Guile', '3.0.9'), + ('libtasn1', '4.19.0'), + ('libidn2', '2.3.7'), + ('p11-kit', '0.25.3'), + ('zlib', '1.2.13'), + ('zstd', '1.5.5'), +] + +configopts = "--with-guile-site-dir=%(installdir)s/lib/guile --enable-openssl-compatibility " +configopts += "--with-guile-site-ccache-dir=%(installdir)s/lib/guile/site-ccache " +configopts += "--with-guile-extension-dir=%(installdir)s/lib/guile/extensions " +configopts += "--with-idn --with-p11-kit --with-zlib --with-zstd --without-brotli --without-tpm --without-tpm2" + +sanity_check_paths = { + 'files': ['bin/%s' % x for x in ['certtool', 'gnutls-cli', 'gnutls-cli-debug', + 'gnutls-serv', 'ocsptool', 'psktool', 'srptool']] + + ['lib/libgnutls%s' % x for x in ['.%s' % SHLIB_EXT, 'xx.%s' % SHLIB_EXT, '-openssl.%s' % SHLIB_EXT]], + 'dirs': ['include/gnutls', 'lib/guile'], +} + +moduleclass = 'system' diff --git a/easybuild/easyconfigs/g/gc/gc-8.2.6-GCCcore-13.2.0.eb b/easybuild/easyconfigs/g/gc/gc-8.2.6-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..934fbf3f7ac --- /dev/null +++ b/easybuild/easyconfigs/g/gc/gc-8.2.6-GCCcore-13.2.0.eb @@ -0,0 +1,42 @@ +easyblock = 'ConfigureMake' + +name = 'gc' +version = '8.2.6' +local_libatomic_version = '7.8.2' + +homepage = 'https://hboehm.info/gc/' +description = """The Boehm-Demers-Weiser conservative garbage collector can be used as a +garbage collecting replacement for C malloc or C++ new. +""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +source_urls = [ + 'https://github.com/ivmai/bdwgc/releases/download/v%(version)s/', # preferred for gc-%(version)s.tar.gz + 'https://hboehm.info/gc/gc_source/', # alternate for gc-%(version)s.tar.gz + 'https://github.com/ivmai/libatomic_ops/releases/download/v%s/' % local_libatomic_version, +] +sources = [ + SOURCE_TAR_GZ, + 'libatomic_ops-%s.tar.gz' % local_libatomic_version, +] +checksums = [ + {'gc-8.2.6.tar.gz': 'b9183fe49d4c44c7327992f626f8eaa1d8b14de140f243edb1c9dcff7719a7fc'}, + {'libatomic_ops-7.8.2.tar.gz': 'd305207fe207f2b3fb5cb4c019da12b44ce3fcbc593dfd5080d867b1a2419b51'}, +] + +builddependencies = [ + ('binutils', '2.40'), +] + +preconfigopts = 'ln -s %(builddir)s/libatomic_ops*/ libatomic_ops && ' + +configopts = "--enable-static" + +sanity_check_paths = { + 'files': ['include/gc.h', 'lib/libcord.a', 'lib/libcord.%s' % SHLIB_EXT, + 'lib/libgc.a', 'lib/libgc.%s' % SHLIB_EXT], + 'dirs': ['include/gc', 'share'], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/g/gcloud/gcloud-472.0.0.eb b/easybuild/easyconfigs/g/gcloud/gcloud-472.0.0.eb new file mode 100644 index 00000000000..a3c1bf161fe --- /dev/null +++ b/easybuild/easyconfigs/g/gcloud/gcloud-472.0.0.eb @@ -0,0 +1,24 @@ +easyblock = 'Tarball' + +name = "gcloud" +version = "472.0.0" + +homepage = "https://cloud.google.com/sdk" +description = "Libraries and tools for interacting with Google Cloud products and services." + +toolchain = SYSTEM + +source_urls = ["https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/"] +sources = ["google-cloud-sdk-%(version)s-linux-x86_64.tar.gz"] +checksums = ['da57049ca6de98815d92bd66b45798056d5082d94dd83f376ab706b9cf2c518b'] + +allow_system_deps = [('Python', SYS_PYTHON_VERSION)] + +sanity_check_paths = { + 'files': ["bin/gcloud"], + 'dirs': [] +} + +sanity_check_commands = ["gcloud version"] + +moduleclass = "tools" diff --git a/easybuild/easyconfigs/g/gemmi/gemmi-0.6.5-GCCcore-12.3.0.eb b/easybuild/easyconfigs/g/gemmi/gemmi-0.6.5-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..961d8a5428c --- /dev/null +++ b/easybuild/easyconfigs/g/gemmi/gemmi-0.6.5-GCCcore-12.3.0.eb @@ -0,0 +1,57 @@ +# Thomas Hoffmann, EMBL Heidelberg, structures-it@embl.de, 2024/05 +easyblock = 'CMakePythonPackage' + +name = 'gemmi' +version = '0.6.5' + +homepage = 'https://gemmi.readthedocs.io/' +description = """Gemmi is a library, accompanied by a set of programs, developed primarily for +use in macromolecular crystallography (MX). For working with: + +macromolecular models (content of PDB, PDBx/mmCIF and mmJSON files), refinement +restraints (CIF files), reflection data (MTZ and mmCIF formats), data on a 3D +grid (electron density maps, masks, MRC/CCP4 format) crystallographic symmetry. +Parts of this library can be useful in structural bioinformatics (for symmetry- +aware analysis of protein models), and in other molecular-structure sciences +that use CIF files (we have the fastest open-source CIF parser).""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} +toolchainopts = {'opt': True} + +source_urls = [GITHUB_SOURCE] +sources = ['v%(version)s.tar.gz'] +checksums = ['9159506a16e0d22bbeeefc4d34137099318307db1b2bebf06fb2ae501571b19c'] + +github_account = 'project-gemmi' + +configopts = [ + '-DSTRIP_BINARY=ON ' + '-DUSE_FORTRAN=1 -DBUILD_SHARED_LIBS=%s' % x for x in ['OFF', 'ON']] + +builddependencies = [ + ('pybind11', '2.11.1'), + ('pybind11-stubgen', '2.5.1'), + ('CMake', '3.26.3'), + ('scikit-build-core', '0.5.0'), + ('meson-python', '0.13.2'), + ('binutils', '2.40') +] +dependencies = [('Python', '3.11.3')] + +local_pipcmd = "mkdir %(builddir)s/pybuild &&" +local_pipcmd += "python -m pip install -ve %(builddir)s/%(name)s-%(version)s" +local_pipcmd += " --no-deps --ignore-installed --prefix=%(installdir)s --no-build-isolation" +local_pipcmd += ' --config-settings="cmake.args=-DSTANDALONE_PYTHON_MODULE=OFF"' # use lib/libgemmi_cpp.so +local_pipcmd += ' --config-settings="cmake.args=-DBUILD_GEMMI_PROGRAM=OFF"' +local_pipcmd += ' --config-settings="cmake.args=-DINSTALL_DEV_FILES=OFF"' +local_pipcmd += ' --config-settings=editable.rebuild=true -Cbuild-dir=%(builddir)s/pybuild ' +postinstallcmds = [local_pipcmd] + +sanity_check_paths = { + 'files': ['bin/gemmi', 'lib/libgemmi_cpp.%s' % SHLIB_EXT, 'lib/libgemmi_cpp.a'], + 'dirs': ['bin', 'lib', 'include/gemmi', 'lib/python%(pyshortver)s/site-packages/%(name)s-%(version)s.dist-info'] +} + +sanity_check_commands = ['gemmi -h'] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/g/gengetopt/gengetopt-2.23-GCCcore-13.2.0.eb b/easybuild/easyconfigs/g/gengetopt/gengetopt-2.23-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..c6654530643 --- /dev/null +++ b/easybuild/easyconfigs/g/gengetopt/gengetopt-2.23-GCCcore-13.2.0.eb @@ -0,0 +1,27 @@ +easyblock = 'ConfigureMake' + +name = 'gengetopt' +version = '2.23' + +homepage = 'https://www.gnu.org/software/gengetopt/gengetopt.html' +description = "Gengetopt is a tool to write command line option parsing code for C programs." + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +source_urls = [GNU_SOURCE] +sources = [SOURCE_TAR_XZ] +checksums = ['b941aec9011864978dd7fdeb052b1943535824169d2aa2b0e7eae9ab807584ac'] + +builddependencies = [ + ('binutils', '2.40'), + ('makeinfo', '7.1'), +] + +sanity_check_paths = { + 'files': ['bin/gengetopt'], + 'dirs': ['share'], +} + +sanity_check_commands = ["gengetopt --help"] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/g/gettext/gettext-0.22.5-GCCcore-13.3.0.eb b/easybuild/easyconfigs/g/gettext/gettext-0.22.5-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..b5e182315e9 --- /dev/null +++ b/easybuild/easyconfigs/g/gettext/gettext-0.22.5-GCCcore-13.3.0.eb @@ -0,0 +1,38 @@ +easyblock = 'ConfigureMake' + +name = 'gettext' +version = '0.22.5' + +homepage = 'https://www.gnu.org/software/gettext/' +description = """GNU 'gettext' is an important step for the GNU Translation Project, as it is an asset on which we may +build many other steps. This package offers to programmers, translators, and even users, a well integrated set of tools +and documentation""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = [GNU_SOURCE] +sources = [SOURCE_TAR_GZ] +checksums = ['ec1705b1e969b83a9f073144ec806151db88127f5e40fe5a94cb6c8fa48996a0'] + +builddependencies = [('binutils', '2.42')] + +dependencies = [ + ('libxml2', '2.12.7'), + ('ncurses', '6.5'), + ('libiconv', '1.17'), +] + +configopts = '--without-emacs --with-libxml2-prefix=$EBROOTLIBXML2' + +sanity_check_paths = { + 'files': ['bin/gettext', 'lib/libasprintf.a', 'lib/libasprintf.%s' % SHLIB_EXT, + 'lib/libgettextpo.a', 'lib/libgettextpo.%s' % SHLIB_EXT], + 'dirs': ['include'], +} + +sanity_check_commands = [ + "gettext --help", + "msginit --help", +] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/g/gettext/gettext-0.22.5.eb b/easybuild/easyconfigs/g/gettext/gettext-0.22.5.eb new file mode 100644 index 00000000000..9c596a9eb89 --- /dev/null +++ b/easybuild/easyconfigs/g/gettext/gettext-0.22.5.eb @@ -0,0 +1,39 @@ +easyblock = 'ConfigureMake' + +name = 'gettext' +version = '0.22.5' + +homepage = 'https://www.gnu.org/software/gettext/' +description = """GNU 'gettext' is an important step for the GNU Translation Project, as it is an asset on which we may +build many other steps. This package offers to programmers, translators, and even users, a well integrated set of tools +and documentation""" + +# This is a basic stripped down version of gettext without any +# dependencies on other packages used as initial builddep for XZ +# It is the first step in the cyclic dependency chain of +# XZ -> libxml2 -> gettext -> XZ + +toolchain = SYSTEM + +source_urls = [GNU_SOURCE] +sources = [SOURCE_TAR_GZ] +checksums = ['ec1705b1e969b83a9f073144ec806151db88127f5e40fe5a94cb6c8fa48996a0'] + +dependencies = [ + ('ncurses', '6.5'), +] + +configopts = '--without-emacs --with-included-libxml --without-xz --without-bzip2' + +sanity_check_paths = { + 'files': ['bin/gettext', 'lib/libasprintf.a', 'lib/libasprintf.%s' % SHLIB_EXT, + 'lib/libgettextpo.a', 'lib/libgettextpo.%s' % SHLIB_EXT], + 'dirs': ['include'], +} + +sanity_check_commands = [ + "gettext --help", + "msginit --help", +] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/g/gfbf/gfbf-2024.05.eb b/easybuild/easyconfigs/g/gfbf/gfbf-2024.05.eb new file mode 100644 index 00000000000..f0c1233309a --- /dev/null +++ b/easybuild/easyconfigs/g/gfbf/gfbf-2024.05.eb @@ -0,0 +1,20 @@ +easyblock = 'Toolchain' + +name = 'gfbf' +version = '2024.05' + +homepage = '(none)' +description = """GNU Compiler Collection (GCC) based compiler toolchain, including + FlexiBLAS (BLAS and LAPACK support) and (serial) FFTW.""" + +toolchain = SYSTEM + +local_gccver = '13.3.0' + +dependencies = [ + ('GCC', local_gccver), + ('FlexiBLAS', '3.4.4', '', ('GCC', local_gccver)), + ('FFTW', '3.3.10', '', ('GCC', local_gccver)), +] + +moduleclass = 'toolchain' diff --git a/easybuild/easyconfigs/g/giac/giac-1.9.0-99-gfbf-2023b.eb b/easybuild/easyconfigs/g/giac/giac-1.9.0-99-gfbf-2023b.eb new file mode 100644 index 00000000000..7680e38cbdb --- /dev/null +++ b/easybuild/easyconfigs/g/giac/giac-1.9.0-99-gfbf-2023b.eb @@ -0,0 +1,43 @@ +easyblock = 'ConfigureMake' + +name = 'giac' +version = '1.9.0-99' + +homepage = 'https://www-fourier.ujf-grenoble.fr/~parisse/giac.html' +description = """Giac is a C++ library, it is the CAS computing kernel. + It may be used inside other C++ programs, and also Python, Java and Javascript programs.""" + +toolchain = {'name': 'gfbf', 'version': '2023b'} +toolchainopts = {'cstd': 'gnu++14'} + +source_urls = ['https://www-fourier.ujf-grenoble.fr/~parisse/debian/dists/stable/main/source/'] +sources = ['giac_%(version)s.tar.gz'] +checksums = ['166775fbf2becd583c6ffa23ca6ca8a0b44dd7790dca8d966da767d3f6647ce4'] + +dependencies = [ + ('FLTK', '1.3.9'), + ('GLPK', '5.0'), + ('GMP-ECM', '7.0.5'), + ('GSL', '2.7'), + ('MPFI', '1.5.4'), + ('NTL', '11.5.1'), + ('PARI-GP', '2.15.5'), + ('CoCoALib', '0.99850'), + ('cURL', '8.3.0'), + ('cliquer', '1.21'), + ('libpng', '1.6.40'), + ('libreadline', '8.2'), + ('nauty', '2.8.8'), + ('hevea', '2.36'), +] + +sanity_check_paths = { + 'files': ['bin/%s' % x for x in ['cas_help', 'hevea2mml', 'icas', 'pgiac', 'xcas']] + + ['lib/libgiac.%s' % e for e in ['a', SHLIB_EXT]] + + ['include/giac/giac.h'], + 'dirs': ['share'], +} + +sanity_check_commands = ["giac <(echo '?findhelp') | grep \"Returns the help about the command\""] + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/g/git/git-2.45.1-GCCcore-13.3.0.eb b/easybuild/easyconfigs/g/git/git-2.45.1-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..3cd07e7cc61 --- /dev/null +++ b/easybuild/easyconfigs/g/git/git-2.45.1-GCCcore-13.3.0.eb @@ -0,0 +1,42 @@ +easyblock = 'ConfigureMake' + +name = 'git' +version = '2.45.1' + +homepage = 'https://git-scm.com' +description = """Git is a free and open source distributed version control system designed +to handle everything from small to very large projects with speed and efficiency.""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = ['https://github.com/git/git/archive'] +sources = ['v%(version)s.tar.gz'] +checksums = ['d98c8f70d58f49f7546d59b25e25f2deae6999eb036a33b0fe6f5d07c33f67c6'] + +builddependencies = [ + ('binutils', '2.42'), + ('Autotools', '20231222'), +] + +dependencies = [ + ('cURL', '8.7.1'), + ('expat', '2.6.2'), + ('gettext', '0.22.5'), + ('Perl', '5.38.2'), + ('OpenSSL', '3', '', SYSTEM), +] + +preconfigopts = 'make configure && ' + +# Work around git build system bug. If LIBS contains -lpthread, then configure +# will not append -lpthread to LDFLAGS, but Makefile ignores LIBS. +configopts = "--with-perl=${EBROOTPERL}/bin/perl --enable-pthreads='-lpthread'" + +postinstallcmds = ['cd contrib/subtree; make install'] + +sanity_check_paths = { + 'files': ['bin/git'], + 'dirs': ['libexec/git-core', 'share'], +} + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/g/glew/glew-2.2.0-GCCcore-12.3.0-egl.eb b/easybuild/easyconfigs/g/glew/glew-2.2.0-GCCcore-12.3.0-egl.eb new file mode 100644 index 00000000000..81bca17cbb7 --- /dev/null +++ b/easybuild/easyconfigs/g/glew/glew-2.2.0-GCCcore-12.3.0-egl.eb @@ -0,0 +1,43 @@ +easyblock = 'ConfigureMake' +versionsuffix = '-egl' +# available: -glx, -osmesa, -egl +# GLEW does support GLX (onscreen or requiring VirtualGL), EGL (technically can do both onscreen and +# offscreen), and OSMESA (offscreen software only). + +name = 'glew' +version = '2.2.0' + +homepage = 'https://github.com/nigels-com/glew' +description = """The OpenGL Extension Wrangler Library (GLEW) is a cross-platform open-source +C/C++ extension loading library. GLEW provides efficient run-time mechanisms +for determining which OpenGL extensions are supported on the target platform.""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +source_urls = ['https://github.com/nigels-com/glew/releases/download/%(name)s-%(version)s/'] +sources = ['%(name)s-%(version)s.tgz'] +checksums = ['d4fc82893cfb00109578d0a1a2337fb8ca335b3ceccf97b97e5cc7f08e4353e1'] + +builddependencies = [('binutils', '2.40')] + +dependencies = [ + ('Mesa', '23.1.4'), + ('X11', '20230603'), +] + +local_system = 'SYSTEM=linux`echo %(versionsuffix)s|sed -e "s/-glx//g"`' +buildopts = local_system + +skipsteps = ['configure'] + +preinstallopts = 'GLEW_PREFIX=%(installdir)s GLEW_DEST=%(installdir)s ' +install_cmd = 'make install.all ' + local_system + +sanity_check_paths = { + 'files': ['lib/libGLEW.a', 'lib/libGLEW.%s' % SHLIB_EXT] + + ['bin/glewinfo', 'bin/visualinfo'] + + ['include/GL/%s.h' % h for h in ['glew', 'glxew', 'wglew']], + 'dirs': [] +} + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/g/glew/glew-2.2.0-GCCcore-12.3.0-osmesa.eb b/easybuild/easyconfigs/g/glew/glew-2.2.0-GCCcore-12.3.0-osmesa.eb new file mode 100644 index 00000000000..64045ea6e21 --- /dev/null +++ b/easybuild/easyconfigs/g/glew/glew-2.2.0-GCCcore-12.3.0-osmesa.eb @@ -0,0 +1,43 @@ +easyblock = 'ConfigureMake' +versionsuffix = '-osmesa' +# available: -glx, -osmesa, -egl +# GLEW does support GLX (onscreen or requiring VirtualGL), EGL (technically can do both onscreen and +# offscreen), and OSMESA (offscreen software only). + +name = 'glew' +version = '2.2.0' + +homepage = 'https://github.com/nigels-com/glew' +description = """The OpenGL Extension Wrangler Library (GLEW) is a cross-platform open-source +C/C++ extension loading library. GLEW provides efficient run-time mechanisms +for determining which OpenGL extensions are supported on the target platform.""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +source_urls = ['https://github.com/nigels-com/glew/releases/download/%(name)s-%(version)s/'] +sources = ['%(name)s-%(version)s.tgz'] +checksums = ['d4fc82893cfb00109578d0a1a2337fb8ca335b3ceccf97b97e5cc7f08e4353e1'] + +builddependencies = [('binutils', '2.40')] + +dependencies = [ + ('Mesa', '23.1.4'), + ('X11', '20230603'), +] + +local_system = 'SYSTEM=linux`echo %(versionsuffix)s|sed -e "s/-glx//g"`' +buildopts = local_system + +skipsteps = ['configure'] + +preinstallopts = 'GLEW_PREFIX=%(installdir)s GLEW_DEST=%(installdir)s ' +install_cmd = 'make install.all ' + local_system + +sanity_check_paths = { + 'files': ['lib/libGLEW.a', 'lib/libGLEW.%s' % SHLIB_EXT] + + ['bin/glewinfo', 'bin/visualinfo'] + + ['include/GL/%s.h' % h for h in ['glew', 'glxew', 'wglew']], + 'dirs': [] +} + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/g/gmsh/gmsh-4.12.2-foss-2023a.eb b/easybuild/easyconfigs/g/gmsh/gmsh-4.12.2-foss-2023a.eb new file mode 100644 index 00000000000..72f3c6cb8eb --- /dev/null +++ b/easybuild/easyconfigs/g/gmsh/gmsh-4.12.2-foss-2023a.eb @@ -0,0 +1,43 @@ +easyblock = 'CMakeMake' + +name = 'gmsh' +version = '4.12.2' + +homepage = 'https://gmsh.info/' +description = "Gmsh is a 3D finite element grid generator with a build-in CAD engine and post-processor." + +toolchain = {'name': 'foss', 'version': '2023a'} +toolchainopts = {'usempi': True} + +source_urls = ['https://%(name)s.info/src/'] +sources = ['%(name)s-%(version)s-source.tgz'] +checksums = ['13e09d9ca8102e5c40171d6ee150c668742b98c3a6ca57f837f7b64e1e2af48f'] + +builddependencies = [ + ('CMake', '3.26.3'), + ('SWIG', '4.1.1'), + ('Eigen', '3.4.0'), +] + +dependencies = [ + ('Python', '3.11.3'), + ('PETSc', '3.20.3'), + ('SLEPc', '3.20.1'), + ('FLTK', '1.3.8'), + ('occt', '7.8.0'), +] + +separate_build_dir = True + +configopts = "-DENABLE_BUILD_SHARED=ON -DENABLE_WRAP_PYTHON=ON -DENABLE_METIS=1" + +sanity_check_paths = { + 'files': ['bin/%(name)s', 'bin/onelab.py', 'lib/%(name)s.py', 'lib/libgmsh.%s' % SHLIB_EXT], + 'dirs': [], +} + +sanity_check_commands = ['%(name)s --help'] + +modextrapaths = {'PYTHONPATH': ['lib']} + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/g/gnupg-bundle/gnupg-bundle-20240306-GCCcore-13.2.0.eb b/easybuild/easyconfigs/g/gnupg-bundle/gnupg-bundle-20240306-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..67d7657a048 --- /dev/null +++ b/easybuild/easyconfigs/g/gnupg-bundle/gnupg-bundle-20240306-GCCcore-13.2.0.eb @@ -0,0 +1,66 @@ +easyblock = 'Bundle' + +name = 'gnupg-bundle' +version = '20240306' + +homepage = 'https://www.gnupg.org/software/index.html' +description = """GnuPG — The Universal Crypto Engine""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +builddependencies = [('binutils', '2.40')] + +default_easyblock = 'ConfigureMake' + +default_component_specs = { + 'sources': [SOURCE_TAR_BZ2], + 'start_dir': '%(name)s-%(version)s', +} + +components = [ + ('libgpg-error', '1.48', { # 2024-02-23 + 'source_urls': ['https://www.gnupg.org/ftp/gcrypt/libgpg-error/'], + 'checksums': ['89ce1ae893e122924b858de84dc4f67aae29ffa610ebf668d5aa539045663d6f'], + }), + ('libassuan', '2.5.7', { # 2024-03-06 + 'source_urls': ['https://www.gnupg.org/ftp/gcrypt/libassuan/'], + 'checksums': ['0103081ffc27838a2e50479153ca105e873d3d65d8a9593282e9c94c7e6afb76'], + }), + ('libgcrypt', '1.10.3', { # 2023-11-14 + 'source_urls': ['https://www.gnupg.org/ftp/gcrypt/libgcrypt/'], + 'checksums': ['8b0870897ac5ac67ded568dcfadf45969cfa8a6beb0fd60af2a9eadc2a3272aa'], + }), + ('libksba', '1.6.6', { # 2024-02-23 + 'source_urls': ['https://www.gnupg.org/ftp/gcrypt/libksba/'], + 'checksums': ['5dec033d211559338838c0c4957c73dfdc3ee86f73977d6279640c9cd08ce6a4'], + }), + ('npth', '1.7', { # 2024-02-23 + 'source_urls': ['https://www.gnupg.org/ftp/gcrypt/npth/'], + 'checksums': ['8589f56937b75ce33b28d312fccbf302b3b71ec3f3945fde6aaa74027914ad05'], + }), + ('gnupg', '2.4.5', { # 2024-03-07 + 'source_urls': ['https://www.gnupg.org/ftp/gcrypt/gnupg/'], + 'checksums': ['f68f7d75d06cb1635c336d34d844af97436c3f64ea14bcb7c869782f96f44277'], + }), + ('gpgme', '1.23.2', { # 2023-11-28 + 'source_urls': ['https://www.gnupg.org/ftp/gcrypt/gpgme/'], + 'checksums': ['9499e8b1f33cccb6815527a1bc16049d35a6198a6c5fae0185f2bd561bce5224'], + }), +] + +sanity_check_paths = { + 'files': [ + 'bin/gpgrt-config', + 'bin/libassuan-config', + 'bin/libgcrypt-config', + 'include/gpg-error.h', + 'include/gcrypt.h', + 'include/gpgrt.h', + 'include/gpgme.h', + 'include/npth.h', + 'include/assuan.h', + ], + 'dirs': ['lib/pkgconfig'], +} + +moduleclass = 'system' diff --git a/easybuild/easyconfigs/g/gompi/gompi-2024.05.eb b/easybuild/easyconfigs/g/gompi/gompi-2024.05.eb new file mode 100644 index 00000000000..c3f4137cd28 --- /dev/null +++ b/easybuild/easyconfigs/g/gompi/gompi-2024.05.eb @@ -0,0 +1,20 @@ +easyblock = 'Toolchain' + +name = 'gompi' +version = '2024.05' + +homepage = '(none)' +description = """GNU Compiler Collection (GCC) based compiler toolchain, + including OpenMPI for MPI support.""" + +toolchain = SYSTEM + +local_gccver = '13.3.0' + +# compiler toolchain dependencies +dependencies = [ + ('GCC', local_gccver), # includes both GCC and binutils + ('OpenMPI', '5.0.3', '', ('GCC', local_gccver)), +] + +moduleclass = 'toolchain' diff --git a/easybuild/easyconfigs/g/gperf/gperf-3.1-GCCcore-13.3.0.eb b/easybuild/easyconfigs/g/gperf/gperf-3.1-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..0cc2e3debee --- /dev/null +++ b/easybuild/easyconfigs/g/gperf/gperf-3.1-GCCcore-13.3.0.eb @@ -0,0 +1,32 @@ +easyblock = 'ConfigureMake' + +name = 'gperf' +version = '3.1' + +homepage = 'https://www.gnu.org/software/gperf/' +description = """ + GNU gperf is a perfect hash function generator. For a given list of strings, + it produces a hash function and hash table, in form of C or C++ code, for + looking up a value depending on the input string. The hash function is + perfect, which means that the hash table has no collisions, and the hash + table lookup needs a single string comparison only. +""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = [GNU_SOURCE] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['588546b945bba4b70b6a3a616e80b4ab466e3f33024a352fc2198112cdbb3ae2'] + +builddependencies = [ + ('binutils', '2.42'), +] + +sanity_check_paths = { + 'files': ['bin/gperf'], + 'dirs': [], +} + +sanity_check_commands = ["gperf --help"] + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/g/grpcio/grpcio-1.57.0-GCCcore-12.3.0.eb b/easybuild/easyconfigs/g/grpcio/grpcio-1.57.0-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..01d839324bb --- /dev/null +++ b/easybuild/easyconfigs/g/grpcio/grpcio-1.57.0-GCCcore-12.3.0.eb @@ -0,0 +1,54 @@ +easyblock = 'PythonBundle' + +name = 'grpcio' +version = '1.57.0' + +homepage = 'https://grpc.io/' +description = """gRPC is a modern, open source, high-performance remote procedure call (RPC) +framework that can run anywhere. gRPC enables client and server applications to +communicate transparently, and simplifies the building of connected systems.""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} +toolchainopts = {'pic': True} + +use_pip = True +sanity_pip_check = True + +builddependencies = [ + ('binutils', '2.40'), + ('OpenSSL', '1.1', '', SYSTEM), + ('RE2', '2023-08-01'), +] + +dependencies = [ + ('Python', '3.11.3'), + ('protobuf-python', '4.24.0'), + ('Abseil', '20230125.3'), +] + +exts_list = [ + (name, version, { + 'modulename': 'grpc', + 'preinstallopts': ( + # patch hardcoded /usr paths to prefix them with alternate sysroot path (if defined) + "sed -i 's@/usr@%(sysroot)s/usr@g' setup.py && " + "export GRPC_PYTHON_BUILD_EXT_COMPILER_JOBS=%(parallel)s && " + # Required to avoid building with non-default C++ standard but keep other flags, + # see https://github.com/grpc/grpc/issues/34256 + 'export GRPC_PYTHON_CFLAGS="-fvisibility=hidden -fno-wrapv -fno-exceptions" &&' + "GRPC_PYTHON_BUILD_SYSTEM_OPENSSL=True " + "GRPC_PYTHON_BUILD_SYSTEM_ZLIB=True " + "GRPC_PYTHON_BUILD_SYSTEM_RE2=True " + "GRPC_PYTHON_BUILD_SYSTEM_ABSL=True " + ), + 'patches': ['grpcio-1.57.0_use-ebroot.patch'], + 'checksums': [ + {'grpcio-1.57.0.tar.gz': + '4b089f7ad1eb00a104078bab8015b0ed0ebcb3b589e527ab009c53893fd4e613'}, + {'grpcio-1.57.0_use-ebroot.patch': + '5faf822cd817b723ae9361e43656d0ecc7b3333a166bbab2df80b43ae588e510'}, + ], + }), +] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/g/grpcio/grpcio-1.57.0_use-ebroot.patch b/easybuild/easyconfigs/g/grpcio/grpcio-1.57.0_use-ebroot.patch new file mode 100644 index 00000000000..3a7bc8cc255 --- /dev/null +++ b/easybuild/easyconfigs/g/grpcio/grpcio-1.57.0_use-ebroot.patch @@ -0,0 +1,51 @@ +diff --git a/setup.py b/setup.py +index 97c1dcec54..cc7bc8552e 100644 +--- a/setup.py ++++ b/setup.py +@@ -313,29 +313,33 @@ if "win32" in sys.platform: + CORE_C_FILES = filter(lambda x: "third_party/cares" not in x, CORE_C_FILES) + + if BUILD_WITH_SYSTEM_OPENSSL: ++ EBROOTOPENSSL = os.environ.get('EBROOTOPENSSL') + CORE_C_FILES = filter( + lambda x: "third_party/boringssl" not in x, CORE_C_FILES + ) + CORE_C_FILES = filter(lambda x: "src/boringssl" not in x, CORE_C_FILES) +- SSL_INCLUDE = (os.path.join("/usr", "include", "openssl"),) ++ SSL_INCLUDE = (os.path.join(EBROOTOPENSSL, "include", "openssl"),) + + if BUILD_WITH_SYSTEM_ZLIB: ++ EBROOTZLIB = os.environ.get('EBROOTZLIB') + CORE_C_FILES = filter(lambda x: "third_party/zlib" not in x, CORE_C_FILES) +- ZLIB_INCLUDE = (os.path.join("/usr", "include"),) ++ ZLIB_INCLUDE = (os.path.join(EBROOTZLIB, "include"),) + + if BUILD_WITH_SYSTEM_CARES: + CORE_C_FILES = filter(lambda x: "third_party/cares" not in x, CORE_C_FILES) + CARES_INCLUDE = (os.path.join("/usr", "include"),) + + if BUILD_WITH_SYSTEM_RE2: ++ EBROOTRE2 = os.environ.get('EBROOTRE2') + CORE_C_FILES = filter(lambda x: "third_party/re2" not in x, CORE_C_FILES) +- RE2_INCLUDE = (os.path.join("/usr", "include", "re2"),) ++ RE2_INCLUDE = (os.path.join(EBROOTRE2, "include", "re2"),) + + if BUILD_WITH_SYSTEM_ABSL: ++ EBROOTABSEIL = os.environ.get('EBROOTABSEIL') + CORE_C_FILES = filter( + lambda x: "third_party/abseil-cpp" not in x, CORE_C_FILES + ) +- ABSL_INCLUDE = (os.path.join("/usr", "include"),) ++ ABSL_INCLUDE = (os.path.join(EBROOTABSEIL, "include"),) + + EXTENSION_INCLUDE_DIRECTORIES = ( + (PYTHON_STEM,) +@@ -378,7 +382,7 @@ if BUILD_WITH_SYSTEM_RE2: + EXTENSION_LIBRARIES += ("re2",) + if BUILD_WITH_SYSTEM_ABSL: + EXTENSION_LIBRARIES += tuple( +- lib.stem[3:] for lib in pathlib.Path("/usr").glob("lib*/libabsl_*.so") ++ lib.stem[3:] for lib in pathlib.Path(EBROOTABSEIL).glob("lib*/libabsl_*.so") + ) + + DEFINE_MACROS = (("_WIN32_WINNT", 0x600),) diff --git a/easybuild/easyconfigs/g/gsutil/gsutil-5.29-GCCcore-13.2.0.eb b/easybuild/easyconfigs/g/gsutil/gsutil-5.29-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..209e6e8c1fc --- /dev/null +++ b/easybuild/easyconfigs/g/gsutil/gsutil-5.29-GCCcore-13.2.0.eb @@ -0,0 +1,90 @@ +easyblock = 'PythonBundle' + +name = 'gsutil' +version = '5.29' + +homepage = 'https://cloud.google.com/storage/docs/gsutil' +description = """gsutil is a Python application that lets you access Cloud Storage from the command line.""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +builddependencies = [ + ('binutils', '2.40') +] + +dependencies = [ + ('Python', '3.11.5'), + ('Python-bundle-PyPI', '2023.10'), + ('aiohttp', '3.9.5'), +] + +use_pip = True +sanity_pip_check = True + +exts_list = [ + ('httplib2', '0.20.4', { + 'checksums': ['58a98e45b4b1a48273073f905d2961666ecf0fbac4250ea5b47aef259eb5c585'], + }), + ('argcomplete', '3.3.0', { + 'checksums': ['fd03ff4a5b9e6580569d34b273f741e85cd9e072f3feeeee3eba4891c70eda62'], + }), + ('fasteners', '0.19', { + 'checksums': ['b4f37c3ac52d8a445af3a66bce57b33b5e90b97c696b7b984f530cf8f0ded09c'], + }), + ('google-auth', '2.17.0', { + 'modulename': 'google.auth', + 'checksums': ['f51d26ebb3e5d723b9a7dbd310b6c88654ef1ad1fc35750d1fdba48ca4d82f52'], + }), + ('rsa', '4.7.2', { + 'checksums': ['9d689e6ca1b3038bc82bf8d23e944b6b6037bc02301a574935b2dd946e0353b9'], + }), + ('google-apitools', '0.5.32', { + 'modulename': 'apitools', + 'checksums': ['c3763e52289f61e21c41d5531e20fbda9cc8484a088b8686fd460770db8bad13'], + }), + ('google-auth-httplib2', '0.2.0', { + 'checksums': ['38aa7badf48f974f1eb9861794e9c0cb2a0511a4ec0679b1f886d108f5640e05'], + }), + ('google-reauth', '0.1.1', { + 'checksums': ['f9f6852a55c2c5453d581cd01f3d1278e86147c03d008409800390a834235892'], + }), + ('monotonic', '1.6', { + 'checksums': ['3a55207bcfed53ddd5c5bae174524062935efed17792e9de2ad0205ce9ad63f7'], + }), + ('pyOpenSSL', '24.1.0', { + 'modulename': 'OpenSSL', + 'checksums': ['cabed4bfaa5df9f1a16c0ef64a0cb65318b5cd077a7eda7d6970131ca2f41a6f'], + }), + ('boto', '2.49.0', { + 'checksums': ['ea0d3b40a2d852767be77ca343b58a9e3a4b00d9db440efb8da74b4e58025e5a'], + }), + ('cachetools', '5.3.3', { + 'checksums': ['ba29e2dfa0b8b556606f097407ed1aa62080ee108ab0dc5ec9d6a723a007d105'], + }), + ('oauth2client', '4.1.3', { + 'checksums': ['d486741e451287f69568a4d26d70d9acd73a2bbfa275746c535b4209891cccc6'], + }), + ('pyasn1_modules', '0.4.0', { + 'checksums': ['831dbcea1b177b28c9baddf4c6d1013c24c3accd14a1873fffaa6a2e905f17b6'], + }), + ('pyu2f', '0.1.5', { + 'checksums': ['a3caa3a11842fc7d5746376f37195e6af5f17c0a15737538bb1cebf656fb306b'], + }), + ('crcmod', '1.7', { + 'checksums': ['dc7051a0db5f2bd48665a990d3ec1cc305a466a77358ca4492826f41f283601e'], + }), + ('gcs-oauth2-boto-plugin', '3.2', { + 'checksums': ['a46817f3abed2bc4f6b4b12b0de7c8bf5ff5f1822dc03c45fa1ae6ed7a455843'], + }), + ('retry_decorator', '1.1.1', { + 'checksums': ['e1e8ad02e518fe11073f2ea7d80b6b8be19daa27a60a1838aff7c731ddcf2ebe'], + }), + (name, version, { + 'modulename': 'gslib', + 'checksums': ['0ba61c0ca97a592a2ed9d6eeb74b20434831bc6ceba380138103b24d2d53b921'], + }), +] + +sanity_check_commands = ['gsutil help'] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/g/gzip/gzip-1.13-GCCcore-13.3.0.eb b/easybuild/easyconfigs/g/gzip/gzip-1.13-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..62e179b0998 --- /dev/null +++ b/easybuild/easyconfigs/g/gzip/gzip-1.13-GCCcore-13.3.0.eb @@ -0,0 +1,24 @@ +easyblock = 'ConfigureMake' + +name = 'gzip' +version = '1.13' + +homepage = 'https://www.gnu.org/software/gzip/' +description = "gzip (GNU zip) is a popular data compression program as a replacement for compress" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = [GNU_SOURCE] +sources = [SOURCE_TAR_GZ] +checksums = ['20fc818aeebae87cdbf209d35141ad9d3cf312b35a5e6be61bfcfbf9eddd212a'] + +builddependencies = [('binutils', '2.42')] + +sanity_check_paths = { + 'files': ["bin/gunzip", "bin/gzip", "bin/uncompress"], + 'dirs': [], +} + +sanity_check_commands = [True, ('gzip', '--version')] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/h/HDDM/HDDM-0.9.9-foss-2021b.eb b/easybuild/easyconfigs/h/HDDM/HDDM-0.9.9-foss-2021b.eb new file mode 100644 index 00000000000..315d8227b8f --- /dev/null +++ b/easybuild/easyconfigs/h/HDDM/HDDM-0.9.9-foss-2021b.eb @@ -0,0 +1,53 @@ +easyblock = 'PythonBundle' + +name = 'HDDM' +version = '0.9.9' + +homepage = 'https://hddm.readthedocs.io/' +description = """HDDM is a Python toolbox for hierarchical Bayesian parameter estimation + of the Drift Diffusion Model (via PyMC).""" + +toolchain = {'name': 'foss', 'version': '2021b'} +toolchainopts = {'pic': True} + +dependencies = [ + ('Python', '3.9.6'), + ('SciPy-bundle', '2021.10'), + ('Seaborn', '0.11.2'), + ('statsmodels', '0.13.1'), + ('scikit-learn', '1.0.1'), + ('tqdm', '4.62.3'), + ('PyMC', '2.3.8'), + ('ArviZ', '0.11.4'), + ('PyTorch', '1.12.1'), +] + +use_pip = True + +exts_list = [ + ('kabuki', '0.6.5', { + 'checksums': ['ffd8aabba4355a6ee55287120c02e8fb6300482970e3dbe615e07ed8102dba69'], + }), + ('cloudpickle', '3.0.0', { + 'checksums': ['996d9a482c6fb4f33c1a35335cf8afd065d2a56e973270364840712d9131a882'], + }), + ('ssm-simulators', '0.3.0', { + 'modulename': 'ssms', + 'checksums': ['5477025d0c2a6a7f8aa3aa336a1368ff3256d86956f1bb93d7cc507a5651a860'], + }), + ('patsy', '0.5.6', { + 'checksums': ['95c6d47a7222535f84bff7f63d7303f2e297747a598db89cf5c67f0c0c7d2cdb'], + }), + (name, version, { + 'checksums': ['2ed64db2be7acb5ef4c8b07dcf8ea4680fdfd168876be19db9cf885dd490fe5f'], + }), +] + +sanity_check_paths = { + 'files': ['bin/hddm_demo.py'], + 'dirs': [], +} + +sanity_pip_check = True + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/h/HDDM/HDDM-0.9.9-intel-2021b.eb b/easybuild/easyconfigs/h/HDDM/HDDM-0.9.9-intel-2021b.eb new file mode 100644 index 00000000000..8033ec45b87 --- /dev/null +++ b/easybuild/easyconfigs/h/HDDM/HDDM-0.9.9-intel-2021b.eb @@ -0,0 +1,52 @@ +easyblock = 'PythonBundle' + +name = 'HDDM' +version = '0.9.9' + +homepage = 'https://hddm.readthedocs.io/' +description = """HDDM is a Python toolbox for hierarchical Bayesian parameter estimation + of the Drift Diffusion Model (via PyMC).""" + +toolchain = {'name': 'intel', 'version': '2021b'} +toolchainopts = {'pic': True} + +dependencies = [ + ('Python', '3.9.6'), + ('SciPy-bundle', '2021.10'), + ('Seaborn', '0.11.2'), + ('statsmodels', '0.13.1'), + ('scikit-learn', '1.0.1'), + ('tqdm', '4.62.3'), + ('PyMC', '2.3.8'), + ('ArviZ', '0.11.4'), +] + +use_pip = True + +exts_list = [ + ('kabuki', '0.6.5', { + 'checksums': ['ffd8aabba4355a6ee55287120c02e8fb6300482970e3dbe615e07ed8102dba69'], + }), + ('cloudpickle', '3.0.0', { + 'checksums': ['996d9a482c6fb4f33c1a35335cf8afd065d2a56e973270364840712d9131a882'], + }), + ('ssm-simulators', '0.3.0', { + 'modulename': 'ssms', + 'checksums': ['5477025d0c2a6a7f8aa3aa336a1368ff3256d86956f1bb93d7cc507a5651a860'], + }), + ('patsy', '0.5.6', { + 'checksums': ['95c6d47a7222535f84bff7f63d7303f2e297747a598db89cf5c67f0c0c7d2cdb'], + }), + (name, version, { + 'checksums': ['2ed64db2be7acb5ef4c8b07dcf8ea4680fdfd168876be19db9cf885dd490fe5f'], + }), +] + +sanity_check_paths = { + 'files': ['bin/hddm_demo.py'], + 'dirs': [], +} + +sanity_pip_check = True + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/h/HH-suite/HH-suite-3.3.0-gompi-2023a.eb b/easybuild/easyconfigs/h/HH-suite/HH-suite-3.3.0-gompi-2023a.eb new file mode 100644 index 00000000000..c725a0bd92e --- /dev/null +++ b/easybuild/easyconfigs/h/HH-suite/HH-suite-3.3.0-gompi-2023a.eb @@ -0,0 +1,90 @@ +## +# This file is an EasyBuild recipy as per https://github.com/easybuilders/easybuild +# +# Copyright:: Copyright 2012-2014 Uni.Lu/LCSB, NTUA +# Authors:: Fotis Georgatos +# License:: MIT/GPL +# $Id$ +# +# This work implements a part of the HPCBIOS project and is a component of the policy: +# https://hpcbios.readthedocs.org/en/latest/HPCBIOS_2012-94.html +## +# Updated to use gompi-2020b toolchain: +# Contribution from the NIHR Biomedical Research Centre +# Guy's and St Thomas' NHS Foundation Trust and King's College London +# uploaded by J. Sassmannshausen + +easyblock = 'CMakeMake' + +name = 'HH-suite' +version = '3.3.0' + +homepage = 'https://github.com/soedinglab/hh-suite' +description = """The HH-suite is an open-source software package + for sensitive protein sequence searching based on the pairwise + alignment of hidden Markov models (HMMs).""" + +toolchain = {'name': 'gompi', 'version': '2023a'} + +source_urls = ['https://github.com/soedinglab/hh-suite/archive/'] +sources = ['v%(version)s.tar.gz'] +checksums = ['dd67f7f3bf601e48c9c0bc4cf1fbe3b946f787a808bde765e9436a48d27b0964'] + +builddependencies = [ + ('CMake', '3.26.3'), +] + +dependencies = [ + ('Perl', '5.36.1'), + ('Python', '3.11.3'), +] + +_binaries_help = [ + 'cstranslate', 'cstranslate_mpi', 'hhalign', 'hhalign_mpi', 'hhalign_omp', 'hhconsensus', + 'hhfilter', 'hhmake' +] + +_binaries_h = [ + 'a3m_database_extract', 'a3m_database_filter', 'a3m_database_reduce', 'a3m_extract', 'a3m_reduce', + 'hhblits', 'hhblits_ca3m', 'hhblits_mpi', 'hhblits_omp', 'hhsearch', 'hhsearch_mpi', 'hhsearch_omp' +] + +_binaries_version = ['ffindex_build', 'ffindex_from_fasta', 'ffindex_modify'] + +_binaries_v = ['ffindex_from_fasta_with_split'] + +_binaries_helpless = [ + 'ffindex_apply', 'ffindex_apply_mpi', 'ffindex_get', + 'ffindex_order', 'ffindex_reduce', 'ffindex_unpack' +] + +_scriptfiles = ['hhmakemodel.py', 'hh_reader.py', 'hhsuitedb.py', 'cif2fasta.py'] + +fix_perl_shebang_for = ['scripts/*pl'] + +sanity_check_paths = { + 'files': ['bin/%s' % x for x in _binaries_help] + + ['bin/%s' % x for x in _binaries_h] + + ['bin/%s' % x for x in _binaries_version] + + ['bin/%s' % x for x in _binaries_v] + + ['bin/%s' % x for x in _binaries_helpless] + + ['scripts/%s' % y for y in _scriptfiles], + 'dirs': ['data', 'scripts'] +} + +sanity_check_commands = ['%s --help' % x for x in _binaries_help] +sanity_check_commands += ['%s -h' % x for x in _binaries_h] +sanity_check_commands += ['%s --version' % x for x in _binaries_version] +sanity_check_commands += ['%s -v' % x for x in _binaries_v] +sanity_check_commands += ['%s 2>&1 | grep USAGE' % x for x in _binaries_helpless] + +modextrapaths = { + 'PATH': 'scripts', + 'PERL5LIB': 'scripts', +} + +modextravars = { + 'HHLIB': '%(installdir)s', +} + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/h/HISAT2/HISAT2-2.2.1-gompi-2022b.eb b/easybuild/easyconfigs/h/HISAT2/HISAT2-2.2.1-gompi-2022b.eb new file mode 100644 index 00000000000..f48521d0c62 --- /dev/null +++ b/easybuild/easyconfigs/h/HISAT2/HISAT2-2.2.1-gompi-2022b.eb @@ -0,0 +1,61 @@ +## +# 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:: GPLv3.0 +# +# Notes:: +# 2.2.1 - changes from Adam Huffman +# Bumped to foss-2021b +# J. Sassmannshausen + +easyblock = 'MakeCp' + +name = 'HISAT2' +version = '2.2.1' + +homepage = 'https://daehwankimlab.github.io/hisat2' +description = """HISAT2 is a fast and sensitive alignment program for mapping next-generation sequencing reads + (both DNA and RNA) against the general human population (as well as against a single reference genome).""" + +toolchain = {'name': 'gompi', 'version': '2022b'} + +sources = [{ + 'source_urls': ['https://cloud.biohpc.swmed.edu/index.php/s/fE9QCsX3NH4QwBi'], + 'download_filename': 'download', + 'filename': '%(namelower)s-%(version)s-source.zip', +}] +patches = [ + 'hisat2-libname-fix.patch', +] +checksums = [ + {'hisat2-2.2.1-source.zip': '48e933330d4d8470d2b3dfe7ec3918f2e98a75f7381891e23b7df1fb4f135eb1'}, + {'hisat2-libname-fix.patch': '8aa91d1dd6455b96c10ce48827f8313b006241d815fbe6382422dbae3b610726'}, +] + +dependencies = [ + ('ncbi-vdb', '3.0.5'), + ('SRA-Toolkit', '3.0.5'), # provides NGS +] + +buildopts = 'CC="$CC" CPP="$CXX" RELEASE_FLAGS="$CFLAGS" ' +buildopts += 'USE_SRA=1 NCBI_NGS_DIR="$EBROOTSRAMINTOOLKIT" NCBI_VDB_DIR="$EBROOTNCBIMINVDB" ' +# add new libncbi-ngs from the NGS merge into SRA-Toolkit v3 +buildopts += 'SRA_LIB="-lncbi-ngs-c++ -lngs-c++ -lncbi-ngs -lncbi-vdb -ldl"' + +local_executables = ['hisat2', 'hisat2-align-l', 'hisat2-align-s', 'hisat2-build', 'hisat2-build-l', 'hisat2-build-s', + 'hisat2-inspect', 'hisat2-inspect-s', 'hisat2-inspect-l', 'hisat2-repeat', 'extract_exons.py', + 'extract_splice_sites.py', 'hisat2_extract_exons.py', 'hisat2_extract_snps_haplotypes_UCSC.py', + 'hisat2_extract_snps_haplotypes_VCF.py', 'hisat2_extract_splice_sites.py', + 'hisat2_read_statistics.py', 'hisat2_simulate_reads.py'] +files_to_copy = [(local_executables, 'bin'), 'scripts', 'example'] + +sanity_check_paths = { + 'files': ['bin/%s' % x for x in local_executables], + 'dirs': ['scripts', 'example'], +} + +sanity_check_commands = ["hisat2 --help"] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/h/HOMER/HOMER-4.11-foss-2023a-R-4.3.2.eb b/easybuild/easyconfigs/h/HOMER/HOMER-4.11-foss-2023a-R-4.3.2.eb new file mode 100644 index 00000000000..49de16a3d99 --- /dev/null +++ b/easybuild/easyconfigs/h/HOMER/HOMER-4.11-foss-2023a-R-4.3.2.eb @@ -0,0 +1,49 @@ +easyblock = 'Binary' + +name = 'HOMER' +version = '4.11' +versionsuffix = '-R-%(rver)s' + +homepage = "http://homer.ucsd.edu/homer/" +description = """HOMER (Hypergeometric Optimization of Motif EnRichment) is a suite of tools for Motif Discovery and + next-gen sequencing analysis. It is a collection of command line programs for unix-style operating systems written + in Perl and C++. HOMER was primarily written as a de novo motif discovery algorithm and is well suited for finding + 8-20 bp motifs in large scale genomics data. HOMER contains many useful tools for analyzing ChIP-Seq, GRO-Seq, + RNA-Seq, DNase-Seq, Hi-C and numerous other types of functional genomics sequencing data sets.""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +source_urls = ['http://homer.ucsd.edu/homer'] +sources = ['configureHomer.pl'] +checksums = ['ccdaa3004a0e0df0882634671d4a1acc88364761e0e6c7ea329ebbf1eb729537'] + +builddependencies = [ + ('wget', '1.24.5'), + ('Zip', '3.0'), + ('UnZip', '6.0'), +] + +dependencies = [ + ('Perl', '5.36.1'), + ('R', '4.3.2'), + ('SAMtools', '1.18'), + ('R-bundle-Bioconductor', '3.18', versionsuffix) +] + +postinstallcmds = ["cd %(installdir)s && perl ./configureHomer.pl -install homer -version v%(version)s"] + +sanity_check_paths = { + 'files': [ + 'bin/homer', + 'bin/getGenomeTilingPeaks', + 'config.txt', + 'DoughnutDocumentation.pdf', + 'data/accession/homologene.data', + 'motifs/hnf1b.motif', + ], + 'dirs': ['bin', 'data', 'motifs', 'update'], +} + +sanity_check_commands = ["%(namelower)s --help"] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/h/HPL/HPL-2.3-foss-2024.05.eb b/easybuild/easyconfigs/h/HPL/HPL-2.3-foss-2024.05.eb new file mode 100644 index 00000000000..8dd7ddcfa9c --- /dev/null +++ b/easybuild/easyconfigs/h/HPL/HPL-2.3-foss-2024.05.eb @@ -0,0 +1,21 @@ +name = 'HPL' +version = '2.3' + +homepage = 'https://www.netlib.org/benchmark/hpl/' +description = """HPL is a software package that solves a (random) dense linear system in double precision (64 bits) + arithmetic on distributed-memory computers. It can thus be regarded as a portable as well as freely available + implementation of the High Performance Computing Linpack Benchmark.""" + +toolchain = {'name': 'foss', 'version': '2024.05'} +toolchainopts = {'usempi': True} + +source_urls = ['https://www.netlib.org/benchmark/%(namelower)s'] +sources = [SOURCELOWER_TAR_GZ] +# fix Make dependencies, so parallel build also works +patches = ['HPL_parallel-make.patch'] +checksums = [ + '32c5c17d22330e6f2337b681aded51637fb6008d3f0eb7c277b163fadd612830', # hpl-2.3.tar.gz + '2a5bf9c4f328049828ddecec7ba3f05a9e25d236f4212747c53bd22fea80c5e6', # HPL_parallel-make.patch +] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/h/HTSlib/HTSlib-1.19.1-GCC-13.2.0.eb b/easybuild/easyconfigs/h/HTSlib/HTSlib-1.19.1-GCC-13.2.0.eb new file mode 100644 index 00000000000..8cb7e2957b4 --- /dev/null +++ b/easybuild/easyconfigs/h/HTSlib/HTSlib-1.19.1-GCC-13.2.0.eb @@ -0,0 +1,40 @@ +# 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 +# 1.4 modified by: +# Adam Huffman, Jonas Demeulemeester +# The Francis Crick Institute +# Updated to 1.14 +# J. Sassmannshausen /GSTT + +easyblock = 'ConfigureMake' + +name = 'HTSlib' +version = '1.19.1' + +homepage = 'https://www.htslib.org/' +description = """A C library for reading/writing high-throughput sequencing data. + This package includes the utilities bgzip and tabix""" + +toolchain = {'name': 'GCC', 'version': '13.2.0'} + +source_urls = ['https://github.com/samtools/%(namelower)s/releases/download/%(version)s/'] +sources = [SOURCELOWER_TAR_BZ2] +checksums = ['222d74d3574fb67b158c6988c980eeaaba8a0656f5e4ffb76b5fa57f035933ec'] + +# cURL added for S3 support +dependencies = [ + ('zlib', '1.2.13'), + ('bzip2', '1.0.8'), + ('XZ', '5.4.4'), + ('cURL', '8.3.0'), +] + + +sanity_check_paths = { + 'files': ['bin/bgzip', 'bin/tabix', 'lib/libhts.%s' % SHLIB_EXT], + 'dirs': [], +} + +moduleclass = 'bio' 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..acc366be210 --- /dev/null +++ b/easybuild/easyconfigs/h/HiGHS/HiGHS-1.7.0-gfbf-2023b.eb @@ -0,0 +1,49 @@ +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], + 'download_dep_fail': True, + 'use_pip': True, + 'sanity_pip_check': True, + '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/h/Highway/Highway-1.0.3-GCCcore-11.3.0.eb b/easybuild/easyconfigs/h/Highway/Highway-1.0.3-GCCcore-11.3.0.eb index 987a76bd0c1..9202b5b1d43 100644 --- a/easybuild/easyconfigs/h/Highway/Highway-1.0.3-GCCcore-11.3.0.eb +++ b/easybuild/easyconfigs/h/Highway/Highway-1.0.3-GCCcore-11.3.0.eb @@ -12,7 +12,11 @@ toolchain = {'name': 'GCCcore', 'version': '11.3.0'} source_urls = ['https://github.com/google/highway/archive/refs/tags/'] sources = ['%(version)s.tar.gz'] -checksums = ['566fc77315878473d9a6bd815f7de78c73734acdcb745c3dde8579560ac5440e'] +patches = ['Highway-1.0.3_disable_AVX3_DL.patch'] +checksums = [ + '566fc77315878473d9a6bd815f7de78c73734acdcb745c3dde8579560ac5440e', + {'Highway-1.0.3_disable_AVX3_DL.patch': '5729765a75c42551056f95f24fc81031293066253978548c573d06eb33bf9853'}, +] builddependencies = [ ('binutils', '2.38'), diff --git a/easybuild/easyconfigs/h/Highway/Highway-1.0.3-GCCcore-12.2.0.eb b/easybuild/easyconfigs/h/Highway/Highway-1.0.3-GCCcore-12.2.0.eb index f1833e66b17..198469448b6 100644 --- a/easybuild/easyconfigs/h/Highway/Highway-1.0.3-GCCcore-12.2.0.eb +++ b/easybuild/easyconfigs/h/Highway/Highway-1.0.3-GCCcore-12.2.0.eb @@ -12,7 +12,11 @@ toolchain = {'name': 'GCCcore', 'version': '12.2.0'} source_urls = ['https://github.com/google/highway/archive/refs/tags/'] sources = ['%(version)s.tar.gz'] -checksums = ['566fc77315878473d9a6bd815f7de78c73734acdcb745c3dde8579560ac5440e'] +patches = ['Highway-1.0.3_disable_AVX3_DL.patch'] +checksums = [ + '566fc77315878473d9a6bd815f7de78c73734acdcb745c3dde8579560ac5440e', + {'Highway-1.0.3_disable_AVX3_DL.patch': '5729765a75c42551056f95f24fc81031293066253978548c573d06eb33bf9853'}, +] builddependencies = [ ('binutils', '2.39'), diff --git a/easybuild/easyconfigs/h/Highway/Highway-1.0.3_disable_AVX3_DL.patch b/easybuild/easyconfigs/h/Highway/Highway-1.0.3_disable_AVX3_DL.patch new file mode 100644 index 00000000000..cbbdc731467 --- /dev/null +++ b/easybuild/easyconfigs/h/Highway/Highway-1.0.3_disable_AVX3_DL.patch @@ -0,0 +1,31 @@ +Using AVX3_DL in the baseline doesn't work in 1.0.3 causing the build to fail with +> #error "Logic error: best baseline should be included in dynamic targets" + +This is caused by using a wrong defined and fixed by +https://github.com/google/highway/commit/f0f688b6d6d1ec94489cc989ccb9729b0342aa58 +However that leads to a test failure: +> HwyConvertTestGroup/HwyConvertTest.TestAllTruncate/AVX3_DL +> u8x16 expect [0+ ->]: +> 0x00,0x01,0x02,0x03,0x04,0x05,0x06, +> u8x16 actual [0+ ->]: +> 0x00,0x1A,0x02,0x1A,0x04,0x1A,0x06, +> Abort at .../hwy/tests/convert_test.cc:386: AVX3_DL, u8x16 lane 1 mismatch: expected '0x01', got '0x1A'. + +Hence AVX3_DL in 1.0.3 seems to be broken and must not be used. +This patch disables it by making the condition always false. + +Author: Alexander Grund (TU Dresden) + +diff --git a/hwy/detect_targets.h b/hwy/detect_targets.h +index 2beca95b..379c4525 100644 +--- a/hwy/detect_targets.h ++++ b/hwy/detect_targets.h +@@ -340,7 +340,7 @@ + #if HWY_BASELINE_AVX3 != 0 && defined(__AVXVNNI__) && defined(__VAES__) && \ + defined(__VPCLMULQDQ__) && defined(__AVX512VBMI__) && \ + defined(__AVX512VBMI2__) && defined(__AVX512VPOPCNTDQ__) && \ +- defined(__AVX512BITALG__) ++ defined(__AVX512BITALG__) && 0 + #define HWY_BASELINE_AVX3_DL HWY_AVX3_DL + #else + #define HWY_BASELINE_AVX3_DL 0 diff --git a/easybuild/easyconfigs/h/HyPhy/HyPhy-2.5.60-gompi-2022a.eb b/easybuild/easyconfigs/h/HyPhy/HyPhy-2.5.60-gompi-2022a.eb new file mode 100644 index 00000000000..9960f8c8f57 --- /dev/null +++ b/easybuild/easyconfigs/h/HyPhy/HyPhy-2.5.60-gompi-2022a.eb @@ -0,0 +1,34 @@ +easyblock = "CMakeMake" + +name = 'HyPhy' +version = '2.5.60' + +homepage = 'https://veg.github.io/hyphy-site/' +description = """HyPhy (Hypothesis Testing using Phylogenies) is an open-source software package + for the analysis of genetic sequences (in particular the inference of natural selection) + using techniques in phylogenetics, molecular evolution, and machine learning""" + +toolchain = {'name': 'gompi', 'version': '2022a'} +toolchainopts = {'openmp': True, 'usempi': True} + +source_urls = ['https://github.com/veg/hyphy/archive/'] +sources = ['%(version)s.tar.gz'] +checksums = ['bc3a5062ee3cee47de16c394189fb8a5feed48f9a8c12302432d6faa7f2ac301'] + +builddependencies = [('CMake', '3.24.3')] + +dependencies = [ + ('cURL', '7.83.0'), +] + +buildopts = [ + 'hyphy', + 'HYPHYMPI', +] + +sanity_check_paths = { + 'files': ['bin/hyphy', 'bin/HYPHYMPI'], + 'dirs': [], +} + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/h/h5py/h5py-3.11.0-foss-2023b.eb b/easybuild/easyconfigs/h/h5py/h5py-3.11.0-foss-2023b.eb new file mode 100644 index 00000000000..9ad8bf43027 --- /dev/null +++ b/easybuild/easyconfigs/h/h5py/h5py-3.11.0-foss-2023b.eb @@ -0,0 +1,35 @@ +easyblock = 'PythonPackage' + +name = 'h5py' +version = '3.11.0' + +homepage = 'https://www.h5py.org/' +description = """HDF5 for Python (h5py) is a general-purpose Python interface to the Hierarchical Data Format library, + version 5. HDF5 is a versatile, mature scientific software library designed for the fast, flexible storage of enormous + amounts of data.""" + +toolchain = {'name': 'foss', 'version': '2023b'} +toolchainopts = {'usempi': True} + +sources = [SOURCE_TAR_GZ] +checksums = ['7b7e8f78072a2edec87c9836f25f34203fd492a4475709a18b417a33cfb21fa9'] + +builddependencies = [('pkgconf', '2.0.3')] + +dependencies = [ + ('Python', '3.11.5'), + ('SciPy-bundle', '2023.11'), + ('mpi4py', '3.1.5'), + ('HDF5', '1.14.3'), +] + +use_pip = True +sanity_pip_check = True +download_dep_fail = True + +# h5py's setup.py will disable setup_requires if H5PY_SETUP_REQUIRES is set to 0 +# without this environment variable, pip will fetch the minimum numpy version h5py supports during install, +# even though SciPy-bundle provides a newer version that satisfies h5py's install_requires dependency. +preinstallopts = 'HDF5_MPI=ON HDF5_DIR="$EBROOTHDF5" H5PY_SETUP_REQUIRES=0 ' + +moduleclass = 'data' diff --git a/easybuild/easyconfigs/h/hatch-jupyter-builder/hatch-jupyter-builder-0.9.1-GCCcore-13.2.0.eb b/easybuild/easyconfigs/h/hatch-jupyter-builder/hatch-jupyter-builder-0.9.1-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..a1c10cc3b01 --- /dev/null +++ b/easybuild/easyconfigs/h/hatch-jupyter-builder/hatch-jupyter-builder-0.9.1-GCCcore-13.2.0.eb @@ -0,0 +1,35 @@ +easyblock = 'PythonBundle' + +name = 'hatch-jupyter-builder' +version = "0.9.1" + +homepage = 'https://hatch-jupyter-builder.readthedocs.io' +description = """Hatch Jupyter Builder is a plugin for the hatchling Python build backend. It is +primarily targeted for package authors who are providing JavaScript as part of +their Python packages. +Typical use cases are Jupyter Lab Extensions and Jupyter Widgets.""" + + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +builddependencies = [ + ('binutils', '2.40'), +] +dependencies = [ + ('Python', '3.11.5'), + ('hatchling', '1.18.0'), +] + +sanity_pip_check = True +use_pip = True + +exts_list = [ + ('hatch_nodejs_version', '0.3.2', { + 'checksums': ['8a7828d817b71e50bbbbb01c9bfc0b329657b7900c56846489b9c958de15b54c'], + }), + ('hatch_jupyter_builder', '0.9.1', { + 'checksums': ['79278198d124c646b799c5e8dca8504aed9dcaaa88d071a09eb0b5c2009a58ad'], + }), +] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/h/hatchling/hatchling-1.18.0-GCCcore-12.3.0.eb b/easybuild/easyconfigs/h/hatchling/hatchling-1.18.0-GCCcore-12.3.0.eb index 5f163a17137..0913e467088 100644 --- a/easybuild/easyconfigs/h/hatchling/hatchling-1.18.0-GCCcore-12.3.0.eb +++ b/easybuild/easyconfigs/h/hatchling/hatchling-1.18.0-GCCcore-12.3.0.eb @@ -43,6 +43,10 @@ exts_list = [ ('hatch_fancy_pypi_readme', '23.1.0', { 'checksums': ['b1df44063094af1e8248ceacd47a92c9cf313d6b9823bf66af8a927c3960287d'], }), + ('hatch-requirements-txt', '0.4.1', { + 'source_tmpl': 'hatch_requirements_txt-%(version)s.tar.gz', + 'checksums': ['2c686e5758fd05bb55fa7d0c198fdd481f8d3aaa3c693260f5c0d74ce3547d20'], + }), ] sanity_check_paths = { diff --git a/easybuild/easyconfigs/h/hatchling/hatchling-1.18.0-GCCcore-13.2.0.eb b/easybuild/easyconfigs/h/hatchling/hatchling-1.18.0-GCCcore-13.2.0.eb index c12f3b9d965..a78cea4bf74 100644 --- a/easybuild/easyconfigs/h/hatchling/hatchling-1.18.0-GCCcore-13.2.0.eb +++ b/easybuild/easyconfigs/h/hatchling/hatchling-1.18.0-GCCcore-13.2.0.eb @@ -43,6 +43,10 @@ exts_list = [ ('hatch_fancy_pypi_readme', '23.1.0', { 'checksums': ['b1df44063094af1e8248ceacd47a92c9cf313d6b9823bf66af8a927c3960287d'], }), + ('hatch-requirements-txt', '0.4.1', { + 'source_tmpl': 'hatch_requirements_txt-%(version)s.tar.gz', + 'checksums': ['2c686e5758fd05bb55fa7d0c198fdd481f8d3aaa3c693260f5c0d74ce3547d20'], + }), ] sanity_check_paths = { diff --git a/easybuild/easyconfigs/h/help2man/help2man-1.49.3-GCCcore-13.3.0.eb b/easybuild/easyconfigs/h/help2man/help2man-1.49.3-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..631d7becc2b --- /dev/null +++ b/easybuild/easyconfigs/h/help2man/help2man-1.49.3-GCCcore-13.3.0.eb @@ -0,0 +1,25 @@ +easyblock = 'ConfigureMake' + +name = 'help2man' +version = '1.49.3' + +homepage = 'https://www.gnu.org/software/help2man/' +description = """help2man produces simple manual pages from the '--help' and '--version' output of other commands.""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = [GNU_SOURCE] +sources = [SOURCE_TAR_XZ] +checksums = ['4d7e4fdef2eca6afe07a2682151cea78781e0a4e8f9622142d9f70c083a2fd4f'] + +builddependencies = [ + # use same binutils version that was used when building GCC toolchain + ('binutils', '2.42', '', SYSTEM), +] + +sanity_check_paths = { + 'files': ['bin/help2man'], + 'dirs': [], +} + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/h/help2man/help2man-1.49.3-GCCcore-14.1.0.eb b/easybuild/easyconfigs/h/help2man/help2man-1.49.3-GCCcore-14.1.0.eb new file mode 100644 index 00000000000..4edcbfa5190 --- /dev/null +++ b/easybuild/easyconfigs/h/help2man/help2man-1.49.3-GCCcore-14.1.0.eb @@ -0,0 +1,25 @@ +easyblock = 'ConfigureMake' + +name = 'help2man' +version = '1.49.3' + +homepage = 'https://www.gnu.org/software/help2man/' +description = """help2man produces simple manual pages from the '--help' and '--version' output of other commands.""" + +toolchain = {'name': 'GCCcore', 'version': '14.1.0'} + +source_urls = [GNU_SOURCE] +sources = [SOURCE_TAR_XZ] +checksums = ['4d7e4fdef2eca6afe07a2682151cea78781e0a4e8f9622142d9f70c083a2fd4f'] + +builddependencies = [ + # use same binutils version that was used when building GCC toolchain + ('binutils', '2.42', '', SYSTEM), +] + +sanity_check_paths = { + 'files': ['bin/help2man'], + 'dirs': [], +} + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/h/hevea/hevea-2.36-GCC-13.2.0.eb b/easybuild/easyconfigs/h/hevea/hevea-2.36-GCC-13.2.0.eb new file mode 100644 index 00000000000..8b2f9b128eb --- /dev/null +++ b/easybuild/easyconfigs/h/hevea/hevea-2.36-GCC-13.2.0.eb @@ -0,0 +1,36 @@ +easyblock = 'ConfigureMake' + +name = 'hevea' +version = '2.36' + +homepage = 'http://pauillac.inria.fr/~maranget/hevea/' +description = """A quite complete and fast LATEX to HTML translator""" + +toolchain = {'name': 'GCC', 'version': '13.2.0'} + +source_urls = ['http://pauillac.inria.fr/~maranget/hevea/distri'] +sources = [SOURCE_TAR_GZ] +checksums = ['5d6759d7702a295c76a12c1b2a1a16754ab0ec1ffed73fc9d0b138b41e720648'] + +builddependencies = [ + ('ocamlbuild', '0.14.3'), +] + +dependencies = [ + ('texlive', '20230313'), +] + +skipsteps = ['configure'] + +buildopts = 'PREFIX="" ' + +installopts = 'DESTDIR="%(installdir)s" ' + +sanity_check_paths = { + 'files': ['bin/%(name)s'], + 'dirs': ['lib/%(name)s'], +} + +sanity_check_commands = ['%(name)s --help'] + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/h/hmmcopy_utils/hmmcopy_utils-20210728-GCCcore-12.3.0.eb b/easybuild/easyconfigs/h/hmmcopy_utils/hmmcopy_utils-20210728-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..247df603580 --- /dev/null +++ b/easybuild/easyconfigs/h/hmmcopy_utils/hmmcopy_utils-20210728-GCCcore-12.3.0.eb @@ -0,0 +1,43 @@ +easyblock = 'CMakeMake' + +name = 'hmmcopy_utils' +version = '20210728' +_commit = '29a8d1d' + +homepage = 'https://github.com/shahcompbio/hmmcopy_utils' +description = """ +Tools for extracting read counts and gc and mappability statistics in preparation for running +HMMCopy. +""" +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +github_account = 'shahcompbio' +source_urls = ['https://github.com/shahcompbio/hmmcopy_utils/archive'] +sources = [{'download_filename': '%s.tar.gz' % _commit, 'filename': SOURCE_TAR_GZ}] +checksums = ['84f6ed50e6124c3774b96660939d49fc81ca1568887510b7368a5005860b0850'] + +builddependencies = [ + ('CMake', '3.26.3'), + ('binutils', '2.40'), +] + +skipsteps = ['install'] + +postinstallcmds = [ + 'cp -a %(builddir)s/easybuild_obj/bin %(installdir)s/', + 'cp -a %(start_dir)s/util %(installdir)s/', + 'cp -a %(start_dir)s/lib %(installdir)s/', +] + +sanity_check_paths = { + 'files': ['bin/readCounter', 'bin/mapCounter', 'bin/gcCounter'], + 'dirs': ['util', 'lib'], +} + +sanity_check_commands = [ + "mapCounter --help", + "gcCounter --help", + "readCounter --help", +] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/h/hwloc/hwloc-2.10.0-GCCcore-13.3.0.eb b/easybuild/easyconfigs/h/hwloc/hwloc-2.10.0-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..cbe85325933 --- /dev/null +++ b/easybuild/easyconfigs/h/hwloc/hwloc-2.10.0-GCCcore-13.3.0.eb @@ -0,0 +1,44 @@ +easyblock = 'ConfigureMake' + +name = 'hwloc' +version = '2.10.0' + +homepage = 'https://www.open-mpi.org/projects/hwloc/' + +description = """ + The Portable Hardware Locality (hwloc) software package provides a portable + abstraction (across OS, versions, architectures, ...) of the hierarchical + topology of modern architectures, including NUMA memory nodes, sockets, shared + caches, cores and simultaneous multithreading. It also gathers various system + attributes such as cache and memory information as well as the locality of I/O + devices such as network interfaces, InfiniBand HCAs or GPUs. It primarily + aims at helping applications with gathering information about modern computing + hardware so as to exploit it accordingly and efficiently. +""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = ['https://www.open-mpi.org/software/hwloc/v%(version_major_minor)s/downloads/'] +sources = [SOURCE_TAR_GZ] +checksums = ['c7fd8a1404a9719c76aadc642864b9f77aed1dc1fc8882d6af861a9260ba240d'] + +builddependencies = [ + ('binutils', '2.42'), +] + +dependencies = [ + ('numactl', '2.0.18'), + ('libxml2', '2.12.7'), + ('libpciaccess', '0.18.1'), +] + +configopts = "--disable-cairo --disable-opencl --disable-cuda --disable-nvml --disable-gl --disable-libudev " + +sanity_check_paths = { + 'files': ['bin/lstopo', 'include/hwloc/linux.h', + 'lib/libhwloc.%s' % SHLIB_EXT], + 'dirs': ['share/man/man3'], +} +sanity_check_commands = ['lstopo'] + +moduleclass = 'system' diff --git a/easybuild/easyconfigs/i/ICON/ICON-2024.01-foss-2023a.eb b/easybuild/easyconfigs/i/ICON/ICON-2024.01-foss-2023a.eb new file mode 100644 index 00000000000..1bb91f3fb97 --- /dev/null +++ b/easybuild/easyconfigs/i/ICON/ICON-2024.01-foss-2023a.eb @@ -0,0 +1,216 @@ +# This file is an EasyBuild recipe as per https://easybuild.io +# Author: Jens Henrik Göbbert +# Forschungszentrum Juelich GmbH (FZJ) +# Juelich Supercomputing Centre (JSC) + +easyblock = 'ConfigureMake' + +name = 'ICON' +version = '2024.01' + +local_tag = 'release-%(version)s-public' + +homepage = "https://www.icon-model.org/" +description = """ +ICON is a flexible, scalable, high-performance modelling framework for weather, climate and environmental prediction +that provides actionable information for society and advances our understanding of the Earth's climate system. +""" + +toolchain = {'name': 'foss', 'version': '2023a'} +toolchainopts = {'pic': True, 'usempi': True} + +source_urls = [('https://gitlab.dkrz.de/icon/icon-model/-/archive/%s/' % local_tag)] +sources = [('icon-model-%s.tar.gz' % local_tag)] + +patches = [ + 'ICON-2024.01_lzacc-undefined.patch', +] +checksums = [ + '53f0c6fb2622725b184b220ace307665d7965ae3609ebe4a51e5e36539a495b0', + '5612f304dc0241016e3126134737549d7bb719cb879451ef3a9623a29a218414', +] + +builddependencies = [ + ('CMake', '3.26.3'), + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07', '', ('gfbf', '2023a')), + ('Perl', '5.36.1'), + ('pkgconf', '1.9.5'), +] + +dependencies = [ + ('zlib', '1.2.13'), + ('libxml2', '2.11.4'), + ('libfyaml', '0.9'), + ('ecCodes', '2.31.0'), + ('netCDF', '4.9.2'), + ('netCDF-Fortran', '4.6.1'), + ('HDF5', '1.14.0'), +] + +# Details on configuration settings and order can be found here: +# https://gitlab.dkrz.de/icon/icon-model/-/blob/icon-2024.01-public/doc/Quick_Start.md#icon-deptable +configopts = ( + # C/C++ + 'CFLAGS="' + ' -mpc64 -march=native ' + ' -g -gdwarf-4 ' + '" ' + 'ICON_CFLAGS="-O3" ' + 'ICON_BUNDLED_CFLAGS="-O2" ' + # 'CPPFLAGS="''" # $CPATH set by easybuild + # Fortran + 'FCFLAGS="' + ' -mpc64 -march=native ' + ' -g -gdwarf-4 ' + ' -ffree-line-length-none ' + # ' -fmodule-private -fimplicit-none -fmax-identifier-length=63 ' # Test possible code-style-issues + # ' -Wall -Wcharacter-truncation -Wconversion -Wunderflow -Wunused-parameter -Wno-surprising ' + ' -I${EBROOTHDF5}/include ' + ' -I${EBROOTNETCDFMINFORTRAN}/include ' + ' -I${EBROOTECCODES}/include ' + '" ' + 'ICON_FCFLAGS="' + ' -O2 ' + ' -std=f2008 -fall-intrinsics ' # Set standard but allow other intrinsics, too + ' -DDO_NOT_COMBINE_PUT_AND_NOCHECK ' # Set lock_assert=0 instead of MPI_MODE_NOCHECK for a MPI_Win_lock() + # ' -fbacktrace -fbounds-check -fstack-protector-all ' # For testing purpose (performance decrease) + # ' -finit-real=nan -finit-integer=-2147483648 -finit-character=127 ' # For testing (performance decrease) + '" ' + 'ICON_BUNDLED_FCFLAGS="-O2" ' + 'ICON_OCEAN_FCFLAGS="' + ' -O3 ' + ' -fno-tree-loop-vectorize ' + '" ' + 'ICON_ECRAD_FCFLAGS="' + ' -fallow-invalid-boz ' # Degrades a specific error to a warning + '" ' + # Linker + # 'LDFLAGS="''" # $LIBRARY_PATH set by easybuild + 'LIBS="' + ' -Wl,--disable-new-dtags -Wl,--as-needed ' + ' -lxml2 ' + ' -lfyaml ' + ' -leccodes_f90 -leccodes ' + ' -llapacke -lflexiblas ' + ' -lnetcdff -lnetcdf ' + ' -lhdf5_hl_fortran -lhdf5_fortran -lhdf5 ' + ' -lz ' + ' -lstdc++ ' + '" ' + 'MPI_LAUNCH=false ' +) + +# Model Features: +configopts += ( + '--enable-atmo ' # atmosphere component [default=yes] + '--enable-les ' # Large-Eddy Simulation component [default=yes] + '--enable-upatmo ' # upper atmosphere component [default=yes] + '--enable-ocean ' # ocean component [default=yes] + '--enable-jsbach ' # land component JSBACH [default=yes] + '--enable-jsbach-hd ' # hydrological discharge scheme of the JSBACH land component [default=auto] + '--enable-waves ' # ocean surface wave component [default=no] + '--enable-coupling ' # coupling [default=yes] + '--enable-aes ' # AES physics package [default=yes] + '--enable-nwp ' # NWP physics package [default=yes] + '--enable-ecrad ' # ECMWF radiation scheme (ECRAD) [default=no] + '--enable-rte-rrtmgp ' # RTE+RRTMGP toolbox for radiation calculations [default=yes] + '--enable-art ' # aerosols and reactive trace component ART [default=no] + '--enable-art-gpl ' # GPL-licensed code parts of the ART component [default=no] + '--enable-comin ' # ICON community interfaces [default=no] + + # Subject to a license agreement + # '--enable-acm-license ' # accepting ACM Software License Agreement [default=no] + # '--enable-rttov ' # radiative transfer model for TOVS [default=no] + # https://nwp-saf.eumetsat.int/site/software/rttov/download/#Software + # '--enable-dace ' # DACE modules for data assimilation [default=no] + # "Data Assimilation Coding Environment (DACE)" + # http://www.cosmo-model.org/content/support/software/#dace + # '--enable-emvorado ' # radar forward operator EMVORADO [default=no] + # "Efficient Modular VOlume scan RADar Operator (EMVORADO)" + # '--enable-hd=yes ' # Hydrological Discharge (HD) model [default=no]: + # 05deg|yes enable for the 0.5-degree global domain + # 5min enable for the 5min global domain + # no disable the HD model +) + +# Infrastructural Features: +configopts += ( + '--enable-mpi ' # MPI (parallelization) support [default=yes] + '--disable-mpi-checks ' # configure-time checks of MPI library [default=yes] + # '--enable-active-target-sync ' # MPI active target mode [default=no] + # '--enable-mpi-rget ' # MPI_Rget routine [default=auto] - if MPI library supports standard 3.0 or higher + # '--enable-mpi-gpu ' # GPU-aware MPI features [default=no] + '--enable-async-io-rma ' # MPI RMA for asynchronous I/O [default=yes] + '--enable-openmp ' # OpenMP support [default=no] - do not combine with --enable-gpu + # '--enable-gpu=yes ' # GPU support [default=no]: - do not combine with --enable-openmp + # openacc+cuda with OpenACC and CUDA + # openacc+hip with OpenACC and HIP + # openacc alias for 'openacc+cuda' + # yes alias for 'openacc+cuda' + # no disable GPU support + '--enable-grib2 ' # GRIB2 I/O [default=no] + # '--enable-parallel-netcdf ' # parallel features of NetCDF [default=no] - ICON hangs with netCDF>=4.8.0 + '--enable-cdi-pio ' # parallel features of CDI [default=no] + # '--enable-sct ' # SCT timer [default=no] + '--enable-yaxt ' # YAXT data exchange [default=no] + # '--enable-explicit-fpp ' # explicit Fortran preprocessing [default=auto] + # '--enable-serialization ' # Serialbox2 serialization [default=no]: + # read enable READ mode + # perturb enable READ & PERTURB mode + # create enable CREATE mode + # yes alias for 'read' + # no disable serialization + # '--enable-testbed ' # ICON Testbed infrastructure [default=no] + # '--enable-memory-tracing ' # native dynamic memory tracing facility [default=no]: + # mtrace enable tracing with mtrace (glibc) + # yes alias for 'mtrace' + # no disable memory tracing +) + +# Optimization Features: +configopts += ( + '' + # '--enable-loop-exchange ' # loop exchange [default=auto] - enabled if no GPU support requested + # '--enable-dim-swap ' # dimension swap [default=auto] + # '--enable-realloc-buf ' # reallocatable buffer in the communication [default=no] + '--enable-vectorized-lrtm ' # parallelization-invariant version of LRTM [default=no] + # '--enable-mixed-precision ' # mixed precision dycore [default=no] + # '--enable-intel-consistency ' # Intel compiler directives enforcing consistency [default=auto] + # '--enable-pgi-inlib ' # PGI/NVIDIA cross-file function inlining via an inline library [default=no] + # '--enable-nccl ' # NCCL for communication [default=no] + # '--enable-cuda-graphs ' # CUDA graphs [default=no] + # '--enable-fcgroup- ' # Fortran compile group for extra set of compiler flags + '--enable-fcgroup-OCEAN=src/hamocc:src/ocean:src/sea_ice ' +) + +# External Libraries: +configopts += ( + '' + # '--with-external-tixi ' # https://gitlab.dkrz.de/icon-libraries/libtixi - a modified version of TIXI + # '--with-external-yac ' # https://gitlab.dkrz.de/dkrz-sw/yac + # '--with-external-mtime ' # https://gitlab.dkrz.de/icon-libraries/libmtime + # '--with-external-cdi ' # https://code.mpimet.mpg.de/projects/cdi/ + # '--with-external-ppm ' # https://gitlab.dkrz.de/jahns/ppm + # '--with-external-yaxt ' # https://gitlab.dkrz.de/dkrz-sw/yaxt + # '--with-external-sct ' # https://gitlab.dkrz.de/dkrz-sw/sct + # '--with-external-ecrad ' # https://confluence.ecmwf.int/display/ECRAD/ECMWF+Radiation+Scheme+Home + # '--with-external-rte-rrtmgp ' # https://github.com/earth-system-radiation/rte-rrtmgp +) + +postinstallcmds = [ + # Transfer required data + '%%(builddir)s/icon-model-%s/utils/move_to_prefix.sh ' % local_tag, + # Generate the runscripts + ( + 'cd %(installdir)s && ' + './make_runscripts --all ' + ), +] + +sanity_check_paths = { + 'files': ['bin/icon'], + 'dirs': ['bin'], +} + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/i/ICON/ICON-2024.01_lzacc-undefined.patch b/easybuild/easyconfigs/i/ICON/ICON-2024.01_lzacc-undefined.patch new file mode 100644 index 00000000000..f826398c934 --- /dev/null +++ b/easybuild/easyconfigs/i/ICON/ICON-2024.01_lzacc-undefined.patch @@ -0,0 +1,40 @@ +diff -Naur icon-model.orig/src/parallel_infrastructure/mo_communication_yaxt.f90 icon-model/src/parallel_infrastructure/mo_communication_yaxt.f90 +--- icon-model.orig/src/parallel_infrastructure/mo_communication_yaxt.f90 2024-02-11 18:27:08.000000000 +0100 ++++ icon-model/src/parallel_infrastructure/mo_communication_yaxt.f90 2024-02-13 09:28:31.775211101 +0100 +@@ -2541,7 +2541,11 @@ + + CALL exchange_data_grf_bottom(redist_coll, cpy_size, nfields, ndim2tot,& + & npats, src_fsize4d, dst_fsize4d, needs_cpy, & +- & recv, send) ++ & recv, send & ++#ifdef _OPENACC ++ & ,lzacc & ++#endif ++ & ) + + #if defined(_OPENACC) && ! defined(__USE_G2G) + IF (i_am_accel_node) THEN +@@ -2559,7 +2563,11 @@ + END SUBROUTINE exchange_data_grf + + SUBROUTINE exchange_data_grf_bottom(redist_coll, cpy_size, nfields, ndim2tot,& +- npats, src_fsize4d, dst_fsize4d, needs_cpy, recv, send) ++ npats, src_fsize4d, dst_fsize4d, needs_cpy, recv, send & ++#ifdef _OPENACC ++ & ,lzacc & ++#endif ++ & ) + TYPE(xt_redist), INTENT(IN) :: redist_coll + + !> size of copy array needed for contiguous buffering +@@ -2576,6 +2584,10 @@ + ! recv itself is intent(in), but the pointed to data will be modified + TYPE(t_ptr_3d), PTR_INTENT(in) :: recv(nfields), send(nfields) + ++#ifdef _OPENACC ++ LOGICAL :: lzacc ++#endif ++ + REAL(dp), TARGET :: cpy_buf(cpy_size) + REAL(dp), POINTER :: cpy(:,:,:) + INTEGER :: i, ofs, cpy_psum, nblk, incr, nl, npnts, np, last diff --git a/easybuild/easyconfigs/i/ICU/ICU-75.1-GCCcore-13.3.0.eb b/easybuild/easyconfigs/i/ICU/ICU-75.1-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..cb7075fa963 --- /dev/null +++ b/easybuild/easyconfigs/i/ICU/ICU-75.1-GCCcore-13.3.0.eb @@ -0,0 +1,29 @@ +easyblock = 'ConfigureMake' + +name = 'ICU' +version = '75.1' + +homepage = 'https://icu.unicode.org' +description = """ICU is a mature, widely used set of C/C++ and Java libraries providing Unicode and Globalization + support for software applications.""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/unicode-org/icu/releases/download/release-%(version_major)s-%(version_minor)s'] +sources = ['icu4c-%(version_major)s_%(version_minor)s-src.tgz'] +checksums = ['cb968df3e4d2e87e8b11c49a5d01c787bd13b9545280fc6642f826527618caef'] + +builddependencies = [ + ('binutils', '2.42'), + ('Python', '3.12.3'), +] + +start_dir = 'source' + +sanity_check_paths = { + 'files': ['lib/libicu%s.%s' % (x, SHLIB_EXT) for x in ['data', 'i18n', 'io', 'test', 'tu', 'uc']], + 'dirs': ['bin', 'include/unicode', 'share/icu', 'share/man'], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/i/IML/IML-1.0.5-gfbf-2023b.eb b/easybuild/easyconfigs/i/IML/IML-1.0.5-gfbf-2023b.eb new file mode 100644 index 00000000000..d9171489748 --- /dev/null +++ b/easybuild/easyconfigs/i/IML/IML-1.0.5-gfbf-2023b.eb @@ -0,0 +1,25 @@ +easyblock = 'ConfigureMake' + +name = 'IML' +version = '1.0.5' + +homepage = 'https://cs.uwaterloo.ca/~astorjoh/iml.html' +description = """IML is a free library of C source code which implements algorithms for computing + exact solutions to dense systems of linear equations over the integers.""" + +toolchain = {'name': 'gfbf', 'version': '2023b'} + +source_urls = ['http://www.cs.uwaterloo.ca/~astorjoh'] +sources = [SOURCELOWER_TAR_BZ2] +checksums = ['1dad666850895a5709b00b97422e2273f293cfadea7697a9f90b90953e847c2a'] + +dependencies = [('GMP', '6.3.0')] + +configopts = '--with-cblas="$LIBBLAS" --with-gmp-include=$EBROOTGMP/include --with-gmp-lib=$EBROOTGMP/lib ' + +sanity_check_paths = { + 'files': ['include/iml.h', 'lib/libiml.a'], + 'dirs': ['share'], +} + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/i/IOR/IOR-4.0.0-gompi-2023b.eb b/easybuild/easyconfigs/i/IOR/IOR-4.0.0-gompi-2023b.eb new file mode 100644 index 00000000000..edc20007c6d --- /dev/null +++ b/easybuild/easyconfigs/i/IOR/IOR-4.0.0-gompi-2023b.eb @@ -0,0 +1,40 @@ +# 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 +# Author: Robert Mijakovic =0.18", +- "opencv-python-headless", + "imageio<=2.6.1; python_version<'3.5'", + "imageio; python_version>='3.5'", + "Shapely" + ] + +-ALT_INSTALL_REQUIRES = { +- "opencv-python-headless": ["opencv-python", "opencv-contrib-python", "opencv-contrib-python-headless"], +-} +- + + def check_alternative_installation(install_require, alternative_install_requires): + """If some version version of alternative requirement installed, return alternative, +@@ -54,8 +49,6 @@ + return install_requires + + +-INSTALL_REQUIRES = get_install_requirements(INSTALL_REQUIRES, ALT_INSTALL_REQUIRES) +- + setup( + name="imgaug3", + version="0.4.1", diff --git a/easybuild/easyconfigs/i/ipympl/ipympl-0.9.3-foss-2023a.eb b/easybuild/easyconfigs/i/ipympl/ipympl-0.9.3-gfbf-2023a.eb similarity index 84% rename from easybuild/easyconfigs/i/ipympl/ipympl-0.9.3-foss-2023a.eb rename to easybuild/easyconfigs/i/ipympl/ipympl-0.9.3-gfbf-2023a.eb index e3b6c4b7437..47ab1aff28c 100644 --- a/easybuild/easyconfigs/i/ipympl/ipympl-0.9.3-foss-2023a.eb +++ b/easybuild/easyconfigs/i/ipympl/ipympl-0.9.3-gfbf-2023a.eb @@ -10,7 +10,7 @@ Besides, the figure canvas element is a proper Jupyter interactive widget which can be positioned in interactive widget layouts. """ -toolchain = {'name': 'foss', 'version': '2023a'} +toolchain = {'name': 'gfbf', 'version': '2023a'} dependencies = [ ('Python', '3.11.3'), @@ -29,9 +29,6 @@ exts_list = [ }), ] -modextrapaths = { - 'JUPYTER_PATH': 'share/jupyter', - 'JUPYTER_CONFIG_PATH': 'etc/jupyter', -} +modextrapaths = {'EB_ENV_JUPYTER_ROOT': ''} moduleclass = 'tools' diff --git a/easybuild/easyconfigs/i/ipympl/ipympl-0.9.4-gfbf-2023b.eb b/easybuild/easyconfigs/i/ipympl/ipympl-0.9.4-gfbf-2023b.eb new file mode 100644 index 00000000000..e780d34c757 --- /dev/null +++ b/easybuild/easyconfigs/i/ipympl/ipympl-0.9.4-gfbf-2023b.eb @@ -0,0 +1,34 @@ +easyblock = 'PythonBundle' + +name = 'ipympl' +version = '0.9.4' + +homepage = 'https://matplotlib.org/ipympl' +description = """Leveraging the Jupyter interactive widgets framework, ipympl enables the +interactive features of matplotlib in the Jupyter notebook and in JupyterLab. +Besides, the figure canvas element is a proper Jupyter interactive widget which +can be positioned in interactive widget layouts. +""" + +toolchain = {'name': 'gfbf', 'version': '2023b'} + +dependencies = [ + ('Python', '3.11.5'), + ('JupyterLab', '4.2.0'), + ('matplotlib', '3.8.2'), + ('Pillow', '10.2.0'), +] + +sanity_pip_check = True +use_pip = True + +exts_list = [ + (name, version, { + 'source_tmpl': '%(name)s-%(version)s-py3-none-any.whl', + 'checksums': ['5b0c08c6f4f6ea655ba58239363457c10fb921557f5038c1a46db4457d6d6b0e'], + }), +] + +modextrapaths = {'EB_ENV_JUPYTER_ROOT': ''} + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/j/JAGS/JAGS-4.3.2-foss-2023a.eb b/easybuild/easyconfigs/j/JAGS/JAGS-4.3.2-foss-2023a.eb new file mode 100644 index 00000000000..8c83d04b731 --- /dev/null +++ b/easybuild/easyconfigs/j/JAGS/JAGS-4.3.2-foss-2023a.eb @@ -0,0 +1,38 @@ +# 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 + +easyblock = 'ConfigureMake' + +name = 'JAGS' +version = '4.3.2' + +homepage = 'http://mcmc-jags.sourceforge.net/' +description = """JAGS is Just Another Gibbs Sampler. It is a program for analysis + of Bayesian hierarchical models using Markov Chain Monte Carlo (MCMC) simulation """ + +toolchain = {'name': 'foss', 'version': '2023a'} + +source_urls = [ + ('https://sourceforge.net/projects/mcmc-%(namelower)s/files/%(name)s/%(version_major)s.x/Source/', 'download'), +] +sources = [SOURCE_TAR_GZ] +checksums = ['871f556af403a7c2ce6a0f02f15cf85a572763e093d26658ebac55c4ab472fc8'] + +configopts = ' --with-blas="$LIBBLAS" --with-lapack="$LIBLAPACK"' + + +sanity_check_paths = { + 'files': ['bin/%(namelower)s', 'libexec/%(namelower)s-terminal', 'lib/libjags.%s' % SHLIB_EXT], + 'dirs': [], +} + +sanity_check_commands = ["echo 'list modules' | %(namelower)s"] + +modextrapaths = { + 'JAGS_INCLUDE': 'include/%(name)s', + 'JAGS_LIB': 'lib', +} + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/j/Jansson/Jansson-2.14-GCC-12.3.0.eb b/easybuild/easyconfigs/j/Jansson/Jansson-2.14-GCC-12.3.0.eb new file mode 100644 index 00000000000..a8aeb721b5f --- /dev/null +++ b/easybuild/easyconfigs/j/Jansson/Jansson-2.14-GCC-12.3.0.eb @@ -0,0 +1,41 @@ +# Contribution from Imperial College London +# uploaded by J. Sassmannshausen +# Update: P.Tománek (Inuits) + +easyblock = 'CMakeMake' + +name = 'Jansson' +version = "2.14" + +homepage = 'https://www.digip.org/jansson/' +description = """Jansson is a C library for encoding, decoding and manipulating JSON data. + Its main features and design principles are: + * Simple and intuitive API and data model + * Comprehensive documentation + * No dependencies on other libraries + * Full Unicode support (UTF-8) + * Extensive test suite""" + +toolchain = {'name': 'GCC', 'version': '12.3.0'} + +source_urls = ['https://github.com/akheron/jansson/archive/'] +sources = ['v%(version)s.tar.gz'] +checksums = ['c739578bf6b764aa0752db9a2fdadcfe921c78f1228c7ec0bb47fa804c55d17b'] + +# For configure, the ld.gold linker does not know anything about --default-symver and thus crashes +# So we simnply use the bfd linker +# preconfigopts = 'autoreconf -i && CC="$CC -fuse-ld=bfd" ' +# This is not required with CMake + +builddependencies = [('CMake', '3.26.3')] + +configopts = '-DJANSSON_BUILD_SHARED_LIBS=ON ' + +sanity_check_paths = { + 'files': ['lib/libjansson.%s' % SHLIB_EXT], + 'dirs': ['include'], +} + +runtest = 'check' + +moduleclass = 'data' diff --git a/easybuild/easyconfigs/j/Java/Java-21.0.2.eb b/easybuild/easyconfigs/j/Java/Java-21.0.2.eb index e96da822b0b..bcbc951be1b 100644 --- a/easybuild/easyconfigs/j/Java/Java-21.0.2.eb +++ b/easybuild/easyconfigs/j/Java/Java-21.0.2.eb @@ -24,6 +24,8 @@ checksums = [ '3ce6a2b357e2ef45fd6b53d6587aa05bfec7771e7fb982f2c964f6b771b7526a', local_tarball_tmpl % ('ppc64le', local_build): 'd08de863499d8851811c893e8915828f2cd8eb67ed9e29432a6b4e222d80a12f', + local_tarball_tmpl % ('riscv64', local_build): + '791a37ddb040e1a02bbfc61abfbc7e7321431a28054c9ac59ba1738fd5320b02', } ] diff --git a/easybuild/easyconfigs/j/Jellyfish/Jellyfish-2.3.0-GCC-12.2.0.eb b/easybuild/easyconfigs/j/Jellyfish/Jellyfish-2.3.0-GCC-12.2.0.eb new file mode 100644 index 00000000000..eb710390ef2 --- /dev/null +++ b/easybuild/easyconfigs/j/Jellyfish/Jellyfish-2.3.0-GCC-12.2.0.eb @@ -0,0 +1,40 @@ +## +# 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:: GPLv3.0 +# +# Notes:: +## + +easyblock = 'ConfigureMake' + +name = 'Jellyfish' +version = '2.3.0' + +homepage = 'http://www.genome.umd.edu/jellyfish.html' +description = "Jellyfish is a tool for fast, memory-efficient counting of k-mers in DNA." + +toolchain = {'name': 'GCC', 'version': '12.2.0'} + +source_urls = ['https://github.com/gmarcais/Jellyfish/releases/download/v%(version)s'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['e195b7cf7ba42a90e5e112c0ed27894cd7ac864476dc5fb45ab169f5b930ea5a'] + +parallel = 1 + +# The tests for the Bloom filter are statistical tests and can randomly fail, +# they actually don't make a lot of sense +runtest = "check GTEST_FILTER=-'*Bloom*'" + +postinstallcmds = ["cp config.h %(installdir)s/include/%(namelower)s-%(version)s/%(namelower)s/"] + +sanity_check_paths = { + 'files': ['bin/jellyfish'], + 'dirs': [] +} + +modextrapaths = {'CPATH': 'include/%(namelower)s-%(version)s'} + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/j/Jupyter-bundle/Jupyter-bundle-20240522-GCCcore-13.2.0.eb b/easybuild/easyconfigs/j/Jupyter-bundle/Jupyter-bundle-20240522-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..d6ac6ce1ad0 --- /dev/null +++ b/easybuild/easyconfigs/j/Jupyter-bundle/Jupyter-bundle-20240522-GCCcore-13.2.0.eb @@ -0,0 +1,26 @@ +easyblock = 'Bundle' + +name = 'Jupyter-bundle' +version = '20240522' + +homepage = "https://jupyter.org/" + +description = """ + This bundle collects a range of Jupyter interfaces (Lab, Notebook and nbclassic), + extensions (Jupyter Server Proxy, Jupyter Resource Monitor, Jupyter Lmod) and + the JupyterHub. +""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +dependencies = [ + ('JupyterHub', '4.1.5'), + ('JupyterLab', '4.2.0'), + ('JupyterNotebook', '7.2.0'), + ('nbclassic', '1.0.0'), + ('jupyter-server-proxy', '4.1.2'), + # ('jupyterlmod', '5.0.0'), -- not ready yet, waiting for https://github.com/cmd-ntrf/jupyter-lmod/pull/70 + ('jupyter-resource-usage', '1.0.2'), +] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/j/JupyterHub/JupyterHub-4.0.2-GCCcore-12.3.0.eb b/easybuild/easyconfigs/j/JupyterHub/JupyterHub-4.0.2-GCCcore-12.3.0.eb index a83e3042286..04740042f7a 100644 --- a/easybuild/easyconfigs/j/JupyterHub/JupyterHub-4.0.2-GCCcore-12.3.0.eb +++ b/easybuild/easyconfigs/j/JupyterHub/JupyterHub-4.0.2-GCCcore-12.3.0.eb @@ -15,12 +15,12 @@ builddependencies = [ dependencies = [ ('Python', '3.11.3'), ('IPython', '8.14.0'), - ('Mako', '1.2.4'), + ('bcrypt', '4.0.1'), ('configurable-http-proxy', '4.5.6'), ('OpenSSL', '1.1', '', SYSTEM), ('tornado', '6.3.2'), - ('bcrypt', '4.0.1'), ('PycURL', '7.45.2'), # optional, recommended with large number of users + ('SQLAlchemy', '2.0.25'), ] sanity_pip_check = True @@ -35,18 +35,9 @@ exts_list = [ ('pamela', '1.1.0', { 'checksums': ['d4b139fe600e192e176a2a368059207a6bffa0e7879879b13f4fcba0163481be'], }), - ('greenlet', '2.0.2', { - 'checksums': ['e7c8dc13af7db097bed64a051d2dd49e9f0af495c26995c00a9ee842690d34c0'], - }), ('async_generator', '1.10', { 'checksums': ['6ebb3d106c12920aaae42ccb6f787ef5eefdcdd166ea3d628fa8476abe712144'], }), - ('SQLAlchemy', '2.0.20', { - 'checksums': ['ca8a5ff2aa7f3ade6c498aaafce25b1eaeabe4e42b73e25519183e4566a16fc6'], - }), - ('alembic', '1.11.3', { - 'checksums': ['3db4ce81a9072e1b5aa44c2d202add24553182672a12daf21608d6f62a8f9cf9'], - }), ('oauthlib', '3.2.2', { 'checksums': ['9859c40929662bec5d64f34d01c99e093149682a3f38915dc0655d5a633dd918'], }), diff --git a/easybuild/easyconfigs/j/JupyterHub/JupyterHub-4.1.5-GCCcore-13.2.0.eb b/easybuild/easyconfigs/j/JupyterHub/JupyterHub-4.1.5-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..76751fb0f5f --- /dev/null +++ b/easybuild/easyconfigs/j/JupyterHub/JupyterHub-4.1.5-GCCcore-13.2.0.eb @@ -0,0 +1,109 @@ +easyblock = 'PythonBundle' + +name = 'JupyterHub' +version = '4.1.5' + +homepage = 'https://jupyter.org' +description = """JupyterHub is a multiuser version of the Jupyter (IPython) notebook designed + for centralized deployments in companies, university classrooms and research labs.""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +builddependencies = [ + ('binutils', '2.40'), +] +dependencies = [ + ('Python', '3.11.5'), + ('IPython', '8.17.2'), + ('bcrypt', '4.1.3'), + ('configurable-http-proxy', '4.6.1'), + ('OpenSSL', '1.1', '', SYSTEM), + ('tornado', '6.4'), + ('PycURL', '7.45.3'), # optional, recommended with large number of users + ('SQLAlchemy', '2.0.29'), +] + +sanity_pip_check = True +use_pip = True + +exts_list = [ + ('certipy', '0.1.3', { + 'checksums': ['695704b7716b033375c9a1324d0d30f27110a28895c40151a90ec07ff1032859'], + }), + ('pamela', '1.1.0', { + 'checksums': ['d4b139fe600e192e176a2a368059207a6bffa0e7879879b13f4fcba0163481be'], + }), + ('async_generator', '1.10', { + 'checksums': ['6ebb3d106c12920aaae42ccb6f787ef5eefdcdd166ea3d628fa8476abe712144'], + }), + ('oauthlib', '3.2.2', { + 'checksums': ['9859c40929662bec5d64f34d01c99e093149682a3f38915dc0655d5a633dd918'], + }), + ('pyOpenSSL', '24.1.0', { + 'modulename': 'OpenSSL', + 'checksums': ['cabed4bfaa5df9f1a16c0ef64a0cb65318b5cd077a7eda7d6970131ca2f41a6f'], + }), + ('ruamel.yaml', '0.18.6', { + 'checksums': ['8b27e6a217e786c6fbe5634d8f3f11bc63e0f80f6a5890f28863d9c45aac311b'], + }), + ('ruamel.yaml.clib', '0.2.8', { + 'modulename': False, + 'checksums': ['beb2e0404003de9a4cab9753a8805a8fe9320ee6673136ed7f04255fe60bb512'], + }), + ('python-json-logger', '2.0.7', { + 'modulename': 'pythonjsonlogger', + 'checksums': ['23e7ec02d34237c5aa1e29a070193a4ea87583bb4e7f8fd06d3de8264c4b2e1c'], + }), + ('jupyter-telemetry', '0.1.0', { + 'source_tmpl': 'jupyter_telemetry-%(version)s.tar.gz', + 'checksums': ['445c613ae3df70d255fe3de202f936bba8b77b4055c43207edf22468ac875314'], + }), + ('prometheus_client', '0.20.0', { + 'checksums': ['287629d00b147a32dcb2be0b9df905da599b2d82f80377083ec8463309a4bb89'], + }), + ('jupyterhub', version, { + 'checksums': ['63ba1fc718436c151946a58a3b403ec4fe8b3f624fb195bc1d8e70c39b33e194'], + }), + ('batchspawner', '1.3.0', { + 'checksums': ['c0f422eb6a6288f7f711db8b780055b37c1a5c630283cdeb2ef9b5e94ba78caa'], + }), + ('jupyterhub-systemdspawner', '1.0.1', { + 'modulename': 'systemdspawner', + 'checksums': ['8d614f19d89564321fe55d80ecd134a0e2bf276274d45861495c9bb5a80add28'], + }), + ('jupyterhub-simplespawner', '0.1', { + 'modulename': 'simplespawner', + 'checksums': ['5fcc295b310dd7a99c0f00226be311121fd99b36a5d127e8685f3ffa29712d0d'], + }), + ('ldap3', '2.9.1', { + 'checksums': ['f3e7fc4718e3f09dda568b57100095e0ce58633bcabbed8667ce3f8fbaa4229f'], + }), + ('jupyterhub-ldapauthenticator', '1.3.2', { + 'modulename': 'ldapauthenticator', + 'checksums': ['758081bbdb28b26313bb18c9d8aa2b8fcdc9162e4d3ab196c626567e64f1ab8b'], + }), + ('PyJWT', '2.8.0', { + 'modulename': 'jwt', + 'checksums': ['57e28d156e3d5c10088e0c68abb90bfac3df82b40a71bd0daa20c65ccd5c23de'], + }), + ('jupyterhub-jwtauthenticator-v2', '2.0.3', { + 'modulename': 'jwtauthenticator', + 'checksums': ['b94b6dff8246250904c5ee511da3f062680eb657dabe766d75993cbe72747d41'], + }), + ('onetimepass', '1.0.1', { + 'checksums': ['a569dac076d6e3761cbc55e36952144a637ca1b075c6d509de1c1dbc5e7f6a27'], + }), + ('jupyterhub-nativeauthenticator', '1.2.0', { + 'modulename': 'nativeauthenticator', + 'checksums': ['826228e6e9ca37736361e2e60c5723e245ec72e34fdc42cc218fc54a67f968e1'], + }), +] + +sanity_check_paths = { + 'files': ['bin/%(namelower)s'], + 'dirs': ['lib/python%(pyshortver)s/site-packages/%(namelower)s'], +} + +sanity_check_commands = ['%(namelower)s --help'] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/j/JupyterLab/JupyterLab-4.0.5-GCCcore-12.3.0.eb b/easybuild/easyconfigs/j/JupyterLab/JupyterLab-4.0.5-GCCcore-12.3.0.eb index cc3dbfb5a12..df819f0e4fc 100644 --- a/easybuild/easyconfigs/j/JupyterLab/JupyterLab-4.0.5-GCCcore-12.3.0.eb +++ b/easybuild/easyconfigs/j/JupyterLab/JupyterLab-4.0.5-GCCcore-12.3.0.eb @@ -20,18 +20,8 @@ dependencies = [ ('jupyter-server', '2.7.2'), ] -# keep user's configuration in their home directory -# note: '~' is not expanded by JupyterLab -modluafooter = """ -setenv("JUPYTERLAB_SETTINGS_DIR", pathJoin(os.getenv("HOME"), ".jupyter", "lab", "user-settings")) -setenv("JUPYTERLAB_WORKSPACES_DIR", pathJoin(os.getenv("HOME"), ".jupyter", "lab", "workspaces")) -""" -modtclfooter = """ -setenv JUPYTERLAB_SETTINGS_DIR "$::env(HOME)/.jupyter/lab/user-settings" -setenv JUPYTERLAB_WORKSPACES_DIR "$::env(HOME)/.jupyter/lab/workspaces" -""" -sanity_pip_check = True use_pip = True +sanity_pip_check = True exts_list = [ ('json5', '0.9.14', { @@ -51,20 +41,28 @@ exts_list = [ }), ] -local_binaries = [ - 'jupyter-lab', - 'jupyter-labextension', - 'jupyter-labhub', -] sanity_check_paths = { - 'files': [], + 'files': ['bin/jupyter-lab', 'bin/jupyter-labextension', 'bin/jupyter-labhub'], 'dirs': ['etc/jupyter', 'share/jupyter'], } sanity_check_commands = ['jupyter lab --help'] modextrapaths = {'EB_ENV_JUPYTER_ROOT': ''} +modextravars = { + # only one path allowed as JUPYTERLAB_DIR + 'JUPYTERLAB_DIR': '%(installdir)s/share/jupyter/lab', +} -modextravars = {'JUPYTERLAB_DIR': '%(installdir)s/share/jupyter/lab'} +# keep user's configuration in their home directory +# note: '~' is not expanded by JupyterLab +modluafooter = """ +setenv("JUPYTERLAB_SETTINGS_DIR", pathJoin(os.getenv("HOME"), ".jupyter", "lab", "user-settings")) +setenv("JUPYTERLAB_WORKSPACES_DIR", pathJoin(os.getenv("HOME"), ".jupyter", "lab", "workspaces")) +""" +modtclfooter = """ +setenv JUPYTERLAB_SETTINGS_DIR "$::env(HOME)/.jupyter/lab/user-settings" +setenv JUPYTERLAB_WORKSPACES_DIR "$::env(HOME)/.jupyter/lab/workspaces" +""" moduleclass = 'tools' diff --git a/easybuild/easyconfigs/j/JupyterLab/JupyterLab-4.2.0-GCCcore-13.2.0.eb b/easybuild/easyconfigs/j/JupyterLab/JupyterLab-4.2.0-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..8410c3f15b8 --- /dev/null +++ b/easybuild/easyconfigs/j/JupyterLab/JupyterLab-4.2.0-GCCcore-13.2.0.eb @@ -0,0 +1,78 @@ +easyblock = 'PythonBundle' + +name = 'JupyterLab' +version = '4.2.0' + +homepage = 'https://jupyter.org/' +description = """JupyterLab is the next-generation user interface for Project Jupyter offering all the familiar + building blocks of the classic Jupyter Notebook (notebook, terminal, text editor, file browser, rich outputs, + etc.) in a flexible and powerful user interface. JupyterLab will eventually replace the classic Jupyter + Notebook.""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +builddependencies = [ + ('binutils', '2.40'), + ('hatch-jupyter-builder', '0.9.1'), +] +dependencies = [ + ('Python', '3.11.5'), + ('IPython', '8.17.2'), + ('jupyter-server', '2.14.0'), +] + +use_pip = True +sanity_pip_check = True + +exts_list = [ + ('json5', '0.9.25', { + 'checksums': ['548e41b9be043f9426776f05df8635a00fe06104ea51ed24b67f908856e151ae'], + }), + ('jupyterlab_server', '2.27.1', { + 'checksums': ['097b5ac709b676c7284ac9c5e373f11930a561f52cd5a86e4fc7e5a9c8a8631d'], + }), + ('jupyter-lsp', '2.2.5', { + 'checksums': ['793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001'], + }), + ('async-lru', '2.0.4', { + 'checksums': ['b8a59a5df60805ff63220b2a0c5b5393da5521b113cd5465a44eb037d81a5627'], + }), + ('h11', '0.14.0', { + 'checksums': ['8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d'], + }), + ('httpcore', '1.0.5', { + 'checksums': ['34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61'], + }), + ('httpx', '0.27.0', { + 'checksums': ['a0cb88a46f32dc874e04ee956e4c2764aba2aa228f650b06788ba6bda2962ab5'], + }), + ('jupyterlab', version, { + 'checksums': ['356e9205a6a2ab689c47c8fe4919dba6c076e376d03f26baadc05748c2435dd5'], + }), +] + +sanity_check_paths = { + 'files': ['bin/jupyter-lab', 'bin/jupyter-labextension', 'bin/jupyter-labhub'], + 'dirs': ['etc/jupyter', 'share/jupyter'], +} + +sanity_check_commands = ['jupyter lab --help'] + +modextrapaths = {'EB_ENV_JUPYTER_ROOT': ''} +modextravars = { + # only one path allowed as JUPYTERLAB_DIR + 'JUPYTERLAB_DIR': '%(installdir)s/share/jupyter/lab', +} + +# keep user's configuration in their home directory +# note: '~' is not expanded by JupyterLab +modluafooter = """ +setenv("JUPYTERLAB_SETTINGS_DIR", pathJoin(os.getenv("HOME"), ".jupyter", "lab", "user-settings")) +setenv("JUPYTERLAB_WORKSPACES_DIR", pathJoin(os.getenv("HOME"), ".jupyter", "lab", "workspaces")) +""" +modtclfooter = """ +setenv JUPYTERLAB_SETTINGS_DIR "$::env(HOME)/.jupyter/lab/user-settings" +setenv JUPYTERLAB_WORKSPACES_DIR "$::env(HOME)/.jupyter/lab/workspaces" +""" + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/j/JupyterNotebook/JupyterNotebook-7.2.0-GCCcore-13.2.0.eb b/easybuild/easyconfigs/j/JupyterNotebook/JupyterNotebook-7.2.0-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..a391a9329e2 --- /dev/null +++ b/easybuild/easyconfigs/j/JupyterNotebook/JupyterNotebook-7.2.0-GCCcore-13.2.0.eb @@ -0,0 +1,42 @@ +easyblock = 'PythonPackage' + +name = 'JupyterNotebook' +version = '7.2.0' + +homepage = 'https://jupyter.org/' +description = """The Jupyter Notebook is the original web application for creating and + sharing computational documents. It offers a simple, streamlined, document-centric experience.""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +source_urls = ['https://pypi.python.org/packages/source/n/notebook'] +sources = ['notebook-%(version)s.tar.gz'] +checksums = ['34a2ba4b08ad5d19ec930db7484fb79746a1784be9e1a5f8218f9af8656a141f'] + +builddependencies = [ + ('binutils', '2.40'), + ('hatch-jupyter-builder', '0.9.1'), +] +dependencies = [ + ('Python', '3.11.5'), + ('IPython', '8.17.2'), + ('jupyter-server', '2.14.0'), + ('JupyterLab', '4.2.0'), +] + +download_dep_fail = True +sanity_pip_check = True +use_pip = True + +options = {'modulename': 'notebook'} + +sanity_check_paths = { + 'files': ['bin/jupyter-notebook'], + 'dirs': ['etc/jupyter', 'share/jupyter'], +} + +sanity_check_commands = ['jupyter notebook --help'] + +modextrapaths = {'EB_ENV_JUPYTER_ROOT': ''} + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/j/jbigkit/jbigkit-2.1-GCCcore-13.3.0.eb b/easybuild/easyconfigs/j/jbigkit/jbigkit-2.1-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..ae9f9537e31 --- /dev/null +++ b/easybuild/easyconfigs/j/jbigkit/jbigkit-2.1-GCCcore-13.3.0.eb @@ -0,0 +1,45 @@ +easyblock = 'MakeCp' + +name = 'jbigkit' +version = '2.1' + +homepage = 'https://www.cl.cam.ac.uk/~mgk25/jbigkit/' +description = """JBIG-KIT is a software implementation of the JBIG1 data + compression standard (ITU-T T.82), which was designed for bi-level image + data, such as scanned documents.""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://www.cl.cam.ac.uk/~mgk25/jbigkit/download'] +sources = [SOURCE_TAR_GZ] +patches = [ + '%(name)s-%(version)s_libpath.patch', + '%(name)s-%(version)s_shlib.patch', +] +checksums = [ + {'jbigkit-2.1.tar.gz': 'de7106b6bfaf495d6865c7dd7ac6ca1381bd12e0d81405ea81e7f2167263d932'}, + {'jbigkit-2.1_libpath.patch': '97c88956090097b484fcdb90e12eab82212e67ddc862f035d7c6446a696786ce'}, + {'jbigkit-2.1_shlib.patch': '54ae429e8ec949eceee0f902b676f572f1cdfbff46f77c7222acdeafb643a696'}, +] + +builddependencies = [ + ('binutils', '2.42'), + ('pkgconf', '2.2.0'), +] + +files_to_copy = [ + (['libjbig/libjbig%s.%s' % (x, y) for x in ['85', ''] for y in ['a', SHLIB_EXT, SHLIB_EXT + '.0']], 'lib'), + (['libjbig/jbig85.h', 'libjbig/jbig.h', 'libjbig/jbig_ar.h'], 'include'), + (['pbmtools/pbmtojbg', 'pbmtools/jbgtopbm'], 'bin'), +] + +sanity_check_paths = { + 'files': ['lib/libjbig85.a', 'lib/libjbig.a', + 'bin/pbmtojbg', 'bin/jbgtopbm', + 'include/jbig.h', 'include/jbig_ar.h', + ], + 'dirs': ['bin', 'include', 'lib'] +} + +moduleclass = 'vis' diff --git a/easybuild/easyconfigs/j/jemalloc/jemalloc-5.3.0-GCCcore-12.3.0.eb b/easybuild/easyconfigs/j/jemalloc/jemalloc-5.3.0-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..356d56465fa --- /dev/null +++ b/easybuild/easyconfigs/j/jemalloc/jemalloc-5.3.0-GCCcore-12.3.0.eb @@ -0,0 +1,37 @@ +easyblock = 'ConfigureMake' + +name = 'jemalloc' +version = '5.3.0' + +homepage = 'http://jemalloc.net' +description = """jemalloc is a general purpose malloc(3) implementation that emphasizes fragmentation avoidance and + scalable concurrency support.""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +source_urls = ['https://github.com/jemalloc/jemalloc/archive'] +sources = ['%(version)s.tar.gz'] +checksums = ['ef6f74fd45e95ee4ef7f9e19ebe5b075ca6b7fbe0140612b2a161abafb7ee179'] + +builddependencies = [ + ('Autotools', '20220317'), + ('binutils', '2.40'), +] + +# From version 5.2.1 (or maybe earlier) it does no longer build, +# nor try to install, documentation if xsltproc is missing. +# So we can use normal installation. +preconfigopts = "./autogen.sh && " +configopts = "--with-version=%(version)s-0-g0000 " # build with version info + +sanity_check_paths = { + 'files': ['bin/jeprof', 'lib/libjemalloc.a', 'lib/libjemalloc_pic.a', 'lib/libjemalloc.%s' % SHLIB_EXT, + 'include/jemalloc/jemalloc.h'], + 'dirs': [], +} + +# jemalloc can be used via $LD_PRELOAD, but we don't enable this by +# default, you need to opt-in to it +# modextrapaths = {'LD_PRELOAD': ['lib/libjemalloc.%s' % SHLIB_EXT]} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/j/jiter/jiter-0.4.1-GCCcore-12.3.0.eb b/easybuild/easyconfigs/j/jiter/jiter-0.4.1-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..8ff0092960e --- /dev/null +++ b/easybuild/easyconfigs/j/jiter/jiter-0.4.1-GCCcore-12.3.0.eb @@ -0,0 +1,191 @@ +easyblock = 'CargoPythonBundle' + +name = 'jiter' +version = '0.4.1' + +homepage = 'https://github.com/pydantic/jiter/tree/main' +description = "Fast iterable JSON parser" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +crates = [ + ('ahash', '0.8.11'), + ('autocfg', '1.3.0'), + ('bencher', '0.1.5'), + ('bitflags', '2.5.0'), + ('bitvec', '1.0.1'), + ('cfg-if', '1.0.0'), + ('codspeed', '2.6.0'), + ('codspeed-bencher-compat', '2.6.0'), + ('colored', '2.1.0'), + ('equivalent', '1.0.1'), + ('funty', '2.0.0'), + ('getrandom', '0.2.15'), + ('hashbrown', '0.14.5'), + ('heck', '0.4.1'), + ('indexmap', '2.2.6'), + ('indoc', '2.0.5'), + ('itoa', '1.0.11'), + ('lazy_static', '1.4.0'), + ('lexical-parse-float', '0.8.5'), + ('lexical-parse-integer', '0.8.6'), + ('lexical-util', '0.8.5'), + ('libc', '0.2.155'), + ('lock_api', '0.4.12'), + ('memoffset', '0.9.1'), + ('num-bigint', '0.4.5'), + ('num-integer', '0.1.46'), + ('num-traits', '0.2.19'), + ('once_cell', '1.19.0'), + ('parking_lot', '0.12.3'), + ('parking_lot_core', '0.9.10'), + ('paste', '1.0.15'), + ('portable-atomic', '1.6.0'), + ('proc-macro2', '1.0.84'), + ('pyo3', '0.21.2'), + ('pyo3-build-config', '0.21.2'), + ('pyo3-ffi', '0.21.2'), + ('pyo3-macros', '0.21.2'), + ('pyo3-macros-backend', '0.21.2'), + ('quote', '1.0.36'), + ('radium', '0.7.0'), + ('redox_syscall', '0.5.1'), + ('ryu', '1.0.18'), + ('scopeguard', '1.2.0'), + ('serde', '1.0.203'), + ('serde_derive', '1.0.203'), + ('serde_json', '1.0.117'), + ('smallvec', '1.13.2'), + ('static_assertions', '1.1.0'), + ('syn', '2.0.66'), + ('tap', '1.0.1'), + ('target-lexicon', '0.12.14'), + ('unicode-ident', '1.0.12'), + ('unindent', '0.2.3'), + ('version_check', '0.9.4'), + ('wasi', '0.11.0+wasi-snapshot-preview1'), + ('windows-sys', '0.48.0'), + ('windows-targets', '0.48.5'), + ('windows-targets', '0.52.5'), + ('windows_aarch64_gnullvm', '0.48.5'), + ('windows_aarch64_gnullvm', '0.52.5'), + ('windows_aarch64_msvc', '0.48.5'), + ('windows_aarch64_msvc', '0.52.5'), + ('windows_i686_gnu', '0.48.5'), + ('windows_i686_gnu', '0.52.5'), + ('windows_i686_gnullvm', '0.52.5'), + ('windows_i686_msvc', '0.48.5'), + ('windows_i686_msvc', '0.52.5'), + ('windows_x86_64_gnu', '0.48.5'), + ('windows_x86_64_gnu', '0.52.5'), + ('windows_x86_64_gnullvm', '0.48.5'), + ('windows_x86_64_gnullvm', '0.52.5'), + ('windows_x86_64_msvc', '0.48.5'), + ('windows_x86_64_msvc', '0.52.5'), + ('wyz', '0.5.1'), + ('zerocopy', '0.7.34'), + ('zerocopy-derive', '0.7.34'), +] + +sources = [SOURCE_TAR_GZ] +checksums = [ + {'jiter-0.4.1.tar.gz': '741851cf5f37cf3583f2a56829d734c9fd17334770c9a326e6d25291603d4278'}, + {'ahash-0.8.11.tar.gz': 'e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011'}, + {'autocfg-1.3.0.tar.gz': '0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0'}, + {'bencher-0.1.5.tar.gz': '7dfdb4953a096c551ce9ace855a604d702e6e62d77fac690575ae347571717f5'}, + {'bitflags-2.5.0.tar.gz': 'cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1'}, + {'bitvec-1.0.1.tar.gz': '1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c'}, + {'cfg-if-1.0.0.tar.gz': 'baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd'}, + {'codspeed-2.6.0.tar.gz': '3a104ac948e0188b921eb3fcbdd55dcf62e542df4c7ab7e660623f6288302089'}, + {'codspeed-bencher-compat-2.6.0.tar.gz': 'ceaba84ea2634603a0f199c07fa39ff4dda61f89a3f9149fb89b035bc317b671'}, + {'colored-2.1.0.tar.gz': 'cbf2150cce219b664a8a70df7a1f933836724b503f8a413af9365b4dcc4d90b8'}, + {'equivalent-1.0.1.tar.gz': '5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5'}, + {'funty-2.0.0.tar.gz': 'e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c'}, + {'getrandom-0.2.15.tar.gz': 'c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7'}, + {'hashbrown-0.14.5.tar.gz': 'e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1'}, + {'heck-0.4.1.tar.gz': '95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8'}, + {'indexmap-2.2.6.tar.gz': '168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26'}, + {'indoc-2.0.5.tar.gz': 'b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5'}, + {'itoa-1.0.11.tar.gz': '49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b'}, + {'lazy_static-1.4.0.tar.gz': 'e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646'}, + {'lexical-parse-float-0.8.5.tar.gz': '683b3a5ebd0130b8fb52ba0bdc718cc56815b6a097e28ae5a6997d0ad17dc05f'}, + {'lexical-parse-integer-0.8.6.tar.gz': '6d0994485ed0c312f6d965766754ea177d07f9c00c9b82a5ee62ed5b47945ee9'}, + {'lexical-util-0.8.5.tar.gz': '5255b9ff16ff898710eb9eb63cb39248ea8a5bb036bea8085b1a767ff6c4e3fc'}, + {'libc-0.2.155.tar.gz': '97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c'}, + {'lock_api-0.4.12.tar.gz': '07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17'}, + {'memoffset-0.9.1.tar.gz': '488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a'}, + {'num-bigint-0.4.5.tar.gz': 'c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7'}, + {'num-integer-0.1.46.tar.gz': '7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f'}, + {'num-traits-0.2.19.tar.gz': '071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841'}, + {'once_cell-1.19.0.tar.gz': '3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92'}, + {'parking_lot-0.12.3.tar.gz': 'f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27'}, + {'parking_lot_core-0.9.10.tar.gz': '1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8'}, + {'paste-1.0.15.tar.gz': '57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a'}, + {'portable-atomic-1.6.0.tar.gz': '7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0'}, + {'proc-macro2-1.0.84.tar.gz': 'ec96c6a92621310b51366f1e28d05ef11489516e93be030060e5fc12024a49d6'}, + {'pyo3-0.21.2.tar.gz': 'a5e00b96a521718e08e03b1a622f01c8a8deb50719335de3f60b3b3950f069d8'}, + {'pyo3-build-config-0.21.2.tar.gz': '7883df5835fafdad87c0d888b266c8ec0f4c9ca48a5bed6bbb592e8dedee1b50'}, + {'pyo3-ffi-0.21.2.tar.gz': '01be5843dc60b916ab4dad1dca6d20b9b4e6ddc8e15f50c47fe6d85f1fb97403'}, + {'pyo3-macros-0.21.2.tar.gz': '77b34069fc0682e11b31dbd10321cbf94808394c56fd996796ce45217dfac53c'}, + {'pyo3-macros-backend-0.21.2.tar.gz': '08260721f32db5e1a5beae69a55553f56b99bd0e1c3e6e0a5e8851a9d0f5a85c'}, + {'quote-1.0.36.tar.gz': '0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7'}, + {'radium-0.7.0.tar.gz': 'dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09'}, + {'redox_syscall-0.5.1.tar.gz': '469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e'}, + {'ryu-1.0.18.tar.gz': 'f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f'}, + {'scopeguard-1.2.0.tar.gz': '94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49'}, + {'serde-1.0.203.tar.gz': '7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094'}, + {'serde_derive-1.0.203.tar.gz': '500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba'}, + {'serde_json-1.0.117.tar.gz': '455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3'}, + {'smallvec-1.13.2.tar.gz': '3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67'}, + {'static_assertions-1.1.0.tar.gz': 'a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f'}, + {'syn-2.0.66.tar.gz': 'c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5'}, + {'tap-1.0.1.tar.gz': '55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369'}, + {'target-lexicon-0.12.14.tar.gz': 'e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f'}, + {'unicode-ident-1.0.12.tar.gz': '3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b'}, + {'unindent-0.2.3.tar.gz': 'c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce'}, + {'version_check-0.9.4.tar.gz': '49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f'}, + {'wasi-0.11.0+wasi-snapshot-preview1.tar.gz': '9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423'}, + {'windows-sys-0.48.0.tar.gz': '677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9'}, + {'windows-targets-0.48.5.tar.gz': '9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c'}, + {'windows-targets-0.52.5.tar.gz': '6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb'}, + {'windows_aarch64_gnullvm-0.48.5.tar.gz': '2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8'}, + {'windows_aarch64_gnullvm-0.52.5.tar.gz': '7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263'}, + {'windows_aarch64_msvc-0.48.5.tar.gz': 'dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc'}, + {'windows_aarch64_msvc-0.52.5.tar.gz': '9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6'}, + {'windows_i686_gnu-0.48.5.tar.gz': 'a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e'}, + {'windows_i686_gnu-0.52.5.tar.gz': '88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670'}, + {'windows_i686_gnullvm-0.52.5.tar.gz': '87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9'}, + {'windows_i686_msvc-0.48.5.tar.gz': '8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406'}, + {'windows_i686_msvc-0.52.5.tar.gz': 'db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf'}, + {'windows_x86_64_gnu-0.48.5.tar.gz': '53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e'}, + {'windows_x86_64_gnu-0.52.5.tar.gz': '4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9'}, + {'windows_x86_64_gnullvm-0.48.5.tar.gz': '0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc'}, + {'windows_x86_64_gnullvm-0.52.5.tar.gz': '852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596'}, + {'windows_x86_64_msvc-0.48.5.tar.gz': 'ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538'}, + {'windows_x86_64_msvc-0.52.5.tar.gz': 'bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0'}, + {'wyz-0.5.1.tar.gz': '05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed'}, + {'zerocopy-0.7.34.tar.gz': 'ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087'}, + {'zerocopy-derive-0.7.34.tar.gz': '15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b'}, +] + +_rust_ver = '1.75.0' +builddependencies = [ + ('binutils', '2.40'), + ('Rust', _rust_ver), + ('maturin', '1.4.0', '-Rust-%s' % _rust_ver), +] + +dependencies = [ + ('Python', '3.11.3'), +] + +use_pip = True +sanity_pip_check = True + +exts_list = [ + (name, version, { + 'checksums': ['741851cf5f37cf3583f2a56829d734c9fd17334770c9a326e6d25291603d4278'], + }), +] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/j/jupyter-contrib-nbextensions/jupyter-contrib-nbextensions-0.7.0-GCCcore-12.3.0.eb b/easybuild/easyconfigs/j/jupyter-contrib-nbextensions/jupyter-contrib-nbextensions-0.7.0-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..1e0ea2bdea5 --- /dev/null +++ b/easybuild/easyconfigs/j/jupyter-contrib-nbextensions/jupyter-contrib-nbextensions-0.7.0-GCCcore-12.3.0.eb @@ -0,0 +1,62 @@ +easyblock = "PythonBundle" + +name = 'jupyter-contrib-nbextensions' +version = '0.7.0' + +homepage = 'https://github.com/ipython-contrib/jupyter_contrib_nbextensions' +description = 'A collection of various notebook extensions for Jupyter' + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +builddependencies = [ + ('binutils', '2.40'), + ('nodejs', '18.17.1'), +] + +dependencies = [ + ('Python', '3.11.3'), + ('IPython', '8.14.0'), + ('PyYAML', '6.0'), + ('jupyter-server', '2.7.2'), +] + +use_pip = True + +exts_list = [ + ('entrypoints', '0.4', { + 'checksums': ['b706eddaa9218a19ebcd67b56818f05bb27589b1ca9e8d797b74affad4ccacd4'], + }), + ('nbclassic', '1.0.0', { + 'checksums': ['0ae11eb2319455d805596bf320336cda9554b41d99ab9a3c31bf8180bffa30e3'], + }), + # need jupyter_client in v7 - notebook 6.5.7 has requirement jupyter-client<8,>=5.3.4 + ('jupyter_client', '7.4.9', { + 'checksums': ['52be28e04171f07aed8f20e1616a5a552ab9fee9cbbe6c1896ae170c3880d392'], + }), + # use notebook v6, in v7 the extension are moved to jupyter lab + ('notebook', '6.5.7', { + 'checksums': ['04eb9011dfac634fbd4442adaf0a8c27cd26beef831fe1d19faf930c327768e4'], + }), + ('jupyter_contrib_core', '0.4.2', { + 'checksums': ['1887212f3ca9d4487d624c0705c20dfdf03d5a0b9ea2557d3aaeeb4c38bdcabb'], + }), + ('jupyter_highlight_selected_word', '0.2.0', { + 'checksums': ['9fa740424859a807950ca08d2bfd28a35154cd32dd6d50ac4e0950022adc0e7b'], + }), + ('jupyter_nbextensions_configurator', '0.6.3', { + 'source_tmpl': '%(name)s-%(version)s-py2.py3-none-any.whl', + 'checksums': ['cece496f3f62cf80bb0b04867ea463c32ed5db19ff5814fe18a3a7f1bb9da95b'], + }), + ('jupyter_contrib_nbextensions', version, { + 'checksums': ['06e33f005885eb92f89cbe82711e921278201298d08ab0d886d1ba09e8c3e9ca'], + }), +] + +sanity_pip_check = True + +sanity_check_paths = { + 'files': ['bin/jupyter-contrib', 'bin/jupyter-contrib-nbextension', 'bin/jupyter-nbextensions_configurator'], + 'dirs': ['lib64/python%(pyshortver)s/site-packages'] +} + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/j/jupyter-matlab-proxy/jupyter-matlab-proxy-0.12.2-GCCcore-12.3.0.eb b/easybuild/easyconfigs/j/jupyter-matlab-proxy/jupyter-matlab-proxy-0.12.2-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..095d491ef49 --- /dev/null +++ b/easybuild/easyconfigs/j/jupyter-matlab-proxy/jupyter-matlab-proxy-0.12.2-GCCcore-12.3.0.eb @@ -0,0 +1,48 @@ +easyblock = "PythonBundle" + +name = 'jupyter-matlab-proxy' +version = '0.12.2' + +homepage = 'https://github.com/mathworks/jupyter-matlab-proxy' +description = 'MATLAB Integration for Jupyter' + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +builddependencies = [ + ('binutils', '2.40'), + ('nodejs', '18.17.1'), +] + +dependencies = [ + ('Python', '3.11.3'), + ('IPython', '8.14.0'), + ('jupyter-server-proxy', '4.0.0'), + ('matlab-proxy', '0.18.1'), +] + +use_pip = True + +exts_list = [ + ('jupyter_matlab_proxy', version, { + 'sources': ['%(name)s-%(version)s-py3-none-any.whl'], + 'checksums': ['2f1fcb8cba3b60ceccfbaa118ce1de0ca54d6c630c6d6ec61c052dca7f62cb6b'], + }), +] + +sanity_pip_check = True + +sanity_check_paths = { + 'files': [], + 'dirs': ['lib/python%(pyshortver)s/site-packages', 'share/jupyter'], +} + +sanity_check_commands = [ + "python -c 'import jupyter_matlab_proxy'", + "python -c 'import jupyter_matlab_kernel'", +] + +modextrapaths = { + 'JUPYTER_PATH': 'share/jupyter', +} + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/j/jupyter-resource-usage/jupyter-resource-usage-1.0.2-GCCcore-13.2.0.eb b/easybuild/easyconfigs/j/jupyter-resource-usage/jupyter-resource-usage-1.0.2-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..3062f3f80b5 --- /dev/null +++ b/easybuild/easyconfigs/j/jupyter-resource-usage/jupyter-resource-usage-1.0.2-GCCcore-13.2.0.eb @@ -0,0 +1,41 @@ +easyblock = 'PythonBundle' + +name = 'jupyter-resource-usage' +version = "1.0.2" + +homepage = 'https://github.com/jupyter-server/jupyter-resource-usage' +description = "Jupyter Notebook Extension for monitoring your own Resource Usage (memory and/or CPU)" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +builddependencies = [ + ('binutils', '2.40'), + ('hatch-jupyter-builder', '0.9.1'), +] +dependencies = [ + ('Python', '3.11.5'), + ('IPython', '8.17.2'), + ('jupyter-server', '2.14.0'), +] + +sanity_pip_check = True +use_pip = True + +exts_list = [ + ('jupyter_resource_usage', version, { + 'checksums': ['20babc5a63fd53724b12e50b9046ca07784fb56004c39d0442990116fb925a4b'], + }), +] + +sanity_check_paths = { + 'files': [], + 'dirs': [ + 'lib/python%(pyshortver)s/site-packages/jupyter_resource_usage', + 'share/jupyter' + ], +} + +# Add the notebook extension to the search path for jupyter notebooks +modextrapaths = {'EB_ENV_JUPYTER_ROOT': ''} + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/j/jupyter-rsession-proxy/jupyter-rsession-proxy-2.2.0-GCCcore-12.3.0.eb b/easybuild/easyconfigs/j/jupyter-rsession-proxy/jupyter-rsession-proxy-2.2.0-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..8a4e803d985 --- /dev/null +++ b/easybuild/easyconfigs/j/jupyter-rsession-proxy/jupyter-rsession-proxy-2.2.0-GCCcore-12.3.0.eb @@ -0,0 +1,29 @@ +easyblock = "PythonPackage" + +name = 'jupyter-rsession-proxy' +version = '2.2.0' + +homepage = 'https://github.com/jupyterhub/jupyter-rsession-proxy' +description = "Jupyter extensions for running an RStudio rsession proxy" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +source_urls = [PYPI_LOWER_SOURCE] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['4073f4b4241fe6e976de2c3d49a438b7d82589712e9ee06c19f325a8ec557018'] + +builddependencies = [ + ('binutils', '2.40'), +] + +dependencies = [ + ('Python', '3.11.3'), + ('jupyter-server-proxy', '4.0.0'), +] + +download_dep_fail = True + +use_pip = True +sanity_pip_check = True + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/j/jupyter-server-proxy/jupyter-server-proxy-4.1.2-GCCcore-13.2.0.eb b/easybuild/easyconfigs/j/jupyter-server-proxy/jupyter-server-proxy-4.1.2-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..c71b66da33e --- /dev/null +++ b/easybuild/easyconfigs/j/jupyter-server-proxy/jupyter-server-proxy-4.1.2-GCCcore-13.2.0.eb @@ -0,0 +1,43 @@ +easyblock = 'PythonBundle' + +name = 'jupyter-server-proxy' +version = '4.1.2' + +homepage = 'https://github.com/jupyterhub/jupyter-server-proxy' +description = """Jupyter Server Proxy lets you run arbitrary external processes +(such as RStudio, Shiny Server, Syncthing, PostgreSQL, Code Server, etc) +alongside your notebook server and provide authenticated web access to them +using a path like /rstudio next to others like /lab. Alongside the python +package that provides the main functionality, the JupyterLab extension +(@jupyterlab/server-proxy) provides buttons in the JupyterLab launcher window +to get to RStudio for example.""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +builddependencies = [ + ('binutils', '2.40'), + ('hatch-jupyter-builder', '0.9.1'), +] +dependencies = [ + ('Python', '3.11.5'), + ('IPython', '8.17.2'), + ('jupyter-server', '2.14.0'), + ('OpenSSL', '1.1', '', SYSTEM), + ('aiohttp', '3.9.5'), +] + +sanity_pip_check = True +use_pip = True + +exts_list = [ + ('simpervisor', '1.0.0', { + 'checksums': ['7eb87ca86d5e276976f5bb0290975a05d452c6a7b7f58062daea7d8369c823c1'], + }), + ('jupyter_server_proxy', version, { + 'checksums': ['6fd8ce88a0100e637b48f1d3aa32f09672bcb2813dc057d70567f0a40b1237f5'], + }), +] + +modextrapaths = {'EB_ENV_JUPYTER_ROOT': ''} + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/j/jupyter-server/jupyter-core-5.7.2_fix_jupyter_path.patch b/easybuild/easyconfigs/j/jupyter-server/jupyter-core-5.7.2_fix_jupyter_path.patch new file mode 100644 index 00000000000..04788ab7eb6 --- /dev/null +++ b/easybuild/easyconfigs/j/jupyter-server/jupyter-core-5.7.2_fix_jupyter_path.patch @@ -0,0 +1,32 @@ +# Patch jupyter_core to help jupyter find the correct installation path. +# +# If jupyter is installed by EasyBuild, jupyter is not in the same place as python. +# `EB_ENV_JUPYTER_ROOT` is used to indicate where jupyter are and should be set to +# the instllation path in easyconfigs. +# Avoid using `ENV_JUPYTER_PATH` and `ENV_CONFIG_PATH`. Otherwise user configuration +# has lower priority and cannot save their own settings. +# Author: Chia-Jung Hsu, 2024-01-31 +--- a/jupyter_core/paths.py ++++ b/jupyter_core/paths.py +@@ -228,6 +228,10 @@ + + ENV_JUPYTER_PATH: list[str] = [str(Path(sys.prefix, "share", "jupyter"))] + ++if os.environ.get("EB_ENV_JUPYTER_ROOT"): ++ EB_ENV_JUPYTER_ROOT = [p.rstrip(os.sep) for p in os.environ["EB_ENV_JUPYTER_ROOT"].split(os.pathsep)] ++ ENV_JUPYTER_PATH = [str(Path(p, "share", "jupyter")) for p in EB_ENV_JUPYTER_ROOT] ++ + + def jupyter_path(*subdirs: str) -> list[str]: + """Return a list of directories to search for data files +@@ -306,6 +310,10 @@ + ] + ENV_CONFIG_PATH: list[str] = [str(Path(sys.prefix, "etc", "jupyter"))] + ++if os.environ.get("EB_ENV_JUPYTER_ROOT"): ++ EB_ENV_JUPYTER_ROOT = [p.rstrip(os.sep) for p in os.environ["EB_ENV_JUPYTER_ROOT"].split(os.pathsep)] ++ ENV_CONFIG_PATH = [str(Path(p, "etc", "jupyter")) for p in EB_ENV_JUPYTER_ROOT] ++ + + def jupyter_config_path() -> list[str]: + """Return the search path for Jupyter config files as a list. diff --git a/easybuild/easyconfigs/j/jupyter-server/jupyter-server-2.14.0-GCCcore-13.2.0.eb b/easybuild/easyconfigs/j/jupyter-server/jupyter-server-2.14.0-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..ee8dfa23154 --- /dev/null +++ b/easybuild/easyconfigs/j/jupyter-server/jupyter-server-2.14.0-GCCcore-13.2.0.eb @@ -0,0 +1,185 @@ +easyblock = 'PythonBundle' + +name = 'jupyter-server' +version = "2.14.0" + +homepage = 'https://jupyter.org/' +description = """The Jupyter Server provides the backend (i.e. the core services, APIs, and REST +endpoints) for Jupyter web applications like Jupyter notebook, JupyterLab, and +Voila.""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +builddependencies = [ + ('binutils', '2.40'), + ('maturin', '1.3.1'), # needed by rpds_py + ('hatch-jupyter-builder', '0.9.1'), +] +dependencies = [ + ('Python', '3.11.5'), + ('IPython', '8.17.2'), + ('PyYAML', '6.0.1'), + ('PyZMQ', '25.1.2'), + ('tornado', '6.4'), + ('BeautifulSoup', '4.12.2'), # needed by nbconvert +] + +sanity_pip_check = True +use_pip = True + +# WARNING: the versions of ipywidgets, widgetsnbextension and jupyterlab_widgets are tied between them +# use the versions published in a single release commit instead of blindly pushing to last available version, +# see for instance https://github.com/jupyter-widgets/ipywidgets/commit/b728926f58ed3ffef08f716998ac6c226dafc1aa + +exts_list = [ + ('websocket_client', '1.8.0', { + 'modulename': 'websocket', + 'checksums': ['3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da'], + }), + ('terminado', '0.18.1', { + 'checksums': ['de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e'], + }), + ('Send2Trash', '1.8.3', { + 'checksums': ['b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf'], + }), + ('prometheus_client', '0.20.0', { + 'checksums': ['287629d00b147a32dcb2be0b9df905da599b2d82f80377083ec8463309a4bb89'], + }), + ('overrides', '7.7.0', { + 'checksums': ['55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a'], + }), + ('jupyter_core', '5.7.2', { + 'patches': ['jupyter-core-%(version)s_fix_jupyter_path.patch'], + 'checksums': [ + {'jupyter_core-5.7.2.tar.gz': 'aa5f8d32bbf6b431ac830496da7392035d6f61b4f54872f15c4bd2a9c3f536d9'}, + {'jupyter-core-5.7.2_fix_jupyter_path.patch': + '1ed5088728c1ad49687b66e31ed23965c36645ad285693785b2b96c4ff1b2f93'}, + ], + }), + ('fastjsonschema', '2.19.1', { + 'checksums': ['e3126a94bdc4623d3de4485f8d468a12f02a67921315ddc87836d6e456dc789d'], + }), + ('tinycss2', '1.3.0', { + 'checksums': ['152f9acabd296a8375fbca5b84c961ff95971fcfc32e79550c8df8e29118c54d'], + }), + ('pandocfilters', '1.5.1', { + 'checksums': ['002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e'], + }), + ('mistune', '3.0.2', { + 'checksums': ['fc7f93ded930c92394ef2cb6f04a8aabab4117a91449e72dcc8dfa646a508be8'], + }), + ('deprecation', '2.1.0', { + 'checksums': ['72b3bde64e5d778694b0cf68178aed03d15e15477116add3fb773e581f9518ff'], + }), + ('jupyter_packaging', '0.12.3', { + 'checksums': ['9d9b2b63b97ffd67a8bc5391c32a421bc415b264a32c99e4d8d8dd31daae9cf4'], + }), + ('jupyterlab_pygments', '0.3.0', { + 'checksums': ['721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d'], + }), + ('defusedxml', '0.7.1', { + 'checksums': ['1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69'], + }), + ('bleach', '6.1.0', { + 'checksums': ['0a31f1837963c41d46bbf1331b8778e1308ea0791db03cc4e7357b97cf42a8fe'], + }), + ('nbformat', '5.10.4', { + 'checksums': ['322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a'], + }), + ('nbclient', '0.10.0', { + 'checksums': ['4b3f1b7dba531e498449c4db4f53da339c91d449dc11e9af3a43b4eb5c5abb09'], + }), + ('jupyter_client', '8.6.1', { + 'checksums': ['e842515e2bab8e19186d89fdfea7abd15e39dd581f94e399f00e2af5a1652d3f'], + }), + ('nbconvert', '7.16.4', { + 'checksums': ['86ca91ba266b0a448dc96fa6c5b9d98affabde2867b363258703536807f9f7f4'], + }), + ('jupyter_server_terminals', '0.5.3', { + 'checksums': ['5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269'], + }), + ('rfc3986_validator', '0.1.1', { + 'checksums': ['3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055'], + }), + ('rfc3339_validator', '0.1.4', { + 'checksums': ['138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b'], + }), + ('rpds_py', '0.18.1', { + 'modulename': 'rpds', + 'checksums': ['dc48b479d540770c811fbd1eb9ba2bb66951863e448efec2e2c102625328e92f'], + }), + ('referencing', '0.35.1', { + 'checksums': ['25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c'], + }), + ('python-json-logger', '2.0.7', { + 'modulename': 'pythonjsonlogger', + 'checksums': ['23e7ec02d34237c5aa1e29a070193a4ea87583bb4e7f8fd06d3de8264c4b2e1c'], + }), + ('jsonschema_specifications', '2023.12.1', { + 'checksums': ['48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc'], + }), + ('jsonschema', '4.22.0', { + 'checksums': ['5b22d434a45935119af990552c862e5d6d564e8f6601206b305a61fdf661a2b7'], + }), + ('jupyter_events', '0.10.0', { + 'checksums': ['670b8229d3cc882ec782144ed22e0d29e1c2d639263f92ca8383e66682845e22'], + }), + ('argon2-cffi-bindings', '21.2.0', { + 'modulename': '_argon2_cffi_bindings', + 'checksums': ['bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3'], + }), + ('argon2_cffi', '23.1.0', { + 'modulename': 'argon2', + 'checksums': ['879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08'], + }), + ('sniffio', '1.3.1', { + 'checksums': ['f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc'], + }), + ('anyio', '4.3.0', { + 'checksums': ['f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6'], + }), + ('jupyter_server', version, { + 'checksums': ['659154cea512083434fd7c93b7fe0897af7a2fd0b9dd4749282b42eaac4ae677'], + }), + ('jupyterlab_widgets', '3.0.10', { + 'checksums': ['04f2ac04976727e4f9d0fa91cdc2f1ab860f965e504c29dbd6a65c882c9d04c0'], + }), + ('widgetsnbextension', '4.0.10', { + 'checksums': ['64196c5ff3b9a9183a8e699a4227fb0b7002f252c814098e66c4d1cd0644688f'], + }), + ('comm', '0.2.2', { + 'checksums': ['3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e'], + }), + ('ipywidgets', '8.1.2', { + 'checksums': ['d0b9b41e49bae926a866e613a39b0f0097745d2b9f1f3dd406641b4a57ec42c9'], + }), + # The following few extensions are needed for e.g. JupyterLab but also nbclassic. + # Avoid duplication by making it part of this bundle + ('notebook_shim', '0.2.4', { + 'checksums': ['b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb'], + }), + ('nest_asyncio', '1.6.0', { + 'checksums': ['6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe'], + }), + ('ipykernel', '6.29.4', { + 'checksums': ['3d44070060f9475ac2092b760123fadf105d2e2493c24848b6691a7c4f42af5c'], + }), + ('ipython_genutils', '0.2.0', { + 'checksums': ['eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8'], + }), + ('debugpy', '1.8.1', { + 'source_tmpl': '%(name)s-%(version)s-py2.py3-none-any.whl', + 'checksums': ['28acbe2241222b87e255260c76741e1fbf04fdc3b6d094fcf57b6c6f75ce1242'], + }), +] + +sanity_check_paths = { + 'files': ['bin/jupyter'], + 'dirs': ['share/jupyter', 'etc/jupyter'], +} + +sanity_check_commands = ['jupyter --help'] + +modextrapaths = {'EB_ENV_JUPYTER_ROOT': ''} + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/j/jupyter-server/jupyter-server-2.7.2-GCCcore-12.3.0.eb b/easybuild/easyconfigs/j/jupyter-server/jupyter-server-2.7.2-GCCcore-12.3.0.eb index 53722e2f4cb..9da7cc3f037 100644 --- a/easybuild/easyconfigs/j/jupyter-server/jupyter-server-2.7.2-GCCcore-12.3.0.eb +++ b/easybuild/easyconfigs/j/jupyter-server/jupyter-server-2.7.2-GCCcore-12.3.0.eb @@ -16,7 +16,9 @@ builddependencies = [ ] dependencies = [ ('Python', '3.11.3'), + ('hatchling', '1.18.0'), # needed as dependency for hatch_jupyter_builder ('IPython', '8.14.0'), + ('BeautifulSoup', '4.12.2'), # needed by nbconvert ('PyYAML', '6.0'), ('PyZMQ', '25.1.1'), ('tornado', '6.3.2'), diff --git a/easybuild/easyconfigs/j/jxrlib/jxrlib-1.1-GCCcore-12.3.0.eb b/easybuild/easyconfigs/j/jxrlib/jxrlib-1.1-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..f8aeb2b413a --- /dev/null +++ b/easybuild/easyconfigs/j/jxrlib/jxrlib-1.1-GCCcore-12.3.0.eb @@ -0,0 +1,39 @@ +## +# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild +# Author:: Denis Kristak (INUITS) +# Update: Thomas Hoffmann (EMBL) +## + +easyblock = 'CMakeMake' + +name = 'jxrlib' +version = '1.1' + +homepage = 'https://github.com/4creators/jxrlib' +description = """Open source implementation of jpegxr""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +source_urls = ['https://deb.debian.org/debian/pool/main/j/jxrlib/'] +sources = ['%(name)s_%(version)s.orig.tar.gz'] +patches = [('jxrlib-%(version)s_cmake.patch', 1)] +checksums = [ + {'jxrlib_1.1.orig.tar.gz': 'c7287b86780befa0914f2eeb8be2ac83e672ebd4bd16dc5574a36a59d9708303'}, + {'jxrlib-1.1_cmake.patch': 'e96ea8b418fdab10e9cbc2f4cad95ca1f59a826ce7379c6a3192882050689a74'}, +] + +builddependencies = [ + ('binutils', '2.40'), + ('CMake', '3.26.3'), +] + +sanity_check_paths = { + 'files': ['bin/JxrDecApp', 'bin/JxrEncApp', "lib/libjpegxr.%s" % SHLIB_EXT], + 'dirs': [], +} + +sanity_check_commands = ['JxrDecApp', 'JxrEncApp'] + +modextrapaths = {'CPATH': 'include/jxrlib'} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/k/Kalign/Kalign-3.4.0-GCCcore-12.3.0.eb b/easybuild/easyconfigs/k/Kalign/Kalign-3.4.0-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..62ff0095f46 --- /dev/null +++ b/easybuild/easyconfigs/k/Kalign/Kalign-3.4.0-GCCcore-12.3.0.eb @@ -0,0 +1,28 @@ +# Contribution from the NIHR Biomedical Research Centre +easyblock = 'CMakeMake' + +name = 'Kalign' +version = '3.4.0' + +homepage = 'https://github.com/TimoLassmann/kalign' +description = "Kalign is a fast multiple sequence alignment program for biological sequences." + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +source_urls = ['https://github.com/TimoLassmann/kalign/archive/'] +sources = ['v%(version)s.tar.gz'] +checksums = ['67d1a562d54b3b7622cc3164588c05b9e2bf8f1a5140bb48a4e816c61a87d4a8'] + +builddependencies = [ + ('binutils', '2.40'), + ('CMake', '3.26.3'), +] + +sanity_check_paths = { + 'files': ['bin/kalign'], + 'dirs': [], +} + +sanity_check_commands = ["kalign --help"] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/k/KrakenUniq/KrakenUniq-1.0.4-GCC-12.2.0.eb b/easybuild/easyconfigs/k/KrakenUniq/KrakenUniq-1.0.4-GCC-12.2.0.eb new file mode 100644 index 00000000000..cf5cd9e7a25 --- /dev/null +++ b/easybuild/easyconfigs/k/KrakenUniq/KrakenUniq-1.0.4-GCC-12.2.0.eb @@ -0,0 +1,36 @@ +easyblock = 'Binary' + +name = 'KrakenUniq' +version = '1.0.4' + +homepage = 'https://github.com/fbreitwieser/krakenuniq/' +description = """KrakenUniq: confident and fast metagenomics classification using unique k-mer counts""" + +toolchain = {'name': 'GCC', 'version': '12.2.0'} + +github_account = 'fbreitwieser' +source_urls = [GITHUB_SOURCE] +sources = ['v%(version)s.tar.gz'] +checksums = ['5e2ef21878c1c4ce92be9925e47b9ccae0ecb59a79d71cc4cbb53d057e0de9ec'] + +dependencies = [ + ('Jellyfish', '2.3.0'), + ('Perl', '5.36.0'), + ('bzip2', '1.0.8'), + ('Compress-Raw-Zlib', '2.202'), +] + +extract_sources = True + +install_cmd = './install_krakenuniq.sh -l %(installdir)s/bin %(installdir)s ' + +sanity_check_commands = [ + 'krakenuniq --version', + 'krakenuniq-download --db %(installdir)s/DBDIR taxonomy && rm -r %(installdir)s/DBDIR' +] +sanity_check_paths = { + 'files': ['bin/krakenuniq', 'bin/krakenuniq-build', 'bin/krakenuniq-report'], + 'dirs': ['bin'], +} + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/k/kallisto/kallisto-0.50.1-gompi-2022b.eb b/easybuild/easyconfigs/k/kallisto/kallisto-0.50.1-gompi-2022b.eb new file mode 100644 index 00000000000..86bc46c567b --- /dev/null +++ b/easybuild/easyconfigs/k/kallisto/kallisto-0.50.1-gompi-2022b.eb @@ -0,0 +1,48 @@ +# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild + +easyblock = 'CMakeMake' + +name = 'kallisto' +version = '0.50.1' + +homepage = 'https://pachterlab.github.io/kallisto/' +description = """kallisto is a program for quantifying abundances of transcripts from RNA-Seq data, or more generally + of target sequences using high-throughput sequencing reads.""" + +toolchain = {'name': 'gompi', 'version': '2022b'} +toolchainopts = {'pic': True, 'usempi': True} + +github_account = 'pachterlab' +source_urls = [GITHUB_SOURCE] +sources = ['v%(version)s.tar.gz'] +checksums = [ + {'v0.50.1.tar.gz': '030752bab3b0e33cd3f23f6d8feddd74194e5513532ffbf23519e84db2a86d34'}, +] + +builddependencies = [ + ('Autotools', '20220317'), + ('CMake', '3.24.3'), + ('zlib', '1.2.12'), +] + +dependencies = [ + ('HDF5', '1.14.0'), + ('HTSlib', '1.17'), +] + +parallel = 1 + +configopts = '-DUSE_HDF5=ON' + +sanity_check_paths = { + 'files': ['bin/%(name)s'], + 'dirs': [], +} + +sanity_check_commands = [ + "kallisto version", + "cd %(builddir)s/%(name)s-%(version)s/test && kallisto index -i ts.idx transcripts.fasta.gz", + "cd %(builddir)s/%(name)s-%(version)s/test && kallisto quant -i ts.idx -o out -b 100 reads_{1,2}.fastq.gz", +] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/l/LAPACK/LAPACK-3.12.0-GCC-12.3.0.eb b/easybuild/easyconfigs/l/LAPACK/LAPACK-3.12.0-GCC-12.3.0.eb new file mode 100644 index 00000000000..d68bd9e25a5 --- /dev/null +++ b/easybuild/easyconfigs/l/LAPACK/LAPACK-3.12.0-GCC-12.3.0.eb @@ -0,0 +1,16 @@ +name = 'LAPACK' +version = '3.12.0' + +homepage = 'https://www.netlib.org/lapack/' +description = """LAPACK is written in Fortran90 and provides routines for solving systems of + simultaneous linear equations, least-squares solutions of linear systems of equations, eigenvalue + problems, and singular value problems.""" + +toolchain = {'name': 'GCC', 'version': '12.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/Reference-LAPACK/lapack/archive/'] +sources = ['v%(version)s.tar.gz'] +checksums = ['eac9570f8e0ad6f30ce4b963f4f033f0f643e7c3912fc9ee6cd99120675ad48b'] + +moduleclass = 'numlib' diff --git a/easybuild/easyconfigs/l/LAPACK/LAPACK-3.12.0-GCC-13.2.0.eb b/easybuild/easyconfigs/l/LAPACK/LAPACK-3.12.0-GCC-13.2.0.eb new file mode 100644 index 00000000000..1924c7c0697 --- /dev/null +++ b/easybuild/easyconfigs/l/LAPACK/LAPACK-3.12.0-GCC-13.2.0.eb @@ -0,0 +1,16 @@ +name = 'LAPACK' +version = '3.12.0' + +homepage = 'https://www.netlib.org/lapack/' +description = """LAPACK is written in Fortran90 and provides routines for solving systems of + simultaneous linear equations, least-squares solutions of linear systems of equations, eigenvalue + problems, and singular value problems.""" + +toolchain = {'name': 'GCC', 'version': '13.2.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/Reference-LAPACK/lapack/archive/'] +sources = ['v%(version)s.tar.gz'] +checksums = ['eac9570f8e0ad6f30ce4b963f4f033f0f643e7c3912fc9ee6cd99120675ad48b'] + +moduleclass = 'numlib' diff --git a/easybuild/easyconfigs/l/LIBSVM-MATLAB/LIBSVM-MATLAB-3.30-GCCcore-11.3.0-MATLAB-2022b-r5.eb b/easybuild/easyconfigs/l/LIBSVM-MATLAB/LIBSVM-MATLAB-3.30-GCCcore-11.3.0-MATLAB-2022b-r5.eb new file mode 100644 index 00000000000..3da0742b89c --- /dev/null +++ b/easybuild/easyconfigs/l/LIBSVM-MATLAB/LIBSVM-MATLAB-3.30-GCCcore-11.3.0-MATLAB-2022b-r5.eb @@ -0,0 +1,42 @@ +easyblock = 'MakeCp' + +name = 'LIBSVM-MATLAB' +version = '3.30' +local_matlab_ver = '2022b-r5' +versionsuffix = '-MATLAB-%s' % local_matlab_ver + +homepage = 'https://www.csie.ntu.edu.tw/~cjlin/libsvm/' +description = """MATLAB interface of LIBSVM, an integrated software for support vector classification, + (C-SVC, nu-SVC), regression (epsilon-SVR, nu-SVR) and distribution estimation (one-class SVM). + It supports multi-class classification.""" + +toolchain = {'name': 'GCCcore', 'version': '11.3.0'} +toolchainopts = {'openmp': True, 'pic': True} + +source_urls = ['https://github.com/cjlin1/libsvm/archive'] +sources = ['v%s.tar.gz' % version.replace('.', '')] +checksums = ['e4fe41308c87cc210aec73e4f5f0fb4da14234d90e7a131763fbad3788ca2d80'] + +builddependencies = [ + ('binutils', '2.38'), +] +dependencies = [ + ('MATLAB', local_matlab_ver, '', SYSTEM), +] + +start_dir = 'matlab' + +buildopts = "MATLABDIR=$EBROOTMATLAB" + +files_to_copy = [ + (['matlab/*.mexa64'], ''), +] + +sanity_check_paths = { + 'files': ['libsvmwrite.mexa64', 'libsvmread.mexa64', 'svmpredict.mexa64', 'svmtrain.mexa64'], + 'dirs': [], +} + +modextrapaths = {'MATLABPATH': ''} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/l/LangChain/LangChain-0.2.1-foss-2023a.eb b/easybuild/easyconfigs/l/LangChain/LangChain-0.2.1-foss-2023a.eb new file mode 100644 index 00000000000..640990af4c3 --- /dev/null +++ b/easybuild/easyconfigs/l/LangChain/LangChain-0.2.1-foss-2023a.eb @@ -0,0 +1,67 @@ +easyblock = 'PythonBundle' + +name = 'LangChain' +version = '0.2.1' +_rust_ver = '1.75.0' + +homepage = 'https://github.com/langchain-ai/langchain' +description = """ +LangChain is a framework for developing applications powered by large language models (LLMs). +""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +builddependencies = [ + ('hatchling', '1.18.0'), + ('Rust', _rust_ver), + ('maturin', '1.4.0', '-Rust-%s' % _rust_ver), + ('poetry', '1.5.1'), +] + +dependencies = [ + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), + ('aiohttp', '3.8.5'), + ('pydantic', '2.5.3'), + ('PyYAML', '6.0'), + ('SQLAlchemy', '2.0.25'), +] + +exts_list = [ + ('jsonpointer', '2.4', { + 'checksums': ['585cee82b70211fa9e6043b7bb89db6e1aa49524340dde8ad6b63206ea689d88'], + }), + ('jsonpatch', '1.33', { + 'checksums': ['9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c'], + }), + ('packaging', '23.2', { + 'checksums': ['048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5'], + }), + ('langchain-core', '0.2.3', { + 'sources': ['langchain_core-%(version)s.tar.gz'], + 'checksums': ['fbc75a64b9c0b7655d96ca57a707df1e6c09efc1539c36adbd73260612549810'], + }), + ('langchain-text-splitters', '0.2.0', { + 'sources': ['langchain_text_splitters-%(version)s.tar.gz'], + 'checksums': ['b32ab4f7397f7d42c1fa3283fefc2547ba356bd63a68ee9092865e5ad83c82f9'], + }), + ('orjson', '3.9.14', { + 'checksums': ['06fb40f8e49088ecaa02f1162581d39e2cf3fd9dbbfe411eb2284147c99bad79'], + }), + ('langsmith', '0.1.65', { + 'checksums': ['d3c2eb2391478bd79989f02652cf66e29a7959d677614b6993a47cef43f7f43b'], + }), + ('tenacity', '8.3.0', { + 'checksums': ['953d4e6ad24357bceffbc9707bc74349aca9d245f68eb65419cf0c249a1949a2'], + }), + (name, version, { + 'modulename': 'langchain', + 'sources': ['langchain-%(version)s.tar.gz'], + 'checksums': ['5758a315e1ac92eb26dafec5ad0fafa03cafa686aba197d5bb0b1dd28cc03ebe'], + }), +] + +use_pip = True +sanity_pip_check = True + +moduleclass = 'ai' diff --git a/easybuild/easyconfigs/l/LibLZF/LibLZF-3.6-GCCcore-12.3.0.eb b/easybuild/easyconfigs/l/LibLZF/LibLZF-3.6-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..500e9679115 --- /dev/null +++ b/easybuild/easyconfigs/l/LibLZF/LibLZF-3.6-GCCcore-12.3.0.eb @@ -0,0 +1,31 @@ +# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild +# Author: Denis Kristak +# Update: Thomas Hoffmann (EMBL), Denis Kristak +easyblock = 'ConfigureMake' + +name = 'LibLZF' +version = '3.6' + +homepage = 'http://oldhome.schmorp.de/marc/liblzf.html' +description = """LibLZF is a very small data compression library. It consists of only two .c and two .h files +and is very easy to incorporate into your own programs. The compression algorithm is very, very fast, yet still +written in portable C.""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +source_urls = ['http://dist.schmorp.de/liblzf/Attic/'] +sources = ['liblzf-%(version)s.tar.gz'] +checksums = ['9c5de01f7b9ccae40c3f619d26a7abec9986c06c36d260c179cedd04b89fb46a'] + +builddependencies = [ + ('binutils', '2.40'), +] + +sanity_check_commands = ['lzf -h'] + +sanity_check_paths = { + 'files': ['bin/lzf', 'lib/liblzf.a'], + 'dirs': ['bin', 'lib'], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/l/LibTIFF/LibTIFF-4.6.0-GCCcore-13.3.0.eb b/easybuild/easyconfigs/l/LibTIFF/LibTIFF-4.6.0-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..01e24006610 --- /dev/null +++ b/easybuild/easyconfigs/l/LibTIFF/LibTIFF-4.6.0-GCCcore-13.3.0.eb @@ -0,0 +1,38 @@ +easyblock = 'ConfigureMake' + +name = 'LibTIFF' +version = '4.6.0' + +homepage = 'https://libtiff.gitlab.io/libtiff/' +description = "tiff: Library and tools for reading and writing TIFF data files" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://download.osgeo.org/libtiff/'] +sources = ['tiff-%(version)s.tar.gz'] +checksums = ['88b3979e6d5c7e32b50d7ec72fb15af724f6ab2cbf7e10880c360a77e4b5d99a'] + +builddependencies = [('binutils', '2.42')] + +dependencies = [ + ('zlib', '1.3.1'), + ('libjpeg-turbo', '3.0.1'), + ('XZ', '5.4.5'), + ('jbigkit', '2.1'), + ('zstd', '1.5.6'), + ('libdeflate', '1.20'), +] + +configopts = "--enable-ld-version-script " +configopts += "--disable-webp --disable-sphinx " + +sanity_check_paths = { + 'files': ['bin/tiffdump', 'bin/tiffinfo', 'include/tiff.h', 'lib/libtiff.a', 'lib/libtiff.%s' % SHLIB_EXT, + 'lib/libtiffxx.a', 'lib/libtiffxx.%s' % SHLIB_EXT, 'lib/pkgconfig/libtiff-4.pc'], + 'dirs': [], +} + +sanity_check_commands = ["tiffinfo -h"] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/l/Libint/Libint-2.7.2-GCC-11.3.0-lmax-6-cp2k.eb b/easybuild/easyconfigs/l/Libint/Libint-2.7.2-GCC-11.3.0-lmax-6-cp2k.eb index 316d77e98db..4a56e599763 100644 --- a/easybuild/easyconfigs/l/Libint/Libint-2.7.2-GCC-11.3.0-lmax-6-cp2k.eb +++ b/easybuild/easyconfigs/l/Libint/Libint-2.7.2-GCC-11.3.0-lmax-6-cp2k.eb @@ -20,11 +20,14 @@ sources = ['v%(version)s.tar.gz'] patches = [ 'Libint-2.7.2_remove-test-permute.patch', 'Libint-2.7.2_remove-test-eri.patch', + 'Libint-2.7.2_update-catch-hpp-fix-MINSIGSTKSZ.patch', ] checksums = [ - 'fd0466ce9eb6786b8c5bbe3d510e387ed44b198a163264dfd7e60b337e295fd9', # v2.7.2.tar.gz - 'b019e66a2a3dc7e83ee8a60aa1ae78955a8af4df90ab07b7e57d2ee004ce3677', # Libint-2.7.2_remove-test-permute.patch - '4dd7b2993b6fdebb57e5c14faa9bf46117ae42100c686ace82fe26b7cb0312ab', # Libint-2.7.2_remove-test-eri.patch + {'v2.7.2.tar.gz': 'fd0466ce9eb6786b8c5bbe3d510e387ed44b198a163264dfd7e60b337e295fd9'}, + {'Libint-2.7.2_remove-test-permute.patch': 'b019e66a2a3dc7e83ee8a60aa1ae78955a8af4df90ab07b7e57d2ee004ce3677'}, + {'Libint-2.7.2_remove-test-eri.patch': '4dd7b2993b6fdebb57e5c14faa9bf46117ae42100c686ace82fe26b7cb0312ab'}, + {'Libint-2.7.2_update-catch-hpp-fix-MINSIGSTKSZ.patch': + 'd974418064b3ea3be914d95ae23c64f307f33d205b0ab3c79fd6ecf9fc6b57fd'}, ] builddependencies = [ diff --git a/easybuild/easyconfigs/l/Libint/Libint-2.7.2-GCC-12.2.0-lmax-6-cp2k.eb b/easybuild/easyconfigs/l/Libint/Libint-2.7.2-GCC-12.2.0-lmax-6-cp2k.eb index 5ce194eec7a..cc27408e814 100644 --- a/easybuild/easyconfigs/l/Libint/Libint-2.7.2-GCC-12.2.0-lmax-6-cp2k.eb +++ b/easybuild/easyconfigs/l/Libint/Libint-2.7.2-GCC-12.2.0-lmax-6-cp2k.eb @@ -20,11 +20,14 @@ sources = ['v%(version)s.tar.gz'] patches = [ 'Libint-2.7.2_remove-test-permute.patch', 'Libint-2.7.2_remove-test-eri.patch', + 'Libint-2.7.2_update-catch-hpp-fix-MINSIGSTKSZ.patch', ] checksums = [ - 'fd0466ce9eb6786b8c5bbe3d510e387ed44b198a163264dfd7e60b337e295fd9', # v2.7.2.tar.gz - 'b019e66a2a3dc7e83ee8a60aa1ae78955a8af4df90ab07b7e57d2ee004ce3677', # Libint-2.7.2_remove-test-permute.patch - '4dd7b2993b6fdebb57e5c14faa9bf46117ae42100c686ace82fe26b7cb0312ab', # Libint-2.7.2_remove-test-eri.patch + {'v2.7.2.tar.gz': 'fd0466ce9eb6786b8c5bbe3d510e387ed44b198a163264dfd7e60b337e295fd9'}, + {'Libint-2.7.2_remove-test-permute.patch': 'b019e66a2a3dc7e83ee8a60aa1ae78955a8af4df90ab07b7e57d2ee004ce3677'}, + {'Libint-2.7.2_remove-test-eri.patch': '4dd7b2993b6fdebb57e5c14faa9bf46117ae42100c686ace82fe26b7cb0312ab'}, + {'Libint-2.7.2_update-catch-hpp-fix-MINSIGSTKSZ.patch': + 'd974418064b3ea3be914d95ae23c64f307f33d205b0ab3c79fd6ecf9fc6b57fd'}, ] builddependencies = [ diff --git a/easybuild/easyconfigs/l/Libint/Libint-2.7.2-GCC-12.3.0-lmax-6-cp2k.eb b/easybuild/easyconfigs/l/Libint/Libint-2.7.2-GCC-12.3.0-lmax-6-cp2k.eb index 6ff9830cca2..df4157f143d 100644 --- a/easybuild/easyconfigs/l/Libint/Libint-2.7.2-GCC-12.3.0-lmax-6-cp2k.eb +++ b/easybuild/easyconfigs/l/Libint/Libint-2.7.2-GCC-12.3.0-lmax-6-cp2k.eb @@ -20,11 +20,14 @@ sources = ['v%(version)s.tar.gz'] patches = [ 'Libint-2.7.2_remove-test-permute.patch', 'Libint-2.7.2_remove-test-eri.patch', + 'Libint-2.7.2_update-catch-hpp-fix-MINSIGSTKSZ.patch', ] checksums = [ - 'fd0466ce9eb6786b8c5bbe3d510e387ed44b198a163264dfd7e60b337e295fd9', # v2.7.2.tar.gz - 'b019e66a2a3dc7e83ee8a60aa1ae78955a8af4df90ab07b7e57d2ee004ce3677', # Libint-2.7.2_remove-test-permute.patch - '4dd7b2993b6fdebb57e5c14faa9bf46117ae42100c686ace82fe26b7cb0312ab', # Libint-2.7.2_remove-test-eri.patch + {'v2.7.2.tar.gz': 'fd0466ce9eb6786b8c5bbe3d510e387ed44b198a163264dfd7e60b337e295fd9'}, + {'Libint-2.7.2_remove-test-permute.patch': 'b019e66a2a3dc7e83ee8a60aa1ae78955a8af4df90ab07b7e57d2ee004ce3677'}, + {'Libint-2.7.2_remove-test-eri.patch': '4dd7b2993b6fdebb57e5c14faa9bf46117ae42100c686ace82fe26b7cb0312ab'}, + {'Libint-2.7.2_update-catch-hpp-fix-MINSIGSTKSZ.patch': + 'd974418064b3ea3be914d95ae23c64f307f33d205b0ab3c79fd6ecf9fc6b57fd'}, ] builddependencies = [ diff --git a/easybuild/easyconfigs/l/Libint/Libint-2.7.2_update-catch-hpp-fix-MINSIGSTKSZ.patch b/easybuild/easyconfigs/l/Libint/Libint-2.7.2_update-catch-hpp-fix-MINSIGSTKSZ.patch new file mode 100644 index 00000000000..62beccd45dc --- /dev/null +++ b/easybuild/easyconfigs/l/Libint/Libint-2.7.2_update-catch-hpp-fix-MINSIGSTKSZ.patch @@ -0,0 +1,6622 @@ +fix for: +/tmp/easybuild/Libint/2.7.2/GCC-12.3.0-lmax-6-cp2k/libint-2.7.2/libint-2.7.2/tests/unit/catch.hpp:10822:58: error: call to non-constexpr function long int sysconf(int) +10822 | static constexpr std::size_t sigStackSize = 32768 >= MINSIGSTKSZ ? 32768 : MINSIGSTKSZ; + | ^~~~~~~~~~~ + +see https://github.com/evaleev/libint/issues/328 + https://github.com/evaleev/libint/pull/334 + +From 37aed36be4cb037867758b0a9a17db29d5c87f4d Mon Sep 17 00:00:00 2001 +From: Eduard Valeyev +Date: Mon, 4 Mar 2024 09:17:09 -0500 +Subject: [PATCH] bump Catch2 to 2.13.10, resolves #328 + +see https://github.com/catchorg/Catch2/releases/tag/v2.13.10 +--- + tests/unit/catch.hpp | 5182 +++++++++++++++++++++--------------------- + 1 file changed, 2639 insertions(+), 2543 deletions(-) + +diff --git a/tests/unit/catch.hpp b/tests/unit/catch.hpp +index 4eb22c23c..9b309bddc 100644 +--- a/tests/unit/catch.hpp ++++ b/tests/unit/catch.hpp +@@ -1,9 +1,9 @@ + /* +- * Catch v2.13.4 +- * Generated: 2020-12-29 14:48:00.116107 ++ * Catch v2.13.10 ++ * Generated: 2022-10-16 11:01:23.452308 + * ---------------------------------------------------------- + * This file has been merged from multiple headers. Please don't edit it directly +- * Copyright (c) 2020 Two Blue Cubes Ltd. All rights reserved. ++ * Copyright (c) 2022 Two Blue Cubes Ltd. All rights reserved. + * + * Distributed under the Boost Software License, Version 1.0. (See accompanying + * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +@@ -15,7 +15,7 @@ + + #define CATCH_VERSION_MAJOR 2 + #define CATCH_VERSION_MINOR 13 +-#define CATCH_VERSION_PATCH 4 ++#define CATCH_VERSION_PATCH 10 + + #ifdef __clang__ + # pragma clang system_header +@@ -36,7 +36,7 @@ + # pragma clang diagnostic ignored "-Wcovered-switch-default" + # endif + #elif defined __GNUC__ +-// Because REQUIREs trigger GCC's -Wparentheses, and because still ++ // Because REQUIREs trigger GCC's -Wparentheses, and because still + // supported version of g++ have only buggy support for _Pragmas, + // Wparentheses have to be suppressed globally. + # pragma GCC diagnostic ignored "-Wparentheses" // See #674 for details +@@ -66,13 +66,16 @@ + #if !defined(CATCH_CONFIG_IMPL_ONLY) + // start catch_platform.h + ++// See e.g.: ++// https://opensource.apple.com/source/CarbonHeaders/CarbonHeaders-18.1/TargetConditionals.h.auto.html + #ifdef __APPLE__ +-# include +-# if TARGET_OS_OSX == 1 +-# define CATCH_PLATFORM_MAC +-# elif TARGET_OS_IPHONE == 1 +-# define CATCH_PLATFORM_IPHONE +-# endif ++# include ++# if (defined(TARGET_OS_OSX) && TARGET_OS_OSX == 1) || \ ++ (defined(TARGET_OS_MAC) && TARGET_OS_MAC == 1) ++# define CATCH_PLATFORM_MAC ++# elif (defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE == 1) ++# define CATCH_PLATFORM_IPHONE ++# endif + + #elif defined(linux) || defined(__linux) || defined(__linux__) + # define CATCH_PLATFORM_LINUX +@@ -93,7 +96,7 @@ + // start catch_user_interfaces.h + + namespace Catch { +-unsigned int rngSeed(); ++ unsigned int rngSeed(); + } + + // end catch_user_interfaces.h +@@ -132,9 +135,9 @@ unsigned int rngSeed(); + + #endif + +-// We have to avoid both ICC and Clang, because they try to mask themselves +-// as gcc, and we want only GCC in this block +-#if defined(__GNUC__) && !defined(__clang__) && !defined(__ICC) && !defined(__CUDACC__) ++// Only GCC compiler should be used in this block, so other compilers trying to ++// mask themselves as GCC should be ignored. ++#if defined(__GNUC__) && !defined(__clang__) && !defined(__ICC) && !defined(__CUDACC__) && !defined(__LCC__) + # define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION _Pragma( "GCC diagnostic push" ) + # define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION _Pragma( "GCC diagnostic pop" ) + +@@ -183,13 +186,13 @@ unsigned int rngSeed(); + //////////////////////////////////////////////////////////////////////////////// + // Assume that non-Windows platforms support posix signals by default + #if !defined(CATCH_PLATFORM_WINDOWS) +-#define CATCH_INTERNAL_CONFIG_POSIX_SIGNALS ++ #define CATCH_INTERNAL_CONFIG_POSIX_SIGNALS + #endif + + //////////////////////////////////////////////////////////////////////////////// + // We know some environments not to support full POSIX signals + #if defined(__CYGWIN__) || defined(__QNX__) || defined(__EMSCRIPTEN__) || defined(__DJGPP__) +-#define CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS ++ #define CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS + #endif + + #ifdef __OS400__ +@@ -237,9 +240,6 @@ unsigned int rngSeed(); + // Visual C++ + #if defined(_MSC_VER) + +-# define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION __pragma( warning(push) ) +-# define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION __pragma( warning(pop) ) +- + // Universal Windows platform does not support SEH + // Or console colours (or console at all...) + # if defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_APP) +@@ -248,13 +248,18 @@ unsigned int rngSeed(); + # define CATCH_INTERNAL_CONFIG_WINDOWS_SEH + # endif + ++# if !defined(__clang__) // Handle Clang masquerading for msvc ++ + // MSVC traditional preprocessor needs some workaround for __VA_ARGS__ + // _MSVC_TRADITIONAL == 0 means new conformant preprocessor + // _MSVC_TRADITIONAL == 1 means old traditional non-conformant preprocessor +-# if !defined(__clang__) // Handle Clang masquerading for msvc + # if !defined(_MSVC_TRADITIONAL) || (defined(_MSVC_TRADITIONAL) && _MSVC_TRADITIONAL) + # define CATCH_INTERNAL_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR + # endif // MSVC_TRADITIONAL ++ ++// Only do this if we're not using clang on Windows, which uses `diagnostic push` & `diagnostic pop` ++# define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION __pragma( warning(push) ) ++# define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION __pragma( warning(pop) ) + # endif // __clang__ + + #endif // _MSC_VER +@@ -279,7 +284,7 @@ unsigned int rngSeed(); + //////////////////////////////////////////////////////////////////////////////// + // Embarcadero C++Build + #if defined(__BORLANDC__) +-#define CATCH_INTERNAL_CONFIG_POLYFILL_ISNAN ++ #define CATCH_INTERNAL_CONFIG_POLYFILL_ISNAN + #endif + + //////////////////////////////////////////////////////////////////////////////// +@@ -290,7 +295,7 @@ unsigned int rngSeed(); + // Otherwise all supported compilers support COUNTER macro, + // but user still might want to turn it off + #if ( !defined(__JETBRAINS_IDE__) || __JETBRAINS_IDE__ >= 20170300L ) +-#define CATCH_INTERNAL_CONFIG_COUNTER ++ #define CATCH_INTERNAL_CONFIG_COUNTER + #endif + + //////////////////////////////////////////////////////////////////////////////// +@@ -299,7 +304,7 @@ unsigned int rngSeed(); + // This means that it is detected as Windows, but does not provide + // the same set of capabilities as real Windows does. + #if defined(UNDER_RTSS) || defined(RTX64_BUILD) +-#define CATCH_INTERNAL_CONFIG_NO_WINDOWS_SEH ++ #define CATCH_INTERNAL_CONFIG_NO_WINDOWS_SEH + #define CATCH_INTERNAL_CONFIG_NO_ASYNC + #define CATCH_CONFIG_COLOUR_NONE + #endif +@@ -310,28 +315,28 @@ unsigned int rngSeed(); + + // Various stdlib support checks that require __has_include + #if defined(__has_include) +-// Check if string_view is available and usable +-#if __has_include() && defined(CATCH_CPP17_OR_GREATER) +-# define CATCH_INTERNAL_CONFIG_CPP17_STRING_VIEW +-#endif +- +-// Check if optional is available and usable +-# if __has_include() && defined(CATCH_CPP17_OR_GREATER) +-# define CATCH_INTERNAL_CONFIG_CPP17_OPTIONAL +-# endif // __has_include() && defined(CATCH_CPP17_OR_GREATER) +- +-// Check if byte is available and usable +-# if __has_include() && defined(CATCH_CPP17_OR_GREATER) +-# include +-# if __cpp_lib_byte > 0 +-# define CATCH_INTERNAL_CONFIG_CPP17_BYTE +-# endif +-# endif // __has_include() && defined(CATCH_CPP17_OR_GREATER) +- +-// Check if variant is available and usable +-# if __has_include() && defined(CATCH_CPP17_OR_GREATER) +-# if defined(__clang__) && (__clang_major__ < 8) +-// work around clang bug with libstdc++ https://bugs.llvm.org/show_bug.cgi?id=31852 ++ // Check if string_view is available and usable ++ #if __has_include() && defined(CATCH_CPP17_OR_GREATER) ++ # define CATCH_INTERNAL_CONFIG_CPP17_STRING_VIEW ++ #endif ++ ++ // Check if optional is available and usable ++ # if __has_include() && defined(CATCH_CPP17_OR_GREATER) ++ # define CATCH_INTERNAL_CONFIG_CPP17_OPTIONAL ++ # endif // __has_include() && defined(CATCH_CPP17_OR_GREATER) ++ ++ // Check if byte is available and usable ++ # if __has_include() && defined(CATCH_CPP17_OR_GREATER) ++ # include ++ # if defined(__cpp_lib_byte) && (__cpp_lib_byte > 0) ++ # define CATCH_INTERNAL_CONFIG_CPP17_BYTE ++ # endif ++ # endif // __has_include() && defined(CATCH_CPP17_OR_GREATER) ++ ++ // Check if variant is available and usable ++ # if __has_include() && defined(CATCH_CPP17_OR_GREATER) ++ # if defined(__clang__) && (__clang_major__ < 8) ++ // work around clang bug with libstdc++ https://bugs.llvm.org/show_bug.cgi?id=31852 + // fix should be in clang 8, workaround in libstdc++ 8.2 + # include + # if defined(__GLIBCXX__) && defined(_GLIBCXX_RELEASE) && (_GLIBCXX_RELEASE < 9) +@@ -339,10 +344,10 @@ unsigned int rngSeed(); + # else + # define CATCH_INTERNAL_CONFIG_CPP17_VARIANT + # endif // defined(__GLIBCXX__) && defined(_GLIBCXX_RELEASE) && (_GLIBCXX_RELEASE < 9) +-# else +-# define CATCH_INTERNAL_CONFIG_CPP17_VARIANT +-# endif // defined(__clang__) && (__clang_major__ < 8) +-# endif // __has_include() && defined(CATCH_CPP17_OR_GREATER) ++ # else ++ # define CATCH_INTERNAL_CONFIG_CPP17_VARIANT ++ # endif // defined(__clang__) && (__clang_major__ < 8) ++ # endif // __has_include() && defined(CATCH_CPP17_OR_GREATER) + #endif // defined(__has_include) + + #if defined(CATCH_INTERNAL_CONFIG_COUNTER) && !defined(CATCH_CONFIG_NO_COUNTER) && !defined(CATCH_CONFIG_COUNTER) +@@ -478,61 +483,61 @@ std::ostream& operator<<(std::ostream&, Catch_global_namespace_dummy); + + namespace Catch { + +-struct CaseSensitive { enum Choice { +- Yes, +- No +- }; }; ++ struct CaseSensitive { enum Choice { ++ Yes, ++ No ++ }; }; + +-class NonCopyable { +- NonCopyable( NonCopyable const& ) = delete; +- NonCopyable( NonCopyable && ) = delete; +- NonCopyable& operator = ( NonCopyable const& ) = delete; +- NonCopyable& operator = ( NonCopyable && ) = delete; ++ class NonCopyable { ++ NonCopyable( NonCopyable const& ) = delete; ++ NonCopyable( NonCopyable && ) = delete; ++ NonCopyable& operator = ( NonCopyable const& ) = delete; ++ NonCopyable& operator = ( NonCopyable && ) = delete; + +- protected: +- NonCopyable(); +- virtual ~NonCopyable(); +-}; ++ protected: ++ NonCopyable(); ++ virtual ~NonCopyable(); ++ }; + +-struct SourceLineInfo { ++ struct SourceLineInfo { + +- SourceLineInfo() = delete; +- SourceLineInfo( char const* _file, std::size_t _line ) noexcept +- : file( _file ), +- line( _line ) +- {} ++ SourceLineInfo() = delete; ++ SourceLineInfo( char const* _file, std::size_t _line ) noexcept ++ : file( _file ), ++ line( _line ) ++ {} + +- SourceLineInfo( SourceLineInfo const& other ) = default; +- SourceLineInfo& operator = ( SourceLineInfo const& ) = default; +- SourceLineInfo( SourceLineInfo&& ) noexcept = default; +- SourceLineInfo& operator = ( SourceLineInfo&& ) noexcept = default; ++ SourceLineInfo( SourceLineInfo const& other ) = default; ++ SourceLineInfo& operator = ( SourceLineInfo const& ) = default; ++ SourceLineInfo( SourceLineInfo&& ) noexcept = default; ++ SourceLineInfo& operator = ( SourceLineInfo&& ) noexcept = default; + +- bool empty() const noexcept { return file[0] == '\0'; } +- bool operator == ( SourceLineInfo const& other ) const noexcept; +- bool operator < ( SourceLineInfo const& other ) const noexcept; ++ bool empty() const noexcept { return file[0] == '\0'; } ++ bool operator == ( SourceLineInfo const& other ) const noexcept; ++ bool operator < ( SourceLineInfo const& other ) const noexcept; + +- char const* file; +- std::size_t line; +-}; ++ char const* file; ++ std::size_t line; ++ }; + +-std::ostream& operator << ( std::ostream& os, SourceLineInfo const& info ); ++ std::ostream& operator << ( std::ostream& os, SourceLineInfo const& info ); + +-// Bring in operator<< from global namespace into Catch namespace +-// This is necessary because the overload of operator<< above makes +-// lookup stop at namespace Catch +-using ::operator<<; ++ // Bring in operator<< from global namespace into Catch namespace ++ // This is necessary because the overload of operator<< above makes ++ // lookup stop at namespace Catch ++ using ::operator<<; + +-// Use this in variadic streaming macros to allow +-// >> +StreamEndStop +-// as well as +-// >> stuff +StreamEndStop +-struct StreamEndStop { +- std::string operator+() const; +-}; +-template +-T const& operator + ( T const& value, StreamEndStop ) { +- return value; +-} ++ // Use this in variadic streaming macros to allow ++ // >> +StreamEndStop ++ // as well as ++ // >> stuff +StreamEndStop ++ struct StreamEndStop { ++ std::string operator+() const; ++ }; ++ template ++ T const& operator + ( T const& value, StreamEndStop ) { ++ return value; ++ } + } + + #define CATCH_INTERNAL_LINEINFO \ +@@ -541,9 +546,9 @@ T const& operator + ( T const& value, StreamEndStop ) { + // end catch_common.h + namespace Catch { + +-struct RegistrarForTagAliases { +- RegistrarForTagAliases( char const* alias, char const* tag, SourceLineInfo const& lineInfo ); +-}; ++ struct RegistrarForTagAliases { ++ RegistrarForTagAliases( char const* alias, char const* tag, SourceLineInfo const& lineInfo ); ++ }; + + } // end namespace Catch + +@@ -562,26 +567,26 @@ struct RegistrarForTagAliases { + + namespace Catch { + +-class TestSpec; ++ class TestSpec; + +-struct ITestInvoker { +- virtual void invoke () const = 0; +- virtual ~ITestInvoker(); +-}; ++ struct ITestInvoker { ++ virtual void invoke () const = 0; ++ virtual ~ITestInvoker(); ++ }; + +-class TestCase; +-struct IConfig; ++ class TestCase; ++ struct IConfig; + +-struct ITestCaseRegistry { +- virtual ~ITestCaseRegistry(); +- virtual std::vector const& getAllTests() const = 0; +- virtual std::vector const& getAllTestsSorted( IConfig const& config ) const = 0; +-}; ++ struct ITestCaseRegistry { ++ virtual ~ITestCaseRegistry(); ++ virtual std::vector const& getAllTests() const = 0; ++ virtual std::vector const& getAllTestsSorted( IConfig const& config ) const = 0; ++ }; + +-bool isThrowSafe( TestCase const& testCase, IConfig const& config ); +-bool matchTest( TestCase const& testCase, TestSpec const& testSpec, IConfig const& config ); +-std::vector filterTests( std::vector const& testCases, TestSpec const& testSpec, IConfig const& config ); +-std::vector const& getAllTestCasesSorted( IConfig const& config ); ++ bool isThrowSafe( TestCase const& testCase, IConfig const& config ); ++ bool matchTest( TestCase const& testCase, TestSpec const& testSpec, IConfig const& config ); ++ std::vector filterTests( std::vector const& testCases, TestSpec const& testSpec, IConfig const& config ); ++ std::vector const& getAllTestCasesSorted( IConfig const& config ); + + } + +@@ -595,90 +600,90 @@ std::vector const& getAllTestCasesSorted( IConfig const& config ); + + namespace Catch { + +-/// A non-owning string class (similar to the forthcoming std::string_view) +-/// Note that, because a StringRef may be a substring of another string, +-/// it may not be null terminated. +-class StringRef { +- public: +- using size_type = std::size_t; +- using const_iterator = const char*; ++ /// A non-owning string class (similar to the forthcoming std::string_view) ++ /// Note that, because a StringRef may be a substring of another string, ++ /// it may not be null terminated. ++ class StringRef { ++ public: ++ using size_type = std::size_t; ++ using const_iterator = const char*; + +- private: +- static constexpr char const* const s_empty = ""; ++ private: ++ static constexpr char const* const s_empty = ""; + +- char const* m_start = s_empty; +- size_type m_size = 0; ++ char const* m_start = s_empty; ++ size_type m_size = 0; + +- public: // construction +- constexpr StringRef() noexcept = default; ++ public: // construction ++ constexpr StringRef() noexcept = default; + +- StringRef( char const* rawChars ) noexcept; ++ StringRef( char const* rawChars ) noexcept; + +- constexpr StringRef( char const* rawChars, size_type size ) noexcept +- : m_start( rawChars ), +- m_size( size ) +- {} ++ constexpr StringRef( char const* rawChars, size_type size ) noexcept ++ : m_start( rawChars ), ++ m_size( size ) ++ {} + +- StringRef( std::string const& stdString ) noexcept +- : m_start( stdString.c_str() ), +- m_size( stdString.size() ) +- {} ++ StringRef( std::string const& stdString ) noexcept ++ : m_start( stdString.c_str() ), ++ m_size( stdString.size() ) ++ {} + +- explicit operator std::string() const { +- return std::string(m_start, m_size); +- } ++ explicit operator std::string() const { ++ return std::string(m_start, m_size); ++ } + +- public: // operators +- auto operator == ( StringRef const& other ) const noexcept -> bool; +- auto operator != (StringRef const& other) const noexcept -> bool { +- return !(*this == other); +- } ++ public: // operators ++ auto operator == ( StringRef const& other ) const noexcept -> bool; ++ auto operator != (StringRef const& other) const noexcept -> bool { ++ return !(*this == other); ++ } + +- auto operator[] ( size_type index ) const noexcept -> char { +- assert(index < m_size); +- return m_start[index]; +- } ++ auto operator[] ( size_type index ) const noexcept -> char { ++ assert(index < m_size); ++ return m_start[index]; ++ } + +- public: // named queries +- constexpr auto empty() const noexcept -> bool { +- return m_size == 0; +- } +- constexpr auto size() const noexcept -> size_type { +- return m_size; +- } ++ public: // named queries ++ constexpr auto empty() const noexcept -> bool { ++ return m_size == 0; ++ } ++ constexpr auto size() const noexcept -> size_type { ++ return m_size; ++ } + +- // Returns the current start pointer. If the StringRef is not +- // null-terminated, throws std::domain_exception +- auto c_str() const -> char const*; ++ // Returns the current start pointer. If the StringRef is not ++ // null-terminated, throws std::domain_exception ++ auto c_str() const -> char const*; + +- public: // substrings and searches +- // Returns a substring of [start, start + length). +- // If start + length > size(), then the substring is [start, size()). +- // If start > size(), then the substring is empty. +- auto substr( size_type start, size_type length ) const noexcept -> StringRef; ++ public: // substrings and searches ++ // Returns a substring of [start, start + length). ++ // If start + length > size(), then the substring is [start, size()). ++ // If start > size(), then the substring is empty. ++ auto substr( size_type start, size_type length ) const noexcept -> StringRef; + +- // Returns the current start pointer. May not be null-terminated. +- auto data() const noexcept -> char const*; ++ // Returns the current start pointer. May not be null-terminated. ++ auto data() const noexcept -> char const*; + +- constexpr auto isNullTerminated() const noexcept -> bool { +- return m_start[m_size] == '\0'; +- } ++ constexpr auto isNullTerminated() const noexcept -> bool { ++ return m_start[m_size] == '\0'; ++ } + +- public: // iterators +- constexpr const_iterator begin() const { return m_start; } +- constexpr const_iterator end() const { return m_start + m_size; } +-}; ++ public: // iterators ++ constexpr const_iterator begin() const { return m_start; } ++ constexpr const_iterator end() const { return m_start + m_size; } ++ }; + +-auto operator += ( std::string& lhs, StringRef const& sr ) -> std::string&; +-auto operator << ( std::ostream& os, StringRef const& sr ) -> std::ostream&; ++ auto operator += ( std::string& lhs, StringRef const& sr ) -> std::string&; ++ auto operator << ( std::ostream& os, StringRef const& sr ) -> std::ostream&; + +-constexpr auto operator "" _sr( char const* rawChars, std::size_t size ) noexcept -> StringRef { +- return StringRef( rawChars, size ); +-} ++ constexpr auto operator "" _sr( char const* rawChars, std::size_t size ) noexcept -> StringRef { ++ return StringRef( rawChars, size ); ++ } + } // namespace Catch + + constexpr auto operator "" _catch_sr( char const* rawChars, std::size_t size ) noexcept -> Catch::StringRef { +- return Catch::StringRef( rawChars, size ); ++ return Catch::StringRef( rawChars, size ); + } + + // end catch_stringref.h +@@ -916,30 +921,30 @@ constexpr auto operator "" _catch_sr( char const* rawChars, std::size_t size ) n + #include + + namespace Catch { +-template +-struct always_false : std::false_type {}; +- +-template struct true_given : std::true_type {}; +-struct is_callable_tester { +- template +- true_given()(std::declval()...))> static test(int); +- template +- std::false_type static test(...); +-}; ++ template ++ struct always_false : std::false_type {}; ++ ++ template struct true_given : std::true_type {}; ++ struct is_callable_tester { ++ template ++ true_given()(std::declval()...))> static test(int); ++ template ++ std::false_type static test(...); ++ }; + +-template +-struct is_callable; ++ template ++ struct is_callable; + +-template +-struct is_callable : decltype(is_callable_tester::test(0)) {}; ++ template ++ struct is_callable : decltype(is_callable_tester::test(0)) {}; + + #if defined(__cpp_lib_is_invocable) && __cpp_lib_is_invocable >= 201703 +-// std::result_of is deprecated in C++17 and removed in C++20. Hence, it is +-// replaced with std::invoke_result here. +-template +-using FunctionReturnType = std::remove_reference_t>>; ++ // std::result_of is deprecated in C++17 and removed in C++20. Hence, it is ++ // replaced with std::invoke_result here. ++ template ++ using FunctionReturnType = std::remove_reference_t>>; + #else +-// Keep ::type here because we still support C++11 ++ // Keep ::type here because we still support C++11 + template + using FunctionReturnType = typename std::remove_reference::type>::type>::type; + #endif +@@ -947,7 +952,7 @@ using FunctionReturnType = std::remove_reference_t + class TestInvokerAsMethod : public ITestInvoker { +- void (C::*m_testAsMethod)(); +- public: +- TestInvokerAsMethod( void (C::*testAsMethod)() ) noexcept : m_testAsMethod( testAsMethod ) {} ++ void (C::*m_testAsMethod)(); ++public: ++ TestInvokerAsMethod( void (C::*testAsMethod)() ) noexcept : m_testAsMethod( testAsMethod ) {} + +- void invoke() const override { +- C obj; +- (obj.*m_testAsMethod)(); +- } ++ void invoke() const override { ++ C obj; ++ (obj.*m_testAsMethod)(); ++ } + }; + + auto makeTestInvoker( void(*testAsFunction)() ) noexcept -> ITestInvoker*; + + template + auto makeTestInvoker( void (C::*testAsMethod)() ) noexcept -> ITestInvoker* { +- return new(std::nothrow) TestInvokerAsMethod( testAsMethod ); ++ return new(std::nothrow) TestInvokerAsMethod( testAsMethod ); + } + + struct NameAndTags { +- NameAndTags( StringRef const& name_ = StringRef(), StringRef const& tags_ = StringRef() ) noexcept; +- StringRef name; +- StringRef tags; ++ NameAndTags( StringRef const& name_ = StringRef(), StringRef const& tags_ = StringRef() ) noexcept; ++ StringRef name; ++ StringRef tags; + }; + + struct AutoReg : NonCopyable { +- AutoReg( ITestInvoker* invoker, SourceLineInfo const& lineInfo, StringRef const& classOrMethod, NameAndTags const& nameAndTags ) noexcept; +- ~AutoReg(); ++ AutoReg( ITestInvoker* invoker, SourceLineInfo const& lineInfo, StringRef const& classOrMethod, NameAndTags const& nameAndTags ) noexcept; ++ ~AutoReg(); + }; + + } // end namespace Catch + + #if defined(CATCH_CONFIG_DISABLE) +-#define INTERNAL_CATCH_TESTCASE_NO_REGISTRATION( TestName, ... ) \ ++ #define INTERNAL_CATCH_TESTCASE_NO_REGISTRATION( TestName, ... ) \ + static void TestName() + #define INTERNAL_CATCH_TESTCASE_METHOD_NO_REGISTRATION( TestName, ClassName, ... ) \ + namespace{ \ +@@ -1007,57 +1012,57 @@ struct AutoReg : NonCopyable { + + #ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR + #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_NO_REGISTRATION(Name, Tags, ...) \ +- INTERNAL_CATCH_TEMPLATE_TEST_CASE_NO_REGISTRATION_2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____F_U_N_C____ ), Name, Tags, typename TestType, __VA_ARGS__ ) ++ INTERNAL_CATCH_TEMPLATE_TEST_CASE_NO_REGISTRATION_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_F_U_N_C_ ), Name, Tags, typename TestType, __VA_ARGS__ ) + #else + #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_NO_REGISTRATION(Name, Tags, ...) \ +- INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_NO_REGISTRATION_2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____F_U_N_C____ ), Name, Tags, typename TestType, __VA_ARGS__ ) ) ++ INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_NO_REGISTRATION_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_F_U_N_C_ ), Name, Tags, typename TestType, __VA_ARGS__ ) ) + #endif + + #ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR + #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_SIG_NO_REGISTRATION(Name, Tags, Signature, ...) \ +- INTERNAL_CATCH_TEMPLATE_TEST_CASE_NO_REGISTRATION_2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____F_U_N_C____ ), Name, Tags, Signature, __VA_ARGS__ ) ++ INTERNAL_CATCH_TEMPLATE_TEST_CASE_NO_REGISTRATION_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_F_U_N_C_ ), Name, Tags, Signature, __VA_ARGS__ ) + #else + #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_SIG_NO_REGISTRATION(Name, Tags, Signature, ...) \ +- INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_NO_REGISTRATION_2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____F_U_N_C____ ), Name, Tags, Signature, __VA_ARGS__ ) ) ++ INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_NO_REGISTRATION_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_F_U_N_C_ ), Name, Tags, Signature, __VA_ARGS__ ) ) + #endif + + #ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR + #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_NO_REGISTRATION( ClassName, Name, Tags,... ) \ +- INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_NO_REGISTRATION_2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____C_L_A_S_S____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ) , ClassName, Name, Tags, typename T, __VA_ARGS__ ) ++ INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_NO_REGISTRATION_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_C_L_A_S_S_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ) , ClassName, Name, Tags, typename T, __VA_ARGS__ ) + #else + #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_NO_REGISTRATION( ClassName, Name, Tags,... ) \ +- INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_NO_REGISTRATION_2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____C_L_A_S_S____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ) , ClassName, Name, Tags, typename T, __VA_ARGS__ ) ) ++ INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_NO_REGISTRATION_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_C_L_A_S_S_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ) , ClassName, Name, Tags, typename T, __VA_ARGS__ ) ) + #endif + + #ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR + #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_SIG_NO_REGISTRATION( ClassName, Name, Tags, Signature, ... ) \ +- INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_NO_REGISTRATION_2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____C_L_A_S_S____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ) , ClassName, Name, Tags, Signature, __VA_ARGS__ ) ++ INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_NO_REGISTRATION_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_C_L_A_S_S_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ) , ClassName, Name, Tags, Signature, __VA_ARGS__ ) + #else + #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_SIG_NO_REGISTRATION( ClassName, Name, Tags, Signature, ... ) \ +- INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_NO_REGISTRATION_2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____C_L_A_S_S____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ) , ClassName, Name, Tags, Signature, __VA_ARGS__ ) ) ++ INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_NO_REGISTRATION_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_C_L_A_S_S_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ) , ClassName, Name, Tags, Signature, __VA_ARGS__ ) ) + #endif + #endif + +-/////////////////////////////////////////////////////////////////////////////// +-#define INTERNAL_CATCH_TESTCASE2( TestName, ... ) \ ++ /////////////////////////////////////////////////////////////////////////////// ++ #define INTERNAL_CATCH_TESTCASE2( TestName, ... ) \ + static void TestName(); \ + CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ + CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ + namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( Catch::makeTestInvoker( &TestName ), CATCH_INTERNAL_LINEINFO, Catch::StringRef(), Catch::NameAndTags{ __VA_ARGS__ } ); } /* NOLINT */ \ + CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \ + static void TestName() +-#define INTERNAL_CATCH_TESTCASE( ... ) \ +- INTERNAL_CATCH_TESTCASE2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ ), __VA_ARGS__ ) ++ #define INTERNAL_CATCH_TESTCASE( ... ) \ ++ INTERNAL_CATCH_TESTCASE2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_S_T_ ), __VA_ARGS__ ) + +-/////////////////////////////////////////////////////////////////////////////// +-#define INTERNAL_CATCH_METHOD_AS_TEST_CASE( QualifiedMethod, ... ) \ ++ /////////////////////////////////////////////////////////////////////////////// ++ #define INTERNAL_CATCH_METHOD_AS_TEST_CASE( QualifiedMethod, ... ) \ + CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ + CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ + namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( Catch::makeTestInvoker( &QualifiedMethod ), CATCH_INTERNAL_LINEINFO, "&" #QualifiedMethod, Catch::NameAndTags{ __VA_ARGS__ } ); } /* NOLINT */ \ + CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION + +-/////////////////////////////////////////////////////////////////////////////// +-#define INTERNAL_CATCH_TEST_CASE_METHOD2( TestName, ClassName, ... )\ ++ /////////////////////////////////////////////////////////////////////////////// ++ #define INTERNAL_CATCH_TEST_CASE_METHOD2( TestName, ClassName, ... )\ + CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ + CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ + namespace{ \ +@@ -1068,18 +1073,18 @@ struct AutoReg : NonCopyable { + } \ + CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \ + void TestName::test() +-#define INTERNAL_CATCH_TEST_CASE_METHOD( ClassName, ... ) \ +- INTERNAL_CATCH_TEST_CASE_METHOD2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ ), ClassName, __VA_ARGS__ ) ++ #define INTERNAL_CATCH_TEST_CASE_METHOD( ClassName, ... ) \ ++ INTERNAL_CATCH_TEST_CASE_METHOD2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_S_T_ ), ClassName, __VA_ARGS__ ) + +-/////////////////////////////////////////////////////////////////////////////// +-#define INTERNAL_CATCH_REGISTER_TESTCASE( Function, ... ) \ ++ /////////////////////////////////////////////////////////////////////////////// ++ #define INTERNAL_CATCH_REGISTER_TESTCASE( Function, ... ) \ + CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ + CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ + Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( Catch::makeTestInvoker( Function ), CATCH_INTERNAL_LINEINFO, Catch::StringRef(), Catch::NameAndTags{ __VA_ARGS__ } ); /* NOLINT */ \ + CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION + +-/////////////////////////////////////////////////////////////////////////////// +-#define INTERNAL_CATCH_TEMPLATE_TEST_CASE_2(TestName, TestFunc, Name, Tags, Signature, ... )\ ++ /////////////////////////////////////////////////////////////////////////////// ++ #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_2(TestName, TestFunc, Name, Tags, Signature, ... )\ + CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ + CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ + CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS \ +@@ -1109,22 +1114,22 @@ struct AutoReg : NonCopyable { + INTERNAL_CATCH_DEFINE_SIG_TEST(TestFunc,INTERNAL_CATCH_REMOVE_PARENS(Signature)) + + #ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR +-#define INTERNAL_CATCH_TEMPLATE_TEST_CASE(Name, Tags, ...) \ +- INTERNAL_CATCH_TEMPLATE_TEST_CASE_2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____F_U_N_C____ ), Name, Tags, typename TestType, __VA_ARGS__ ) ++ #define INTERNAL_CATCH_TEMPLATE_TEST_CASE(Name, Tags, ...) \ ++ INTERNAL_CATCH_TEMPLATE_TEST_CASE_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_F_U_N_C_ ), Name, Tags, typename TestType, __VA_ARGS__ ) + #else +-#define INTERNAL_CATCH_TEMPLATE_TEST_CASE(Name, Tags, ...) \ +- INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____F_U_N_C____ ), Name, Tags, typename TestType, __VA_ARGS__ ) ) ++ #define INTERNAL_CATCH_TEMPLATE_TEST_CASE(Name, Tags, ...) \ ++ INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_F_U_N_C_ ), Name, Tags, typename TestType, __VA_ARGS__ ) ) + #endif + + #ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR +-#define INTERNAL_CATCH_TEMPLATE_TEST_CASE_SIG(Name, Tags, Signature, ...) \ +- INTERNAL_CATCH_TEMPLATE_TEST_CASE_2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____F_U_N_C____ ), Name, Tags, Signature, __VA_ARGS__ ) ++ #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_SIG(Name, Tags, Signature, ...) \ ++ INTERNAL_CATCH_TEMPLATE_TEST_CASE_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_F_U_N_C_ ), Name, Tags, Signature, __VA_ARGS__ ) + #else +-#define INTERNAL_CATCH_TEMPLATE_TEST_CASE_SIG(Name, Tags, Signature, ...) \ +- INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____F_U_N_C____ ), Name, Tags, Signature, __VA_ARGS__ ) ) ++ #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_SIG(Name, Tags, Signature, ...) \ ++ INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_F_U_N_C_ ), Name, Tags, Signature, __VA_ARGS__ ) ) + #endif + +-#define INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE2(TestName, TestFuncName, Name, Tags, Signature, TmplTypes, TypesList) \ ++ #define INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE2(TestName, TestFuncName, Name, Tags, Signature, TmplTypes, TypesList) \ + CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ + CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ + CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS \ +@@ -1158,22 +1163,22 @@ struct AutoReg : NonCopyable { + static void TestFuncName() + + #ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR +-#define INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE(Name, Tags, ...)\ +- INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE2(INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____F_U_N_C____ ), Name, Tags, typename T,__VA_ARGS__) ++ #define INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE(Name, Tags, ...)\ ++ INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE2(INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_F_U_N_C_ ), Name, Tags, typename T,__VA_ARGS__) + #else +-#define INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE(Name, Tags, ...)\ +- INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____F_U_N_C____ ), Name, Tags, typename T, __VA_ARGS__ ) ) ++ #define INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE(Name, Tags, ...)\ ++ INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_F_U_N_C_ ), Name, Tags, typename T, __VA_ARGS__ ) ) + #endif + + #ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR +-#define INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_SIG(Name, Tags, Signature, ...)\ +- INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE2(INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____F_U_N_C____ ), Name, Tags, Signature, __VA_ARGS__) ++ #define INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_SIG(Name, Tags, Signature, ...)\ ++ INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE2(INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_F_U_N_C_ ), Name, Tags, Signature, __VA_ARGS__) + #else +-#define INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_SIG(Name, Tags, Signature, ...)\ +- INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____F_U_N_C____ ), Name, Tags, Signature, __VA_ARGS__ ) ) ++ #define INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_SIG(Name, Tags, Signature, ...)\ ++ INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_F_U_N_C_ ), Name, Tags, Signature, __VA_ARGS__ ) ) + #endif + +-#define INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE_2(TestName, TestFunc, Name, Tags, TmplList)\ ++ #define INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE_2(TestName, TestFunc, Name, Tags, TmplList)\ + CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ + CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ + CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS \ +@@ -1200,10 +1205,10 @@ struct AutoReg : NonCopyable { + template \ + static void TestFunc() + +-#define INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE(Name, Tags, TmplList) \ +- INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE_2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____F_U_N_C____ ), Name, Tags, TmplList ) ++ #define INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE(Name, Tags, TmplList) \ ++ INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_F_U_N_C_ ), Name, Tags, TmplList ) + +-#define INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_2( TestNameClass, TestName, ClassName, Name, Tags, Signature, ... ) \ ++ #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_2( TestNameClass, TestName, ClassName, Name, Tags, Signature, ... ) \ + CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ + CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ + CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS \ +@@ -1233,22 +1238,22 @@ struct AutoReg : NonCopyable { + INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD(TestName, INTERNAL_CATCH_REMOVE_PARENS(Signature)) + + #ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR +-#define INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD( ClassName, Name, Tags,... ) \ +- INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____C_L_A_S_S____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ) , ClassName, Name, Tags, typename T, __VA_ARGS__ ) ++ #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD( ClassName, Name, Tags,... ) \ ++ INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_C_L_A_S_S_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ) , ClassName, Name, Tags, typename T, __VA_ARGS__ ) + #else +-#define INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD( ClassName, Name, Tags,... ) \ +- INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____C_L_A_S_S____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ) , ClassName, Name, Tags, typename T, __VA_ARGS__ ) ) ++ #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD( ClassName, Name, Tags,... ) \ ++ INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_C_L_A_S_S_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ) , ClassName, Name, Tags, typename T, __VA_ARGS__ ) ) + #endif + + #ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR +-#define INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_SIG( ClassName, Name, Tags, Signature, ... ) \ +- INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____C_L_A_S_S____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ) , ClassName, Name, Tags, Signature, __VA_ARGS__ ) ++ #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_SIG( ClassName, Name, Tags, Signature, ... ) \ ++ INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_C_L_A_S_S_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ) , ClassName, Name, Tags, Signature, __VA_ARGS__ ) + #else +-#define INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_SIG( ClassName, Name, Tags, Signature, ... ) \ +- INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____C_L_A_S_S____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ) , ClassName, Name, Tags, Signature, __VA_ARGS__ ) ) ++ #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_SIG( ClassName, Name, Tags, Signature, ... ) \ ++ INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_C_L_A_S_S_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ) , ClassName, Name, Tags, Signature, __VA_ARGS__ ) ) + #endif + +-#define INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_2(TestNameClass, TestName, ClassName, Name, Tags, Signature, TmplTypes, TypesList)\ ++ #define INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_2(TestNameClass, TestName, ClassName, Name, Tags, Signature, TmplTypes, TypesList)\ + CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ + CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ + CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS \ +@@ -1285,22 +1290,22 @@ struct AutoReg : NonCopyable { + void TestName::test() + + #ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR +-#define INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD( ClassName, Name, Tags, ... )\ +- INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____F_U_N_C____ ), ClassName, Name, Tags, typename T, __VA_ARGS__ ) ++ #define INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD( ClassName, Name, Tags, ... )\ ++ INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_F_U_N_C_ ), ClassName, Name, Tags, typename T, __VA_ARGS__ ) + #else +-#define INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD( ClassName, Name, Tags, ... )\ +- INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____F_U_N_C____ ), ClassName, Name, Tags, typename T,__VA_ARGS__ ) ) ++ #define INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD( ClassName, Name, Tags, ... )\ ++ INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_F_U_N_C_ ), ClassName, Name, Tags, typename T,__VA_ARGS__ ) ) + #endif + + #ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR +-#define INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG( ClassName, Name, Tags, Signature, ... )\ +- INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____F_U_N_C____ ), ClassName, Name, Tags, Signature, __VA_ARGS__ ) ++ #define INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG( ClassName, Name, Tags, Signature, ... )\ ++ INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_F_U_N_C_ ), ClassName, Name, Tags, Signature, __VA_ARGS__ ) + #else +-#define INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG( ClassName, Name, Tags, Signature, ... )\ +- INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____F_U_N_C____ ), ClassName, Name, Tags, Signature,__VA_ARGS__ ) ) ++ #define INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG( ClassName, Name, Tags, Signature, ... )\ ++ INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_F_U_N_C_ ), ClassName, Name, Tags, Signature,__VA_ARGS__ ) ) + #endif + +-#define INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE_METHOD_2( TestNameClass, TestName, ClassName, Name, Tags, TmplList) \ ++ #define INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE_METHOD_2( TestNameClass, TestName, ClassName, Name, Tags, TmplList) \ + CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ + CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ + CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS \ +@@ -1331,7 +1336,7 @@ struct AutoReg : NonCopyable { + void TestName::test() + + #define INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE_METHOD(ClassName, Name, Tags, TmplList) \ +- INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE_METHOD_2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____F_U_N_C____ ), ClassName, Name, Tags, TmplList ) ++ INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE_METHOD_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_F_U_N_C_ ), ClassName, Name, Tags, TmplList ) + + // end catch_test_registry.h + // start catch_capture.hpp +@@ -1344,61 +1349,61 @@ struct AutoReg : NonCopyable { + + namespace Catch { + +-// ResultWas::OfType enum +-struct ResultWas { enum OfType { +- Unknown = -1, +- Ok = 0, +- Info = 1, +- Warning = 2, ++ // ResultWas::OfType enum ++ struct ResultWas { enum OfType { ++ Unknown = -1, ++ Ok = 0, ++ Info = 1, ++ Warning = 2, + +- FailureBit = 0x10, ++ FailureBit = 0x10, + +- ExpressionFailed = FailureBit | 1, +- ExplicitFailure = FailureBit | 2, ++ ExpressionFailed = FailureBit | 1, ++ ExplicitFailure = FailureBit | 2, + +- Exception = 0x100 | FailureBit, ++ Exception = 0x100 | FailureBit, + +- ThrewException = Exception | 1, +- DidntThrowException = Exception | 2, ++ ThrewException = Exception | 1, ++ DidntThrowException = Exception | 2, + +- FatalErrorCondition = 0x200 | FailureBit ++ FatalErrorCondition = 0x200 | FailureBit + +- }; }; ++ }; }; + +-bool isOk( ResultWas::OfType resultType ); +-bool isJustInfo( int flags ); ++ bool isOk( ResultWas::OfType resultType ); ++ bool isJustInfo( int flags ); + +-// ResultDisposition::Flags enum +-struct ResultDisposition { enum Flags { +- Normal = 0x01, ++ // ResultDisposition::Flags enum ++ struct ResultDisposition { enum Flags { ++ Normal = 0x01, + +- ContinueOnFailure = 0x02, // Failures fail test, but execution continues +- FalseTest = 0x04, // Prefix expression with ! +- SuppressFail = 0x08 // Failures are reported but do not fail the test +- }; }; ++ ContinueOnFailure = 0x02, // Failures fail test, but execution continues ++ FalseTest = 0x04, // Prefix expression with ! ++ SuppressFail = 0x08 // Failures are reported but do not fail the test ++ }; }; + +-ResultDisposition::Flags operator | ( ResultDisposition::Flags lhs, ResultDisposition::Flags rhs ); ++ ResultDisposition::Flags operator | ( ResultDisposition::Flags lhs, ResultDisposition::Flags rhs ); + +-bool shouldContinueOnFailure( int flags ); +-inline bool isFalseTest( int flags ) { return ( flags & ResultDisposition::FalseTest ) != 0; } +-bool shouldSuppressFailure( int flags ); ++ bool shouldContinueOnFailure( int flags ); ++ inline bool isFalseTest( int flags ) { return ( flags & ResultDisposition::FalseTest ) != 0; } ++ bool shouldSuppressFailure( int flags ); + + } // end namespace Catch + + // end catch_result_type.h + namespace Catch { + +-struct AssertionInfo +-{ +- StringRef macroName; +- SourceLineInfo lineInfo; +- StringRef capturedExpression; +- ResultDisposition::Flags resultDisposition; +- +- // We want to delete this constructor but a compiler bug in 4.8 means +- // the struct is then treated as non-aggregate +- //AssertionInfo() = delete; +-}; ++ struct AssertionInfo ++ { ++ StringRef macroName; ++ SourceLineInfo lineInfo; ++ StringRef capturedExpression; ++ ResultDisposition::Flags resultDisposition; ++ ++ // We want to delete this constructor but a compiler bug in 4.8 means ++ // the struct is then treated as non-aggregate ++ //AssertionInfo() = delete; ++ }; + + } // end namespace Catch + +@@ -1419,35 +1424,35 @@ struct AssertionInfo + + namespace Catch { + +-std::ostream& cout(); +-std::ostream& cerr(); +-std::ostream& clog(); ++ std::ostream& cout(); ++ std::ostream& cerr(); ++ std::ostream& clog(); + +-class StringRef; ++ class StringRef; + +-struct IStream { +- virtual ~IStream(); +- virtual std::ostream& stream() const = 0; +-}; ++ struct IStream { ++ virtual ~IStream(); ++ virtual std::ostream& stream() const = 0; ++ }; + +-auto makeStream( StringRef const &filename ) -> IStream const*; ++ auto makeStream( StringRef const &filename ) -> IStream const*; + +-class ReusableStringStream : NonCopyable { +- std::size_t m_index; +- std::ostream* m_oss; +- public: +- ReusableStringStream(); +- ~ReusableStringStream(); ++ class ReusableStringStream : NonCopyable { ++ std::size_t m_index; ++ std::ostream* m_oss; ++ public: ++ ReusableStringStream(); ++ ~ReusableStringStream(); + +- auto str() const -> std::string; ++ auto str() const -> std::string; + +- template +- auto operator << ( T const& value ) -> ReusableStringStream& { +- *m_oss << value; +- return *this; +- } +- auto get() -> std::ostream& { return *m_oss; } +-}; ++ template ++ auto operator << ( T const& value ) -> ReusableStringStream& { ++ *m_oss << value; ++ return *this; ++ } ++ auto get() -> std::ostream& { return *m_oss; } ++ }; + } + + // end catch_stream.h +@@ -1457,32 +1462,32 @@ class ReusableStringStream : NonCopyable { + + namespace Catch { + +-namespace Detail { +-struct EnumInfo { +- StringRef m_name; +- std::vector> m_values; ++ namespace Detail { ++ struct EnumInfo { ++ StringRef m_name; ++ std::vector> m_values; + +- ~EnumInfo(); ++ ~EnumInfo(); + +- StringRef lookup( int value ) const; +-}; +-} // namespace Detail ++ StringRef lookup( int value ) const; ++ }; ++ } // namespace Detail + +-struct IMutableEnumValuesRegistry { +- virtual ~IMutableEnumValuesRegistry(); ++ struct IMutableEnumValuesRegistry { ++ virtual ~IMutableEnumValuesRegistry(); + +- virtual Detail::EnumInfo const& registerEnum( StringRef enumName, StringRef allEnums, std::vector const& values ) = 0; ++ virtual Detail::EnumInfo const& registerEnum( StringRef enumName, StringRef allEnums, std::vector const& values ) = 0; + +- template +- Detail::EnumInfo const& registerEnum( StringRef enumName, StringRef allEnums, std::initializer_list values ) { +- static_assert(sizeof(int) >= sizeof(E), "Cannot serialize enum to int"); +- std::vector intValues; +- intValues.reserve( values.size() ); +- for( auto enumValue : values ) +- intValues.push_back( static_cast( enumValue ) ); +- return registerEnum( enumName, allEnums, intValues ); +- } +-}; ++ template ++ Detail::EnumInfo const& registerEnum( StringRef enumName, StringRef allEnums, std::initializer_list values ) { ++ static_assert(sizeof(int) >= sizeof(E), "Cannot serialize enum to int"); ++ std::vector intValues; ++ intValues.reserve( values.size() ); ++ for( auto enumValue : values ) ++ intValues.push_back( static_cast( enumValue ) ); ++ return registerEnum( enumName, allEnums, intValues ); ++ } ++ }; + + } // Catch + +@@ -1544,55 +1549,55 @@ inline id performOptionalSelector( id obj, SEL sel ) { + #endif + + namespace Catch { +-namespace Detail { ++ namespace Detail { + +-extern const std::string unprintableString; ++ extern const std::string unprintableString; + +-std::string rawMemoryToString( const void *object, std::size_t size ); ++ std::string rawMemoryToString( const void *object, std::size_t size ); + +-template +-std::string rawMemoryToString( const T& object ) { +- return rawMemoryToString( &object, sizeof(object) ); +-} ++ template ++ std::string rawMemoryToString( const T& object ) { ++ return rawMemoryToString( &object, sizeof(object) ); ++ } + +-template +-class IsStreamInsertable { +- template +- static auto test(int) +- -> decltype(std::declval() << std::declval(), std::true_type()); ++ template ++ class IsStreamInsertable { ++ template ++ static auto test(int) ++ -> decltype(std::declval() << std::declval(), std::true_type()); + +- template +- static auto test(...)->std::false_type; ++ template ++ static auto test(...)->std::false_type; + +- public: +- static const bool value = decltype(test(0))::value; +-}; ++ public: ++ static const bool value = decltype(test(0))::value; ++ }; + +-template +-std::string convertUnknownEnumToString( E e ); ++ template ++ std::string convertUnknownEnumToString( E e ); + +-template +-typename std::enable_if< +- !std::is_enum::value && !std::is_base_of::value, +- std::string>::type convertUnstreamable( T const& ) { +- return Detail::unprintableString; +-} +-template +-typename std::enable_if< +- !std::is_enum::value && std::is_base_of::value, +- std::string>::type convertUnstreamable(T const& ex) { +- return ex.what(); +-} ++ template ++ typename std::enable_if< ++ !std::is_enum::value && !std::is_base_of::value, ++ std::string>::type convertUnstreamable( T const& ) { ++ return Detail::unprintableString; ++ } ++ template ++ typename std::enable_if< ++ !std::is_enum::value && std::is_base_of::value, ++ std::string>::type convertUnstreamable(T const& ex) { ++ return ex.what(); ++ } + +-template +-typename std::enable_if< +- std::is_enum::value +- , std::string>::type convertUnstreamable( T const& value ) { +- return convertUnknownEnumToString( value ); +-} ++ template ++ typename std::enable_if< ++ std::is_enum::value ++ , std::string>::type convertUnstreamable( T const& value ) { ++ return convertUnknownEnumToString( value ); ++ } + + #if defined(_MANAGED) +-//! Convert a CLR string to a utf8 std::string ++ //! Convert a CLR string to a utf8 std::string + template + std::string clrReferenceToString( T^ ref ) { + if (ref == nullptr) +@@ -1603,215 +1608,215 @@ typename std::enable_if< + } + #endif + +-} // namespace Detail ++ } // namespace Detail + +-// If we decide for C++14, change these to enable_if_ts +-template +-struct StringMaker { +- template +- static +- typename std::enable_if<::Catch::Detail::IsStreamInsertable::value, std::string>::type +- convert(const Fake& value) { +- ReusableStringStream rss; +- // NB: call using the function-like syntax to avoid ambiguity with +- // user-defined templated operator<< under clang. +- rss.operator<<(value); +- return rss.str(); +- } ++ // If we decide for C++14, change these to enable_if_ts ++ template ++ struct StringMaker { ++ template ++ static ++ typename std::enable_if<::Catch::Detail::IsStreamInsertable::value, std::string>::type ++ convert(const Fake& value) { ++ ReusableStringStream rss; ++ // NB: call using the function-like syntax to avoid ambiguity with ++ // user-defined templated operator<< under clang. ++ rss.operator<<(value); ++ return rss.str(); ++ } + +- template +- static +- typename std::enable_if::value, std::string>::type +- convert( const Fake& value ) { ++ template ++ static ++ typename std::enable_if::value, std::string>::type ++ convert( const Fake& value ) { + #if !defined(CATCH_CONFIG_FALLBACK_STRINGIFIER) +- return Detail::convertUnstreamable(value); ++ return Detail::convertUnstreamable(value); + #else +- return CATCH_CONFIG_FALLBACK_STRINGIFIER(value); ++ return CATCH_CONFIG_FALLBACK_STRINGIFIER(value); + #endif +- } +-}; ++ } ++ }; + +-namespace Detail { ++ namespace Detail { + +-// This function dispatches all stringification requests inside of Catch. +-// Should be preferably called fully qualified, like ::Catch::Detail::stringify +-template +-std::string stringify(const T& e) { +- return ::Catch::StringMaker::type>::type>::convert(e); +-} ++ // This function dispatches all stringification requests inside of Catch. ++ // Should be preferably called fully qualified, like ::Catch::Detail::stringify ++ template ++ std::string stringify(const T& e) { ++ return ::Catch::StringMaker::type>::type>::convert(e); ++ } + +-template +-std::string convertUnknownEnumToString( E e ) { +- return ::Catch::Detail::stringify(static_cast::type>(e)); +-} ++ template ++ std::string convertUnknownEnumToString( E e ) { ++ return ::Catch::Detail::stringify(static_cast::type>(e)); ++ } + + #if defined(_MANAGED) +-template ++ template + std::string stringify( T^ e ) { + return ::Catch::StringMaker::convert(e); + } + #endif + +-} // namespace Detail ++ } // namespace Detail + +-// Some predefined specializations ++ // Some predefined specializations + +-template<> +-struct StringMaker { +- static std::string convert(const std::string& str); +-}; ++ template<> ++ struct StringMaker { ++ static std::string convert(const std::string& str); ++ }; + + #ifdef CATCH_CONFIG_CPP17_STRING_VIEW +-template<> +-struct StringMaker { +- static std::string convert(std::string_view str); +-}; ++ template<> ++ struct StringMaker { ++ static std::string convert(std::string_view str); ++ }; + #endif + +-template<> +-struct StringMaker { +- static std::string convert(char const * str); +-}; +-template<> +-struct StringMaker { +- static std::string convert(char * str); +-}; ++ template<> ++ struct StringMaker { ++ static std::string convert(char const * str); ++ }; ++ template<> ++ struct StringMaker { ++ static std::string convert(char * str); ++ }; + + #ifdef CATCH_CONFIG_WCHAR +-template<> +-struct StringMaker { +- static std::string convert(const std::wstring& wstr); +-}; ++ template<> ++ struct StringMaker { ++ static std::string convert(const std::wstring& wstr); ++ }; + + # ifdef CATCH_CONFIG_CPP17_STRING_VIEW +-template<> +-struct StringMaker { +- static std::string convert(std::wstring_view str); +-}; ++ template<> ++ struct StringMaker { ++ static std::string convert(std::wstring_view str); ++ }; + # endif + +-template<> +-struct StringMaker { +- static std::string convert(wchar_t const * str); +-}; +-template<> +-struct StringMaker { +- static std::string convert(wchar_t * str); +-}; ++ template<> ++ struct StringMaker { ++ static std::string convert(wchar_t const * str); ++ }; ++ template<> ++ struct StringMaker { ++ static std::string convert(wchar_t * str); ++ }; + #endif + +-// TBD: Should we use `strnlen` to ensure that we don't go out of the buffer, +-// while keeping string semantics? +-template +-struct StringMaker { +- static std::string convert(char const* str) { +- return ::Catch::Detail::stringify(std::string{ str }); +- } +-}; +-template +-struct StringMaker { +- static std::string convert(signed char const* str) { +- return ::Catch::Detail::stringify(std::string{ reinterpret_cast(str) }); +- } +-}; +-template +-struct StringMaker { +- static std::string convert(unsigned char const* str) { +- return ::Catch::Detail::stringify(std::string{ reinterpret_cast(str) }); +- } +-}; ++ // TBD: Should we use `strnlen` to ensure that we don't go out of the buffer, ++ // while keeping string semantics? ++ template ++ struct StringMaker { ++ static std::string convert(char const* str) { ++ return ::Catch::Detail::stringify(std::string{ str }); ++ } ++ }; ++ template ++ struct StringMaker { ++ static std::string convert(signed char const* str) { ++ return ::Catch::Detail::stringify(std::string{ reinterpret_cast(str) }); ++ } ++ }; ++ template ++ struct StringMaker { ++ static std::string convert(unsigned char const* str) { ++ return ::Catch::Detail::stringify(std::string{ reinterpret_cast(str) }); ++ } ++ }; + + #if defined(CATCH_CONFIG_CPP17_BYTE) +-template<> +-struct StringMaker { +- static std::string convert(std::byte value); +-}; ++ template<> ++ struct StringMaker { ++ static std::string convert(std::byte value); ++ }; + #endif // defined(CATCH_CONFIG_CPP17_BYTE) +-template<> +-struct StringMaker { +- static std::string convert(int value); +-}; +-template<> +-struct StringMaker { +- static std::string convert(long value); +-}; +-template<> +-struct StringMaker { +- static std::string convert(long long value); +-}; +-template<> +-struct StringMaker { +- static std::string convert(unsigned int value); +-}; +-template<> +-struct StringMaker { +- static std::string convert(unsigned long value); +-}; +-template<> +-struct StringMaker { +- static std::string convert(unsigned long long value); +-}; ++ template<> ++ struct StringMaker { ++ static std::string convert(int value); ++ }; ++ template<> ++ struct StringMaker { ++ static std::string convert(long value); ++ }; ++ template<> ++ struct StringMaker { ++ static std::string convert(long long value); ++ }; ++ template<> ++ struct StringMaker { ++ static std::string convert(unsigned int value); ++ }; ++ template<> ++ struct StringMaker { ++ static std::string convert(unsigned long value); ++ }; ++ template<> ++ struct StringMaker { ++ static std::string convert(unsigned long long value); ++ }; + +-template<> +-struct StringMaker { +- static std::string convert(bool b); +-}; ++ template<> ++ struct StringMaker { ++ static std::string convert(bool b); ++ }; + +-template<> +-struct StringMaker { +- static std::string convert(char c); +-}; +-template<> +-struct StringMaker { +- static std::string convert(signed char c); +-}; +-template<> +-struct StringMaker { +- static std::string convert(unsigned char c); +-}; ++ template<> ++ struct StringMaker { ++ static std::string convert(char c); ++ }; ++ template<> ++ struct StringMaker { ++ static std::string convert(signed char c); ++ }; ++ template<> ++ struct StringMaker { ++ static std::string convert(unsigned char c); ++ }; + +-template<> +-struct StringMaker { +- static std::string convert(std::nullptr_t); +-}; ++ template<> ++ struct StringMaker { ++ static std::string convert(std::nullptr_t); ++ }; + +-template<> +-struct StringMaker { +- static std::string convert(float value); +- static int precision; +-}; ++ template<> ++ struct StringMaker { ++ static std::string convert(float value); ++ static int precision; ++ }; + +-template<> +-struct StringMaker { +- static std::string convert(double value); +- static int precision; +-}; ++ template<> ++ struct StringMaker { ++ static std::string convert(double value); ++ static int precision; ++ }; + +-template +-struct StringMaker { +- template +- static std::string convert(U* p) { +- if (p) { +- return ::Catch::Detail::rawMemoryToString(p); +- } else { +- return "nullptr"; +- } +- } +-}; ++ template ++ struct StringMaker { ++ template ++ static std::string convert(U* p) { ++ if (p) { ++ return ::Catch::Detail::rawMemoryToString(p); ++ } else { ++ return "nullptr"; ++ } ++ } ++ }; + +-template +-struct StringMaker { +- static std::string convert(R C::* p) { +- if (p) { +- return ::Catch::Detail::rawMemoryToString(p); +- } else { +- return "nullptr"; +- } +- } +-}; ++ template ++ struct StringMaker { ++ static std::string convert(R C::* p) { ++ if (p) { ++ return ::Catch::Detail::rawMemoryToString(p); ++ } else { ++ return "nullptr"; ++ } ++ } ++ }; + + #if defined(_MANAGED) +-template ++ template + struct StringMaker { + static std::string convert( T^ ref ) { + return ::Catch::Detail::clrReferenceToString(ref); +@@ -1819,23 +1824,23 @@ template + }; + #endif + +-namespace Detail { +-template +-std::string rangeToString(InputIterator first, Sentinel last) { +- ReusableStringStream rss; +- rss << "{ "; +- if (first != last) { +- rss << ::Catch::Detail::stringify(*first); +- for (++first; first != last; ++first) +- rss << ", " << ::Catch::Detail::stringify(*first); +- } +- rss << " }"; +- return rss.str(); +-} +-} ++ namespace Detail { ++ template ++ std::string rangeToString(InputIterator first, Sentinel last) { ++ ReusableStringStream rss; ++ rss << "{ "; ++ if (first != last) { ++ rss << ::Catch::Detail::stringify(*first); ++ for (++first; first != last; ++first) ++ rss << ", " << ::Catch::Detail::stringify(*first); ++ } ++ rss << " }"; ++ return rss.str(); ++ } ++ } + + #ifdef __OBJC__ +-template<> ++ template<> + struct StringMaker { + static std::string convert(NSString * nsstring) { + if (!nsstring) +@@ -1979,71 +1984,71 @@ namespace Catch { + #endif // CATCH_CONFIG_ENABLE_VARIANT_STRINGMAKER + + namespace Catch { +-// Import begin/ end from std here +-using std::begin; +-using std::end; +- +-namespace detail { +-template +-struct void_type { +- using type = void; +-}; ++ // Import begin/ end from std here ++ using std::begin; ++ using std::end; ++ ++ namespace detail { ++ template ++ struct void_type { ++ using type = void; ++ }; + +-template +-struct is_range_impl : std::false_type { +-}; ++ template ++ struct is_range_impl : std::false_type { ++ }; + +-template +-struct is_range_impl()))>::type> : std::true_type { +-}; +-} // namespace detail ++ template ++ struct is_range_impl()))>::type> : std::true_type { ++ }; ++ } // namespace detail + +-template +-struct is_range : detail::is_range_impl { +-}; ++ template ++ struct is_range : detail::is_range_impl { ++ }; + + #if defined(_MANAGED) // Managed types are never ranges +-template ++ template + struct is_range { + static const bool value = false; + }; + #endif + +-template +-std::string rangeToString( Range const& range ) { +- return ::Catch::Detail::rangeToString( begin( range ), end( range ) ); +-} ++ template ++ std::string rangeToString( Range const& range ) { ++ return ::Catch::Detail::rangeToString( begin( range ), end( range ) ); ++ } + +-// Handle vector specially +-template +-std::string rangeToString( std::vector const& v ) { +- ReusableStringStream rss; +- rss << "{ "; +- bool first = true; +- for( bool b : v ) { +- if( first ) +- first = false; +- else +- rss << ", "; +- rss << ::Catch::Detail::stringify( b ); +- } +- rss << " }"; +- return rss.str(); +-} ++ // Handle vector specially ++ template ++ std::string rangeToString( std::vector const& v ) { ++ ReusableStringStream rss; ++ rss << "{ "; ++ bool first = true; ++ for( bool b : v ) { ++ if( first ) ++ first = false; ++ else ++ rss << ", "; ++ rss << ::Catch::Detail::stringify( b ); ++ } ++ rss << " }"; ++ return rss.str(); ++ } + +-template +-struct StringMaker::value && !::Catch::Detail::IsStreamInsertable::value>::type> { +- static std::string convert( R const& range ) { +- return rangeToString( range ); +- } +-}; ++ template ++ struct StringMaker::value && !::Catch::Detail::IsStreamInsertable::value>::type> { ++ static std::string convert( R const& range ) { ++ return rangeToString( range ); ++ } ++ }; + +-template +-struct StringMaker { +- static std::string convert(T const(&arr)[SZ]) { +- return rangeToString(arr); +- } +-}; ++ template ++ struct StringMaker { ++ static std::string convert(T const(&arr)[SZ]) { ++ return rangeToString(arr); ++ } ++ }; + + } // namespace Catch + +@@ -2194,228 +2199,228 @@ namespace Catch { \ + + namespace Catch { + +-struct ITransientExpression { +- auto isBinaryExpression() const -> bool { return m_isBinaryExpression; } +- auto getResult() const -> bool { return m_result; } +- virtual void streamReconstructedExpression( std::ostream &os ) const = 0; ++ struct ITransientExpression { ++ auto isBinaryExpression() const -> bool { return m_isBinaryExpression; } ++ auto getResult() const -> bool { return m_result; } ++ virtual void streamReconstructedExpression( std::ostream &os ) const = 0; + +- ITransientExpression( bool isBinaryExpression, bool result ) +- : m_isBinaryExpression( isBinaryExpression ), +- m_result( result ) +- {} ++ ITransientExpression( bool isBinaryExpression, bool result ) ++ : m_isBinaryExpression( isBinaryExpression ), ++ m_result( result ) ++ {} + +- // We don't actually need a virtual destructor, but many static analysers +- // complain if it's not here :-( +- virtual ~ITransientExpression(); ++ // We don't actually need a virtual destructor, but many static analysers ++ // complain if it's not here :-( ++ virtual ~ITransientExpression(); + +- bool m_isBinaryExpression; +- bool m_result; ++ bool m_isBinaryExpression; ++ bool m_result; + +-}; ++ }; + +-void formatReconstructedExpression( std::ostream &os, std::string const& lhs, StringRef op, std::string const& rhs ); ++ void formatReconstructedExpression( std::ostream &os, std::string const& lhs, StringRef op, std::string const& rhs ); + +-template +-class BinaryExpr : public ITransientExpression { +- LhsT m_lhs; +- StringRef m_op; +- RhsT m_rhs; ++ template ++ class BinaryExpr : public ITransientExpression { ++ LhsT m_lhs; ++ StringRef m_op; ++ RhsT m_rhs; + +- void streamReconstructedExpression( std::ostream &os ) const override { +- formatReconstructedExpression +- ( os, Catch::Detail::stringify( m_lhs ), m_op, Catch::Detail::stringify( m_rhs ) ); +- } ++ void streamReconstructedExpression( std::ostream &os ) const override { ++ formatReconstructedExpression ++ ( os, Catch::Detail::stringify( m_lhs ), m_op, Catch::Detail::stringify( m_rhs ) ); ++ } + +- public: +- BinaryExpr( bool comparisonResult, LhsT lhs, StringRef op, RhsT rhs ) +- : ITransientExpression{ true, comparisonResult }, +- m_lhs( lhs ), +- m_op( op ), +- m_rhs( rhs ) +- {} +- +- template +- auto operator && ( T ) const -> BinaryExpr const { +- static_assert(always_false::value, +- "chained comparisons are not supported inside assertions, " +- "wrap the expression inside parentheses, or decompose it"); +- } ++ public: ++ BinaryExpr( bool comparisonResult, LhsT lhs, StringRef op, RhsT rhs ) ++ : ITransientExpression{ true, comparisonResult }, ++ m_lhs( lhs ), ++ m_op( op ), ++ m_rhs( rhs ) ++ {} + +- template +- auto operator || ( T ) const -> BinaryExpr const { +- static_assert(always_false::value, +- "chained comparisons are not supported inside assertions, " +- "wrap the expression inside parentheses, or decompose it"); +- } ++ template ++ auto operator && ( T ) const -> BinaryExpr const { ++ static_assert(always_false::value, ++ "chained comparisons are not supported inside assertions, " ++ "wrap the expression inside parentheses, or decompose it"); ++ } + +- template +- auto operator == ( T ) const -> BinaryExpr const { +- static_assert(always_false::value, +- "chained comparisons are not supported inside assertions, " +- "wrap the expression inside parentheses, or decompose it"); +- } ++ template ++ auto operator || ( T ) const -> BinaryExpr const { ++ static_assert(always_false::value, ++ "chained comparisons are not supported inside assertions, " ++ "wrap the expression inside parentheses, or decompose it"); ++ } + +- template +- auto operator != ( T ) const -> BinaryExpr const { +- static_assert(always_false::value, +- "chained comparisons are not supported inside assertions, " +- "wrap the expression inside parentheses, or decompose it"); +- } ++ template ++ auto operator == ( T ) const -> BinaryExpr const { ++ static_assert(always_false::value, ++ "chained comparisons are not supported inside assertions, " ++ "wrap the expression inside parentheses, or decompose it"); ++ } + +- template +- auto operator > ( T ) const -> BinaryExpr const { +- static_assert(always_false::value, +- "chained comparisons are not supported inside assertions, " +- "wrap the expression inside parentheses, or decompose it"); +- } ++ template ++ auto operator != ( T ) const -> BinaryExpr const { ++ static_assert(always_false::value, ++ "chained comparisons are not supported inside assertions, " ++ "wrap the expression inside parentheses, or decompose it"); ++ } + +- template +- auto operator < ( T ) const -> BinaryExpr const { +- static_assert(always_false::value, +- "chained comparisons are not supported inside assertions, " +- "wrap the expression inside parentheses, or decompose it"); +- } ++ template ++ auto operator > ( T ) const -> BinaryExpr const { ++ static_assert(always_false::value, ++ "chained comparisons are not supported inside assertions, " ++ "wrap the expression inside parentheses, or decompose it"); ++ } + +- template +- auto operator >= ( T ) const -> BinaryExpr const { +- static_assert(always_false::value, +- "chained comparisons are not supported inside assertions, " +- "wrap the expression inside parentheses, or decompose it"); +- } ++ template ++ auto operator < ( T ) const -> BinaryExpr const { ++ static_assert(always_false::value, ++ "chained comparisons are not supported inside assertions, " ++ "wrap the expression inside parentheses, or decompose it"); ++ } + +- template +- auto operator <= ( T ) const -> BinaryExpr const { +- static_assert(always_false::value, +- "chained comparisons are not supported inside assertions, " +- "wrap the expression inside parentheses, or decompose it"); +- } +-}; ++ template ++ auto operator >= ( T ) const -> BinaryExpr const { ++ static_assert(always_false::value, ++ "chained comparisons are not supported inside assertions, " ++ "wrap the expression inside parentheses, or decompose it"); ++ } + +-template +-class UnaryExpr : public ITransientExpression { +- LhsT m_lhs; ++ template ++ auto operator <= ( T ) const -> BinaryExpr const { ++ static_assert(always_false::value, ++ "chained comparisons are not supported inside assertions, " ++ "wrap the expression inside parentheses, or decompose it"); ++ } ++ }; + +- void streamReconstructedExpression( std::ostream &os ) const override { +- os << Catch::Detail::stringify( m_lhs ); +- } ++ template ++ class UnaryExpr : public ITransientExpression { ++ LhsT m_lhs; + +- public: +- explicit UnaryExpr( LhsT lhs ) +- : ITransientExpression{ false, static_cast(lhs) }, +- m_lhs( lhs ) +- {} +-}; ++ void streamReconstructedExpression( std::ostream &os ) const override { ++ os << Catch::Detail::stringify( m_lhs ); ++ } + +-// Specialised comparison functions to handle equality comparisons between ints and pointers (NULL deduces as an int) +-template +-auto compareEqual( LhsT const& lhs, RhsT const& rhs ) -> bool { return static_cast(lhs == rhs); } +-template +-auto compareEqual( T* const& lhs, int rhs ) -> bool { return lhs == reinterpret_cast( rhs ); } +-template +-auto compareEqual( T* const& lhs, long rhs ) -> bool { return lhs == reinterpret_cast( rhs ); } +-template +-auto compareEqual( int lhs, T* const& rhs ) -> bool { return reinterpret_cast( lhs ) == rhs; } +-template +-auto compareEqual( long lhs, T* const& rhs ) -> bool { return reinterpret_cast( lhs ) == rhs; } ++ public: ++ explicit UnaryExpr( LhsT lhs ) ++ : ITransientExpression{ false, static_cast(lhs) }, ++ m_lhs( lhs ) ++ {} ++ }; + +-template +-auto compareNotEqual( LhsT const& lhs, RhsT&& rhs ) -> bool { return static_cast(lhs != rhs); } +-template +-auto compareNotEqual( T* const& lhs, int rhs ) -> bool { return lhs != reinterpret_cast( rhs ); } +-template +-auto compareNotEqual( T* const& lhs, long rhs ) -> bool { return lhs != reinterpret_cast( rhs ); } +-template +-auto compareNotEqual( int lhs, T* const& rhs ) -> bool { return reinterpret_cast( lhs ) != rhs; } +-template +-auto compareNotEqual( long lhs, T* const& rhs ) -> bool { return reinterpret_cast( lhs ) != rhs; } ++ // Specialised comparison functions to handle equality comparisons between ints and pointers (NULL deduces as an int) ++ template ++ auto compareEqual( LhsT const& lhs, RhsT const& rhs ) -> bool { return static_cast(lhs == rhs); } ++ template ++ auto compareEqual( T* const& lhs, int rhs ) -> bool { return lhs == reinterpret_cast( rhs ); } ++ template ++ auto compareEqual( T* const& lhs, long rhs ) -> bool { return lhs == reinterpret_cast( rhs ); } ++ template ++ auto compareEqual( int lhs, T* const& rhs ) -> bool { return reinterpret_cast( lhs ) == rhs; } ++ template ++ auto compareEqual( long lhs, T* const& rhs ) -> bool { return reinterpret_cast( lhs ) == rhs; } + +-template +-class ExprLhs { +- LhsT m_lhs; +- public: +- explicit ExprLhs( LhsT lhs ) : m_lhs( lhs ) {} ++ template ++ auto compareNotEqual( LhsT const& lhs, RhsT&& rhs ) -> bool { return static_cast(lhs != rhs); } ++ template ++ auto compareNotEqual( T* const& lhs, int rhs ) -> bool { return lhs != reinterpret_cast( rhs ); } ++ template ++ auto compareNotEqual( T* const& lhs, long rhs ) -> bool { return lhs != reinterpret_cast( rhs ); } ++ template ++ auto compareNotEqual( int lhs, T* const& rhs ) -> bool { return reinterpret_cast( lhs ) != rhs; } ++ template ++ auto compareNotEqual( long lhs, T* const& rhs ) -> bool { return reinterpret_cast( lhs ) != rhs; } + +- template +- auto operator == ( RhsT const& rhs ) -> BinaryExpr const { +- return { compareEqual( m_lhs, rhs ), m_lhs, "==", rhs }; +- } +- auto operator == ( bool rhs ) -> BinaryExpr const { +- return { m_lhs == rhs, m_lhs, "==", rhs }; +- } ++ template ++ class ExprLhs { ++ LhsT m_lhs; ++ public: ++ explicit ExprLhs( LhsT lhs ) : m_lhs( lhs ) {} + +- template +- auto operator != ( RhsT const& rhs ) -> BinaryExpr const { +- return { compareNotEqual( m_lhs, rhs ), m_lhs, "!=", rhs }; +- } +- auto operator != ( bool rhs ) -> BinaryExpr const { +- return { m_lhs != rhs, m_lhs, "!=", rhs }; +- } ++ template ++ auto operator == ( RhsT const& rhs ) -> BinaryExpr const { ++ return { compareEqual( m_lhs, rhs ), m_lhs, "==", rhs }; ++ } ++ auto operator == ( bool rhs ) -> BinaryExpr const { ++ return { m_lhs == rhs, m_lhs, "==", rhs }; ++ } + +- template +- auto operator > ( RhsT const& rhs ) -> BinaryExpr const { +- return { static_cast(m_lhs > rhs), m_lhs, ">", rhs }; +- } +- template +- auto operator < ( RhsT const& rhs ) -> BinaryExpr const { +- return { static_cast(m_lhs < rhs), m_lhs, "<", rhs }; +- } +- template +- auto operator >= ( RhsT const& rhs ) -> BinaryExpr const { +- return { static_cast(m_lhs >= rhs), m_lhs, ">=", rhs }; +- } +- template +- auto operator <= ( RhsT const& rhs ) -> BinaryExpr const { +- return { static_cast(m_lhs <= rhs), m_lhs, "<=", rhs }; +- } +- template +- auto operator | (RhsT const& rhs) -> BinaryExpr const { +- return { static_cast(m_lhs | rhs), m_lhs, "|", rhs }; +- } +- template +- auto operator & (RhsT const& rhs) -> BinaryExpr const { +- return { static_cast(m_lhs & rhs), m_lhs, "&", rhs }; +- } +- template +- auto operator ^ (RhsT const& rhs) -> BinaryExpr const { +- return { static_cast(m_lhs ^ rhs), m_lhs, "^", rhs }; +- } ++ template ++ auto operator != ( RhsT const& rhs ) -> BinaryExpr const { ++ return { compareNotEqual( m_lhs, rhs ), m_lhs, "!=", rhs }; ++ } ++ auto operator != ( bool rhs ) -> BinaryExpr const { ++ return { m_lhs != rhs, m_lhs, "!=", rhs }; ++ } + +- template +- auto operator && ( RhsT const& ) -> BinaryExpr const { +- static_assert(always_false::value, +- "operator&& is not supported inside assertions, " +- "wrap the expression inside parentheses, or decompose it"); +- } ++ template ++ auto operator > ( RhsT const& rhs ) -> BinaryExpr const { ++ return { static_cast(m_lhs > rhs), m_lhs, ">", rhs }; ++ } ++ template ++ auto operator < ( RhsT const& rhs ) -> BinaryExpr const { ++ return { static_cast(m_lhs < rhs), m_lhs, "<", rhs }; ++ } ++ template ++ auto operator >= ( RhsT const& rhs ) -> BinaryExpr const { ++ return { static_cast(m_lhs >= rhs), m_lhs, ">=", rhs }; ++ } ++ template ++ auto operator <= ( RhsT const& rhs ) -> BinaryExpr const { ++ return { static_cast(m_lhs <= rhs), m_lhs, "<=", rhs }; ++ } ++ template ++ auto operator | (RhsT const& rhs) -> BinaryExpr const { ++ return { static_cast(m_lhs | rhs), m_lhs, "|", rhs }; ++ } ++ template ++ auto operator & (RhsT const& rhs) -> BinaryExpr const { ++ return { static_cast(m_lhs & rhs), m_lhs, "&", rhs }; ++ } ++ template ++ auto operator ^ (RhsT const& rhs) -> BinaryExpr const { ++ return { static_cast(m_lhs ^ rhs), m_lhs, "^", rhs }; ++ } + +- template +- auto operator || ( RhsT const& ) -> BinaryExpr const { +- static_assert(always_false::value, +- "operator|| is not supported inside assertions, " +- "wrap the expression inside parentheses, or decompose it"); +- } ++ template ++ auto operator && ( RhsT const& ) -> BinaryExpr const { ++ static_assert(always_false::value, ++ "operator&& is not supported inside assertions, " ++ "wrap the expression inside parentheses, or decompose it"); ++ } + +- auto makeUnaryExpr() const -> UnaryExpr { +- return UnaryExpr{ m_lhs }; +- } +-}; ++ template ++ auto operator || ( RhsT const& ) -> BinaryExpr const { ++ static_assert(always_false::value, ++ "operator|| is not supported inside assertions, " ++ "wrap the expression inside parentheses, or decompose it"); ++ } ++ ++ auto makeUnaryExpr() const -> UnaryExpr { ++ return UnaryExpr{ m_lhs }; ++ } ++ }; + +-void handleExpression( ITransientExpression const& expr ); ++ void handleExpression( ITransientExpression const& expr ); + +-template +-void handleExpression( ExprLhs const& expr ) { +- handleExpression( expr.makeUnaryExpr() ); +-} ++ template ++ void handleExpression( ExprLhs const& expr ) { ++ handleExpression( expr.makeUnaryExpr() ); ++ } + +-struct Decomposer { +- template +- auto operator <= ( T const& lhs ) -> ExprLhs { +- return ExprLhs{ lhs }; +- } ++ struct Decomposer { ++ template ++ auto operator <= ( T const& lhs ) -> ExprLhs { ++ return ExprLhs{ lhs }; ++ } + +- auto operator <=( bool value ) -> ExprLhs { +- return ExprLhs{ value }; +- } +-}; ++ auto operator <=( bool value ) -> ExprLhs { ++ return ExprLhs{ value }; ++ } ++ }; + + } // end namespace Catch + +@@ -2431,155 +2436,155 @@ struct Decomposer { + + namespace Catch { + +-class AssertionResult; +-struct AssertionInfo; +-struct SectionInfo; +-struct SectionEndInfo; +-struct MessageInfo; +-struct MessageBuilder; +-struct Counts; +-struct AssertionReaction; +-struct SourceLineInfo; ++ class AssertionResult; ++ struct AssertionInfo; ++ struct SectionInfo; ++ struct SectionEndInfo; ++ struct MessageInfo; ++ struct MessageBuilder; ++ struct Counts; ++ struct AssertionReaction; ++ struct SourceLineInfo; + +-struct ITransientExpression; +-struct IGeneratorTracker; ++ struct ITransientExpression; ++ struct IGeneratorTracker; + + #if defined(CATCH_CONFIG_ENABLE_BENCHMARKING) +-struct BenchmarkInfo; ++ struct BenchmarkInfo; + template > + struct BenchmarkStats; + #endif // CATCH_CONFIG_ENABLE_BENCHMARKING + +-struct IResultCapture { ++ struct IResultCapture { + +- virtual ~IResultCapture(); ++ virtual ~IResultCapture(); + +- virtual bool sectionStarted( SectionInfo const& sectionInfo, +- Counts& assertions ) = 0; +- virtual void sectionEnded( SectionEndInfo const& endInfo ) = 0; +- virtual void sectionEndedEarly( SectionEndInfo const& endInfo ) = 0; ++ virtual bool sectionStarted( SectionInfo const& sectionInfo, ++ Counts& assertions ) = 0; ++ virtual void sectionEnded( SectionEndInfo const& endInfo ) = 0; ++ virtual void sectionEndedEarly( SectionEndInfo const& endInfo ) = 0; + +- virtual auto acquireGeneratorTracker( StringRef generatorName, SourceLineInfo const& lineInfo ) -> IGeneratorTracker& = 0; ++ virtual auto acquireGeneratorTracker( StringRef generatorName, SourceLineInfo const& lineInfo ) -> IGeneratorTracker& = 0; + + #if defined(CATCH_CONFIG_ENABLE_BENCHMARKING) +- virtual void benchmarkPreparing( std::string const& name ) = 0; ++ virtual void benchmarkPreparing( std::string const& name ) = 0; + virtual void benchmarkStarting( BenchmarkInfo const& info ) = 0; + virtual void benchmarkEnded( BenchmarkStats<> const& stats ) = 0; + virtual void benchmarkFailed( std::string const& error ) = 0; + #endif // CATCH_CONFIG_ENABLE_BENCHMARKING + +- virtual void pushScopedMessage( MessageInfo const& message ) = 0; +- virtual void popScopedMessage( MessageInfo const& message ) = 0; +- +- virtual void emplaceUnscopedMessage( MessageBuilder const& builder ) = 0; +- +- virtual void handleFatalErrorCondition( StringRef message ) = 0; +- +- virtual void handleExpr +- ( AssertionInfo const& info, +- ITransientExpression const& expr, +- AssertionReaction& reaction ) = 0; +- virtual void handleMessage +- ( AssertionInfo const& info, +- ResultWas::OfType resultType, +- StringRef const& message, +- AssertionReaction& reaction ) = 0; +- virtual void handleUnexpectedExceptionNotThrown +- ( AssertionInfo const& info, +- AssertionReaction& reaction ) = 0; +- virtual void handleUnexpectedInflightException +- ( AssertionInfo const& info, +- std::string const& message, +- AssertionReaction& reaction ) = 0; +- virtual void handleIncomplete +- ( AssertionInfo const& info ) = 0; +- virtual void handleNonExpr +- ( AssertionInfo const &info, +- ResultWas::OfType resultType, +- AssertionReaction &reaction ) = 0; +- +- virtual bool lastAssertionPassed() = 0; +- virtual void assertionPassed() = 0; +- +- // Deprecated, do not use: +- virtual std::string getCurrentTestName() const = 0; +- virtual const AssertionResult* getLastResult() const = 0; +- virtual void exceptionEarlyReported() = 0; +-}; ++ virtual void pushScopedMessage( MessageInfo const& message ) = 0; ++ virtual void popScopedMessage( MessageInfo const& message ) = 0; ++ ++ virtual void emplaceUnscopedMessage( MessageBuilder const& builder ) = 0; ++ ++ virtual void handleFatalErrorCondition( StringRef message ) = 0; ++ ++ virtual void handleExpr ++ ( AssertionInfo const& info, ++ ITransientExpression const& expr, ++ AssertionReaction& reaction ) = 0; ++ virtual void handleMessage ++ ( AssertionInfo const& info, ++ ResultWas::OfType resultType, ++ StringRef const& message, ++ AssertionReaction& reaction ) = 0; ++ virtual void handleUnexpectedExceptionNotThrown ++ ( AssertionInfo const& info, ++ AssertionReaction& reaction ) = 0; ++ virtual void handleUnexpectedInflightException ++ ( AssertionInfo const& info, ++ std::string const& message, ++ AssertionReaction& reaction ) = 0; ++ virtual void handleIncomplete ++ ( AssertionInfo const& info ) = 0; ++ virtual void handleNonExpr ++ ( AssertionInfo const &info, ++ ResultWas::OfType resultType, ++ AssertionReaction &reaction ) = 0; ++ ++ virtual bool lastAssertionPassed() = 0; ++ virtual void assertionPassed() = 0; ++ ++ // Deprecated, do not use: ++ virtual std::string getCurrentTestName() const = 0; ++ virtual const AssertionResult* getLastResult() const = 0; ++ virtual void exceptionEarlyReported() = 0; ++ }; + +-IResultCapture& getResultCapture(); ++ IResultCapture& getResultCapture(); + } + + // end catch_interfaces_capture.h + namespace Catch { + +-struct TestFailureException{}; +-struct AssertionResultData; +-struct IResultCapture; +-class RunContext; ++ struct TestFailureException{}; ++ struct AssertionResultData; ++ struct IResultCapture; ++ class RunContext; + +-class LazyExpression { +- friend class AssertionHandler; +- friend struct AssertionStats; +- friend class RunContext; ++ class LazyExpression { ++ friend class AssertionHandler; ++ friend struct AssertionStats; ++ friend class RunContext; + +- ITransientExpression const* m_transientExpression = nullptr; +- bool m_isNegated; +- public: +- LazyExpression( bool isNegated ); +- LazyExpression( LazyExpression const& other ); +- LazyExpression& operator = ( LazyExpression const& ) = delete; ++ ITransientExpression const* m_transientExpression = nullptr; ++ bool m_isNegated; ++ public: ++ LazyExpression( bool isNegated ); ++ LazyExpression( LazyExpression const& other ); ++ LazyExpression& operator = ( LazyExpression const& ) = delete; + +- explicit operator bool() const; ++ explicit operator bool() const; + +- friend auto operator << ( std::ostream& os, LazyExpression const& lazyExpr ) -> std::ostream&; +-}; ++ friend auto operator << ( std::ostream& os, LazyExpression const& lazyExpr ) -> std::ostream&; ++ }; + +-struct AssertionReaction { +- bool shouldDebugBreak = false; +- bool shouldThrow = false; +-}; ++ struct AssertionReaction { ++ bool shouldDebugBreak = false; ++ bool shouldThrow = false; ++ }; + +-class AssertionHandler { +- AssertionInfo m_assertionInfo; +- AssertionReaction m_reaction; +- bool m_completed = false; +- IResultCapture& m_resultCapture; +- +- public: +- AssertionHandler +- ( StringRef const& macroName, +- SourceLineInfo const& lineInfo, +- StringRef capturedExpression, +- ResultDisposition::Flags resultDisposition ); +- ~AssertionHandler() { +- if ( !m_completed ) { +- m_resultCapture.handleIncomplete( m_assertionInfo ); +- } +- } ++ class AssertionHandler { ++ AssertionInfo m_assertionInfo; ++ AssertionReaction m_reaction; ++ bool m_completed = false; ++ IResultCapture& m_resultCapture; + +- template +- void handleExpr( ExprLhs const& expr ) { +- handleExpr( expr.makeUnaryExpr() ); +- } +- void handleExpr( ITransientExpression const& expr ); ++ public: ++ AssertionHandler ++ ( StringRef const& macroName, ++ SourceLineInfo const& lineInfo, ++ StringRef capturedExpression, ++ ResultDisposition::Flags resultDisposition ); ++ ~AssertionHandler() { ++ if ( !m_completed ) { ++ m_resultCapture.handleIncomplete( m_assertionInfo ); ++ } ++ } + +- void handleMessage(ResultWas::OfType resultType, StringRef const& message); ++ template ++ void handleExpr( ExprLhs const& expr ) { ++ handleExpr( expr.makeUnaryExpr() ); ++ } ++ void handleExpr( ITransientExpression const& expr ); + +- void handleExceptionThrownAsExpected(); +- void handleUnexpectedExceptionNotThrown(); +- void handleExceptionNotThrownAsExpected(); +- void handleThrowingCallSkipped(); +- void handleUnexpectedInflightException(); ++ void handleMessage(ResultWas::OfType resultType, StringRef const& message); + +- void complete(); +- void setCompleted(); ++ void handleExceptionThrownAsExpected(); ++ void handleUnexpectedExceptionNotThrown(); ++ void handleExceptionNotThrownAsExpected(); ++ void handleThrowingCallSkipped(); ++ void handleUnexpectedInflightException(); + +- // query +- auto allowThrows() const -> bool; +-}; ++ void complete(); ++ void setCompleted(); + +-void handleExceptionMatchExpr( AssertionHandler& handler, std::string const& str, StringRef const& matcherString ); ++ // query ++ auto allowThrows() const -> bool; ++ }; ++ ++ void handleExceptionMatchExpr( AssertionHandler& handler, std::string const& str, StringRef const& matcherString ); + + } // namespace Catch + +@@ -2591,80 +2596,80 @@ void handleExceptionMatchExpr( AssertionHandler& handler, std::string const& str + + namespace Catch { + +-struct MessageInfo { +- MessageInfo( StringRef const& _macroName, +- SourceLineInfo const& _lineInfo, +- ResultWas::OfType _type ); +- +- StringRef macroName; +- std::string message; +- SourceLineInfo lineInfo; +- ResultWas::OfType type; +- unsigned int sequence; +- +- bool operator == ( MessageInfo const& other ) const; +- bool operator < ( MessageInfo const& other ) const; +- private: +- static unsigned int globalCount; +-}; ++ struct MessageInfo { ++ MessageInfo( StringRef const& _macroName, ++ SourceLineInfo const& _lineInfo, ++ ResultWas::OfType _type ); ++ ++ StringRef macroName; ++ std::string message; ++ SourceLineInfo lineInfo; ++ ResultWas::OfType type; ++ unsigned int sequence; + +-struct MessageStream { ++ bool operator == ( MessageInfo const& other ) const; ++ bool operator < ( MessageInfo const& other ) const; ++ private: ++ static unsigned int globalCount; ++ }; + +- template +- MessageStream& operator << ( T const& value ) { +- m_stream << value; +- return *this; +- } ++ struct MessageStream { + +- ReusableStringStream m_stream; +-}; ++ template ++ MessageStream& operator << ( T const& value ) { ++ m_stream << value; ++ return *this; ++ } + +-struct MessageBuilder : MessageStream { +- MessageBuilder( StringRef const& macroName, +- SourceLineInfo const& lineInfo, +- ResultWas::OfType type ); ++ ReusableStringStream m_stream; ++ }; + +- template +- MessageBuilder& operator << ( T const& value ) { +- m_stream << value; +- return *this; +- } ++ struct MessageBuilder : MessageStream { ++ MessageBuilder( StringRef const& macroName, ++ SourceLineInfo const& lineInfo, ++ ResultWas::OfType type ); + +- MessageInfo m_info; +-}; ++ template ++ MessageBuilder& operator << ( T const& value ) { ++ m_stream << value; ++ return *this; ++ } ++ ++ MessageInfo m_info; ++ }; + +-class ScopedMessage { +- public: +- explicit ScopedMessage( MessageBuilder const& builder ); +- ScopedMessage( ScopedMessage& duplicate ) = delete; +- ScopedMessage( ScopedMessage&& old ); +- ~ScopedMessage(); ++ class ScopedMessage { ++ public: ++ explicit ScopedMessage( MessageBuilder const& builder ); ++ ScopedMessage( ScopedMessage& duplicate ) = delete; ++ ScopedMessage( ScopedMessage&& old ); ++ ~ScopedMessage(); + +- MessageInfo m_info; +- bool m_moved; +-}; ++ MessageInfo m_info; ++ bool m_moved; ++ }; + +-class Capturer { +- std::vector m_messages; +- IResultCapture& m_resultCapture = getResultCapture(); +- size_t m_captured = 0; +- public: +- Capturer( StringRef macroName, SourceLineInfo const& lineInfo, ResultWas::OfType resultType, StringRef names ); +- ~Capturer(); ++ class Capturer { ++ std::vector m_messages; ++ IResultCapture& m_resultCapture = getResultCapture(); ++ size_t m_captured = 0; ++ public: ++ Capturer( StringRef macroName, SourceLineInfo const& lineInfo, ResultWas::OfType resultType, StringRef names ); ++ ~Capturer(); + +- void captureValue( size_t index, std::string const& value ); ++ void captureValue( size_t index, std::string const& value ); + +- template +- void captureValues( size_t index, T const& value ) { +- captureValue( index, Catch::Detail::stringify( value ) ); +- } ++ template ++ void captureValues( size_t index, T const& value ) { ++ captureValue( index, Catch::Detail::stringify( value ) ); ++ } + +- template +- void captureValues( size_t index, T const& value, Ts const&... values ) { +- captureValue( index, Catch::Detail::stringify(value) ); +- captureValues( index+1, values... ); +- } +-}; ++ template ++ void captureValues( size_t index, T const& value, Ts const&... values ) { ++ captureValue( index, Catch::Detail::stringify(value) ); ++ captureValues( index+1, values... ); ++ } ++ }; + + } // end namespace Catch + +@@ -2672,9 +2677,9 @@ class Capturer { + #if !defined(CATCH_CONFIG_DISABLE) + + #if !defined(CATCH_CONFIG_DISABLE_STRINGIFICATION) +-#define CATCH_INTERNAL_STRINGIFY(...) #__VA_ARGS__ ++ #define CATCH_INTERNAL_STRINGIFY(...) #__VA_ARGS__ + #else +-#define CATCH_INTERNAL_STRINGIFY(...) "Disabled by CATCH_CONFIG_DISABLE_STRINGIFICATION" ++ #define CATCH_INTERNAL_STRINGIFY(...) "Disabled by CATCH_CONFIG_DISABLE_STRINGIFICATION" + #endif + + #if defined(CATCH_CONFIG_FAST_COMPILE) || defined(CATCH_CONFIG_DISABLE_EXCEPTIONS) +@@ -2821,30 +2826,30 @@ class Capturer { + + namespace Catch { + +-struct Counts { +- Counts operator - ( Counts const& other ) const; +- Counts& operator += ( Counts const& other ); ++ struct Counts { ++ Counts operator - ( Counts const& other ) const; ++ Counts& operator += ( Counts const& other ); + +- std::size_t total() const; +- bool allPassed() const; +- bool allOk() const; ++ std::size_t total() const; ++ bool allPassed() const; ++ bool allOk() const; + +- std::size_t passed = 0; +- std::size_t failed = 0; +- std::size_t failedButOk = 0; +-}; ++ std::size_t passed = 0; ++ std::size_t failed = 0; ++ std::size_t failedButOk = 0; ++ }; + +-struct Totals { ++ struct Totals { + +- Totals operator - ( Totals const& other ) const; +- Totals& operator += ( Totals const& other ); ++ Totals operator - ( Totals const& other ) const; ++ Totals& operator += ( Totals const& other ); + +- Totals delta( Totals const& prevTotals ) const; ++ Totals delta( Totals const& prevTotals ) const; + +- int error = 0; +- Counts assertions; +- Counts testCases; +-}; ++ int error = 0; ++ Counts assertions; ++ Counts testCases; ++ }; + } + + // end catch_totals.h +@@ -2852,27 +2857,27 @@ struct Totals { + + namespace Catch { + +-struct SectionInfo { +- SectionInfo +- ( SourceLineInfo const& _lineInfo, +- std::string const& _name ); ++ struct SectionInfo { ++ SectionInfo ++ ( SourceLineInfo const& _lineInfo, ++ std::string const& _name ); + +- // Deprecated +- SectionInfo +- ( SourceLineInfo const& _lineInfo, +- std::string const& _name, +- std::string const& ) : SectionInfo( _lineInfo, _name ) {} ++ // Deprecated ++ SectionInfo ++ ( SourceLineInfo const& _lineInfo, ++ std::string const& _name, ++ std::string const& ) : SectionInfo( _lineInfo, _name ) {} + +- std::string name; +- std::string description; // !Deprecated: this will always be empty +- SourceLineInfo lineInfo; +-}; ++ std::string name; ++ std::string description; // !Deprecated: this will always be empty ++ SourceLineInfo lineInfo; ++ }; + +-struct SectionEndInfo { +- SectionInfo sectionInfo; +- Counts prevAssertions; +- double durationInSeconds; +-}; ++ struct SectionEndInfo { ++ SectionInfo sectionInfo; ++ Counts prevAssertions; ++ double durationInSeconds; ++ }; + + } // end namespace Catch + +@@ -2883,18 +2888,18 @@ struct SectionEndInfo { + + namespace Catch { + +-auto getCurrentNanosecondsSinceEpoch() -> uint64_t; +-auto getEstimatedClockResolution() -> uint64_t; +- +-class Timer { +- uint64_t m_nanoseconds = 0; +- public: +- void start(); +- auto getElapsedNanoseconds() const -> uint64_t; +- auto getElapsedMicroseconds() const -> uint64_t; +- auto getElapsedMilliseconds() const -> unsigned int; +- auto getElapsedSeconds() const -> double; +-}; ++ auto getCurrentNanosecondsSinceEpoch() -> uint64_t; ++ auto getEstimatedClockResolution() -> uint64_t; ++ ++ class Timer { ++ uint64_t m_nanoseconds = 0; ++ public: ++ void start(); ++ auto getElapsedNanoseconds() const -> uint64_t; ++ auto getElapsedMicroseconds() const -> uint64_t; ++ auto getElapsedMilliseconds() const -> unsigned int; ++ auto getElapsedSeconds() const -> double; ++ }; + + } // namespace Catch + +@@ -2903,22 +2908,22 @@ class Timer { + + namespace Catch { + +-class Section : NonCopyable { +- public: +- Section( SectionInfo const& info ); +- ~Section(); ++ class Section : NonCopyable { ++ public: ++ Section( SectionInfo const& info ); ++ ~Section(); + +- // This indicates whether the section should be executed or not +- explicit operator bool() const; ++ // This indicates whether the section should be executed or not ++ explicit operator bool() const; + +- private: +- SectionInfo m_info; ++ private: ++ SectionInfo m_info; + +- std::string m_name; +- Counts m_assertions; +- bool m_sectionIncluded; +- Timer m_timer; +-}; ++ std::string m_name; ++ Counts m_assertions; ++ bool m_sectionIncluded; ++ Timer m_timer; ++ }; + + } // end namespace Catch + +@@ -2944,51 +2949,51 @@ class Section : NonCopyable { + + namespace Catch { + +-class TestCase; +-struct ITestCaseRegistry; +-struct IExceptionTranslatorRegistry; +-struct IExceptionTranslator; +-struct IReporterRegistry; +-struct IReporterFactory; +-struct ITagAliasRegistry; +-struct IMutableEnumValuesRegistry; ++ class TestCase; ++ struct ITestCaseRegistry; ++ struct IExceptionTranslatorRegistry; ++ struct IExceptionTranslator; ++ struct IReporterRegistry; ++ struct IReporterFactory; ++ struct ITagAliasRegistry; ++ struct IMutableEnumValuesRegistry; + +-class StartupExceptionRegistry; ++ class StartupExceptionRegistry; + +-using IReporterFactoryPtr = std::shared_ptr; ++ using IReporterFactoryPtr = std::shared_ptr; + +-struct IRegistryHub { +- virtual ~IRegistryHub(); ++ struct IRegistryHub { ++ virtual ~IRegistryHub(); + +- virtual IReporterRegistry const& getReporterRegistry() const = 0; +- virtual ITestCaseRegistry const& getTestCaseRegistry() const = 0; +- virtual ITagAliasRegistry const& getTagAliasRegistry() const = 0; +- virtual IExceptionTranslatorRegistry const& getExceptionTranslatorRegistry() const = 0; ++ virtual IReporterRegistry const& getReporterRegistry() const = 0; ++ virtual ITestCaseRegistry const& getTestCaseRegistry() const = 0; ++ virtual ITagAliasRegistry const& getTagAliasRegistry() const = 0; ++ virtual IExceptionTranslatorRegistry const& getExceptionTranslatorRegistry() const = 0; + +- virtual StartupExceptionRegistry const& getStartupExceptionRegistry() const = 0; +-}; ++ virtual StartupExceptionRegistry const& getStartupExceptionRegistry() const = 0; ++ }; + +-struct IMutableRegistryHub { +- virtual ~IMutableRegistryHub(); +- virtual void registerReporter( std::string const& name, IReporterFactoryPtr const& factory ) = 0; +- virtual void registerListener( IReporterFactoryPtr const& factory ) = 0; +- virtual void registerTest( TestCase const& testInfo ) = 0; +- virtual void registerTranslator( const IExceptionTranslator* translator ) = 0; +- virtual void registerTagAlias( std::string const& alias, std::string const& tag, SourceLineInfo const& lineInfo ) = 0; +- virtual void registerStartupException() noexcept = 0; +- virtual IMutableEnumValuesRegistry& getMutableEnumValuesRegistry() = 0; +-}; ++ struct IMutableRegistryHub { ++ virtual ~IMutableRegistryHub(); ++ virtual void registerReporter( std::string const& name, IReporterFactoryPtr const& factory ) = 0; ++ virtual void registerListener( IReporterFactoryPtr const& factory ) = 0; ++ virtual void registerTest( TestCase const& testInfo ) = 0; ++ virtual void registerTranslator( const IExceptionTranslator* translator ) = 0; ++ virtual void registerTagAlias( std::string const& alias, std::string const& tag, SourceLineInfo const& lineInfo ) = 0; ++ virtual void registerStartupException() noexcept = 0; ++ virtual IMutableEnumValuesRegistry& getMutableEnumValuesRegistry() = 0; ++ }; + +-IRegistryHub const& getRegistryHub(); +-IMutableRegistryHub& getMutableRegistryHub(); +-void cleanUp(); +-std::string translateActiveException(); ++ IRegistryHub const& getRegistryHub(); ++ IMutableRegistryHub& getMutableRegistryHub(); ++ void cleanUp(); ++ std::string translateActiveException(); + + } + + // end catch_interfaces_registry_hub.h + #if defined(CATCH_CONFIG_DISABLE) +-#define INTERNAL_CATCH_TRANSLATE_EXCEPTION_NO_REG( translatorName, signature) \ ++ #define INTERNAL_CATCH_TRANSLATE_EXCEPTION_NO_REG( translatorName, signature) \ + static std::string translatorName( signature ) + #endif + +@@ -2997,58 +3002,58 @@ std::string translateActiveException(); + #include + + namespace Catch { +-using exceptionTranslateFunction = std::string(*)(); ++ using exceptionTranslateFunction = std::string(*)(); + +-struct IExceptionTranslator; +-using ExceptionTranslators = std::vector>; ++ struct IExceptionTranslator; ++ using ExceptionTranslators = std::vector>; + +-struct IExceptionTranslator { +- virtual ~IExceptionTranslator(); +- virtual std::string translate( ExceptionTranslators::const_iterator it, ExceptionTranslators::const_iterator itEnd ) const = 0; +-}; ++ struct IExceptionTranslator { ++ virtual ~IExceptionTranslator(); ++ virtual std::string translate( ExceptionTranslators::const_iterator it, ExceptionTranslators::const_iterator itEnd ) const = 0; ++ }; + +-struct IExceptionTranslatorRegistry { +- virtual ~IExceptionTranslatorRegistry(); ++ struct IExceptionTranslatorRegistry { ++ virtual ~IExceptionTranslatorRegistry(); + +- virtual std::string translateActiveException() const = 0; +-}; ++ virtual std::string translateActiveException() const = 0; ++ }; + +-class ExceptionTranslatorRegistrar { +- template +- class ExceptionTranslator : public IExceptionTranslator { +- public: ++ class ExceptionTranslatorRegistrar { ++ template ++ class ExceptionTranslator : public IExceptionTranslator { ++ public: + +- ExceptionTranslator( std::string(*translateFunction)( T& ) ) +- : m_translateFunction( translateFunction ) +- {} ++ ExceptionTranslator( std::string(*translateFunction)( T& ) ) ++ : m_translateFunction( translateFunction ) ++ {} + +- std::string translate( ExceptionTranslators::const_iterator it, ExceptionTranslators::const_iterator itEnd ) const override { ++ std::string translate( ExceptionTranslators::const_iterator it, ExceptionTranslators::const_iterator itEnd ) const override { + #if defined(CATCH_CONFIG_DISABLE_EXCEPTIONS) +- return ""; ++ return ""; + #else +- try { +- if( it == itEnd ) +- std::rethrow_exception(std::current_exception()); +- else +- return (*it)->translate( it+1, itEnd ); +- } +- catch( T& ex ) { +- return m_translateFunction( ex ); +- } ++ try { ++ if( it == itEnd ) ++ std::rethrow_exception(std::current_exception()); ++ else ++ return (*it)->translate( it+1, itEnd ); ++ } ++ catch( T& ex ) { ++ return m_translateFunction( ex ); ++ } + #endif +- } ++ } + +- protected: +- std::string(*m_translateFunction)( T& ); +- }; ++ protected: ++ std::string(*m_translateFunction)( T& ); ++ }; + +- public: +- template +- ExceptionTranslatorRegistrar( std::string(*translateFunction)( T& ) ) { +- getMutableRegistryHub().registerTranslator +- ( new ExceptionTranslator( translateFunction ) ); +- } +-}; ++ public: ++ template ++ ExceptionTranslatorRegistrar( std::string(*translateFunction)( T& ) ) { ++ getMutableRegistryHub().registerTranslator ++ ( new ExceptionTranslator( translateFunction ) ); ++ } ++ }; + } + + /////////////////////////////////////////////////////////////////////////////// +@@ -3070,115 +3075,115 @@ class ExceptionTranslatorRegistrar { + namespace Catch { + namespace Detail { + +-class Approx { +- private: +- bool equalityComparisonImpl(double other) const; +- // Validates the new margin (margin >= 0) +- // out-of-line to avoid including stdexcept in the header +- void setMargin(double margin); +- // Validates the new epsilon (0 < epsilon < 1) +- // out-of-line to avoid including stdexcept in the header +- void setEpsilon(double epsilon); +- +- public: +- explicit Approx ( double value ); +- +- static Approx custom(); +- +- Approx operator-() const; +- +- template ::value>::type> +- Approx operator()( T const& value ) { +- Approx approx( static_cast(value) ); +- approx.m_epsilon = m_epsilon; +- approx.m_margin = m_margin; +- approx.m_scale = m_scale; +- return approx; +- } ++ class Approx { ++ private: ++ bool equalityComparisonImpl(double other) const; ++ // Validates the new margin (margin >= 0) ++ // out-of-line to avoid including stdexcept in the header ++ void setMargin(double margin); ++ // Validates the new epsilon (0 < epsilon < 1) ++ // out-of-line to avoid including stdexcept in the header ++ void setEpsilon(double epsilon); + +- template ::value>::type> +- explicit Approx( T const& value ): Approx(static_cast(value)) +- {} ++ public: ++ explicit Approx ( double value ); + +- template ::value>::type> +- friend bool operator == ( const T& lhs, Approx const& rhs ) { +- auto lhs_v = static_cast(lhs); +- return rhs.equalityComparisonImpl(lhs_v); +- } ++ static Approx custom(); + +- template ::value>::type> +- friend bool operator == ( Approx const& lhs, const T& rhs ) { +- return operator==( rhs, lhs ); +- } ++ Approx operator-() const; + +- template ::value>::type> +- friend bool operator != ( T const& lhs, Approx const& rhs ) { +- return !operator==( lhs, rhs ); +- } ++ template ::value>::type> ++ Approx operator()( T const& value ) const { ++ Approx approx( static_cast(value) ); ++ approx.m_epsilon = m_epsilon; ++ approx.m_margin = m_margin; ++ approx.m_scale = m_scale; ++ return approx; ++ } + +- template ::value>::type> +- friend bool operator != ( Approx const& lhs, T const& rhs ) { +- return !operator==( rhs, lhs ); +- } ++ template ::value>::type> ++ explicit Approx( T const& value ): Approx(static_cast(value)) ++ {} + +- template ::value>::type> +- friend bool operator <= ( T const& lhs, Approx const& rhs ) { +- return static_cast(lhs) < rhs.m_value || lhs == rhs; +- } ++ template ::value>::type> ++ friend bool operator == ( const T& lhs, Approx const& rhs ) { ++ auto lhs_v = static_cast(lhs); ++ return rhs.equalityComparisonImpl(lhs_v); ++ } + +- template ::value>::type> +- friend bool operator <= ( Approx const& lhs, T const& rhs ) { +- return lhs.m_value < static_cast(rhs) || lhs == rhs; +- } ++ template ::value>::type> ++ friend bool operator == ( Approx const& lhs, const T& rhs ) { ++ return operator==( rhs, lhs ); ++ } + +- template ::value>::type> +- friend bool operator >= ( T const& lhs, Approx const& rhs ) { +- return static_cast(lhs) > rhs.m_value || lhs == rhs; +- } ++ template ::value>::type> ++ friend bool operator != ( T const& lhs, Approx const& rhs ) { ++ return !operator==( lhs, rhs ); ++ } + +- template ::value>::type> +- friend bool operator >= ( Approx const& lhs, T const& rhs ) { +- return lhs.m_value > static_cast(rhs) || lhs == rhs; +- } ++ template ::value>::type> ++ friend bool operator != ( Approx const& lhs, T const& rhs ) { ++ return !operator==( rhs, lhs ); ++ } + +- template ::value>::type> +- Approx& epsilon( T const& newEpsilon ) { +- double epsilonAsDouble = static_cast(newEpsilon); +- setEpsilon(epsilonAsDouble); +- return *this; +- } ++ template ::value>::type> ++ friend bool operator <= ( T const& lhs, Approx const& rhs ) { ++ return static_cast(lhs) < rhs.m_value || lhs == rhs; ++ } + +- template ::value>::type> +- Approx& margin( T const& newMargin ) { +- double marginAsDouble = static_cast(newMargin); +- setMargin(marginAsDouble); +- return *this; +- } ++ template ::value>::type> ++ friend bool operator <= ( Approx const& lhs, T const& rhs ) { ++ return lhs.m_value < static_cast(rhs) || lhs == rhs; ++ } + +- template ::value>::type> +- Approx& scale( T const& newScale ) { +- m_scale = static_cast(newScale); +- return *this; +- } ++ template ::value>::type> ++ friend bool operator >= ( T const& lhs, Approx const& rhs ) { ++ return static_cast(lhs) > rhs.m_value || lhs == rhs; ++ } + +- std::string toString() const; ++ template ::value>::type> ++ friend bool operator >= ( Approx const& lhs, T const& rhs ) { ++ return lhs.m_value > static_cast(rhs) || lhs == rhs; ++ } + +- private: +- double m_epsilon; +- double m_margin; +- double m_scale; +- double m_value; +-}; ++ template ::value>::type> ++ Approx& epsilon( T const& newEpsilon ) { ++ double epsilonAsDouble = static_cast(newEpsilon); ++ setEpsilon(epsilonAsDouble); ++ return *this; ++ } ++ ++ template ::value>::type> ++ Approx& margin( T const& newMargin ) { ++ double marginAsDouble = static_cast(newMargin); ++ setMargin(marginAsDouble); ++ return *this; ++ } ++ ++ template ::value>::type> ++ Approx& scale( T const& newScale ) { ++ m_scale = static_cast(newScale); ++ return *this; ++ } ++ ++ std::string toString() const; ++ ++ private: ++ double m_epsilon; ++ double m_margin; ++ double m_scale; ++ double m_value; ++ }; + } // end namespace Detail + + namespace literals { +-Detail::Approx operator "" _a(long double val); +-Detail::Approx operator "" _a(unsigned long long val); ++ Detail::Approx operator "" _a(long double val); ++ Detail::Approx operator "" _a(unsigned long long val); + } // end namespace literals + + template<> + struct StringMaker { +- static std::string convert(Catch::Detail::Approx const& value); ++ static std::string convert(Catch::Detail::Approx const& value); + }; + + } // end namespace Catch +@@ -3192,30 +3197,30 @@ struct StringMaker { + + namespace Catch { + +-bool startsWith( std::string const& s, std::string const& prefix ); +-bool startsWith( std::string const& s, char prefix ); +-bool endsWith( std::string const& s, std::string const& suffix ); +-bool endsWith( std::string const& s, char suffix ); +-bool contains( std::string const& s, std::string const& infix ); +-void toLowerInPlace( std::string& s ); +-std::string toLower( std::string const& s ); +-//! Returns a new string without whitespace at the start/end +-std::string trim( std::string const& str ); +-//! Returns a substring of the original ref without whitespace. Beware lifetimes! +-StringRef trim(StringRef ref); +- +-// !!! Be aware, returns refs into original string - make sure original string outlives them +-std::vector splitStringRef( StringRef str, char delimiter ); +-bool replaceInPlace( std::string& str, std::string const& replaceThis, std::string const& withThis ); +- +-struct pluralise { +- pluralise( std::size_t count, std::string const& label ); +- +- friend std::ostream& operator << ( std::ostream& os, pluralise const& pluraliser ); +- +- std::size_t m_count; +- std::string m_label; +-}; ++ bool startsWith( std::string const& s, std::string const& prefix ); ++ bool startsWith( std::string const& s, char prefix ); ++ bool endsWith( std::string const& s, std::string const& suffix ); ++ bool endsWith( std::string const& s, char suffix ); ++ bool contains( std::string const& s, std::string const& infix ); ++ void toLowerInPlace( std::string& s ); ++ std::string toLower( std::string const& s ); ++ //! Returns a new string without whitespace at the start/end ++ std::string trim( std::string const& str ); ++ //! Returns a substring of the original ref without whitespace. Beware lifetimes! ++ StringRef trim(StringRef ref); ++ ++ // !!! Be aware, returns refs into original string - make sure original string outlives them ++ std::vector splitStringRef( StringRef str, char delimiter ); ++ bool replaceInPlace( std::string& str, std::string const& replaceThis, std::string const& withThis ); ++ ++ struct pluralise { ++ pluralise( std::size_t count, std::string const& label ); ++ ++ friend std::ostream& operator << ( std::ostream& os, pluralise const& pluraliser ); ++ ++ std::size_t m_count; ++ std::string m_label; ++ }; + } + + // end catch_string_manip.h +@@ -3229,37 +3234,37 @@ struct pluralise { + + namespace Catch { + namespace Matchers { +-namespace Impl { +- +-template struct MatchAllOf; +-template struct MatchAnyOf; +-template struct MatchNotOf; +- +-class MatcherUntypedBase { +- public: +- MatcherUntypedBase() = default; +- MatcherUntypedBase ( MatcherUntypedBase const& ) = default; +- MatcherUntypedBase& operator = ( MatcherUntypedBase const& ) = delete; +- std::string toString() const; +- +- protected: +- virtual ~MatcherUntypedBase(); +- virtual std::string describe() const = 0; +- mutable std::string m_cachedToString; +-}; ++ namespace Impl { ++ ++ template struct MatchAllOf; ++ template struct MatchAnyOf; ++ template struct MatchNotOf; ++ ++ class MatcherUntypedBase { ++ public: ++ MatcherUntypedBase() = default; ++ MatcherUntypedBase ( MatcherUntypedBase const& ) = default; ++ MatcherUntypedBase& operator = ( MatcherUntypedBase const& ) = delete; ++ std::string toString() const; ++ ++ protected: ++ virtual ~MatcherUntypedBase(); ++ virtual std::string describe() const = 0; ++ mutable std::string m_cachedToString; ++ }; + + #ifdef __clang__ + # pragma clang diagnostic push + # pragma clang diagnostic ignored "-Wnon-virtual-dtor" + #endif + +-template +-struct MatcherMethod { +- virtual bool match( ObjectT const& arg ) const = 0; +-}; ++ template ++ struct MatcherMethod { ++ virtual bool match( ObjectT const& arg ) const = 0; ++ }; + + #if defined(__OBJC__) +-// Hack to fix Catch GH issue #1661. Could use id for generic Object support. ++ // Hack to fix Catch GH issue #1661. Could use id for generic Object support. + // use of const for Object pointers is very uncommon and under ARC it causes some kind of signature mismatch that breaks compilation + template<> + struct MatcherMethod { +@@ -3271,111 +3276,111 @@ struct MatcherMethod { + # pragma clang diagnostic pop + #endif + +-template +-struct MatcherBase : MatcherUntypedBase, MatcherMethod { ++ template ++ struct MatcherBase : MatcherUntypedBase, MatcherMethod { + +- MatchAllOf operator && ( MatcherBase const& other ) const; +- MatchAnyOf operator || ( MatcherBase const& other ) const; +- MatchNotOf operator ! () const; +-}; ++ MatchAllOf operator && ( MatcherBase const& other ) const; ++ MatchAnyOf operator || ( MatcherBase const& other ) const; ++ MatchNotOf operator ! () const; ++ }; + +-template +-struct MatchAllOf : MatcherBase { +- bool match( ArgT const& arg ) const override { +- for( auto matcher : m_matchers ) { +- if (!matcher->match(arg)) +- return false; +- } +- return true; +- } +- std::string describe() const override { +- std::string description; +- description.reserve( 4 + m_matchers.size()*32 ); +- description += "( "; +- bool first = true; +- for( auto matcher : m_matchers ) { +- if( first ) +- first = false; +- else +- description += " and "; +- description += matcher->toString(); +- } +- description += " )"; +- return description; +- } ++ template ++ struct MatchAllOf : MatcherBase { ++ bool match( ArgT const& arg ) const override { ++ for( auto matcher : m_matchers ) { ++ if (!matcher->match(arg)) ++ return false; ++ } ++ return true; ++ } ++ std::string describe() const override { ++ std::string description; ++ description.reserve( 4 + m_matchers.size()*32 ); ++ description += "( "; ++ bool first = true; ++ for( auto matcher : m_matchers ) { ++ if( first ) ++ first = false; ++ else ++ description += " and "; ++ description += matcher->toString(); ++ } ++ description += " )"; ++ return description; ++ } + +- MatchAllOf operator && ( MatcherBase const& other ) { +- auto copy(*this); +- copy.m_matchers.push_back( &other ); +- return copy; +- } ++ MatchAllOf operator && ( MatcherBase const& other ) { ++ auto copy(*this); ++ copy.m_matchers.push_back( &other ); ++ return copy; ++ } + +- std::vector const*> m_matchers; +-}; +-template +-struct MatchAnyOf : MatcherBase { ++ std::vector const*> m_matchers; ++ }; ++ template ++ struct MatchAnyOf : MatcherBase { + +- bool match( ArgT const& arg ) const override { +- for( auto matcher : m_matchers ) { +- if (matcher->match(arg)) +- return true; +- } +- return false; +- } +- std::string describe() const override { +- std::string description; +- description.reserve( 4 + m_matchers.size()*32 ); +- description += "( "; +- bool first = true; +- for( auto matcher : m_matchers ) { +- if( first ) +- first = false; +- else +- description += " or "; +- description += matcher->toString(); +- } +- description += " )"; +- return description; +- } ++ bool match( ArgT const& arg ) const override { ++ for( auto matcher : m_matchers ) { ++ if (matcher->match(arg)) ++ return true; ++ } ++ return false; ++ } ++ std::string describe() const override { ++ std::string description; ++ description.reserve( 4 + m_matchers.size()*32 ); ++ description += "( "; ++ bool first = true; ++ for( auto matcher : m_matchers ) { ++ if( first ) ++ first = false; ++ else ++ description += " or "; ++ description += matcher->toString(); ++ } ++ description += " )"; ++ return description; ++ } + +- MatchAnyOf operator || ( MatcherBase const& other ) { +- auto copy(*this); +- copy.m_matchers.push_back( &other ); +- return copy; +- } ++ MatchAnyOf operator || ( MatcherBase const& other ) { ++ auto copy(*this); ++ copy.m_matchers.push_back( &other ); ++ return copy; ++ } + +- std::vector const*> m_matchers; +-}; ++ std::vector const*> m_matchers; ++ }; + +-template +-struct MatchNotOf : MatcherBase { ++ template ++ struct MatchNotOf : MatcherBase { + +- MatchNotOf( MatcherBase const& underlyingMatcher ) : m_underlyingMatcher( underlyingMatcher ) {} ++ MatchNotOf( MatcherBase const& underlyingMatcher ) : m_underlyingMatcher( underlyingMatcher ) {} + +- bool match( ArgT const& arg ) const override { +- return !m_underlyingMatcher.match( arg ); +- } ++ bool match( ArgT const& arg ) const override { ++ return !m_underlyingMatcher.match( arg ); ++ } + +- std::string describe() const override { +- return "not " + m_underlyingMatcher.toString(); +- } +- MatcherBase const& m_underlyingMatcher; +-}; ++ std::string describe() const override { ++ return "not " + m_underlyingMatcher.toString(); ++ } ++ MatcherBase const& m_underlyingMatcher; ++ }; + +-template +-MatchAllOf MatcherBase::operator && ( MatcherBase const& other ) const { +- return MatchAllOf() && *this && other; +-} +-template +-MatchAnyOf MatcherBase::operator || ( MatcherBase const& other ) const { +- return MatchAnyOf() || *this || other; +-} +-template +-MatchNotOf MatcherBase::operator ! () const { +- return MatchNotOf( *this ); +-} ++ template ++ MatchAllOf MatcherBase::operator && ( MatcherBase const& other ) const { ++ return MatchAllOf() && *this && other; ++ } ++ template ++ MatchAnyOf MatcherBase::operator || ( MatcherBase const& other ) const { ++ return MatchAnyOf() || *this || other; ++ } ++ template ++ MatchNotOf MatcherBase::operator ! () const { ++ return MatchNotOf( *this ); ++ } + +-} // namespace Impl ++ } // namespace Impl + + } // namespace Matchers + +@@ -3392,16 +3397,16 @@ namespace Matchers { + namespace Exception { + + class ExceptionMessageMatcher : public MatcherBase { +- std::string m_message; +- public: ++ std::string m_message; ++public: + +- ExceptionMessageMatcher(std::string const& message): +- m_message(message) +- {} ++ ExceptionMessageMatcher(std::string const& message): ++ m_message(message) ++ {} + +- bool match(std::exception const& ex) const override; ++ bool match(std::exception const& ex) const override; + +- std::string describe() const override; ++ std::string describe() const override; + }; + + } // namespace Exception +@@ -3417,57 +3422,57 @@ Exception::ExceptionMessageMatcher Message(std::string const& message); + namespace Catch { + namespace Matchers { + +-namespace Floating { ++ namespace Floating { + +-enum class FloatingPointKind : uint8_t; ++ enum class FloatingPointKind : uint8_t; + +-struct WithinAbsMatcher : MatcherBase { +- WithinAbsMatcher(double target, double margin); +- bool match(double const& matchee) const override; +- std::string describe() const override; +- private: +- double m_target; +- double m_margin; +-}; ++ struct WithinAbsMatcher : MatcherBase { ++ WithinAbsMatcher(double target, double margin); ++ bool match(double const& matchee) const override; ++ std::string describe() const override; ++ private: ++ double m_target; ++ double m_margin; ++ }; + +-struct WithinUlpsMatcher : MatcherBase { +- WithinUlpsMatcher(double target, uint64_t ulps, FloatingPointKind baseType); +- bool match(double const& matchee) const override; +- std::string describe() const override; +- private: +- double m_target; +- uint64_t m_ulps; +- FloatingPointKind m_type; +-}; ++ struct WithinUlpsMatcher : MatcherBase { ++ WithinUlpsMatcher(double target, uint64_t ulps, FloatingPointKind baseType); ++ bool match(double const& matchee) const override; ++ std::string describe() const override; ++ private: ++ double m_target; ++ uint64_t m_ulps; ++ FloatingPointKind m_type; ++ }; + +-// Given IEEE-754 format for floats and doubles, we can assume +-// that float -> double promotion is lossless. Given this, we can +-// assume that if we do the standard relative comparison of +-// |lhs - rhs| <= epsilon * max(fabs(lhs), fabs(rhs)), then we get +-// the same result if we do this for floats, as if we do this for +-// doubles that were promoted from floats. +-struct WithinRelMatcher : MatcherBase { +- WithinRelMatcher(double target, double epsilon); +- bool match(double const& matchee) const override; +- std::string describe() const override; +- private: +- double m_target; +- double m_epsilon; +-}; ++ // Given IEEE-754 format for floats and doubles, we can assume ++ // that float -> double promotion is lossless. Given this, we can ++ // assume that if we do the standard relative comparison of ++ // |lhs - rhs| <= epsilon * max(fabs(lhs), fabs(rhs)), then we get ++ // the same result if we do this for floats, as if we do this for ++ // doubles that were promoted from floats. ++ struct WithinRelMatcher : MatcherBase { ++ WithinRelMatcher(double target, double epsilon); ++ bool match(double const& matchee) const override; ++ std::string describe() const override; ++ private: ++ double m_target; ++ double m_epsilon; ++ }; + +-} // namespace Floating ++ } // namespace Floating + +-// The following functions create the actual matcher objects. +-// This allows the types to be inferred +-Floating::WithinUlpsMatcher WithinULP(double target, uint64_t maxUlpDiff); +-Floating::WithinUlpsMatcher WithinULP(float target, uint64_t maxUlpDiff); +-Floating::WithinAbsMatcher WithinAbs(double target, double margin); +-Floating::WithinRelMatcher WithinRel(double target, double eps); +-// defaults epsilon to 100*numeric_limits::epsilon() +-Floating::WithinRelMatcher WithinRel(double target); +-Floating::WithinRelMatcher WithinRel(float target, float eps); +-// defaults epsilon to 100*numeric_limits::epsilon() +-Floating::WithinRelMatcher WithinRel(float target); ++ // The following functions create the actual matcher objects. ++ // This allows the types to be inferred ++ Floating::WithinUlpsMatcher WithinULP(double target, uint64_t maxUlpDiff); ++ Floating::WithinUlpsMatcher WithinULP(float target, uint64_t maxUlpDiff); ++ Floating::WithinAbsMatcher WithinAbs(double target, double margin); ++ Floating::WithinRelMatcher WithinRel(double target, double eps); ++ // defaults epsilon to 100*numeric_limits::epsilon() ++ Floating::WithinRelMatcher WithinRel(double target); ++ Floating::WithinRelMatcher WithinRel(float target, float eps); ++ // defaults epsilon to 100*numeric_limits::epsilon() ++ Floating::WithinRelMatcher WithinRel(float target); + + } // namespace Matchers + } // namespace Catch +@@ -3483,39 +3488,39 @@ namespace Matchers { + namespace Generic { + + namespace Detail { +-std::string finalizeDescription(const std::string& desc); ++ std::string finalizeDescription(const std::string& desc); + } + + template + class PredicateMatcher : public MatcherBase { +- std::function m_predicate; +- std::string m_description; +- public: ++ std::function m_predicate; ++ std::string m_description; ++public: + +- PredicateMatcher(std::function const& elem, std::string const& descr) +- :m_predicate(std::move(elem)), +- m_description(Detail::finalizeDescription(descr)) +- {} ++ PredicateMatcher(std::function const& elem, std::string const& descr) ++ :m_predicate(std::move(elem)), ++ m_description(Detail::finalizeDescription(descr)) ++ {} + +- bool match( T const& item ) const override { +- return m_predicate(item); +- } ++ bool match( T const& item ) const override { ++ return m_predicate(item); ++ } + +- std::string describe() const override { +- return m_description; +- } ++ std::string describe() const override { ++ return m_description; ++ } + }; + + } // namespace Generic + +-// The following functions create the actual matcher objects. +-// The user has to explicitly specify type to the function, because +-// inferring std::function is hard (but possible) and +-// requires a lot of TMP. +-template +-Generic::PredicateMatcher Predicate(std::function const& predicate, std::string const& description = "") { +- return Generic::PredicateMatcher(predicate, description); +-} ++ // The following functions create the actual matcher objects. ++ // The user has to explicitly specify type to the function, because ++ // inferring std::function is hard (but possible) and ++ // requires a lot of TMP. ++ template ++ Generic::PredicateMatcher Predicate(std::function const& predicate, std::string const& description = "") { ++ return Generic::PredicateMatcher(predicate, description); ++ } + + } // namespace Matchers + } // namespace Catch +@@ -3528,63 +3533,63 @@ Generic::PredicateMatcher Predicate(std::function const& pred + namespace Catch { + namespace Matchers { + +-namespace StdString { ++ namespace StdString { + +-struct CasedString +-{ +- CasedString( std::string const& str, CaseSensitive::Choice caseSensitivity ); +- std::string adjustString( std::string const& str ) const; +- std::string caseSensitivitySuffix() const; ++ struct CasedString ++ { ++ CasedString( std::string const& str, CaseSensitive::Choice caseSensitivity ); ++ std::string adjustString( std::string const& str ) const; ++ std::string caseSensitivitySuffix() const; + +- CaseSensitive::Choice m_caseSensitivity; +- std::string m_str; +-}; ++ CaseSensitive::Choice m_caseSensitivity; ++ std::string m_str; ++ }; + +-struct StringMatcherBase : MatcherBase { +- StringMatcherBase( std::string const& operation, CasedString const& comparator ); +- std::string describe() const override; ++ struct StringMatcherBase : MatcherBase { ++ StringMatcherBase( std::string const& operation, CasedString const& comparator ); ++ std::string describe() const override; + +- CasedString m_comparator; +- std::string m_operation; +-}; ++ CasedString m_comparator; ++ std::string m_operation; ++ }; + +-struct EqualsMatcher : StringMatcherBase { +- EqualsMatcher( CasedString const& comparator ); +- bool match( std::string const& source ) const override; +-}; +-struct ContainsMatcher : StringMatcherBase { +- ContainsMatcher( CasedString const& comparator ); +- bool match( std::string const& source ) const override; +-}; +-struct StartsWithMatcher : StringMatcherBase { +- StartsWithMatcher( CasedString const& comparator ); +- bool match( std::string const& source ) const override; +-}; +-struct EndsWithMatcher : StringMatcherBase { +- EndsWithMatcher( CasedString const& comparator ); +- bool match( std::string const& source ) const override; +-}; ++ struct EqualsMatcher : StringMatcherBase { ++ EqualsMatcher( CasedString const& comparator ); ++ bool match( std::string const& source ) const override; ++ }; ++ struct ContainsMatcher : StringMatcherBase { ++ ContainsMatcher( CasedString const& comparator ); ++ bool match( std::string const& source ) const override; ++ }; ++ struct StartsWithMatcher : StringMatcherBase { ++ StartsWithMatcher( CasedString const& comparator ); ++ bool match( std::string const& source ) const override; ++ }; ++ struct EndsWithMatcher : StringMatcherBase { ++ EndsWithMatcher( CasedString const& comparator ); ++ bool match( std::string const& source ) const override; ++ }; + +-struct RegexMatcher : MatcherBase { +- RegexMatcher( std::string regex, CaseSensitive::Choice caseSensitivity ); +- bool match( std::string const& matchee ) const override; +- std::string describe() const override; ++ struct RegexMatcher : MatcherBase { ++ RegexMatcher( std::string regex, CaseSensitive::Choice caseSensitivity ); ++ bool match( std::string const& matchee ) const override; ++ std::string describe() const override; + +- private: +- std::string m_regex; +- CaseSensitive::Choice m_caseSensitivity; +-}; ++ private: ++ std::string m_regex; ++ CaseSensitive::Choice m_caseSensitivity; ++ }; + +-} // namespace StdString ++ } // namespace StdString + +-// The following functions create the actual matcher objects. +-// This allows the types to be inferred ++ // The following functions create the actual matcher objects. ++ // This allows the types to be inferred + +-StdString::EqualsMatcher Equals( std::string const& str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ); +-StdString::ContainsMatcher Contains( std::string const& str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ); +-StdString::EndsWithMatcher EndsWith( std::string const& str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ); +-StdString::StartsWithMatcher StartsWith( std::string const& str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ); +-StdString::RegexMatcher Matches( std::string const& regex, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ); ++ StdString::EqualsMatcher Equals( std::string const& str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ); ++ StdString::ContainsMatcher Contains( std::string const& str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ); ++ StdString::EndsWithMatcher EndsWith( std::string const& str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ); ++ StdString::StartsWithMatcher StartsWith( std::string const& str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ); ++ StdString::RegexMatcher Matches( std::string const& regex, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ); + + } // namespace Matchers + } // namespace Catch +@@ -3597,163 +3602,163 @@ StdString::RegexMatcher Matches( std::string const& regex, CaseSensitive::Choice + namespace Catch { + namespace Matchers { + +-namespace Vector { +-template +-struct ContainsElementMatcher : MatcherBase> { ++ namespace Vector { ++ template ++ struct ContainsElementMatcher : MatcherBase> { + +- ContainsElementMatcher(T const &comparator) : m_comparator( comparator) {} ++ ContainsElementMatcher(T const &comparator) : m_comparator( comparator) {} + +- bool match(std::vector const &v) const override { +- for (auto const& el : v) { +- if (el == m_comparator) { +- return true; +- } +- } +- return false; +- } ++ bool match(std::vector const &v) const override { ++ for (auto const& el : v) { ++ if (el == m_comparator) { ++ return true; ++ } ++ } ++ return false; ++ } + +- std::string describe() const override { +- return "Contains: " + ::Catch::Detail::stringify( m_comparator ); +- } ++ std::string describe() const override { ++ return "Contains: " + ::Catch::Detail::stringify( m_comparator ); ++ } + +- T const& m_comparator; +-}; ++ T const& m_comparator; ++ }; + +-template +-struct ContainsMatcher : MatcherBase> { ++ template ++ struct ContainsMatcher : MatcherBase> { + +- ContainsMatcher(std::vector const &comparator) : m_comparator( comparator ) {} ++ ContainsMatcher(std::vector const &comparator) : m_comparator( comparator ) {} + +- bool match(std::vector const &v) const override { +- // !TBD: see note in EqualsMatcher +- if (m_comparator.size() > v.size()) +- return false; +- for (auto const& comparator : m_comparator) { +- auto present = false; +- for (const auto& el : v) { +- if (el == comparator) { +- present = true; +- break; +- } +- } +- if (!present) { +- return false; +- } +- } +- return true; +- } +- std::string describe() const override { +- return "Contains: " + ::Catch::Detail::stringify( m_comparator ); +- } ++ bool match(std::vector const &v) const override { ++ // !TBD: see note in EqualsMatcher ++ if (m_comparator.size() > v.size()) ++ return false; ++ for (auto const& comparator : m_comparator) { ++ auto present = false; ++ for (const auto& el : v) { ++ if (el == comparator) { ++ present = true; ++ break; ++ } ++ } ++ if (!present) { ++ return false; ++ } ++ } ++ return true; ++ } ++ std::string describe() const override { ++ return "Contains: " + ::Catch::Detail::stringify( m_comparator ); ++ } + +- std::vector const& m_comparator; +-}; ++ std::vector const& m_comparator; ++ }; + +-template +-struct EqualsMatcher : MatcherBase> { ++ template ++ struct EqualsMatcher : MatcherBase> { + +- EqualsMatcher(std::vector const &comparator) : m_comparator( comparator ) {} ++ EqualsMatcher(std::vector const &comparator) : m_comparator( comparator ) {} + +- bool match(std::vector const &v) const override { +- // !TBD: This currently works if all elements can be compared using != +- // - a more general approach would be via a compare template that defaults +- // to using !=. but could be specialised for, e.g. std::vector etc +- // - then just call that directly +- if (m_comparator.size() != v.size()) +- return false; +- for (std::size_t i = 0; i < v.size(); ++i) +- if (m_comparator[i] != v[i]) +- return false; +- return true; +- } +- std::string describe() const override { +- return "Equals: " + ::Catch::Detail::stringify( m_comparator ); +- } +- std::vector const& m_comparator; +-}; ++ bool match(std::vector const &v) const override { ++ // !TBD: This currently works if all elements can be compared using != ++ // - a more general approach would be via a compare template that defaults ++ // to using !=. but could be specialised for, e.g. std::vector etc ++ // - then just call that directly ++ if (m_comparator.size() != v.size()) ++ return false; ++ for (std::size_t i = 0; i < v.size(); ++i) ++ if (m_comparator[i] != v[i]) ++ return false; ++ return true; ++ } ++ std::string describe() const override { ++ return "Equals: " + ::Catch::Detail::stringify( m_comparator ); ++ } ++ std::vector const& m_comparator; ++ }; + +-template +-struct ApproxMatcher : MatcherBase> { ++ template ++ struct ApproxMatcher : MatcherBase> { + +- ApproxMatcher(std::vector const& comparator) : m_comparator( comparator ) {} ++ ApproxMatcher(std::vector const& comparator) : m_comparator( comparator ) {} + +- bool match(std::vector const &v) const override { +- if (m_comparator.size() != v.size()) +- return false; +- for (std::size_t i = 0; i < v.size(); ++i) +- if (m_comparator[i] != approx(v[i])) +- return false; +- return true; +- } +- std::string describe() const override { +- return "is approx: " + ::Catch::Detail::stringify( m_comparator ); +- } +- template ::value>::type> +- ApproxMatcher& epsilon( T const& newEpsilon ) { +- approx.epsilon(newEpsilon); +- return *this; +- } +- template ::value>::type> +- ApproxMatcher& margin( T const& newMargin ) { +- approx.margin(newMargin); +- return *this; +- } +- template ::value>::type> +- ApproxMatcher& scale( T const& newScale ) { +- approx.scale(newScale); +- return *this; +- } ++ bool match(std::vector const &v) const override { ++ if (m_comparator.size() != v.size()) ++ return false; ++ for (std::size_t i = 0; i < v.size(); ++i) ++ if (m_comparator[i] != approx(v[i])) ++ return false; ++ return true; ++ } ++ std::string describe() const override { ++ return "is approx: " + ::Catch::Detail::stringify( m_comparator ); ++ } ++ template ::value>::type> ++ ApproxMatcher& epsilon( T const& newEpsilon ) { ++ approx.epsilon(newEpsilon); ++ return *this; ++ } ++ template ::value>::type> ++ ApproxMatcher& margin( T const& newMargin ) { ++ approx.margin(newMargin); ++ return *this; ++ } ++ template ::value>::type> ++ ApproxMatcher& scale( T const& newScale ) { ++ approx.scale(newScale); ++ return *this; ++ } + +- std::vector const& m_comparator; +- mutable Catch::Detail::Approx approx = Catch::Detail::Approx::custom(); +-}; ++ std::vector const& m_comparator; ++ mutable Catch::Detail::Approx approx = Catch::Detail::Approx::custom(); ++ }; + +-template +-struct UnorderedEqualsMatcher : MatcherBase> { +- UnorderedEqualsMatcher(std::vector const& target) : m_target(target) {} +- bool match(std::vector const& vec) const override { +- if (m_target.size() != vec.size()) { +- return false; +- } +- return std::is_permutation(m_target.begin(), m_target.end(), vec.begin()); +- } ++ template ++ struct UnorderedEqualsMatcher : MatcherBase> { ++ UnorderedEqualsMatcher(std::vector const& target) : m_target(target) {} ++ bool match(std::vector const& vec) const override { ++ if (m_target.size() != vec.size()) { ++ return false; ++ } ++ return std::is_permutation(m_target.begin(), m_target.end(), vec.begin()); ++ } + +- std::string describe() const override { +- return "UnorderedEquals: " + ::Catch::Detail::stringify(m_target); +- } +- private: +- std::vector const& m_target; +-}; ++ std::string describe() const override { ++ return "UnorderedEquals: " + ::Catch::Detail::stringify(m_target); ++ } ++ private: ++ std::vector const& m_target; ++ }; + +-} // namespace Vector ++ } // namespace Vector + +-// The following functions create the actual matcher objects. +-// This allows the types to be inferred ++ // The following functions create the actual matcher objects. ++ // This allows the types to be inferred + +-template, typename AllocMatch = AllocComp> +-Vector::ContainsMatcher Contains( std::vector const& comparator ) { +- return Vector::ContainsMatcher( comparator ); +-} ++ template, typename AllocMatch = AllocComp> ++ Vector::ContainsMatcher Contains( std::vector const& comparator ) { ++ return Vector::ContainsMatcher( comparator ); ++ } + +-template> +-Vector::ContainsElementMatcher VectorContains( T const& comparator ) { +- return Vector::ContainsElementMatcher( comparator ); +-} ++ template> ++ Vector::ContainsElementMatcher VectorContains( T const& comparator ) { ++ return Vector::ContainsElementMatcher( comparator ); ++ } + +-template, typename AllocMatch = AllocComp> +-Vector::EqualsMatcher Equals( std::vector const& comparator ) { +- return Vector::EqualsMatcher( comparator ); +-} ++ template, typename AllocMatch = AllocComp> ++ Vector::EqualsMatcher Equals( std::vector const& comparator ) { ++ return Vector::EqualsMatcher( comparator ); ++ } + +-template, typename AllocMatch = AllocComp> +-Vector::ApproxMatcher Approx( std::vector const& comparator ) { +- return Vector::ApproxMatcher( comparator ); +-} ++ template, typename AllocMatch = AllocComp> ++ Vector::ApproxMatcher Approx( std::vector const& comparator ) { ++ return Vector::ApproxMatcher( comparator ); ++ } + +-template, typename AllocMatch = AllocComp> +-Vector::UnorderedEqualsMatcher UnorderedEquals(std::vector const& target) { +- return Vector::UnorderedEqualsMatcher( target ); +-} ++ template, typename AllocMatch = AllocComp> ++ Vector::UnorderedEqualsMatcher UnorderedEquals(std::vector const& target) { ++ return Vector::UnorderedEqualsMatcher( target ); ++ } + + } // namespace Matchers + } // namespace Catch +@@ -3761,39 +3766,39 @@ Vector::UnorderedEqualsMatcher UnorderedEquals(std::ve + // end catch_matchers_vector.h + namespace Catch { + +-template +-class MatchExpr : public ITransientExpression { +- ArgT const& m_arg; +- MatcherT m_matcher; +- StringRef m_matcherString; +- public: +- MatchExpr( ArgT const& arg, MatcherT const& matcher, StringRef const& matcherString ) +- : ITransientExpression{ true, matcher.match( arg ) }, +- m_arg( arg ), +- m_matcher( matcher ), +- m_matcherString( matcherString ) +- {} +- +- void streamReconstructedExpression( std::ostream &os ) const override { +- auto matcherAsString = m_matcher.toString(); +- os << Catch::Detail::stringify( m_arg ) << ' '; +- if( matcherAsString == Detail::unprintableString ) +- os << m_matcherString; +- else +- os << matcherAsString; +- } +-}; ++ template ++ class MatchExpr : public ITransientExpression { ++ ArgT const& m_arg; ++ MatcherT m_matcher; ++ StringRef m_matcherString; ++ public: ++ MatchExpr( ArgT const& arg, MatcherT const& matcher, StringRef const& matcherString ) ++ : ITransientExpression{ true, matcher.match( arg ) }, ++ m_arg( arg ), ++ m_matcher( matcher ), ++ m_matcherString( matcherString ) ++ {} + +-using StringMatcher = Matchers::Impl::MatcherBase; ++ void streamReconstructedExpression( std::ostream &os ) const override { ++ auto matcherAsString = m_matcher.toString(); ++ os << Catch::Detail::stringify( m_arg ) << ' '; ++ if( matcherAsString == Detail::unprintableString ) ++ os << m_matcherString; ++ else ++ os << matcherAsString; ++ } ++ }; + +-void handleExceptionMatchExpr( AssertionHandler& handler, StringMatcher const& matcher, StringRef const& matcherString ); ++ using StringMatcher = Matchers::Impl::MatcherBase; + +-template +-auto makeMatchExpr( ArgT const& arg, MatcherT const& matcher, StringRef const& matcherString ) -> MatchExpr { +- return MatchExpr( arg, matcher, matcherString ); +-} ++ void handleExceptionMatchExpr( AssertionHandler& handler, StringMatcher const& matcher, StringRef const& matcherString ); + +-} // namespace Catch ++ template ++ auto makeMatchExpr( ArgT const& arg, MatcherT const& matcher, StringRef const& matcherString ) -> MatchExpr { ++ return MatchExpr( arg, matcher, matcherString ); ++ } ++ ++} // namespace Catch + + /////////////////////////////////////////////////////////////////////////////// + #define INTERNAL_CHECK_THAT( macroName, matcher, resultDisposition, arg ) \ +@@ -3836,27 +3841,27 @@ auto makeMatchExpr( ArgT const& arg, MatcherT const& matcher, StringRef const& m + + namespace Catch { + +-namespace Generators { +-class GeneratorUntypedBase { +- public: +- GeneratorUntypedBase() = default; +- virtual ~GeneratorUntypedBase(); +- // Attempts to move the generator to the next element +- // +- // Returns true iff the move succeeded (and a valid element +- // can be retrieved). +- virtual bool next() = 0; +-}; +-using GeneratorBasePtr = std::unique_ptr; ++ namespace Generators { ++ class GeneratorUntypedBase { ++ public: ++ GeneratorUntypedBase() = default; ++ virtual ~GeneratorUntypedBase(); ++ // Attempts to move the generator to the next element ++ // ++ // Returns true iff the move succeeded (and a valid element ++ // can be retrieved). ++ virtual bool next() = 0; ++ }; ++ using GeneratorBasePtr = std::unique_ptr; + +-} // namespace Generators ++ } // namespace Generators + +-struct IGeneratorTracker { +- virtual ~IGeneratorTracker(); +- virtual auto hasGenerator() const -> bool = 0; +- virtual auto getGenerator() const -> Generators::GeneratorBasePtr const& = 0; +- virtual void setGenerator( Generators::GeneratorBasePtr&& generator ) = 0; +-}; ++ struct IGeneratorTracker { ++ virtual ~IGeneratorTracker(); ++ virtual auto hasGenerator() const -> bool = 0; ++ virtual auto getGenerator() const -> Generators::GeneratorBasePtr const& = 0; ++ virtual void setGenerator( Generators::GeneratorBasePtr&& generator ) = 0; ++ }; + + } // namespace Catch + +@@ -3867,22 +3872,22 @@ struct IGeneratorTracker { + + namespace Catch { + #if !defined(CATCH_CONFIG_DISABLE_EXCEPTIONS) +-template +-[[noreturn]] +-void throw_exception(Ex const& e) { +- throw e; +-} ++ template ++ [[noreturn]] ++ void throw_exception(Ex const& e) { ++ throw e; ++ } + #else // ^^ Exceptions are enabled // Exceptions are disabled vv +-[[noreturn]] ++ [[noreturn]] + void throw_exception(std::exception const& e); + #endif + +-[[noreturn]] +-void throw_logic_error(std::string const& msg); +-[[noreturn]] +-void throw_domain_error(std::string const& msg); +-[[noreturn]] +-void throw_runtime_error(std::string const& msg); ++ [[noreturn]] ++ void throw_logic_error(std::string const& msg); ++ [[noreturn]] ++ void throw_domain_error(std::string const& msg); ++ [[noreturn]] ++ void throw_runtime_error(std::string const& msg); + + } // namespace Catch; + +@@ -3912,182 +3917,182 @@ void throw_runtime_error(std::string const& msg); + namespace Catch { + + class GeneratorException : public std::exception { +- const char* const m_msg = ""; ++ const char* const m_msg = ""; + +- public: +- GeneratorException(const char* msg): +- m_msg(msg) +- {} ++public: ++ GeneratorException(const char* msg): ++ m_msg(msg) ++ {} + +- const char* what() const noexcept override final; ++ const char* what() const noexcept override final; + }; + + namespace Generators { + +-// !TBD move this into its own location? +-namespace pf{ +-template +-std::unique_ptr make_unique( Args&&... args ) { +- return std::unique_ptr(new T(std::forward(args)...)); +-} +-} ++ // !TBD move this into its own location? ++ namespace pf{ ++ template ++ std::unique_ptr make_unique( Args&&... args ) { ++ return std::unique_ptr(new T(std::forward(args)...)); ++ } ++ } + +-template +-struct IGenerator : GeneratorUntypedBase { +- virtual ~IGenerator() = default; +- +- // Returns the current element of the generator +- // +- // \Precondition The generator is either freshly constructed, +- // or the last call to `next()` returned true +- virtual T const& get() const = 0; +- using type = T; +-}; ++ template ++ struct IGenerator : GeneratorUntypedBase { ++ virtual ~IGenerator() = default; ++ ++ // Returns the current element of the generator ++ // ++ // \Precondition The generator is either freshly constructed, ++ // or the last call to `next()` returned true ++ virtual T const& get() const = 0; ++ using type = T; ++ }; + +-template +-class SingleValueGenerator final : public IGenerator { +- T m_value; +- public: +- SingleValueGenerator(T&& value) : m_value(std::move(value)) {} ++ template ++ class SingleValueGenerator final : public IGenerator { ++ T m_value; ++ public: ++ SingleValueGenerator(T&& value) : m_value(std::move(value)) {} + +- T const& get() const override { +- return m_value; +- } +- bool next() override { +- return false; +- } +-}; ++ T const& get() const override { ++ return m_value; ++ } ++ bool next() override { ++ return false; ++ } ++ }; + +-template +-class FixedValuesGenerator final : public IGenerator { +- static_assert(!std::is_same::value, +- "FixedValuesGenerator does not support bools because of std::vector" +- "specialization, use SingleValue Generator instead."); +- std::vector m_values; +- size_t m_idx = 0; +- public: +- FixedValuesGenerator( std::initializer_list values ) : m_values( values ) {} +- +- T const& get() const override { +- return m_values[m_idx]; +- } +- bool next() override { +- ++m_idx; +- return m_idx < m_values.size(); +- } +-}; ++ template ++ class FixedValuesGenerator final : public IGenerator { ++ static_assert(!std::is_same::value, ++ "FixedValuesGenerator does not support bools because of std::vector" ++ "specialization, use SingleValue Generator instead."); ++ std::vector m_values; ++ size_t m_idx = 0; ++ public: ++ FixedValuesGenerator( std::initializer_list values ) : m_values( values ) {} + +-template +-class GeneratorWrapper final { +- std::unique_ptr> m_generator; +- public: +- GeneratorWrapper(std::unique_ptr> generator): +- m_generator(std::move(generator)) +- {} +- T const& get() const { +- return m_generator->get(); +- } +- bool next() { +- return m_generator->next(); +- } +-}; ++ T const& get() const override { ++ return m_values[m_idx]; ++ } ++ bool next() override { ++ ++m_idx; ++ return m_idx < m_values.size(); ++ } ++ }; + +-template +-GeneratorWrapper value(T&& value) { +- return GeneratorWrapper(pf::make_unique>(std::forward(value))); +-} +-template +-GeneratorWrapper values(std::initializer_list values) { +- return GeneratorWrapper(pf::make_unique>(values)); +-} ++ template ++ class GeneratorWrapper final { ++ std::unique_ptr> m_generator; ++ public: ++ GeneratorWrapper(std::unique_ptr> generator): ++ m_generator(std::move(generator)) ++ {} ++ T const& get() const { ++ return m_generator->get(); ++ } ++ bool next() { ++ return m_generator->next(); ++ } ++ }; + +-template +-class Generators : public IGenerator { +- std::vector> m_generators; +- size_t m_current = 0; ++ template ++ GeneratorWrapper value(T&& value) { ++ return GeneratorWrapper(pf::make_unique>(std::forward(value))); ++ } ++ template ++ GeneratorWrapper values(std::initializer_list values) { ++ return GeneratorWrapper(pf::make_unique>(values)); ++ } + +- void populate(GeneratorWrapper&& generator) { +- m_generators.emplace_back(std::move(generator)); +- } +- void populate(T&& val) { +- m_generators.emplace_back(value(std::forward(val))); +- } +- template +- void populate(U&& val) { +- populate(T(std::forward(val))); +- } +- template +- void populate(U&& valueOrGenerator, Gs &&... moreGenerators) { +- populate(std::forward(valueOrGenerator)); +- populate(std::forward(moreGenerators)...); +- } ++ template ++ class Generators : public IGenerator { ++ std::vector> m_generators; ++ size_t m_current = 0; + +- public: +- template +- Generators(Gs &&... moreGenerators) { +- m_generators.reserve(sizeof...(Gs)); +- populate(std::forward(moreGenerators)...); +- } ++ void populate(GeneratorWrapper&& generator) { ++ m_generators.emplace_back(std::move(generator)); ++ } ++ void populate(T&& val) { ++ m_generators.emplace_back(value(std::forward(val))); ++ } ++ template ++ void populate(U&& val) { ++ populate(T(std::forward(val))); ++ } ++ template ++ void populate(U&& valueOrGenerator, Gs &&... moreGenerators) { ++ populate(std::forward(valueOrGenerator)); ++ populate(std::forward(moreGenerators)...); ++ } + +- T const& get() const override { +- return m_generators[m_current].get(); +- } ++ public: ++ template ++ Generators(Gs &&... moreGenerators) { ++ m_generators.reserve(sizeof...(Gs)); ++ populate(std::forward(moreGenerators)...); ++ } + +- bool next() override { +- if (m_current >= m_generators.size()) { +- return false; +- } +- const bool current_status = m_generators[m_current].next(); +- if (!current_status) { +- ++m_current; +- } +- return m_current < m_generators.size(); +- } +-}; ++ T const& get() const override { ++ return m_generators[m_current].get(); ++ } + +-template +-GeneratorWrapper> table( std::initializer_list::type...>> tuples ) { +- return values>( tuples ); +-} ++ bool next() override { ++ if (m_current >= m_generators.size()) { ++ return false; ++ } ++ const bool current_status = m_generators[m_current].next(); ++ if (!current_status) { ++ ++m_current; ++ } ++ return m_current < m_generators.size(); ++ } ++ }; + +-// Tag type to signal that a generator sequence should convert arguments to a specific type +-template +-struct as {}; ++ template ++ GeneratorWrapper> table( std::initializer_list::type...>> tuples ) { ++ return values>( tuples ); ++ } + +-template +-auto makeGenerators( GeneratorWrapper&& generator, Gs &&... moreGenerators ) -> Generators { +- return Generators(std::move(generator), std::forward(moreGenerators)...); +-} +-template +-auto makeGenerators( GeneratorWrapper&& generator ) -> Generators { +- return Generators(std::move(generator)); +-} +-template +-auto makeGenerators( T&& val, Gs &&... moreGenerators ) -> Generators { +- return makeGenerators( value( std::forward( val ) ), std::forward( moreGenerators )... ); +-} +-template +-auto makeGenerators( as, U&& val, Gs &&... moreGenerators ) -> Generators { +- return makeGenerators( value( T( std::forward( val ) ) ), std::forward( moreGenerators )... ); +-} ++ // Tag type to signal that a generator sequence should convert arguments to a specific type ++ template ++ struct as {}; + +-auto acquireGeneratorTracker( StringRef generatorName, SourceLineInfo const& lineInfo ) -> IGeneratorTracker&; ++ template ++ auto makeGenerators( GeneratorWrapper&& generator, Gs &&... moreGenerators ) -> Generators { ++ return Generators(std::move(generator), std::forward(moreGenerators)...); ++ } ++ template ++ auto makeGenerators( GeneratorWrapper&& generator ) -> Generators { ++ return Generators(std::move(generator)); ++ } ++ template ++ auto makeGenerators( T&& val, Gs &&... moreGenerators ) -> Generators { ++ return makeGenerators( value( std::forward( val ) ), std::forward( moreGenerators )... ); ++ } ++ template ++ auto makeGenerators( as, U&& val, Gs &&... moreGenerators ) -> Generators { ++ return makeGenerators( value( T( std::forward( val ) ) ), std::forward( moreGenerators )... ); ++ } + +-template +-// Note: The type after -> is weird, because VS2015 cannot parse +-// the expression used in the typedef inside, when it is in +-// return type. Yeah. +-auto generate( StringRef generatorName, SourceLineInfo const& lineInfo, L const& generatorExpression ) -> decltype(std::declval().get()) { +- using UnderlyingType = typename decltype(generatorExpression())::type; ++ auto acquireGeneratorTracker( StringRef generatorName, SourceLineInfo const& lineInfo ) -> IGeneratorTracker&; + +- IGeneratorTracker& tracker = acquireGeneratorTracker( generatorName, lineInfo ); +- if (!tracker.hasGenerator()) { +- tracker.setGenerator(pf::make_unique>(generatorExpression())); +- } ++ template ++ // Note: The type after -> is weird, because VS2015 cannot parse ++ // the expression used in the typedef inside, when it is in ++ // return type. Yeah. ++ auto generate( StringRef generatorName, SourceLineInfo const& lineInfo, L const& generatorExpression ) -> decltype(std::declval().get()) { ++ using UnderlyingType = typename decltype(generatorExpression())::type; + +- auto const& generator = static_cast const&>( *tracker.getGenerator() ); +- return generator.get(); +-} ++ IGeneratorTracker& tracker = acquireGeneratorTracker( generatorName, lineInfo ); ++ if (!tracker.hasGenerator()) { ++ tracker.setGenerator(pf::make_unique>(generatorExpression())); ++ } ++ ++ auto const& generator = static_cast const&>( *tracker.getGenerator() ); ++ return generator.get(); ++ } + + } // namespace Generators + } // namespace Catch +@@ -4111,220 +4116,225 @@ auto generate( StringRef generatorName, SourceLineInfo const& lineInfo, L const& + namespace Catch { + namespace Generators { + +-template +-class TakeGenerator : public IGenerator { +- GeneratorWrapper m_generator; +- size_t m_returned = 0; +- size_t m_target; +- public: +- TakeGenerator(size_t target, GeneratorWrapper&& generator): +- m_generator(std::move(generator)), +- m_target(target) +- { +- assert(target != 0 && "Empty generators are not allowed"); +- } +- T const& get() const override { +- return m_generator.get(); +- } +- bool next() override { +- ++m_returned; +- if (m_returned >= m_target) { +- return false; +- } +- +- const auto success = m_generator.next(); +- // If the underlying generator does not contain enough values +- // then we cut short as well +- if (!success) { +- m_returned = m_target; +- } +- return success; +- } +-}; ++ template ++ class TakeGenerator : public IGenerator { ++ GeneratorWrapper m_generator; ++ size_t m_returned = 0; ++ size_t m_target; ++ public: ++ TakeGenerator(size_t target, GeneratorWrapper&& generator): ++ m_generator(std::move(generator)), ++ m_target(target) ++ { ++ assert(target != 0 && "Empty generators are not allowed"); ++ } ++ T const& get() const override { ++ return m_generator.get(); ++ } ++ bool next() override { ++ ++m_returned; ++ if (m_returned >= m_target) { ++ return false; ++ } + +-template +-GeneratorWrapper take(size_t target, GeneratorWrapper&& generator) { +- return GeneratorWrapper(pf::make_unique>(target, std::move(generator))); +-} ++ const auto success = m_generator.next(); ++ // If the underlying generator does not contain enough values ++ // then we cut short as well ++ if (!success) { ++ m_returned = m_target; ++ } ++ return success; ++ } ++ }; + +-template +-class FilterGenerator : public IGenerator { +- GeneratorWrapper m_generator; +- Predicate m_predicate; +- public: +- template +- FilterGenerator(P&& pred, GeneratorWrapper&& generator): +- m_generator(std::move(generator)), +- m_predicate(std::forward

(pred)) +- { +- if (!m_predicate(m_generator.get())) { +- // It might happen that there are no values that pass the +- // filter. In that case we throw an exception. +- auto has_initial_value = next(); +- if (!has_initial_value) { +- Catch::throw_exception(GeneratorException("No valid value found in filtered generator")); +- } ++ template ++ GeneratorWrapper take(size_t target, GeneratorWrapper&& generator) { ++ return GeneratorWrapper(pf::make_unique>(target, std::move(generator))); + } +- } + +- T const& get() const override { +- return m_generator.get(); +- } ++ template ++ class FilterGenerator : public IGenerator { ++ GeneratorWrapper m_generator; ++ Predicate m_predicate; ++ public: ++ template ++ FilterGenerator(P&& pred, GeneratorWrapper&& generator): ++ m_generator(std::move(generator)), ++ m_predicate(std::forward

(pred)) ++ { ++ if (!m_predicate(m_generator.get())) { ++ // It might happen that there are no values that pass the ++ // filter. In that case we throw an exception. ++ auto has_initial_value = nextImpl(); ++ if (!has_initial_value) { ++ Catch::throw_exception(GeneratorException("No valid value found in filtered generator")); ++ } ++ } ++ } + +- bool next() override { +- bool success = m_generator.next(); +- if (!success) { +- return false; +- } +- while (!m_predicate(m_generator.get()) && (success = m_generator.next())); +- return success; +- } +-}; ++ T const& get() const override { ++ return m_generator.get(); ++ } + +-template +-GeneratorWrapper filter(Predicate&& pred, GeneratorWrapper&& generator) { +- return GeneratorWrapper(std::unique_ptr>(pf::make_unique>(std::forward(pred), std::move(generator)))); +-} ++ bool next() override { ++ return nextImpl(); ++ } + +-template +-class RepeatGenerator : public IGenerator { +- static_assert(!std::is_same::value, +- "RepeatGenerator currently does not support bools" +- "because of std::vector specialization"); +- GeneratorWrapper m_generator; +- mutable std::vector m_returned; +- size_t m_target_repeats; +- size_t m_current_repeat = 0; +- size_t m_repeat_index = 0; +- public: +- RepeatGenerator(size_t repeats, GeneratorWrapper&& generator): +- m_generator(std::move(generator)), +- m_target_repeats(repeats) +- { +- assert(m_target_repeats > 0 && "Repeat generator must repeat at least once"); +- } ++ private: ++ bool nextImpl() { ++ bool success = m_generator.next(); ++ if (!success) { ++ return false; ++ } ++ while (!m_predicate(m_generator.get()) && (success = m_generator.next()) == true); ++ return success; ++ } ++ }; + +- T const& get() const override { +- if (m_current_repeat == 0) { +- m_returned.push_back(m_generator.get()); +- return m_returned.back(); ++ template ++ GeneratorWrapper filter(Predicate&& pred, GeneratorWrapper&& generator) { ++ return GeneratorWrapper(std::unique_ptr>(pf::make_unique>(std::forward(pred), std::move(generator)))); + } +- return m_returned[m_repeat_index]; +- } + +- bool next() override { +- // There are 2 basic cases: +- // 1) We are still reading the generator +- // 2) We are reading our own cache +- +- // In the first case, we need to poke the underlying generator. +- // If it happily moves, we are left in that state, otherwise it is time to start reading from our cache +- if (m_current_repeat == 0) { +- const auto success = m_generator.next(); +- if (!success) { +- ++m_current_repeat; +- } +- return m_current_repeat < m_target_repeats; +- } ++ template ++ class RepeatGenerator : public IGenerator { ++ static_assert(!std::is_same::value, ++ "RepeatGenerator currently does not support bools" ++ "because of std::vector specialization"); ++ GeneratorWrapper m_generator; ++ mutable std::vector m_returned; ++ size_t m_target_repeats; ++ size_t m_current_repeat = 0; ++ size_t m_repeat_index = 0; ++ public: ++ RepeatGenerator(size_t repeats, GeneratorWrapper&& generator): ++ m_generator(std::move(generator)), ++ m_target_repeats(repeats) ++ { ++ assert(m_target_repeats > 0 && "Repeat generator must repeat at least once"); ++ } + +- // In the second case, we need to move indices forward and check that we haven't run up against the end +- ++m_repeat_index; +- if (m_repeat_index == m_returned.size()) { +- m_repeat_index = 0; +- ++m_current_repeat; +- } +- return m_current_repeat < m_target_repeats; +- } +-}; ++ T const& get() const override { ++ if (m_current_repeat == 0) { ++ m_returned.push_back(m_generator.get()); ++ return m_returned.back(); ++ } ++ return m_returned[m_repeat_index]; ++ } + +-template +-GeneratorWrapper repeat(size_t repeats, GeneratorWrapper&& generator) { +- return GeneratorWrapper(pf::make_unique>(repeats, std::move(generator))); +-} ++ bool next() override { ++ // There are 2 basic cases: ++ // 1) We are still reading the generator ++ // 2) We are reading our own cache + +-template +-class MapGenerator : public IGenerator { +- // TBD: provide static assert for mapping function, for friendly error message +- GeneratorWrapper m_generator; +- Func m_function; +- // To avoid returning dangling reference, we have to save the values +- T m_cache; +- public: +- template +- MapGenerator(F2&& function, GeneratorWrapper&& generator) : +- m_generator(std::move(generator)), +- m_function(std::forward(function)), +- m_cache(m_function(m_generator.get())) +- {} +- +- T const& get() const override { +- return m_cache; +- } +- bool next() override { +- const auto success = m_generator.next(); +- if (success) { +- m_cache = m_function(m_generator.get()); ++ // In the first case, we need to poke the underlying generator. ++ // If it happily moves, we are left in that state, otherwise it is time to start reading from our cache ++ if (m_current_repeat == 0) { ++ const auto success = m_generator.next(); ++ if (!success) { ++ ++m_current_repeat; ++ } ++ return m_current_repeat < m_target_repeats; ++ } ++ ++ // In the second case, we need to move indices forward and check that we haven't run up against the end ++ ++m_repeat_index; ++ if (m_repeat_index == m_returned.size()) { ++ m_repeat_index = 0; ++ ++m_current_repeat; ++ } ++ return m_current_repeat < m_target_repeats; ++ } ++ }; ++ ++ template ++ GeneratorWrapper repeat(size_t repeats, GeneratorWrapper&& generator) { ++ return GeneratorWrapper(pf::make_unique>(repeats, std::move(generator))); + } +- return success; +- } +-}; + +-template > +-GeneratorWrapper map(Func&& function, GeneratorWrapper&& generator) { +- return GeneratorWrapper( +- pf::make_unique>(std::forward(function), std::move(generator)) +- ); +-} ++ template ++ class MapGenerator : public IGenerator { ++ // TBD: provide static assert for mapping function, for friendly error message ++ GeneratorWrapper m_generator; ++ Func m_function; ++ // To avoid returning dangling reference, we have to save the values ++ T m_cache; ++ public: ++ template ++ MapGenerator(F2&& function, GeneratorWrapper&& generator) : ++ m_generator(std::move(generator)), ++ m_function(std::forward(function)), ++ m_cache(m_function(m_generator.get())) ++ {} + +-template +-GeneratorWrapper map(Func&& function, GeneratorWrapper&& generator) { +- return GeneratorWrapper( +- pf::make_unique>(std::forward(function), std::move(generator)) +- ); +-} ++ T const& get() const override { ++ return m_cache; ++ } ++ bool next() override { ++ const auto success = m_generator.next(); ++ if (success) { ++ m_cache = m_function(m_generator.get()); ++ } ++ return success; ++ } ++ }; + +-template +-class ChunkGenerator final : public IGenerator> { +- std::vector m_chunk; +- size_t m_chunk_size; +- GeneratorWrapper m_generator; +- bool m_used_up = false; +- public: +- ChunkGenerator(size_t size, GeneratorWrapper generator) : +- m_chunk_size(size), m_generator(std::move(generator)) +- { +- m_chunk.reserve(m_chunk_size); +- if (m_chunk_size != 0) { +- m_chunk.push_back(m_generator.get()); +- for (size_t i = 1; i < m_chunk_size; ++i) { +- if (!m_generator.next()) { +- Catch::throw_exception(GeneratorException("Not enough values to initialize the first chunk")); +- } +- m_chunk.push_back(m_generator.get()); +- } ++ template > ++ GeneratorWrapper map(Func&& function, GeneratorWrapper&& generator) { ++ return GeneratorWrapper( ++ pf::make_unique>(std::forward(function), std::move(generator)) ++ ); + } +- } +- std::vector const& get() const override { +- return m_chunk; +- } +- bool next() override { +- m_chunk.clear(); +- for (size_t idx = 0; idx < m_chunk_size; ++idx) { +- if (!m_generator.next()) { +- return false; +- } +- m_chunk.push_back(m_generator.get()); ++ ++ template ++ GeneratorWrapper map(Func&& function, GeneratorWrapper&& generator) { ++ return GeneratorWrapper( ++ pf::make_unique>(std::forward(function), std::move(generator)) ++ ); + } +- return true; +- } +-}; + +-template +-GeneratorWrapper> chunk(size_t size, GeneratorWrapper&& generator) { +- return GeneratorWrapper>( +- pf::make_unique>(size, std::move(generator)) +- ); +-} ++ template ++ class ChunkGenerator final : public IGenerator> { ++ std::vector m_chunk; ++ size_t m_chunk_size; ++ GeneratorWrapper m_generator; ++ bool m_used_up = false; ++ public: ++ ChunkGenerator(size_t size, GeneratorWrapper generator) : ++ m_chunk_size(size), m_generator(std::move(generator)) ++ { ++ m_chunk.reserve(m_chunk_size); ++ if (m_chunk_size != 0) { ++ m_chunk.push_back(m_generator.get()); ++ for (size_t i = 1; i < m_chunk_size; ++i) { ++ if (!m_generator.next()) { ++ Catch::throw_exception(GeneratorException("Not enough values to initialize the first chunk")); ++ } ++ m_chunk.push_back(m_generator.get()); ++ } ++ } ++ } ++ std::vector const& get() const override { ++ return m_chunk; ++ } ++ bool next() override { ++ m_chunk.clear(); ++ for (size_t idx = 0; idx < m_chunk_size; ++idx) { ++ if (!m_generator.next()) { ++ return false; ++ } ++ m_chunk.push_back(m_generator.get()); ++ } ++ return true; ++ } ++ }; ++ ++ template ++ GeneratorWrapper> chunk(size_t size, GeneratorWrapper&& generator) { ++ return GeneratorWrapper>( ++ pf::make_unique>(size, std::move(generator)) ++ ); ++ } + + } // namespace Generators + } // namespace Catch +@@ -4338,53 +4348,53 @@ GeneratorWrapper> chunk(size_t size, GeneratorWrapper&& genera + + namespace Catch { + +-struct IResultCapture; +-struct IRunner; +-struct IConfig; +-struct IMutableContext; ++ struct IResultCapture; ++ struct IRunner; ++ struct IConfig; ++ struct IMutableContext; + +-using IConfigPtr = std::shared_ptr; ++ using IConfigPtr = std::shared_ptr; + +-struct IContext +-{ +- virtual ~IContext(); ++ struct IContext ++ { ++ virtual ~IContext(); + +- virtual IResultCapture* getResultCapture() = 0; +- virtual IRunner* getRunner() = 0; +- virtual IConfigPtr const& getConfig() const = 0; +-}; ++ virtual IResultCapture* getResultCapture() = 0; ++ virtual IRunner* getRunner() = 0; ++ virtual IConfigPtr const& getConfig() const = 0; ++ }; + +-struct IMutableContext : IContext +-{ +- virtual ~IMutableContext(); +- virtual void setResultCapture( IResultCapture* resultCapture ) = 0; +- virtual void setRunner( IRunner* runner ) = 0; +- virtual void setConfig( IConfigPtr const& config ) = 0; +- +- private: +- static IMutableContext *currentContext; +- friend IMutableContext& getCurrentMutableContext(); +- friend void cleanUpContext(); +- static void createContext(); +-}; ++ struct IMutableContext : IContext ++ { ++ virtual ~IMutableContext(); ++ virtual void setResultCapture( IResultCapture* resultCapture ) = 0; ++ virtual void setRunner( IRunner* runner ) = 0; ++ virtual void setConfig( IConfigPtr const& config ) = 0; + +-inline IMutableContext& getCurrentMutableContext() +-{ +- if( !IMutableContext::currentContext ) +- IMutableContext::createContext(); +- // NOLINTNEXTLINE(clang-analyzer-core.uninitialized.UndefReturn) +- return *IMutableContext::currentContext; +-} ++ private: ++ static IMutableContext *currentContext; ++ friend IMutableContext& getCurrentMutableContext(); ++ friend void cleanUpContext(); ++ static void createContext(); ++ }; + +-inline IContext& getCurrentContext() +-{ +- return getCurrentMutableContext(); +-} ++ inline IMutableContext& getCurrentMutableContext() ++ { ++ if( !IMutableContext::currentContext ) ++ IMutableContext::createContext(); ++ // NOLINTNEXTLINE(clang-analyzer-core.uninitialized.UndefReturn) ++ return *IMutableContext::currentContext; ++ } + +-void cleanUpContext(); ++ inline IContext& getCurrentContext() ++ { ++ return getCurrentMutableContext(); ++ } + +-class SimplePcg32; +-SimplePcg32& rng(); ++ void cleanUpContext(); ++ ++ class SimplePcg32; ++ SimplePcg32& rng(); + } + + // end catch_context.h +@@ -4394,63 +4404,63 @@ SimplePcg32& rng(); + + namespace Catch { + +-// An optional type +-template +-class Option { +- public: +- Option() : nullableValue( nullptr ) {} +- Option( T const& _value ) +- : nullableValue( new( storage ) T( _value ) ) +- {} +- Option( Option const& _other ) +- : nullableValue( _other ? new( storage ) T( *_other ) : nullptr ) +- {} +- +- ~Option() { +- reset(); +- } ++ // An optional type ++ template ++ class Option { ++ public: ++ Option() : nullableValue( nullptr ) {} ++ Option( T const& _value ) ++ : nullableValue( new( storage ) T( _value ) ) ++ {} ++ Option( Option const& _other ) ++ : nullableValue( _other ? new( storage ) T( *_other ) : nullptr ) ++ {} + +- Option& operator= ( Option const& _other ) { +- if( &_other != this ) { +- reset(); +- if( _other ) +- nullableValue = new( storage ) T( *_other ); +- } +- return *this; +- } +- Option& operator = ( T const& _value ) { +- reset(); +- nullableValue = new( storage ) T( _value ); +- return *this; +- } ++ ~Option() { ++ reset(); ++ } + +- void reset() { +- if( nullableValue ) +- nullableValue->~T(); +- nullableValue = nullptr; +- } ++ Option& operator= ( Option const& _other ) { ++ if( &_other != this ) { ++ reset(); ++ if( _other ) ++ nullableValue = new( storage ) T( *_other ); ++ } ++ return *this; ++ } ++ Option& operator = ( T const& _value ) { ++ reset(); ++ nullableValue = new( storage ) T( _value ); ++ return *this; ++ } ++ ++ void reset() { ++ if( nullableValue ) ++ nullableValue->~T(); ++ nullableValue = nullptr; ++ } + +- T& operator*() { return *nullableValue; } +- T const& operator*() const { return *nullableValue; } +- T* operator->() { return nullableValue; } +- const T* operator->() const { return nullableValue; } ++ T& operator*() { return *nullableValue; } ++ T const& operator*() const { return *nullableValue; } ++ T* operator->() { return nullableValue; } ++ const T* operator->() const { return nullableValue; } + +- T valueOr( T const& defaultValue ) const { +- return nullableValue ? *nullableValue : defaultValue; +- } ++ T valueOr( T const& defaultValue ) const { ++ return nullableValue ? *nullableValue : defaultValue; ++ } + +- bool some() const { return nullableValue != nullptr; } +- bool none() const { return nullableValue == nullptr; } ++ bool some() const { return nullableValue != nullptr; } ++ bool none() const { return nullableValue == nullptr; } + +- bool operator !() const { return nullableValue == nullptr; } +- explicit operator bool() const { +- return some(); +- } ++ bool operator !() const { return nullableValue == nullptr; } ++ explicit operator bool() const { ++ return some(); ++ } + +- private: +- T *nullableValue; +- alignas(alignof(T)) char storage[sizeof(T)]; +-}; ++ private: ++ T *nullableValue; ++ alignas(alignof(T)) char storage[sizeof(T)]; ++ }; + + } // end namespace Catch + +@@ -4463,74 +4473,74 @@ class Option { + + namespace Catch { + +-enum class Verbosity { +- Quiet = 0, +- Normal, +- High +-}; ++ enum class Verbosity { ++ Quiet = 0, ++ Normal, ++ High ++ }; + +-struct WarnAbout { enum What { +- Nothing = 0x00, +- NoAssertions = 0x01, +- NoTests = 0x02 +- }; }; +- +-struct ShowDurations { enum OrNot { +- DefaultForReporter, +- Always, +- Never +- }; }; +-struct RunTests { enum InWhatOrder { +- InDeclarationOrder, +- InLexicographicalOrder, +- InRandomOrder +- }; }; +-struct UseColour { enum YesOrNo { +- Auto, +- Yes, +- No +- }; }; +-struct WaitForKeypress { enum When { +- Never, +- BeforeStart = 1, +- BeforeExit = 2, +- BeforeStartAndExit = BeforeStart | BeforeExit +- }; }; +- +-class TestSpec; +- +-struct IConfig : NonCopyable { +- +- virtual ~IConfig(); +- +- virtual bool allowThrows() const = 0; +- virtual std::ostream& stream() const = 0; +- virtual std::string name() const = 0; +- virtual bool includeSuccessfulResults() const = 0; +- virtual bool shouldDebugBreak() const = 0; +- virtual bool warnAboutMissingAssertions() const = 0; +- virtual bool warnAboutNoTests() const = 0; +- virtual int abortAfter() const = 0; +- virtual bool showInvisibles() const = 0; +- virtual ShowDurations::OrNot showDurations() const = 0; +- virtual double minDuration() const = 0; +- virtual TestSpec const& testSpec() const = 0; +- virtual bool hasTestFilters() const = 0; +- virtual std::vector const& getTestsOrTags() const = 0; +- virtual RunTests::InWhatOrder runOrder() const = 0; +- virtual unsigned int rngSeed() const = 0; +- virtual UseColour::YesOrNo useColour() const = 0; +- virtual std::vector const& getSectionsToRun() const = 0; +- virtual Verbosity verbosity() const = 0; +- +- virtual bool benchmarkNoAnalysis() const = 0; +- virtual int benchmarkSamples() const = 0; +- virtual double benchmarkConfidenceInterval() const = 0; +- virtual unsigned int benchmarkResamples() const = 0; +- virtual std::chrono::milliseconds benchmarkWarmupTime() const = 0; +-}; ++ struct WarnAbout { enum What { ++ Nothing = 0x00, ++ NoAssertions = 0x01, ++ NoTests = 0x02 ++ }; }; ++ ++ struct ShowDurations { enum OrNot { ++ DefaultForReporter, ++ Always, ++ Never ++ }; }; ++ struct RunTests { enum InWhatOrder { ++ InDeclarationOrder, ++ InLexicographicalOrder, ++ InRandomOrder ++ }; }; ++ struct UseColour { enum YesOrNo { ++ Auto, ++ Yes, ++ No ++ }; }; ++ struct WaitForKeypress { enum When { ++ Never, ++ BeforeStart = 1, ++ BeforeExit = 2, ++ BeforeStartAndExit = BeforeStart | BeforeExit ++ }; }; ++ ++ class TestSpec; ++ ++ struct IConfig : NonCopyable { ++ ++ virtual ~IConfig(); ++ ++ virtual bool allowThrows() const = 0; ++ virtual std::ostream& stream() const = 0; ++ virtual std::string name() const = 0; ++ virtual bool includeSuccessfulResults() const = 0; ++ virtual bool shouldDebugBreak() const = 0; ++ virtual bool warnAboutMissingAssertions() const = 0; ++ virtual bool warnAboutNoTests() const = 0; ++ virtual int abortAfter() const = 0; ++ virtual bool showInvisibles() const = 0; ++ virtual ShowDurations::OrNot showDurations() const = 0; ++ virtual double minDuration() const = 0; ++ virtual TestSpec const& testSpec() const = 0; ++ virtual bool hasTestFilters() const = 0; ++ virtual std::vector const& getTestsOrTags() const = 0; ++ virtual RunTests::InWhatOrder runOrder() const = 0; ++ virtual unsigned int rngSeed() const = 0; ++ virtual UseColour::YesOrNo useColour() const = 0; ++ virtual std::vector const& getSectionsToRun() const = 0; ++ virtual Verbosity verbosity() const = 0; ++ ++ virtual bool benchmarkNoAnalysis() const = 0; ++ virtual int benchmarkSamples() const = 0; ++ virtual double benchmarkConfidenceInterval() const = 0; ++ virtual unsigned int benchmarkResamples() const = 0; ++ virtual std::chrono::milliseconds benchmarkWarmupTime() const = 0; ++ }; + +-using IConfigPtr = std::shared_ptr; ++ using IConfigPtr = std::shared_ptr; + } + + // end catch_interfaces_config.h +@@ -4540,46 +4550,46 @@ using IConfigPtr = std::shared_ptr; + + namespace Catch { + +-// This is a simple implementation of C++11 Uniform Random Number +-// Generator. It does not provide all operators, because Catch2 +-// does not use it, but it should behave as expected inside stdlib's +-// distributions. +-// The implementation is based on the PCG family (http://pcg-random.org) +-class SimplePcg32 { +- using state_type = std::uint64_t; +- public: +- using result_type = std::uint32_t; +- static constexpr result_type (min)() { +- return 0; +- } +- static constexpr result_type (max)() { +- return static_cast(-1); +- } +- +- // Provide some default initial state for the default constructor +- SimplePcg32():SimplePcg32(0xed743cc4U) {} +- +- explicit SimplePcg32(result_type seed_); ++ // This is a simple implementation of C++11 Uniform Random Number ++ // Generator. It does not provide all operators, because Catch2 ++ // does not use it, but it should behave as expected inside stdlib's ++ // distributions. ++ // The implementation is based on the PCG family (http://pcg-random.org) ++ class SimplePcg32 { ++ using state_type = std::uint64_t; ++ public: ++ using result_type = std::uint32_t; ++ static constexpr result_type (min)() { ++ return 0; ++ } ++ static constexpr result_type (max)() { ++ return static_cast(-1); ++ } + +- void seed(result_type seed_); +- void discard(uint64_t skip); ++ // Provide some default initial state for the default constructor ++ SimplePcg32():SimplePcg32(0xed743cc4U) {} + +- result_type operator()(); ++ explicit SimplePcg32(result_type seed_); + +- private: +- friend bool operator==(SimplePcg32 const& lhs, SimplePcg32 const& rhs); +- friend bool operator!=(SimplePcg32 const& lhs, SimplePcg32 const& rhs); ++ void seed(result_type seed_); ++ void discard(uint64_t skip); + +- // In theory we also need operator<< and operator>> +- // In practice we do not use them, so we will skip them for now ++ result_type operator()(); + +- std::uint64_t m_state; +- // This part of the state determines which "stream" of the numbers +- // is chosen -- we take it as a constant for Catch2, so we only +- // need to deal with seeding the main state. +- // Picked by reading 8 bytes from `/dev/random` :-) +- static const std::uint64_t s_inc = (0x13ed0cc53f939476ULL << 1ULL) | 1ULL; +-}; ++ private: ++ friend bool operator==(SimplePcg32 const& lhs, SimplePcg32 const& rhs); ++ friend bool operator!=(SimplePcg32 const& lhs, SimplePcg32 const& rhs); ++ ++ // In theory we also need operator<< and operator>> ++ // In practice we do not use them, so we will skip them for now ++ ++ std::uint64_t m_state; ++ // This part of the state determines which "stream" of the numbers ++ // is chosen -- we take it as a constant for Catch2, so we only ++ // need to deal with seeding the main state. ++ // Picked by reading 8 bytes from `/dev/random` :-) ++ static const std::uint64_t s_inc = (0x13ed0cc53f939476ULL << 1ULL) | 1ULL; ++ }; + + } // end namespace Catch + +@@ -4591,150 +4601,150 @@ namespace Generators { + + template + class RandomFloatingGenerator final : public IGenerator { +- Catch::SimplePcg32& m_rng; +- std::uniform_real_distribution m_dist; +- Float m_current_number; +- public: +- +- RandomFloatingGenerator(Float a, Float b): +- m_rng(rng()), +- m_dist(a, b) { +- static_cast(next()); +- } ++ Catch::SimplePcg32& m_rng; ++ std::uniform_real_distribution m_dist; ++ Float m_current_number; ++public: + +- Float const& get() const override { +- return m_current_number; +- } +- bool next() override { +- m_current_number = m_dist(m_rng); +- return true; +- } ++ RandomFloatingGenerator(Float a, Float b): ++ m_rng(rng()), ++ m_dist(a, b) { ++ static_cast(next()); ++ } ++ ++ Float const& get() const override { ++ return m_current_number; ++ } ++ bool next() override { ++ m_current_number = m_dist(m_rng); ++ return true; ++ } + }; + + template + class RandomIntegerGenerator final : public IGenerator { +- Catch::SimplePcg32& m_rng; +- std::uniform_int_distribution m_dist; +- Integer m_current_number; +- public: +- +- RandomIntegerGenerator(Integer a, Integer b): +- m_rng(rng()), +- m_dist(a, b) { +- static_cast(next()); +- } ++ Catch::SimplePcg32& m_rng; ++ std::uniform_int_distribution m_dist; ++ Integer m_current_number; ++public: + +- Integer const& get() const override { +- return m_current_number; +- } +- bool next() override { +- m_current_number = m_dist(m_rng); +- return true; +- } ++ RandomIntegerGenerator(Integer a, Integer b): ++ m_rng(rng()), ++ m_dist(a, b) { ++ static_cast(next()); ++ } ++ ++ Integer const& get() const override { ++ return m_current_number; ++ } ++ bool next() override { ++ m_current_number = m_dist(m_rng); ++ return true; ++ } + }; + + // TODO: Ideally this would be also constrained against the various char types, + // but I don't expect users to run into that in practice. + template + typename std::enable_if::value && !std::is_same::value, +- GeneratorWrapper>::type ++GeneratorWrapper>::type + random(T a, T b) { +- return GeneratorWrapper( +- pf::make_unique>(a, b) +- ); ++ return GeneratorWrapper( ++ pf::make_unique>(a, b) ++ ); + } + + template + typename std::enable_if::value, +- GeneratorWrapper>::type ++GeneratorWrapper>::type + random(T a, T b) { +- return GeneratorWrapper( +- pf::make_unique>(a, b) +- ); ++ return GeneratorWrapper( ++ pf::make_unique>(a, b) ++ ); + } + + template + class RangeGenerator final : public IGenerator { +- T m_current; +- T m_end; +- T m_step; +- bool m_positive; +- +- public: +- RangeGenerator(T const& start, T const& end, T const& step): +- m_current(start), +- m_end(end), +- m_step(step), +- m_positive(m_step > T(0)) +- { +- assert(m_current != m_end && "Range start and end cannot be equal"); +- assert(m_step != T(0) && "Step size cannot be zero"); +- assert(((m_positive && m_current <= m_end) || (!m_positive && m_current >= m_end)) && "Step moves away from end"); +- } ++ T m_current; ++ T m_end; ++ T m_step; ++ bool m_positive; ++ ++public: ++ RangeGenerator(T const& start, T const& end, T const& step): ++ m_current(start), ++ m_end(end), ++ m_step(step), ++ m_positive(m_step > T(0)) ++ { ++ assert(m_current != m_end && "Range start and end cannot be equal"); ++ assert(m_step != T(0) && "Step size cannot be zero"); ++ assert(((m_positive && m_current <= m_end) || (!m_positive && m_current >= m_end)) && "Step moves away from end"); ++ } + +- RangeGenerator(T const& start, T const& end): +- RangeGenerator(start, end, (start < end) ? T(1) : T(-1)) +- {} ++ RangeGenerator(T const& start, T const& end): ++ RangeGenerator(start, end, (start < end) ? T(1) : T(-1)) ++ {} + +- T const& get() const override { +- return m_current; +- } ++ T const& get() const override { ++ return m_current; ++ } + +- bool next() override { +- m_current += m_step; +- return (m_positive) ? (m_current < m_end) : (m_current > m_end); +- } ++ bool next() override { ++ m_current += m_step; ++ return (m_positive) ? (m_current < m_end) : (m_current > m_end); ++ } + }; + + template + GeneratorWrapper range(T const& start, T const& end, T const& step) { +- static_assert(std::is_arithmetic::value && !std::is_same::value, "Type must be numeric"); +- return GeneratorWrapper(pf::make_unique>(start, end, step)); ++ static_assert(std::is_arithmetic::value && !std::is_same::value, "Type must be numeric"); ++ return GeneratorWrapper(pf::make_unique>(start, end, step)); + } + + template + GeneratorWrapper range(T const& start, T const& end) { +- static_assert(std::is_integral::value && !std::is_same::value, "Type must be an integer"); +- return GeneratorWrapper(pf::make_unique>(start, end)); ++ static_assert(std::is_integral::value && !std::is_same::value, "Type must be an integer"); ++ return GeneratorWrapper(pf::make_unique>(start, end)); + } + + template + class IteratorGenerator final : public IGenerator { +- static_assert(!std::is_same::value, +- "IteratorGenerator currently does not support bools" +- "because of std::vector specialization"); +- +- std::vector m_elems; +- size_t m_current = 0; +- public: +- template +- IteratorGenerator(InputIterator first, InputSentinel last):m_elems(first, last) { +- if (m_elems.empty()) { +- Catch::throw_exception(GeneratorException("IteratorGenerator received no valid values")); ++ static_assert(!std::is_same::value, ++ "IteratorGenerator currently does not support bools" ++ "because of std::vector specialization"); ++ ++ std::vector m_elems; ++ size_t m_current = 0; ++public: ++ template ++ IteratorGenerator(InputIterator first, InputSentinel last):m_elems(first, last) { ++ if (m_elems.empty()) { ++ Catch::throw_exception(GeneratorException("IteratorGenerator received no valid values")); ++ } + } +- } + +- T const& get() const override { +- return m_elems[m_current]; +- } ++ T const& get() const override { ++ return m_elems[m_current]; ++ } + +- bool next() override { +- ++m_current; +- return m_current != m_elems.size(); +- } ++ bool next() override { ++ ++m_current; ++ return m_current != m_elems.size(); ++ } + }; + + template ::value_type> ++ typename InputSentinel, ++ typename ResultType = typename std::iterator_traits::value_type> + GeneratorWrapper from_range(InputIterator from, InputSentinel to) { +- return GeneratorWrapper(pf::make_unique>(from, to)); ++ return GeneratorWrapper(pf::make_unique>(from, to)); + } + + template ++ typename ResultType = typename Container::value_type> + GeneratorWrapper from_range(Container const& cnt) { +- return GeneratorWrapper(pf::make_unique>(cnt.begin(), cnt.end())); ++ return GeneratorWrapper(pf::make_unique>(cnt.begin(), cnt.end())); + } + + } // namespace Generators +@@ -4757,65 +4767,65 @@ GeneratorWrapper from_range(Container const& cnt) { + + namespace Catch { + +-struct ITestInvoker; +- +-struct TestCaseInfo { +- enum SpecialProperties{ +- None = 0, +- IsHidden = 1 << 1, +- ShouldFail = 1 << 2, +- MayFail = 1 << 3, +- Throws = 1 << 4, +- NonPortable = 1 << 5, +- Benchmark = 1 << 6 +- }; +- +- TestCaseInfo( std::string const& _name, +- std::string const& _className, +- std::string const& _description, +- std::vector const& _tags, +- SourceLineInfo const& _lineInfo ); +- +- friend void setTags( TestCaseInfo& testCaseInfo, std::vector tags ); +- +- bool isHidden() const; +- bool throws() const; +- bool okToFail() const; +- bool expectedToFail() const; +- +- std::string tagsAsString() const; +- +- std::string name; +- std::string className; +- std::string description; +- std::vector tags; +- std::vector lcaseTags; +- SourceLineInfo lineInfo; +- SpecialProperties properties; +-}; ++ struct ITestInvoker; + +-class TestCase : public TestCaseInfo { +- public: ++ struct TestCaseInfo { ++ enum SpecialProperties{ ++ None = 0, ++ IsHidden = 1 << 1, ++ ShouldFail = 1 << 2, ++ MayFail = 1 << 3, ++ Throws = 1 << 4, ++ NonPortable = 1 << 5, ++ Benchmark = 1 << 6 ++ }; + +- TestCase( ITestInvoker* testCase, TestCaseInfo&& info ); ++ TestCaseInfo( std::string const& _name, ++ std::string const& _className, ++ std::string const& _description, ++ std::vector const& _tags, ++ SourceLineInfo const& _lineInfo ); + +- TestCase withName( std::string const& _newName ) const; ++ friend void setTags( TestCaseInfo& testCaseInfo, std::vector tags ); + +- void invoke() const; ++ bool isHidden() const; ++ bool throws() const; ++ bool okToFail() const; ++ bool expectedToFail() const; + +- TestCaseInfo const& getTestCaseInfo() const; ++ std::string tagsAsString() const; + +- bool operator == ( TestCase const& other ) const; +- bool operator < ( TestCase const& other ) const; ++ std::string name; ++ std::string className; ++ std::string description; ++ std::vector tags; ++ std::vector lcaseTags; ++ SourceLineInfo lineInfo; ++ SpecialProperties properties; ++ }; + +- private: +- std::shared_ptr test; +-}; ++ class TestCase : public TestCaseInfo { ++ public: ++ ++ TestCase( ITestInvoker* testCase, TestCaseInfo&& info ); ++ ++ TestCase withName( std::string const& _newName ) const; ++ ++ void invoke() const; ++ ++ TestCaseInfo const& getTestCaseInfo() const; ++ ++ bool operator == ( TestCase const& other ) const; ++ bool operator < ( TestCase const& other ) const; ++ ++ private: ++ std::shared_ptr test; ++ }; + +-TestCase makeTestCase( ITestInvoker* testCase, +- std::string const& className, +- NameAndTags const& nameAndTags, +- SourceLineInfo const& lineInfo ); ++ TestCase makeTestCase( ITestInvoker* testCase, ++ std::string const& className, ++ NameAndTags const& nameAndTags, ++ SourceLineInfo const& lineInfo ); + } + + #ifdef __clang__ +@@ -4827,10 +4837,10 @@ TestCase makeTestCase( ITestInvoker* testCase, + + namespace Catch { + +-struct IRunner { +- virtual ~IRunner(); +- virtual bool aborting() const = 0; +-}; ++ struct IRunner { ++ virtual ~IRunner(); ++ virtual bool aborting() const = 0; ++ }; + } + + // end catch_interfaces_runner.h +@@ -5455,6 +5465,8 @@ namespace Catch { + } // namespace Catch + + // end catch_outlier_classification.hpp ++ ++#include + #endif // CATCH_CONFIG_ENABLE_BENCHMARKING + + #include +@@ -6339,9 +6351,10 @@ namespace Catch { + + void writeTestCase(TestCaseNode const& testCaseNode); + +- void writeSection(std::string const& className, +- std::string const& rootName, +- SectionNode const& sectionNode); ++ void writeSection( std::string const& className, ++ std::string const& rootName, ++ SectionNode const& sectionNode, ++ bool testOkToFail ); + + void writeAssertions(SectionNode const& sectionNode); + void writeAssertion(AssertionStats const& stats); +@@ -6876,7 +6889,7 @@ namespace Catch { + } + iters *= 2; + } +- throw optimized_away_error{}; ++ Catch::throw_exception(optimized_away_error{}); + } + } // namespace Detail + } // namespace Benchmark +@@ -6884,6 +6897,7 @@ namespace Catch { + + // end catch_run_for_at_least.hpp + #include ++#include + + namespace Catch { + namespace Benchmark { +@@ -7054,8 +7068,8 @@ namespace Catch { + double b2 = bias - z1; + double a1 = a(b1); + double a2 = a(b2); +- auto lo = std::max(cumn(a1), 0); +- auto hi = std::min(cumn(a2), n - 1); ++ auto lo = (std::max)(cumn(a1), 0); ++ auto hi = (std::min)(cumn(a2), n - 1); + + return { point, resample[lo], resample[hi], confidence_level }; + } +@@ -7124,7 +7138,9 @@ namespace Catch { + } + template + EnvironmentEstimate> estimate_clock_cost(FloatDuration resolution) { +- auto time_limit = std::min(resolution * clock_cost_estimation_tick_limit, FloatDuration(clock_cost_estimation_time_limit)); ++ auto time_limit = (std::min)( ++ resolution * clock_cost_estimation_tick_limit, ++ FloatDuration(clock_cost_estimation_time_limit)); + auto time_clock = [](int k) { + return Detail::measure([k] { + for (int i = 0; i < k; ++i) { +@@ -7379,8 +7395,6 @@ namespace Catch { + template + struct ObjectStorage + { +- using TStorage = typename std::aligned_storage::value>::type; +- + ObjectStorage() : data() {} + + ObjectStorage(const ObjectStorage& other) +@@ -7423,7 +7437,7 @@ namespace Catch { + return *static_cast(static_cast(&data)); + } + +- TStorage data; ++ struct { alignas(T) unsigned char data[sizeof(T)]; } data; + }; + } + +@@ -7771,7 +7785,7 @@ namespace Catch { + double sb = stddev.point; + double mn = mean.point / n; + double mg_min = mn / 2.; +- double sg = std::min(mg_min / 4., sb / std::sqrt(n)); ++ double sg = (std::min)(mg_min / 4., sb / std::sqrt(n)); + double sg2 = sg * sg; + double sb2 = sb * sb; + +@@ -7790,7 +7804,7 @@ namespace Catch { + return (nc / n) * (sb2 - nc * sg2); + }; + +- return std::min(var_out(1), var_out(std::min(c_max(0.), c_max(mg_min)))) / sb2; ++ return (std::min)(var_out(1), var_out((std::min)(c_max(0.), c_max(mg_min)))) / sb2; + } + + bootstrap_analysis analyse_samples(double confidence_level, int n_resamples, std::vector::iterator first, std::vector::iterator last) { +@@ -7933,7 +7947,7 @@ namespace Catch { + #if defined(__i386__) || defined(__x86_64__) + #define CATCH_TRAP() __asm__("int $3\n" : : ) /* NOLINT */ + #elif defined(__aarch64__) +- #define CATCH_TRAP() __asm__(".inst 0xd4200000") ++ #define CATCH_TRAP() __asm__(".inst 0xd43e0000") + #endif + + #elif defined(CATCH_PLATFORM_IPHONE) +@@ -7980,86 +7994,58 @@ namespace Catch { + + // start catch_fatal_condition.h + +-// start catch_windows_h_proxy.h +- +- +-#if defined(CATCH_PLATFORM_WINDOWS) +- +-#if !defined(NOMINMAX) && !defined(CATCH_CONFIG_NO_NOMINMAX) +-# define CATCH_DEFINED_NOMINMAX +-# define NOMINMAX +-#endif +-#if !defined(WIN32_LEAN_AND_MEAN) && !defined(CATCH_CONFIG_NO_WIN32_LEAN_AND_MEAN) +-# define CATCH_DEFINED_WIN32_LEAN_AND_MEAN +-# define WIN32_LEAN_AND_MEAN +-#endif +- +-#ifdef __AFXDLL +-#include +-#else +-#include +-#endif +- +-#ifdef CATCH_DEFINED_NOMINMAX +-# undef NOMINMAX +-#endif +-#ifdef CATCH_DEFINED_WIN32_LEAN_AND_MEAN +-# undef WIN32_LEAN_AND_MEAN +-#endif +- +-#endif // defined(CATCH_PLATFORM_WINDOWS) +- +-// end catch_windows_h_proxy.h +-#if defined( CATCH_CONFIG_WINDOWS_SEH ) ++#include + + namespace Catch { + +- struct FatalConditionHandler { +- +- static LONG CALLBACK handleVectoredException(PEXCEPTION_POINTERS ExceptionInfo); ++ // Wrapper for platform-specific fatal error (signals/SEH) handlers ++ // ++ // Tries to be cooperative with other handlers, and not step over ++ // other handlers. This means that unknown structured exceptions ++ // are passed on, previous signal handlers are called, and so on. ++ // ++ // Can only be instantiated once, and assumes that once a signal ++ // is caught, the binary will end up terminating. Thus, there ++ class FatalConditionHandler { ++ bool m_started = false; ++ ++ // Install/disengage implementation for specific platform. ++ // Should be if-defed to work on current platform, can assume ++ // engage-disengage 1:1 pairing. ++ void engage_platform(); ++ void disengage_platform(); ++ public: ++ // Should also have platform-specific implementations as needed + FatalConditionHandler(); +- static void reset(); + ~FatalConditionHandler(); + +- private: +- static bool isSet; +- static ULONG guaranteeSize; +- static PVOID exceptionHandlerHandle; +- }; +- +-} // namespace Catch +- +-#elif defined ( CATCH_CONFIG_POSIX_SIGNALS ) +- +-#include +- +-namespace Catch { +- +- struct FatalConditionHandler { +- +- static bool isSet; +- static struct sigaction oldSigActions[]; +- static stack_t oldSigStack; +- static char altStackMem[]; +- +- static void handleSignal( int sig ); ++ void engage() { ++ assert(!m_started && "Handler cannot be installed twice."); ++ m_started = true; ++ engage_platform(); ++ } + +- FatalConditionHandler(); +- ~FatalConditionHandler(); +- static void reset(); ++ void disengage() { ++ assert(m_started && "Handler cannot be uninstalled without being installed first"); ++ m_started = false; ++ disengage_platform(); ++ } + }; + +-} // namespace Catch +- +-#else +- +-namespace Catch { +- struct FatalConditionHandler { +- void reset(); ++ //! Simple RAII guard for (dis)engaging the FatalConditionHandler ++ class FatalConditionHandlerGuard { ++ FatalConditionHandler* m_handler; ++ public: ++ FatalConditionHandlerGuard(FatalConditionHandler* handler): ++ m_handler(handler) { ++ m_handler->engage(); ++ } ++ ~FatalConditionHandlerGuard() { ++ m_handler->disengage(); ++ } + }; +-} + +-#endif ++} // end namespace Catch + + // end catch_fatal_condition.h + #include +@@ -8185,6 +8171,7 @@ namespace Catch { + std::vector m_unfinishedSections; + std::vector m_activeSections; + TrackerContext m_trackerContext; ++ FatalConditionHandler m_fatalConditionhandler; + bool m_lastAssertionPassed = false; + bool m_shouldReportUnexpected = true; + bool m_includeSuccessfulResults; +@@ -10057,6 +10044,36 @@ namespace Catch { + } + + // end catch_errno_guard.h ++// start catch_windows_h_proxy.h ++ ++ ++#if defined(CATCH_PLATFORM_WINDOWS) ++ ++#if !defined(NOMINMAX) && !defined(CATCH_CONFIG_NO_NOMINMAX) ++# define CATCH_DEFINED_NOMINMAX ++# define NOMINMAX ++#endif ++#if !defined(WIN32_LEAN_AND_MEAN) && !defined(CATCH_CONFIG_NO_WIN32_LEAN_AND_MEAN) ++# define CATCH_DEFINED_WIN32_LEAN_AND_MEAN ++# define WIN32_LEAN_AND_MEAN ++#endif ++ ++#ifdef __AFXDLL ++#include ++#else ++#include ++#endif ++ ++#ifdef CATCH_DEFINED_NOMINMAX ++# undef NOMINMAX ++#endif ++#ifdef CATCH_DEFINED_WIN32_LEAN_AND_MEAN ++# undef WIN32_LEAN_AND_MEAN ++#endif ++ ++#endif // defined(CATCH_PLATFORM_WINDOWS) ++ ++// end catch_windows_h_proxy.h + #include + + namespace Catch { +@@ -10573,7 +10590,7 @@ namespace Catch { + // Extracts the actual name part of an enum instance + // In other words, it returns the Blue part of Bikeshed::Colour::Blue + StringRef extractInstanceName(StringRef enumInstance) { +- // Find last occurence of ":" ++ // Find last occurrence of ":" + size_t name_start = enumInstance.size(); + while (name_start > 0 && enumInstance[name_start - 1] != ':') { + --name_start; +@@ -10735,25 +10752,47 @@ namespace Catch { + // end catch_exception_translator_registry.cpp + // start catch_fatal_condition.cpp + +-#if defined(__GNUC__) +-# pragma GCC diagnostic push +-# pragma GCC diagnostic ignored "-Wmissing-field-initializers" +-#endif ++#include ++ ++#if !defined( CATCH_CONFIG_WINDOWS_SEH ) && !defined( CATCH_CONFIG_POSIX_SIGNALS ) ++ ++namespace Catch { ++ ++ // If neither SEH nor signal handling is required, the handler impls ++ // do not have to do anything, and can be empty. ++ void FatalConditionHandler::engage_platform() {} ++ void FatalConditionHandler::disengage_platform() {} ++ FatalConditionHandler::FatalConditionHandler() = default; ++ FatalConditionHandler::~FatalConditionHandler() = default; ++ ++} // end namespace Catch ++ ++#endif // !CATCH_CONFIG_WINDOWS_SEH && !CATCH_CONFIG_POSIX_SIGNALS ++ ++#if defined( CATCH_CONFIG_WINDOWS_SEH ) && defined( CATCH_CONFIG_POSIX_SIGNALS ) ++#error "Inconsistent configuration: Windows' SEH handling and POSIX signals cannot be enabled at the same time" ++#endif // CATCH_CONFIG_WINDOWS_SEH && CATCH_CONFIG_POSIX_SIGNALS + + #if defined( CATCH_CONFIG_WINDOWS_SEH ) || defined( CATCH_CONFIG_POSIX_SIGNALS ) + + namespace { +- // Report the error condition ++ //! Signals fatal error message to the run context + void reportFatal( char const * const message ) { + Catch::getCurrentContext().getResultCapture()->handleFatalErrorCondition( message ); + } +-} + +-#endif // signals/SEH handling ++ //! Minimal size Catch2 needs for its own fatal error handling. ++ //! Picked anecdotally, so it might not be sufficient on all ++ //! platforms, and for all configurations. ++ constexpr std::size_t minStackSizeForErrors = 32 * 1024; ++} // end unnamed namespace ++ ++#endif // CATCH_CONFIG_WINDOWS_SEH || CATCH_CONFIG_POSIX_SIGNALS + + #if defined( CATCH_CONFIG_WINDOWS_SEH ) + + namespace Catch { ++ + struct SignalDefs { DWORD id; const char* name; }; + + // There is no 1-1 mapping between signals and windows exceptions. +@@ -10766,7 +10805,7 @@ namespace Catch { + { static_cast(EXCEPTION_INT_DIVIDE_BY_ZERO), "Divide by zero error" }, + }; + +- LONG CALLBACK FatalConditionHandler::handleVectoredException(PEXCEPTION_POINTERS ExceptionInfo) { ++ static LONG CALLBACK handleVectoredException(PEXCEPTION_POINTERS ExceptionInfo) { + for (auto const& def : signalDefs) { + if (ExceptionInfo->ExceptionRecord->ExceptionCode == def.id) { + reportFatal(def.name); +@@ -10777,38 +10816,50 @@ namespace Catch { + return EXCEPTION_CONTINUE_SEARCH; + } + ++ // Since we do not support multiple instantiations, we put these ++ // into global variables and rely on cleaning them up in outlined ++ // constructors/destructors ++ static PVOID exceptionHandlerHandle = nullptr; ++ ++ // For MSVC, we reserve part of the stack memory for handling ++ // memory overflow structured exception. + FatalConditionHandler::FatalConditionHandler() { +- isSet = true; +- // 32k seems enough for Catch to handle stack overflow, +- // but the value was found experimentally, so there is no strong guarantee +- guaranteeSize = 32 * 1024; +- exceptionHandlerHandle = nullptr; ++ ULONG guaranteeSize = static_cast(minStackSizeForErrors); ++ if (!SetThreadStackGuarantee(&guaranteeSize)) { ++ // We do not want to fully error out, because needing ++ // the stack reserve should be rare enough anyway. ++ Catch::cerr() ++ << "Failed to reserve piece of stack." ++ << " Stack overflows will not be reported successfully."; ++ } ++ } ++ ++ // We do not attempt to unset the stack guarantee, because ++ // Windows does not support lowering the stack size guarantee. ++ FatalConditionHandler::~FatalConditionHandler() = default; ++ ++ void FatalConditionHandler::engage_platform() { + // Register as first handler in current chain + exceptionHandlerHandle = AddVectoredExceptionHandler(1, handleVectoredException); +- // Pass in guarantee size to be filled +- SetThreadStackGuarantee(&guaranteeSize); ++ if (!exceptionHandlerHandle) { ++ CATCH_RUNTIME_ERROR("Could not register vectored exception handler"); ++ } + } + +- void FatalConditionHandler::reset() { +- if (isSet) { +- RemoveVectoredExceptionHandler(exceptionHandlerHandle); +- SetThreadStackGuarantee(&guaranteeSize); +- exceptionHandlerHandle = nullptr; +- isSet = false; ++ void FatalConditionHandler::disengage_platform() { ++ if (!RemoveVectoredExceptionHandler(exceptionHandlerHandle)) { ++ CATCH_RUNTIME_ERROR("Could not unregister vectored exception handler"); + } ++ exceptionHandlerHandle = nullptr; + } + +- FatalConditionHandler::~FatalConditionHandler() { +- reset(); +- } ++} // end namespace Catch + +-bool FatalConditionHandler::isSet = false; +-ULONG FatalConditionHandler::guaranteeSize = 0; +-PVOID FatalConditionHandler::exceptionHandlerHandle = nullptr; ++#endif // CATCH_CONFIG_WINDOWS_SEH + +-} // namespace Catch ++#if defined( CATCH_CONFIG_POSIX_SIGNALS ) + +-#elif defined( CATCH_CONFIG_POSIX_SIGNALS ) ++#include + + namespace Catch { + +@@ -10817,10 +10868,6 @@ namespace Catch { + const char* name; + }; + +- // 32kb for the alternate stack seems to be sufficient. However, this value +- // is experimentally determined, so that's not guaranteed. +- static constexpr std::size_t sigStackSize = 32768 >= MINSIGSTKSZ ? 32768 : MINSIGSTKSZ; +- + static SignalDefs signalDefs[] = { + { SIGINT, "SIGINT - Terminal interrupt signal" }, + { SIGILL, "SIGILL - Illegal instruction signal" }, +@@ -10830,7 +10877,32 @@ namespace Catch { + { SIGABRT, "SIGABRT - Abort (abnormal termination) signal" } + }; + +- void FatalConditionHandler::handleSignal( int sig ) { ++// Older GCCs trigger -Wmissing-field-initializers for T foo = {} ++// which is zero initialization, but not explicit. We want to avoid ++// that. ++#if defined(__GNUC__) ++# pragma GCC diagnostic push ++# pragma GCC diagnostic ignored "-Wmissing-field-initializers" ++#endif ++ ++ static char* altStackMem = nullptr; ++ static std::size_t altStackSize = 0; ++ static stack_t oldSigStack{}; ++ static struct sigaction oldSigActions[sizeof(signalDefs) / sizeof(SignalDefs)]{}; ++ ++ static void restorePreviousSignalHandlers() { ++ // We set signal handlers back to the previous ones. Hopefully ++ // nobody overwrote them in the meantime, and doesn't expect ++ // their signal handlers to live past ours given that they ++ // installed them after ours.. ++ for (std::size_t i = 0; i < sizeof(signalDefs) / sizeof(SignalDefs); ++i) { ++ sigaction(signalDefs[i].id, &oldSigActions[i], nullptr); ++ } ++ // Return the old stack ++ sigaltstack(&oldSigStack, nullptr); ++ } ++ ++ static void handleSignal( int sig ) { + char const * name = ""; + for (auto const& def : signalDefs) { + if (sig == def.id) { +@@ -10838,16 +10910,33 @@ namespace Catch { + break; + } + } +- reset(); +- reportFatal(name); ++ // We need to restore previous signal handlers and let them do ++ // their thing, so that the users can have the debugger break ++ // when a signal is raised, and so on. ++ restorePreviousSignalHandlers(); ++ reportFatal( name ); + raise( sig ); + } + + FatalConditionHandler::FatalConditionHandler() { +- isSet = true; ++ assert(!altStackMem && "Cannot initialize POSIX signal handler when one already exists"); ++ if (altStackSize == 0) { ++ altStackSize = std::max(static_cast(SIGSTKSZ), minStackSizeForErrors); ++ } ++ altStackMem = new char[altStackSize](); ++ } ++ ++ FatalConditionHandler::~FatalConditionHandler() { ++ delete[] altStackMem; ++ // We signal that another instance can be constructed by zeroing ++ // out the pointer. ++ altStackMem = nullptr; ++ } ++ ++ void FatalConditionHandler::engage_platform() { + stack_t sigStack; + sigStack.ss_sp = altStackMem; +- sigStack.ss_size = sigStackSize; ++ sigStack.ss_size = altStackSize; + sigStack.ss_flags = 0; + sigaltstack(&sigStack, &oldSigStack); + struct sigaction sa = { }; +@@ -10859,40 +10948,17 @@ namespace Catch { + } + } + +- FatalConditionHandler::~FatalConditionHandler() { +- reset(); +- } ++#if defined(__GNUC__) ++# pragma GCC diagnostic pop ++#endif + +- void FatalConditionHandler::reset() { +- if( isSet ) { +- // Set signals back to previous values -- hopefully nobody overwrote them in the meantime +- for( std::size_t i = 0; i < sizeof(signalDefs)/sizeof(SignalDefs); ++i ) { +- sigaction(signalDefs[i].id, &oldSigActions[i], nullptr); +- } +- // Return the old stack +- sigaltstack(&oldSigStack, nullptr); +- isSet = false; +- } ++ void FatalConditionHandler::disengage_platform() { ++ restorePreviousSignalHandlers(); + } + +- bool FatalConditionHandler::isSet = false; +- struct sigaction FatalConditionHandler::oldSigActions[sizeof(signalDefs)/sizeof(SignalDefs)] = {}; +- stack_t FatalConditionHandler::oldSigStack = {}; +- char FatalConditionHandler::altStackMem[sigStackSize] = {}; +- +-} // namespace Catch +- +-#else +- +-namespace Catch { +- void FatalConditionHandler::reset() {} +-} +- +-#endif // signals/SEH handling ++} // end namespace Catch + +-#if defined(__GNUC__) +-# pragma GCC diagnostic pop +-#endif ++#endif // CATCH_CONFIG_POSIX_SIGNALS + // end catch_fatal_condition.cpp + // start catch_generators.cpp + +@@ -11447,7 +11513,8 @@ namespace { + return lhs == rhs; + } + +- auto ulpDiff = std::abs(lc - rc); ++ // static cast as a workaround for IBM XLC ++ auto ulpDiff = std::abs(static_cast(lc - rc)); + return static_cast(ulpDiff) <= maxUlpDiff; + } + +@@ -11621,7 +11688,6 @@ Floating::WithinRelMatcher WithinRel(float target) { + + } // namespace Matchers + } // namespace Catch +- + // end catch_matchers_floating.cpp + // start catch_matchers_generic.cpp + +@@ -12955,9 +13021,8 @@ namespace Catch { + } + + void RunContext::invokeActiveTestCase() { +- FatalConditionHandler fatalConditionHandler; // Handle signals ++ FatalConditionHandlerGuard _(&m_fatalConditionhandler); + m_activeTestCase->invoke(); +- fatalConditionHandler.reset(); + } + + void RunContext::handleUnfinishedSections() { +@@ -13325,6 +13390,10 @@ namespace Catch { + filename.erase(0, lastSlash); + filename[0] = '#'; + } ++ else ++ { ++ filename.insert(0, "#"); ++ } + + auto lastDot = filename.find_last_of('.'); + if (lastDot != std::string::npos) { +@@ -13487,7 +13556,7 @@ namespace Catch { + + // Handle list request + if( Option listed = list( m_config ) ) +- return static_cast( *listed ); ++ return (std::min) (MaxExitCode, static_cast(*listed)); + + TestGroup tests { m_config }; + auto const totals = tests.execute(); +@@ -15320,7 +15389,7 @@ namespace Catch { + } + + Version const& libraryVersion() { +- static Version version( 2, 13, 4, "", 0 ); ++ static Version version( 2, 13, 10, "", 0 ); + return version; + } + +@@ -16733,6 +16802,7 @@ CATCH_REGISTER_REPORTER("console", ConsoleReporter) + #include + #include + #include ++#include + + namespace Catch { + +@@ -16760,7 +16830,7 @@ namespace Catch { + #else + std::strftime(timeStamp, timeStampSize, fmt, timeInfo); + #endif +- return std::string(timeStamp); ++ return std::string(timeStamp, timeStampSize-1); + } + + std::string fileNameTag(const std::vector &tags) { +@@ -16771,6 +16841,17 @@ namespace Catch { + return it->substr(1); + return std::string(); + } ++ ++ // Formats the duration in seconds to 3 decimal places. ++ // This is done because some genius defined Maven Surefire schema ++ // in a way that only accepts 3 decimal places, and tools like ++ // Jenkins use that schema for validation JUnit reporter output. ++ std::string formatDuration( double seconds ) { ++ ReusableStringStream rss; ++ rss << std::fixed << std::setprecision( 3 ) << seconds; ++ return rss.str(); ++ } ++ + } // anonymous namespace + + JunitReporter::JunitReporter( ReporterConfig const& _config ) +@@ -16840,7 +16921,7 @@ namespace Catch { + if( m_config->showDurations() == ShowDurations::Never ) + xml.writeAttribute( "time", "" ); + else +- xml.writeAttribute( "time", suiteTime ); ++ xml.writeAttribute( "time", formatDuration( suiteTime ) ); + xml.writeAttribute( "timestamp", getCurrentTimestamp() ); + + // Write properties if there are any +@@ -16885,12 +16966,13 @@ namespace Catch { + if ( !m_config->name().empty() ) + className = m_config->name() + "." + className; + +- writeSection( className, "", rootSection ); ++ writeSection( className, "", rootSection, stats.testInfo.okToFail() ); + } + +- void JunitReporter::writeSection( std::string const& className, +- std::string const& rootName, +- SectionNode const& sectionNode ) { ++ void JunitReporter::writeSection( std::string const& className, ++ std::string const& rootName, ++ SectionNode const& sectionNode, ++ bool testOkToFail) { + std::string name = trim( sectionNode.stats.sectionInfo.name ); + if( !rootName.empty() ) + name = rootName + '/' + name; +@@ -16907,13 +16989,18 @@ namespace Catch { + xml.writeAttribute( "classname", className ); + xml.writeAttribute( "name", name ); + } +- xml.writeAttribute( "time", ::Catch::Detail::stringify( sectionNode.stats.durationInSeconds ) ); ++ xml.writeAttribute( "time", formatDuration( sectionNode.stats.durationInSeconds ) ); + // This is not ideal, but it should be enough to mimic gtest's + // junit output. + // Ideally the JUnit reporter would also handle `skipTest` + // events and write those out appropriately. + xml.writeAttribute( "status", "run" ); + ++ if (sectionNode.stats.assertions.failedButOk) { ++ xml.scopedElement("skipped") ++ .writeAttribute("message", "TEST_CASE tagged with !mayfail"); ++ } ++ + writeAssertions( sectionNode ); + + if( !sectionNode.stdOut.empty() ) +@@ -16923,9 +17010,9 @@ namespace Catch { + } + for( auto const& childNode : sectionNode.childSections ) + if( className.empty() ) +- writeSection( name, "", *childNode ); ++ writeSection( name, "", *childNode, testOkToFail ); + else +- writeSection( className, name, *childNode ); ++ writeSection( className, name, *childNode, testOkToFail ); + } + + void JunitReporter::writeAssertions( SectionNode const& sectionNode ) { +@@ -17437,12 +17524,20 @@ namespace Catch { + + #ifndef __OBJC__ + ++#ifndef CATCH_INTERNAL_CDECL ++#ifdef _MSC_VER ++#define CATCH_INTERNAL_CDECL __cdecl ++#else ++#define CATCH_INTERNAL_CDECL ++#endif ++#endif ++ + #if defined(CATCH_CONFIG_WCHAR) && defined(CATCH_PLATFORM_WINDOWS) && defined(_UNICODE) && !defined(DO_NOT_USE_WMAIN) + // Standard C/C++ Win32 Unicode wmain entry point +-extern "C" int wmain (int argc, wchar_t * argv[], wchar_t * []) { ++extern "C" int CATCH_INTERNAL_CDECL wmain (int argc, wchar_t * argv[], wchar_t * []) { + #else + // Standard C/C++ main entry point +-int main (int argc, char * argv[]) { ++int CATCH_INTERNAL_CDECL main (int argc, char * argv[]) { + #endif + + return Catch::Session().run( argc, argv ); +@@ -17570,9 +17665,9 @@ int main (int argc, char * const argv[]) { + + #if defined(CATCH_CONFIG_ENABLE_BENCHMARKING) + #define CATCH_BENCHMARK(...) \ +- INTERNAL_CATCH_BENCHMARK(INTERNAL_CATCH_UNIQUE_NAME(____C_A_T_C_H____B_E_N_C_H____), INTERNAL_CATCH_GET_1_ARG(__VA_ARGS__,,), INTERNAL_CATCH_GET_2_ARG(__VA_ARGS__,,)) ++ INTERNAL_CATCH_BENCHMARK(INTERNAL_CATCH_UNIQUE_NAME(C_A_T_C_H_B_E_N_C_H_), INTERNAL_CATCH_GET_1_ARG(__VA_ARGS__,,), INTERNAL_CATCH_GET_2_ARG(__VA_ARGS__,,)) + #define CATCH_BENCHMARK_ADVANCED(name) \ +- INTERNAL_CATCH_BENCHMARK_ADVANCED(INTERNAL_CATCH_UNIQUE_NAME(____C_A_T_C_H____B_E_N_C_H____), name) ++ INTERNAL_CATCH_BENCHMARK_ADVANCED(INTERNAL_CATCH_UNIQUE_NAME(C_A_T_C_H_B_E_N_C_H_), name) + #endif // CATCH_CONFIG_ENABLE_BENCHMARKING + + // If CATCH_CONFIG_PREFIX_ALL is not defined then the CATCH_ prefix is not required +@@ -17674,9 +17769,9 @@ int main (int argc, char * const argv[]) { + + #if defined(CATCH_CONFIG_ENABLE_BENCHMARKING) + #define BENCHMARK(...) \ +- INTERNAL_CATCH_BENCHMARK(INTERNAL_CATCH_UNIQUE_NAME(____C_A_T_C_H____B_E_N_C_H____), INTERNAL_CATCH_GET_1_ARG(__VA_ARGS__,,), INTERNAL_CATCH_GET_2_ARG(__VA_ARGS__,,)) ++ INTERNAL_CATCH_BENCHMARK(INTERNAL_CATCH_UNIQUE_NAME(C_A_T_C_H_B_E_N_C_H_), INTERNAL_CATCH_GET_1_ARG(__VA_ARGS__,,), INTERNAL_CATCH_GET_2_ARG(__VA_ARGS__,,)) + #define BENCHMARK_ADVANCED(name) \ +- INTERNAL_CATCH_BENCHMARK_ADVANCED(INTERNAL_CATCH_UNIQUE_NAME(____C_A_T_C_H____B_E_N_C_H____), name) ++ INTERNAL_CATCH_BENCHMARK_ADVANCED(INTERNAL_CATCH_UNIQUE_NAME(C_A_T_C_H_B_E_N_C_H_), name) + #endif // CATCH_CONFIG_ENABLE_BENCHMARKING + + using Catch::Detail::Approx; +@@ -17723,8 +17818,8 @@ using Catch::Detail::Approx; + #define CATCH_WARN( msg ) (void)(0) + #define CATCH_CAPTURE( msg ) (void)(0) + +-#define CATCH_TEST_CASE( ... ) INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ )) +-#define CATCH_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ )) ++#define CATCH_TEST_CASE( ... ) INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_S_T_ )) ++#define CATCH_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_S_T_ )) + #define CATCH_METHOD_AS_TEST_CASE( method, ... ) + #define CATCH_REGISTER_TEST_CASE( Function, ... ) (void)(0) + #define CATCH_SECTION( ... ) +@@ -17733,7 +17828,7 @@ using Catch::Detail::Approx; + #define CATCH_FAIL_CHECK( ... ) (void)(0) + #define CATCH_SUCCEED( ... ) (void)(0) + +-#define CATCH_ANON_TEST_CASE() INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ )) ++#define CATCH_ANON_TEST_CASE() INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_S_T_ )) + + #ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR + #define CATCH_TEMPLATE_TEST_CASE( ... ) INTERNAL_CATCH_TEMPLATE_TEST_CASE_NO_REGISTRATION(__VA_ARGS__) +@@ -17756,8 +17851,8 @@ using Catch::Detail::Approx; + #endif + + // "BDD-style" convenience wrappers +-#define CATCH_SCENARIO( ... ) INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ )) +-#define CATCH_SCENARIO_METHOD( className, ... ) INTERNAL_CATCH_TESTCASE_METHOD_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ ), className ) ++#define CATCH_SCENARIO( ... ) INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_S_T_ )) ++#define CATCH_SCENARIO_METHOD( className, ... ) INTERNAL_CATCH_TESTCASE_METHOD_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_S_T_ ), className ) + #define CATCH_GIVEN( desc ) + #define CATCH_AND_GIVEN( desc ) + #define CATCH_WHEN( desc ) +@@ -17805,10 +17900,10 @@ using Catch::Detail::Approx; + #define INFO( msg ) (void)(0) + #define UNSCOPED_INFO( msg ) (void)(0) + #define WARN( msg ) (void)(0) +-#define CAPTURE( msg ) (void)(0) ++#define CAPTURE( ... ) (void)(0) + +-#define TEST_CASE( ... ) INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ )) +-#define TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ )) ++#define TEST_CASE( ... ) INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_S_T_ )) ++#define TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_S_T_ )) + #define METHOD_AS_TEST_CASE( method, ... ) + #define REGISTER_TEST_CASE( Function, ... ) (void)(0) + #define SECTION( ... ) +@@ -17816,7 +17911,7 @@ using Catch::Detail::Approx; + #define FAIL( ... ) (void)(0) + #define FAIL_CHECK( ... ) (void)(0) + #define SUCCEED( ... ) (void)(0) +-#define ANON_TEST_CASE() INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ )) ++#define ANON_TEST_CASE() INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_S_T_ )) + + #ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR + #define TEMPLATE_TEST_CASE( ... ) INTERNAL_CATCH_TEMPLATE_TEST_CASE_NO_REGISTRATION(__VA_ARGS__) +@@ -17846,8 +17941,8 @@ using Catch::Detail::Approx; + #define CATCH_TRANSLATE_EXCEPTION( signature ) INTERNAL_CATCH_TRANSLATE_EXCEPTION_NO_REG( INTERNAL_CATCH_UNIQUE_NAME( catch_internal_ExceptionTranslator ), signature ) + + // "BDD-style" convenience wrappers +-#define SCENARIO( ... ) INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ ) ) +-#define SCENARIO_METHOD( className, ... ) INTERNAL_CATCH_TESTCASE_METHOD_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ ), className ) ++#define SCENARIO( ... ) INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_S_T_ ) ) ++#define SCENARIO_METHOD( className, ... ) INTERNAL_CATCH_TESTCASE_METHOD_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_S_T_ ), className ) + + #define GIVEN( desc ) + #define AND_GIVEN( desc ) +@@ -17878,3 +17973,4 @@ using Catch::Detail::Approx; + // end catch_reenable_warnings.h + // end catch.hpp + #endif // TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED ++ diff --git a/easybuild/easyconfigs/l/Lightning/Lightning-2.2.1-foss-2023a-CUDA-12.1.1.eb b/easybuild/easyconfigs/l/Lightning/Lightning-2.2.1-foss-2023a-CUDA-12.1.1.eb new file mode 100644 index 00000000000..f92fd739953 --- /dev/null +++ b/easybuild/easyconfigs/l/Lightning/Lightning-2.2.1-foss-2023a-CUDA-12.1.1.eb @@ -0,0 +1,33 @@ +easyblock = 'PythonPackage' + +name = 'Lightning' +version = '2.2.1' +versionsuffix = '-CUDA-%(cudaver)s' + +homepage = 'https://github.com/Lightning-AI/pytorch-lightning' +description = """ +The deep learning framework to pretrain, finetune and deploy AI models. +Lightning has 4 core packages: + PyTorch Lightning: Train and deploy PyTorch at scale. + Lightning Fabric: Expert control. + Lightning Data: Blazing fast, distributed streaming of training data from cloud storage. + Lightning Apps: Build AI products and ML workflows. +""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +sources = [SOURCELOWER_TAR_GZ] +checksums = ['b3e46d596b32cafd1fb9b21fdba1b1767df97b1af5cc702693d1c51df60b19aa'] + +dependencies = [ + ('CUDA', '12.1.1', '', SYSTEM), + ('Python', '3.11.3'), + ('PyTorch', '2.1.2', '-CUDA-%(cudaver)s'), + ('PyTorch-Lightning', version, '-CUDA-%(cudaver)s'), +] + +download_dep_fail = True +use_pip = True +sanity_pip_check = True + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/l/LinBox/LinBox-1.7.0-gfbf-2023b.eb b/easybuild/easyconfigs/l/LinBox/LinBox-1.7.0-gfbf-2023b.eb new file mode 100644 index 00000000000..95ca1edf249 --- /dev/null +++ b/easybuild/easyconfigs/l/LinBox/LinBox-1.7.0-gfbf-2023b.eb @@ -0,0 +1,46 @@ +## +# This file is an EasyBuild recipe; see https://github.com/easybuilders/easybuild +# +# Copyright:: Copyright (c) 2016 Riccardo Murri +# Authors:: Riccardo Murri +# License:: GPL +# +# Update: Petr Král (INUITS) +# +## + +easyblock = 'ConfigureMake' + +name = 'LinBox' +version = '1.7.0' + +homepage = 'https://linalg.org/' +description = "C++ library for exact, high-performance linear algebra" + +toolchain = {'name': 'gfbf', 'version': '2023b'} + +source_urls = ['https://github.com/linbox-team/linbox/releases/download/v%(version)s'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['6d2159fd395be0298362dd37f6c696676237bc8e2757341fbc46520e3b466bcc'] + +dependencies = [ + ('FFLAS-FFPACK', '2.5.0'), + ('FLINT', '3.1.1'), + ('Givaro', '4.2.0'), + ('IML', '1.0.5'), + ('NTL', '11.5.1'), +] + +configopts = "--with-fflas-ffpack=$EBROOTFFLASMINFFPACK --with-flint=$EBROOTFLINT " +configopts += "--with-givaro=$EBROOTGIVARO --with-iml=$EBROOTIML --with-ntl=$EBROOTNTL " +configopts += "--enable-openmp --enable-shared " + +sanity_check_paths = { + 'files': ['bin/linbox-config', 'include/linbox/linbox-config.h'] + + ['lib/liblinbox.%s' % e for e in ['a', SHLIB_EXT]], + 'dirs': ['bin', 'include', 'lib'], +} + +sanity_check_commands = ["linbox-config --help"] + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/l/langchain-anthropic/langchain-anthropic-0.1.15-foss-2023a.eb b/easybuild/easyconfigs/l/langchain-anthropic/langchain-anthropic-0.1.15-foss-2023a.eb new file mode 100644 index 00000000000..1bb545a30d3 --- /dev/null +++ b/easybuild/easyconfigs/l/langchain-anthropic/langchain-anthropic-0.1.15-foss-2023a.eb @@ -0,0 +1,61 @@ +easyblock = 'PythonBundle' + +name = 'langchain-anthropic' +version = '0.1.15' + +homepage = 'https://python.langchain.com' +description = """ +This package contains the LangChain integration for Anthropic's generative models. +""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +builddependencies = [ + ('maturin', '1.1.0'), + ('poetry', '1.5.1'), +] + +dependencies = [ + ('Python', '3.11.3'), + ('LangChain', '0.2.1'), + ('tokenizers', '0.15.2'), + ('jiter', '0.4.1'), +] + +exts_list = [ + ('langchain-core', '0.2.3', { + 'sources': ['langchain_core-%(version)s.tar.gz'], + 'checksums': ['fbc75a64b9c0b7655d96ca57a707df1e6c09efc1539c36adbd73260612549810'], + }), + ('anyio', '4.4.0', { + 'checksums': ['5aadc6a1bbb7cdb0bede386cac5e2940f5e2ff3aa20277e991cf028e0585ce94'], + }), + ('h11', '0.14.0', { + 'checksums': ['8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d'], + }), + ('httpcore', '1.0.5', { + 'checksums': ['34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61'], + }), + ('httpx', '0.27.0', { + 'checksums': ['a0cb88a46f32dc874e04ee956e4c2764aba2aa228f650b06788ba6bda2962ab5'], + }), + ('sniffio', '1.3.1', { + 'checksums': ['f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc'], + }), + ('anthropic', '0.28.0', { + 'source_tmpl': 'anthropic-0.28.0-py3-none-any.whl', + 'checksums': ['2b620b21aee3d20c5d8005483c34df239d53ae895687113b26b8a36892a7e20f'], + }), + ('defusedxml', '0.7.1', { + 'checksums': ['1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69'], + }), + (name, version, { + 'sources': ['langchain_anthropic-%(version)s.tar.gz'], + 'checksums': ['c5c3c6eaccb11ed99a63886e50873ac21eaf8e9441e0f75c7ae7cd8cdef65155'], + }), +] + +use_pip = True +sanity_pip_check = True + +moduleclass = 'ai' diff --git a/easybuild/easyconfigs/l/lcalc/lcalc-2.0.5-GCCcore-13.2.0.eb b/easybuild/easyconfigs/l/lcalc/lcalc-2.0.5-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..5ea399ff520 --- /dev/null +++ b/easybuild/easyconfigs/l/lcalc/lcalc-2.0.5-GCCcore-13.2.0.eb @@ -0,0 +1,38 @@ +easyblock = 'ConfigureMake' + +name = 'lcalc' +version = '2.0.5' + +homepage = 'https://gitlab.com/sagemath/lcalc' +description = "Lcalc is a package for working with L-functions." + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +source_urls = ['https://gitlab.com/sagemath/lcalc/uploads/25f029f3c02fcb6c3174972e0ac0e192/'] +sources = [SOURCE_TAR_XZ] +checksums = ['d780c385579cc6ee45fa27ccd2d3a3c4157fbb5ef8cd1b8951d1028bbc64c035'] + +builddependencies = [ + ('Autotools', '20220317'), + ('binutils', '2.40'), + ('gengetopt', '2.23'), + ('pkgconf', '2.0.3'), +] + +preconfigopts = "autoreconf -f -i && " + +configopts = "--with-pari " + +dependencies = [ + ('MPFR', '4.2.1'), + ('PARI-GP', '2.15.5'), +] + +sanity_check_paths = { + 'files': ['bin/lcalc', 'include/lcalc/L.h', 'lib/libLfunction.%s' % SHLIB_EXT], + 'dirs': ['share'], +} + +sanity_check_commands = ["lcalc --help"] + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/l/libabigail/libabigail-2.5-GCCcore-13.2.0.eb b/easybuild/easyconfigs/l/libabigail/libabigail-2.5-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..c414dda9011 --- /dev/null +++ b/easybuild/easyconfigs/l/libabigail/libabigail-2.5-GCCcore-13.2.0.eb @@ -0,0 +1,54 @@ +easyblock = 'ConfigureMake' + +name = 'libabigail' +version = '2.5' + +description = """ +ABIGAIL stands for the Application Binary Interface Generic Analysis and +Instrumentation Library. + +It’s a framework which aims at helping developers and software distributors +to spot some ABI-related issues like interface incompatibility in ELF shared +libraries by performing a static analysis of the ELF binaries at hand. + +The type of interface incompatibilities that Abigail focuses on is related to +changes on the exported ELF functions and variables symbols, as well as layout +and size changes of data types of the functions and variables exported by +shared libraries. + +In other words, if the return type of a function exported by a shared library +changes in an incompatible way from one version of a given shared library to +another, we want Abigail to help people catch that. +""" +homepage = 'https://sourceware.org/libabigail' +docurls = ['https://sourceware.org/libabigail/manual'] + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} +builddependencies = [('binutils', '2.40')] + +dependencies = [ + ('elfutils', '0.190'), + ('Python', '3.11.5'), + ('libxml2', '2.11.5'), +] + +source_urls = ['https://mirrors.kernel.org/sourceware/libabigail/'] +sources = [SOURCELOWER_TAR_XZ] +checksums = ['7cfc4e9b00ae38d87fb0c63beabb32b9cbf9ce410e52ceeb5ad5b3c5beb111f3'] + +configopts = '--enable-manual=no --enable-apidoc=no --with-sysroot=%(sysroot)s' + +sanity_check_paths = { + 'files': [ + 'bin/abicompat', 'bin/abidiff', + 'lib/libabigail.a', 'lib/libabigail.%s' % SHLIB_EXT, + ], + 'dirs': ['include'], +} + +sanity_check_commands = [ + "abicompat --help | grep usage", + "abidiff --help | grep usage", +] + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/l/libaio/libaio-0.3.113-GCCcore-13.2.0.eb b/easybuild/easyconfigs/l/libaio/libaio-0.3.113-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..e5a7827cc4b --- /dev/null +++ b/easybuild/easyconfigs/l/libaio/libaio-0.3.113-GCCcore-13.2.0.eb @@ -0,0 +1,39 @@ +easyblock = 'MakeCp' + +name = 'libaio' +version = '0.3.113' +_libversion = '1.0.2' + +homepage = 'https://pagure.io/libaio' +description = "Asynchronous input/output library that uses the kernels native interface." + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://pagure.io/%(name)s/archive/%(name)s-%(version)s/'] +sources = ['%(name)s-%(version)s.tar.gz'] +checksums = ['1c561c20670c5c09cc8437a622008c0693c6a7816c1f30332da3796953b2f454'] + +builddependencies = [('binutils', '2.40')] + +_soname = "libaio.%s.%s" % (SHLIB_EXT, _libversion) + +files_to_copy = [ + (["src/libaio.a", "src/%s" % _soname], "lib"), + (["src/libaio.h"], "include"), +] + +# links to the shared library with generic names +_solinks = [ + "libaio.%s" % SHLIB_EXT, + "libaio.%s.1" % SHLIB_EXT, +] + +postinstallcmds = ["cd %%(installdir)s/lib && ln -s %s %s" % (_soname, l) for l in _solinks] + +sanity_check_paths = { + 'files': ['lib/%s' % l for l in ['libaio.a', _soname] + _solinks] + ['include/libaio.h'], + 'dirs': [], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/l/libarchive/libarchive-3.7.4-GCCcore-13.3.0.eb b/easybuild/easyconfigs/l/libarchive/libarchive-3.7.4-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..d15d7381318 --- /dev/null +++ b/easybuild/easyconfigs/l/libarchive/libarchive-3.7.4-GCCcore-13.3.0.eb @@ -0,0 +1,35 @@ +easyblock = 'ConfigureMake' + +name = 'libarchive' +version = '3.7.4' + +homepage = 'https://www.libarchive.org/' + +description = """ + Multi-format archive and compression library +""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = ['https://www.libarchive.org/downloads/'] +sources = [SOURCE_TAR_GZ] +checksums = [ + {'libarchive-3.7.4.tar.gz': '7875d49596286055b52439ed42f044bd8ad426aa4cc5aabd96bfe7abb971d5e8'}, +] + +builddependencies = [ + ('binutils', '2.42'), +] + +dependencies = [ + ('zlib', '1.3.1'), + ('XZ', '5.4.5'), + ('OpenSSL', '3', '', SYSTEM), +] + +sanity_check_paths = { + 'files': ['include/archive.h', 'lib/libarchive.%s' % SHLIB_EXT], + 'dirs': ['bin', 'share/man/man3'], +} + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/l/libavif/libavif-0.11.1-foss-2021a.eb b/easybuild/easyconfigs/l/libavif/libavif-0.11.1-GCCcore-10.3.0.eb similarity index 91% rename from easybuild/easyconfigs/l/libavif/libavif-0.11.1-foss-2021a.eb rename to easybuild/easyconfigs/l/libavif/libavif-0.11.1-GCCcore-10.3.0.eb index 2f4ed93c1c9..7ff457a5456 100644 --- a/easybuild/easyconfigs/l/libavif/libavif-0.11.1-foss-2021a.eb +++ b/easybuild/easyconfigs/l/libavif/libavif-0.11.1-GCCcore-10.3.0.eb @@ -11,7 +11,7 @@ description = """This library aims to be a friendly, portable C implementation o as described here: https://aomediacodec.github.io/av1-avif/ """ -toolchain = {'name': 'foss', 'version': '2021a'} +toolchain = {'name': 'GCCcore', 'version': '10.3.0'} source_urls = ['https://github.com/AOMediaCodec/libavif/archive/'] sources = ['v%(version)s.tar.gz'] @@ -19,9 +19,7 @@ checksums = ['0eb49965562a0e5e5de58389650d434cff32af84c34185b6c9b7b2fccae06d4e'] builddependencies = [ ('CMake', '3.20.1'), -] - -dependencies = [ + ('binutils', '2.36.1'), ('NASM', '2.15.05'), ('Meson', '0.58.0'), ('Ninja', '1.10.2'), diff --git a/easybuild/easyconfigs/l/libavif/libavif-0.11.1-GCCcore-11.3.0.eb b/easybuild/easyconfigs/l/libavif/libavif-0.11.1-GCCcore-11.3.0.eb index 2d5b1cc7ab9..ac67210e4c9 100644 --- a/easybuild/easyconfigs/l/libavif/libavif-0.11.1-GCCcore-11.3.0.eb +++ b/easybuild/easyconfigs/l/libavif/libavif-0.11.1-GCCcore-11.3.0.eb @@ -20,9 +20,6 @@ checksums = ['0eb49965562a0e5e5de58389650d434cff32af84c34185b6c9b7b2fccae06d4e'] builddependencies = [ ('CMake', '3.23.1'), ('binutils', '2.38'), -] - -dependencies = [ ('NASM', '2.15.05'), ('Meson', '0.62.1'), ('Ninja', '1.10.2'), diff --git a/easybuild/easyconfigs/l/libavif/libavif-0.11.1-foss-2022a.eb b/easybuild/easyconfigs/l/libavif/libavif-1.0.4-GCCcore-12.3.0.eb similarity index 70% rename from easybuild/easyconfigs/l/libavif/libavif-0.11.1-foss-2022a.eb rename to easybuild/easyconfigs/l/libavif/libavif-1.0.4-GCCcore-12.3.0.eb index b34d2a8449b..149561be6b0 100644 --- a/easybuild/easyconfigs/l/libavif/libavif-0.11.1-foss-2022a.eb +++ b/easybuild/easyconfigs/l/libavif/libavif-1.0.4-GCCcore-12.3.0.eb @@ -4,28 +4,26 @@ easyblock = 'CMakeMake' name = 'libavif' -version = '0.11.1' +version = '1.0.4' homepage = 'https://github.com/AOMediaCodec/libavif' description = """This library aims to be a friendly, portable C implementation of the AV1 Image File Format, as described here: https://aomediacodec.github.io/av1-avif/ """ -toolchain = {'name': 'foss', 'version': '2022a'} +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} source_urls = ['https://github.com/AOMediaCodec/libavif/archive/'] sources = ['v%(version)s.tar.gz'] -checksums = ['0eb49965562a0e5e5de58389650d434cff32af84c34185b6c9b7b2fccae06d4e'] +checksums = ['dc56708c83a4b934a8af2b78f67f866ba2fb568605c7cf94312acf51ee57d146'] builddependencies = [ - ('CMake', '3.23.1'), -] - -dependencies = [ - ('NASM', '2.15.05'), - ('Meson', '0.62.1'), - ('Ninja', '1.10.2'), - ('Rust', '1.60.0'), + ('CMake', '3.26.3'), + ('binutils', '2.40'), + ('NASM', '2.16.01'), + ('Meson', '1.1.1'), + ('Ninja', '1.11.1'), + ('Rust', '1.70.0'), ] sanity_check_paths = { diff --git a/easybuild/easyconfigs/l/libbraiding/libbraiding-1.2-GCCcore-13.2.0.eb b/easybuild/easyconfigs/l/libbraiding/libbraiding-1.2-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..172d0f449a2 --- /dev/null +++ b/easybuild/easyconfigs/l/libbraiding/libbraiding-1.2-GCCcore-13.2.0.eb @@ -0,0 +1,31 @@ +easyblock = 'ConfigureMake' + +name = 'libbraiding' +version = '1.2' + +homepage = 'https://github.com/miguelmarco/libbraiding' +description = """This is a project to expose the functionalitis of the Braiding program as a shared library. + The original goal is to include it as a component of SageMath, but it can be used in any other c++ program.""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +source_urls = ['https://github.com/miguelmarco/libbraiding/releases/download/%(version)s/'] +sources = [SOURCE_TAR_GZ] +checksums = ['73087d1145ace719eafeda1db1c28b5fe1c981b7e784dc59f2b1d6fc4ff75f80'] + +builddependencies = [ + ('binutils', '2.40'), +] + +sanity_check_paths = { + 'files': [ + 'include/braiding.h', + 'include/cbraid.h', + 'include/cbraid_implementation.h', + 'include/cbraid_interface.h', + 'lib/libbraiding.%s' % SHLIB_EXT, + ], + 'dirs': [], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/l/libde265/libde265-1.0.15-GCC-12.3.0.eb b/easybuild/easyconfigs/l/libde265/libde265-1.0.15-GCC-12.3.0.eb new file mode 100644 index 00000000000..9d6371e84ba --- /dev/null +++ b/easybuild/easyconfigs/l/libde265/libde265-1.0.15-GCC-12.3.0.eb @@ -0,0 +1,33 @@ +# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild +# Author: Denis Kristak +easyblock = 'CMakeMake' + +name = 'libde265' +version = '1.0.15' + +homepage = 'https://github.com/strukturag/libde265' +description = "libde265 is an open source implementation of the h.265 video codec" + +toolchain = {'name': 'GCC', 'version': '12.3.0'} + +source_urls = ['https://github.com/strukturag/libde265/releases/download/v%(version)s/'] +sources = [SOURCE_TAR_GZ] +checksums = ['00251986c29d34d3af7117ed05874950c875dd9292d016be29d3b3762666511d'] + +builddependencies = [ + ('CMake', '3.26.3'), +] + +configopts = "-DENABLE_DECODER=ON -DENABLE_ENCODER=ON" + +sanity_check_paths = { + 'files': ['bin/dec265', 'bin/enc265', 'lib/libde265.%s' % SHLIB_EXT, 'lib/pkgconfig/libde265.pc'], + 'dirs': ['include/libde265', 'lib/cmake/libde265'], +} + +sanity_check_commands = [ + "dec265 --help", + "enc265 --help", +] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/l/libdeflate/libdeflate-1.20-GCCcore-13.3.0.eb b/easybuild/easyconfigs/l/libdeflate/libdeflate-1.20-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..79e7db1b0d8 --- /dev/null +++ b/easybuild/easyconfigs/l/libdeflate/libdeflate-1.20-GCCcore-13.3.0.eb @@ -0,0 +1,37 @@ +# Author: Pavel Grochal (INUITS) +# License: GPLv2 + +easyblock = 'CMakeMake' + +name = 'libdeflate' +version = '1.20' + +homepage = 'https://github.com/ebiggers/libdeflate' +description = """Heavily optimized library for DEFLATE/zlib/gzip compression and decompression.""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +github_account = 'ebiggers' +source_urls = [GITHUB_SOURCE] +sources = ['v%(version)s.tar.gz'] +checksums = ['ed1454166ced78913ff3809870a4005b7170a6fd30767dc478a09b96847b9c2a'] + +builddependencies = [ + ('binutils', '2.42'), + ('CMake', '3.29.3'), +] + +sanity_check_paths = { + 'files': [ + 'bin/%(name)s-gunzip', 'bin/%(name)s-gzip', + 'lib/%(name)s.a', 'lib/%%(name)s.%s' % SHLIB_EXT, + 'include/%(name)s.h', + ], + 'dirs': [], +} +sanity_check_commands = [ + '%(name)s-gzip -h', + '%(name)s-gunzip -h', +] + +moduleclass = 'system' diff --git a/easybuild/easyconfigs/l/libdwarf/libdwarf-0.9.2-GCCcore-13.2.0.eb b/easybuild/easyconfigs/l/libdwarf/libdwarf-0.9.2-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..d8d25f32ed6 --- /dev/null +++ b/easybuild/easyconfigs/l/libdwarf/libdwarf-0.9.2-GCCcore-13.2.0.eb @@ -0,0 +1,33 @@ +easyblock = 'ConfigureMake' + +name = 'libdwarf' +version = '0.9.2' + +homepage = 'https://www.prevanders.net/dwarf.html' +description = """The DWARF Debugging Information Format is of interest to programmers working on compilers +and debuggers (and anyone interested in reading or writing DWARF information))""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/davea42/libdwarf-code/releases/download/v%(version)s'] +sources = [SOURCE_TAR_XZ] +checksums = ['c1cd51467f9cb8459cd27d4071857abc56191cc5d4182d8bdd7744030f88f830'] + +builddependencies = [ + ('binutils', '2.40'), +] +dependencies = [ + ('elfutils', '0.190'), +] + +configopts = "--enable-shared " + +sanity_check_paths = { + 'files': ['bin/dwarfdump', 'lib/libdwarf.a', 'lib/libdwarf.%s' % SHLIB_EXT], + 'dirs': ['include'] +} + +sanity_check_commands = ['dwarfdump --help'] + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/l/libedit/libedit-20191231-GCCcore-12.3.0.eb b/easybuild/easyconfigs/l/libedit/libedit-20191231-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..9e85864f61d --- /dev/null +++ b/easybuild/easyconfigs/l/libedit/libedit-20191231-GCCcore-12.3.0.eb @@ -0,0 +1,27 @@ +easyblock = 'ConfigureMake' + +name = 'libedit' +version = '20191231' + +homepage = 'https://thrysoee.dk/editline/' +description = """ +This BSD-style licensed command line editor library provides generic line editing, +history, and tokenization functions, similar to those found in GNU Readline. +""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +source_urls = ['https://thrysoee.dk/editline/'] +sources = ['%(namelower)s-%(version)s-3.1.tar.gz'] +checksums = ['dbb82cb7e116a5f8025d35ef5b4f7d4a3cdd0a3909a146a39112095a2d229071'] + +builddependencies = [('binutils', '2.40')] + +dependencies = [('ncurses', '6.4')] + +sanity_check_paths = { + 'files': ['include/editline/readline.h', 'lib/libedit.%s' % SHLIB_EXT, 'lib/libedit.a'], + 'dirs': [] +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/l/libev/libev-4.33-GCC-12.3.0.eb b/easybuild/easyconfigs/l/libev/libev-4.33-GCC-12.3.0.eb new file mode 100644 index 00000000000..a2cd4ecd9b5 --- /dev/null +++ b/easybuild/easyconfigs/l/libev/libev-4.33-GCC-12.3.0.eb @@ -0,0 +1,31 @@ +# Author: J. Sassmannshausen (Imperial College London/UK) +# Update: Pavel Tománek (Inuits) +easyblock = 'ConfigureMake' + +name = 'libev' +version = '4.33' + +homepage = 'http://software.schmorp.de/pkg/libev.html' +description = """A full-featured and high-performance (see benchmark) +event loop that is loosely modelled after libevent, but without its +limitations and bugs. It is used in GNU Virtual Private Ethernet, +rxvt-unicode, auditd, the Deliantra MORPG Server and Client, and many +other programs.""" + +toolchain = {'name': 'GCC', 'version': '12.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['http://dist.schmorp.de/libev/Attic'] +sources = ['%(name)s-%(version)s.tar.gz'] +checksums = ['507eb7b8d1015fbec5b935f34ebed15bf346bed04a11ab82b8eee848c4205aea'] + +builddependencies = [ + ('binutils', '2.40'), +] + +sanity_check_paths = { + 'files': ['lib/libev.%s' % SHLIB_EXT], + 'dirs': ['include/', 'share'], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/l/libevent/libevent-2.1.12-GCCcore-13.3.0.eb b/easybuild/easyconfigs/l/libevent/libevent-2.1.12-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..bd33821ffd7 --- /dev/null +++ b/easybuild/easyconfigs/l/libevent/libevent-2.1.12-GCCcore-13.3.0.eb @@ -0,0 +1,38 @@ +easyblock = 'ConfigureMake' + +name = 'libevent' +version = '2.1.12' + +homepage = 'https://libevent.org/' + +description = """ + The libevent API provides a mechanism to execute a callback function when + a specific event occurs on a file descriptor or after a timeout has been + reached. Furthermore, libevent also support callbacks due to signals or + regular timeouts. +""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/%(name)s/%(name)s/releases/download/release-%(version)s-stable/'] +sources = ['%(name)s-%(version)s-stable.tar.gz'] +checksums = ['92e6de1be9ec176428fd2367677e61ceffc2ee1cb119035037a27d346b0403bb'] + +builddependencies = [ + ('binutils', '2.42'), + ('pkgconf', '2.2.0'), +] + +dependencies = [ + ('zlib', '1.3.1'), + ('OpenSSL', '3', '', SYSTEM), +] + +sanity_check_paths = { + 'files': ['bin/event_rpcgen.py', 'include/event.h', 'include/event2/event.h', + 'lib/libevent_core.%s' % SHLIB_EXT, 'lib/pkgconfig/libevent.pc'], + 'dirs': [], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/l/libfabric/libfabric-1.12.1-GCCcore-10.3.0.eb b/easybuild/easyconfigs/l/libfabric/libfabric-1.12.1-GCCcore-10.3.0.eb index 80c3e4f2651..5a302fa1b83 100644 --- a/easybuild/easyconfigs/l/libfabric/libfabric-1.12.1-GCCcore-10.3.0.eb +++ b/easybuild/easyconfigs/l/libfabric/libfabric-1.12.1-GCCcore-10.3.0.eb @@ -43,6 +43,10 @@ builddependencies = [ dependencies = [ ('numactl', '2.0.14'), + # PSM2 dependency for libfabric should be used on Omnipath systems, + # but that PSM2 has CUDA as dependency so it's commented out by default; + # PSM2 only compiles on x86_64 + # ('PSM2', {'arch=x86_64': '12.0.1', 'arch=*': False}), ] osdependencies = [OS_PKG_IBVERBS_DEV] @@ -53,7 +57,7 @@ preconfigopts = "autoreconf -f -i &&" # Disable deprecated "sockets" provider configopts = "--disable-sockets " -# Disable usNIC provider by default as this requires specific osdependencies +# Disable usNIC provider by default as this requires specific osdependencies # If you want to enable this provider you need to uncomment the following line: # osdependencies.append(('libnl3-devel', 'libnl3-dev')) configopts += "--disable-usnic " diff --git a/easybuild/easyconfigs/l/libfabric/libfabric-1.13.0-GCCcore-11.2.0.eb b/easybuild/easyconfigs/l/libfabric/libfabric-1.13.0-GCCcore-11.2.0.eb index bb2faf1ae40..35245b93a33 100644 --- a/easybuild/easyconfigs/l/libfabric/libfabric-1.13.0-GCCcore-11.2.0.eb +++ b/easybuild/easyconfigs/l/libfabric/libfabric-1.13.0-GCCcore-11.2.0.eb @@ -37,6 +37,10 @@ builddependencies = [ dependencies = [ ('numactl', '2.0.14'), + # PSM2 dependency for libfabric should be used on Omnipath systems, + # but that PSM2 has CUDA as dependency so it's commented out by default; + # PSM2 only compiles on x86_64 + # ('PSM2', {'arch=x86_64': '12.0.1', 'arch=*': False}), ] osdependencies = [OS_PKG_IBVERBS_DEV] @@ -47,7 +51,7 @@ preconfigopts = "autoreconf -f -i &&" # Disable deprecated "sockets" provider configopts = "--disable-sockets " -# Disable usNIC provider by default as this requires specific osdependencies +# Disable usNIC provider by default as this requires specific osdependencies # If you want to enable this provider you need to uncomment the following line: # osdependencies.append(('libnl3-devel', 'libnl3-dev')) configopts += "--disable-usnic " diff --git a/easybuild/easyconfigs/l/libfabric/libfabric-1.13.1-GCCcore-11.2.0.eb b/easybuild/easyconfigs/l/libfabric/libfabric-1.13.1-GCCcore-11.2.0.eb index 5059fe59d70..c6011eea6ec 100644 --- a/easybuild/easyconfigs/l/libfabric/libfabric-1.13.1-GCCcore-11.2.0.eb +++ b/easybuild/easyconfigs/l/libfabric/libfabric-1.13.1-GCCcore-11.2.0.eb @@ -37,6 +37,10 @@ builddependencies = [ dependencies = [ ('numactl', '2.0.14'), + # PSM2 dependency for libfabric should be used on Omnipath systems, + # but that PSM2 has CUDA as dependency so it's commented out by default; + # PSM2 only compiles on x86_64 + # ('PSM2', {'arch=x86_64': '12.0.1', 'arch=*': False}), ] osdependencies = [OS_PKG_IBVERBS_DEV] @@ -47,7 +51,7 @@ preconfigopts = "autoreconf -f -i &&" # Disable deprecated "sockets" provider configopts = "--disable-sockets " -# Disable usNIC provider by default as this requires specific osdependencies +# Disable usNIC provider by default as this requires specific osdependencies # If you want to enable this provider you need to uncomment the following line: # osdependencies.append(('libnl3-devel', 'libnl3-dev')) configopts += "--disable-usnic " diff --git a/easybuild/easyconfigs/l/libfabric/libfabric-1.13.2-GCCcore-11.2.0.eb b/easybuild/easyconfigs/l/libfabric/libfabric-1.13.2-GCCcore-11.2.0.eb index 9205e38e09d..14531d3108d 100644 --- a/easybuild/easyconfigs/l/libfabric/libfabric-1.13.2-GCCcore-11.2.0.eb +++ b/easybuild/easyconfigs/l/libfabric/libfabric-1.13.2-GCCcore-11.2.0.eb @@ -37,6 +37,10 @@ builddependencies = [ dependencies = [ ('numactl', '2.0.14'), + # PSM2 dependency for libfabric should be used on Omnipath systems, + # but that PSM2 has CUDA as dependency so it's commented out by default; + # PSM2 only compiles on x86_64 + # ('PSM2', {'arch=x86_64': '12.0.1', 'arch=*': False}), ] osdependencies = [OS_PKG_IBVERBS_DEV] @@ -47,7 +51,7 @@ preconfigopts = "autoreconf -f -i &&" # Disable deprecated "sockets" provider configopts = "--disable-sockets " -# Disable usNIC provider by default as this requires specific osdependencies +# Disable usNIC provider by default as this requires specific osdependencies # If you want to enable this provider you need to uncomment the following line: # osdependencies.append(('libnl3-devel', 'libnl3-dev')) configopts += "--disable-usnic " diff --git a/easybuild/easyconfigs/l/libfabric/libfabric-1.15.1-GCCcore-11.3.0.eb b/easybuild/easyconfigs/l/libfabric/libfabric-1.15.1-GCCcore-11.3.0.eb index f2d512f14d0..6c50cdb4a4b 100644 --- a/easybuild/easyconfigs/l/libfabric/libfabric-1.15.1-GCCcore-11.3.0.eb +++ b/easybuild/easyconfigs/l/libfabric/libfabric-1.15.1-GCCcore-11.3.0.eb @@ -37,6 +37,10 @@ builddependencies = [ dependencies = [ ('numactl', '2.0.14'), + # PSM2 dependency for libfabric should be used on Omnipath systems, + # but that PSM2 has CUDA as dependency so it's commented out by default; + # PSM2 only compiles on x86_64 + # ('PSM2', {'arch=x86_64': '12.0.1', 'arch=*': False}), ] osdependencies = [OS_PKG_IBVERBS_DEV] diff --git a/easybuild/easyconfigs/l/libfabric/libfabric-1.16.1-GCCcore-12.2.0.eb b/easybuild/easyconfigs/l/libfabric/libfabric-1.16.1-GCCcore-12.2.0.eb index 97eacfc006e..31c4ac02fac 100644 --- a/easybuild/easyconfigs/l/libfabric/libfabric-1.16.1-GCCcore-12.2.0.eb +++ b/easybuild/easyconfigs/l/libfabric/libfabric-1.16.1-GCCcore-12.2.0.eb @@ -34,6 +34,10 @@ builddependencies = [ dependencies = [ ('numactl', '2.0.16'), + # PSM2 dependency for libfabric should be used on Omnipath systems, + # but that PSM2 has CUDA as dependency so it's commented out by default; + # PSM2 only compiles on x86_64 + # ('PSM2', {'arch=x86_64': '12.0.1', 'arch=*': False}), ] osdependencies = [OS_PKG_IBVERBS_DEV] diff --git a/easybuild/easyconfigs/l/libfabric/libfabric-1.18.0-GCCcore-12.3.0.eb b/easybuild/easyconfigs/l/libfabric/libfabric-1.18.0-GCCcore-12.3.0.eb index a0acd145b4c..c1fa6c1cebb 100644 --- a/easybuild/easyconfigs/l/libfabric/libfabric-1.18.0-GCCcore-12.3.0.eb +++ b/easybuild/easyconfigs/l/libfabric/libfabric-1.18.0-GCCcore-12.3.0.eb @@ -34,6 +34,10 @@ builddependencies = [ dependencies = [ ('numactl', '2.0.16'), + # PSM2 dependency for libfabric should be used on Omnipath systems, + # but that PSM2 has CUDA as dependency so it's commented out by default; + # PSM2 only compiles on x86_64 + # ('PSM2', {'arch=x86_64': '12.0.1', 'arch=*': False}), ] osdependencies = [OS_PKG_IBVERBS_DEV] diff --git a/easybuild/easyconfigs/l/libfabric/libfabric-1.19.0-GCCcore-13.2.0.eb b/easybuild/easyconfigs/l/libfabric/libfabric-1.19.0-GCCcore-13.2.0.eb index 3a1dce0b2dc..5d80c15a258 100644 --- a/easybuild/easyconfigs/l/libfabric/libfabric-1.19.0-GCCcore-13.2.0.eb +++ b/easybuild/easyconfigs/l/libfabric/libfabric-1.19.0-GCCcore-13.2.0.eb @@ -34,6 +34,10 @@ builddependencies = [ dependencies = [ ('numactl', '2.0.16'), + # PSM2 dependency for libfabric should be used on Omnipath systems, + # but that PSM2 has CUDA as dependency so it's commented out by default; + # PSM2 only compiles on x86_64 + # ('PSM2', {'arch=x86_64': '12.0.1', 'arch=*': False}), ] osdependencies = [OS_PKG_IBVERBS_DEV] diff --git a/easybuild/easyconfigs/l/libfabric/libfabric-1.21.0-GCCcore-13.3.0.eb b/easybuild/easyconfigs/l/libfabric/libfabric-1.21.0-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..04757a82748 --- /dev/null +++ b/easybuild/easyconfigs/l/libfabric/libfabric-1.21.0-GCCcore-13.3.0.eb @@ -0,0 +1,61 @@ +easyblock = 'ConfigureMake' + +name = 'libfabric' +version = '1.21.0' + +homepage = 'https://ofiwg.github.io/libfabric/' +description = """ +Libfabric is a core component of OFI. It is the library that defines and exports +the user-space API of OFI, and is typically the only software that applications +deal with directly. It works in conjunction with provider libraries, which are +often integrated directly into libfabric. +""" + +# The psm3 provider (enabled by default) requires an AVX capable system to run +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/ofiwg/libfabric/releases/download/v%(version)s'] +sources = [SOURCE_TAR_BZ2] +checksums = [ + {'libfabric-1.21.0.tar.bz2': '0c1b7b830d9147f661e5d7f359250b85b5a9885c330464cd3b5e5d35b86551c7'}, +] + +builddependencies = [ + ('binutils', '2.42'), + ('pkgconf', '2.2.0'), + ('Autotools', '20231222'), +] + +dependencies = [ + ('numactl', '2.0.18'), + # PSM2 dependency for libfabric should be used on Omnipath systems, + # but that PSM2 has CUDA as dependency so it's commented out by default; + # PSM2 only compiles on x86_64 + # ('PSM2', {'arch=x86_64': '12.0.1', 'arch=*': False}), +] + +osdependencies = [OS_PKG_IBVERBS_DEV] + +# Regenerate build files to pick up psm3-axv-config patch +preconfigopts = "./autogen.sh &&" + +# Disable deprecated "sockets" provider +configopts = "--disable-sockets " + +# Disable usNIC provider by default as this requires specific osdependencies +# If you want to enable this provider you need to uncomment the following line: +# osdependencies.append(('libnl3-devel', 'libnl3-dev')) +configopts += "--disable-usnic " + +buildopts = "V=1" + +sanity_check_paths = { + 'files': ['bin/fi_info', 'bin/fi_pingpong', 'bin/fi_strerror'] + + ['lib/libfabric.%s' % x for x in ['a', SHLIB_EXT]], + 'dirs': ['include/rdma', 'lib/pkgconfig', 'share'] +} + +sanity_check_commands = ['fi_info'] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/l/libffi/libffi-3.4.5-GCCcore-13.3.0.eb b/easybuild/easyconfigs/l/libffi/libffi-3.4.5-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..34934544c93 --- /dev/null +++ b/easybuild/easyconfigs/l/libffi/libffi-3.4.5-GCCcore-13.3.0.eb @@ -0,0 +1,29 @@ +easyblock = 'ConfigureMake' + +name = 'libffi' +version = '3.4.5' + +homepage = 'https://sourceware.org/libffi/' +description = """The libffi library provides a portable, high level programming interface to + various calling conventions. This allows a programmer to call any function + specified by a call interface description at run-time.""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/libffi/libffi/releases/download/v%(version)s/'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['96fff4e589e3b239d888d9aa44b3ff30693c2ba1617f953925a70ddebcc102b2'] + +builddependencies = [ + ('binutils', '2.42'), +] + +configopts = '--disable-exec-static-tramp ' + +sanity_check_paths = { + 'files': ['lib/libffi.a', 'lib/libffi.%s' % SHLIB_EXT], + 'dirs': ['include', 'share'], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/l/libfyaml/libfyaml-0.9-GCCcore-12.3.0.eb b/easybuild/easyconfigs/l/libfyaml/libfyaml-0.9-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..b0095e84672 --- /dev/null +++ b/easybuild/easyconfigs/l/libfyaml/libfyaml-0.9-GCCcore-12.3.0.eb @@ -0,0 +1,39 @@ +easyblock = 'ConfigureMake' + +name = 'libfyaml' +version = '0.9' + +homepage = "https://github.com/pantoniou/libfyaml" +description = """Fully feature complete YAML parser and emitter, supporting the latest YAML spec and passing the +full YAML testsuite.""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +source_urls = ['https://github.com/pantoniou/libfyaml/releases/download/v%(version)s/'] +sources = [SOURCE_TAR_GZ] +checksums = ['7731edc5dfcc345d5c5c9f6ce597133991a689dabede393cd77bae89b327cd6d'] + +builddependencies = [ + ('Autotools', '20220317'), + ('binutils', '2.40'), + ('pkgconf', '1.9.5'), +] + +dependencies = [ + ('libyaml', '0.2.5'), +] + +preconfigopts = './bootstrap.sh &&' + +# tests require git checkout for the data +# if jq is available then one test may fail: https://github.com/pantoniou/libfyaml/issues/99 +# runtest = 'check' + +sanity_check_paths = { + 'files': ['bin/fy-tool', 'include/libfyaml.h', 'lib/libfyaml.a', 'lib/libfyaml.%s' % SHLIB_EXT], + 'dirs': [], +} + +sanity_check_commands = ["fy-tool --help"] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/l/libgcrypt/libgcrypt-1.10.3-GCCcore-12.3.0.eb b/easybuild/easyconfigs/l/libgcrypt/libgcrypt-1.10.3-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..113c8f30746 --- /dev/null +++ b/easybuild/easyconfigs/l/libgcrypt/libgcrypt-1.10.3-GCCcore-12.3.0.eb @@ -0,0 +1,31 @@ +easyblock = 'ConfigureMake' + +name = 'libgcrypt' +version = '1.10.3' + +homepage = 'https://gnupg.org/related_software/libgcrypt/index.html' +description = """Libgcrypt is a general purpose cryptographic library originally based on code from GnuPG""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +source_urls = ['https://gnupg.org/ftp/gcrypt/%(name)s/'] +sources = [SOURCE_TAR_BZ2] +checksums = ['8b0870897ac5ac67ded568dcfadf45969cfa8a6beb0fd60af2a9eadc2a3272aa'] + +builddependencies = [('binutils', '2.40')] + +dependencies = [('libgpg-error', '1.48')] + +sanity_check_paths = { + 'files': ['bin/libgcrypt-config', 'include/gcrypt.h', 'lib/libgcrypt.%s' % SHLIB_EXT], + 'dirs': ['share'] +} + +sanity_check_commands = [ + 'dumpsexp --version', + 'hmac256 --version', + 'mpicalc --version', + 'libgcrypt-config --version | grep "%(version)s"', +] + +moduleclass = 'system' diff --git a/easybuild/easyconfigs/l/libgd/libgd-2.3.3-GCCcore-13.2.0.eb b/easybuild/easyconfigs/l/libgd/libgd-2.3.3-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..8ebba5a4031 --- /dev/null +++ b/easybuild/easyconfigs/l/libgd/libgd-2.3.3-GCCcore-13.2.0.eb @@ -0,0 +1,37 @@ +easyblock = 'ConfigureMake' + +name = 'libgd' +version = '2.3.3' + +homepage = 'https://libgd.github.io' +description = "GD is an open source code library for the dynamic creation of images by programmers." + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/libgd/libgd/releases/download/gd-%(version)s/'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['dd3f1f0bb016edcc0b2d082e8229c822ad1d02223511997c80461481759b1ed2'] + +builddependencies = [ + ('binutils', '2.40'), +] + +dependencies = [ + ('fontconfig', '2.14.2'), + ('libjpeg-turbo', '3.0.1'), + ('libpng', '1.6.40'), + ('zlib', '1.2.13'), +] + +configopts = "--with-fontconfig=$EBROOTFONTCONFIG --with-jpeg=$EBROOTLIBJPEGMINTURBO " +configopts += "--with-png=$EBROOTLIBPNG --with-zlib=$EBROOTZLIB" + +sanity_check_paths = { + 'files': ['lib/libgd.a', 'lib/libgd.%s' % SHLIB_EXT], + 'dirs': ['bin', 'include'], +} + +sanity_check_commands = ['webpng --help'] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/l/libgpg-error/libgpg-error-1.48-GCCcore-12.3.0.eb b/easybuild/easyconfigs/l/libgpg-error/libgpg-error-1.48-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..67edfd4a874 --- /dev/null +++ b/easybuild/easyconfigs/l/libgpg-error/libgpg-error-1.48-GCCcore-12.3.0.eb @@ -0,0 +1,22 @@ +easyblock = 'ConfigureMake' + +name = 'libgpg-error' +version = '1.48' + +homepage = 'https://gnupg.org/related_software/libgpg-error/index.html' +description = """Libgpg-error is a small library that defines common error values for all GnuPG components.""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +source_urls = ['https://gnupg.org/ftp/gcrypt/%(name)s/'] +sources = [SOURCE_TAR_BZ2] +checksums = ['89ce1ae893e122924b858de84dc4f67aae29ffa610ebf668d5aa539045663d6f'] + +builddependencies = [('binutils', '2.40')] + +sanity_check_paths = { + 'files': ['bin/gpg-error', 'include/gpg-error.h', 'lib/libgpg-error.%s' % SHLIB_EXT], + 'dirs': ['share'] +} + +moduleclass = 'system' diff --git a/easybuild/easyconfigs/l/libheif/libheif-1.17.6-GCC-12.3.0.eb b/easybuild/easyconfigs/l/libheif/libheif-1.17.6-GCC-12.3.0.eb new file mode 100644 index 00000000000..ee355100089 --- /dev/null +++ b/easybuild/easyconfigs/l/libheif/libheif-1.17.6-GCC-12.3.0.eb @@ -0,0 +1,42 @@ +# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild +# Author: Denis Kristak +easyblock = 'CMakeMake' + +name = 'libheif' +version = '1.17.6' + +homepage = 'https://github.com/strukturag/libheif' +description = "libheif is an HEIF and AVIF file format decoder and encoder" + +toolchain = {'name': 'GCC', 'version': '12.3.0'} + +source_urls = ['https://github.com/strukturag/libheif/releases/download/v%(version)s/'] +sources = [SOURCE_TAR_GZ] +checksums = ['8390baf4913eda0a183e132cec62b875fb2ef507ced5ddddc98dfd2f17780aee'] + +builddependencies = [ + ('CMake', '3.26.3'), +] + +dependencies = [ + ('libpng', '1.6.39'), + ('libjpeg-turbo', '2.1.5.1'), + ('libde265', '1.0.15'), + ('x265', '3.5'), + ('Gdk-Pixbuf', '2.42.10'), +] + +# build both static and shared libraries +configopts = [ + "-DBUILD_SHARED_LIBS=OFF", + "-DBUILD_SHARED_LIBS=ON", +] + +sanity_check_paths = { + 'files': ['bin/heif-info', 'lib/libheif.a', 'lib/libheif.%s' % SHLIB_EXT, 'lib/pkgconfig/libheif.pc'], + 'dirs': ['include/libheif'], +} + +sanity_check_commands = ["heif-info --help"] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/l/libhomfly/libhomfly-1.02r6-GCCcore-13.2.0.eb b/easybuild/easyconfigs/l/libhomfly/libhomfly-1.02r6-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..4d14cf38cee --- /dev/null +++ b/easybuild/easyconfigs/l/libhomfly/libhomfly-1.02r6-GCCcore-13.2.0.eb @@ -0,0 +1,33 @@ +easyblock = 'ConfigureMake' + +name = 'libhomfly' +version = '1.02r6' + +homepage = 'https://github.com/miguelmarco/libhomfly' +description = """This is basically a conversion of the program written by Robert J Jenkins Jr into a shared library. + It accepts as entry a character string, formatted in the same way as the input files that the original + code used (see below). The returned value is the string that the original program would print on screen.""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +source_urls = ['https://github.com/miguelmarco/libhomfly/archive'] +sources = ['%(version)s.tar.gz'] +checksums = ['cf5d5031c905318127c83fdffc891deb097c77ee48cdd0131f839ea6ecb64a84'] + +builddependencies = [ + ('Autotools', '20220317'), + ('binutils', '2.40'), +] + +dependencies = [ + ('gc', '8.2.6'), +] + +preconfigopts = "autoreconf -i && " + +sanity_check_paths = { + 'files': ['include/homfly.h', 'lib/libhomfly.%s' % SHLIB_EXT], + 'dirs': [], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/l/libiconv/libiconv-1.17-GCCcore-13.3.0.eb b/easybuild/easyconfigs/l/libiconv/libiconv-1.17-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..0532a96c234 --- /dev/null +++ b/easybuild/easyconfigs/l/libiconv/libiconv-1.17-GCCcore-13.3.0.eb @@ -0,0 +1,23 @@ +easyblock = 'ConfigureMake' + +name = 'libiconv' +version = '1.17' + +homepage = 'https://www.gnu.org/software/libiconv' +description = "Libiconv converts from one character encoding to another through Unicode conversion" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = [GNU_SOURCE] +sources = [SOURCE_TAR_GZ] +checksums = ['8f74213b56238c85a50a5329f77e06198771e70dd9a739779f4c02f65d971313'] + +builddependencies = [('binutils', '2.42')] + +sanity_check_paths = { + 'files': ['bin/iconv', 'include/iconv.h', 'include/libcharset.h', 'include/localcharset.h', + 'lib/libcharset.a', 'lib/libcharset.%s' % SHLIB_EXT, 'lib/libiconv.%s' % SHLIB_EXT], + 'dirs': ['share'], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/l/libidn2/libidn2-2.3.7-GCCcore-12.3.0.eb b/easybuild/easyconfigs/l/libidn2/libidn2-2.3.7-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..30a2e4a26f2 --- /dev/null +++ b/easybuild/easyconfigs/l/libidn2/libidn2-2.3.7-GCCcore-12.3.0.eb @@ -0,0 +1,27 @@ +easyblock = 'ConfigureMake' + +name = 'libidn2' +version = '2.3.7' + +homepage = 'http://www.gnu.org/software/%(name)s' +description = "Libidn2 implements the revised algorithm for internationalized domain names called IDNA2008/TR46." + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +source_urls = ['https://ftp.gnu.org/gnu/libidn/'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['4c21a791b610b9519b9d0e12b8097bf2f359b12f8dd92647611a929e6bfd7d64'] + +builddependencies = [ + ('binutils', '2.40'), +] + + +sanity_check_paths = { + 'files': ['bin/idn2', 'lib/%s.%s' % (name, SHLIB_EXT)], + 'dirs': ['include'], +} + +sanity_check_commands = ['idn2 --help'] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/l/libjpeg-turbo/libjpeg-turbo-2.0.4-GCCcore-9.3.0.eb b/easybuild/easyconfigs/l/libjpeg-turbo/libjpeg-turbo-2.0.4-GCCcore-9.3.0.eb index e98cd35c5d2..6462a870025 100644 --- a/easybuild/easyconfigs/l/libjpeg-turbo/libjpeg-turbo-2.0.4-GCCcore-9.3.0.eb +++ b/easybuild/easyconfigs/l/libjpeg-turbo/libjpeg-turbo-2.0.4-GCCcore-9.3.0.eb @@ -27,7 +27,11 @@ dependencies = [ ('NASM', '2.14.02'), ] -configopts = ' -G"Unix Makefiles" -DWITH_JPEG8=1' +# make sure that libraries are installed to /lib (instead of /lib64), +# which helps with avoiding problems when libjpeg-turbo is a dependency that +# gets linked via RPATH and Meson/Ninja are involved, +# see https://github.com/easybuilders/easybuild-easyconfigs/issues/16256 +configopts = ' -G"Unix Makefiles" -DWITH_JPEG8=1 -DCMAKE_INSTALL_LIBDIR:PATH=lib' runtest = "test" diff --git a/easybuild/easyconfigs/l/libjpeg-turbo/libjpeg-turbo-2.0.5-GCCcore-10.2.0.eb b/easybuild/easyconfigs/l/libjpeg-turbo/libjpeg-turbo-2.0.5-GCCcore-10.2.0.eb index 1214eaa1d24..49f121b7a67 100644 --- a/easybuild/easyconfigs/l/libjpeg-turbo/libjpeg-turbo-2.0.5-GCCcore-10.2.0.eb +++ b/easybuild/easyconfigs/l/libjpeg-turbo/libjpeg-turbo-2.0.5-GCCcore-10.2.0.eb @@ -27,7 +27,11 @@ dependencies = [ ('NASM', '2.15.05'), ] -configopts = ' -G"Unix Makefiles" -DWITH_JPEG8=1' +# make sure that libraries are installed to /lib (instead of /lib64), +# which helps with avoiding problems when libjpeg-turbo is a dependency that +# gets linked via RPATH and Meson/Ninja are involved, +# see https://github.com/easybuilders/easybuild-easyconfigs/issues/16256 +configopts = ' -G"Unix Makefiles" -DWITH_JPEG8=1 -DCMAKE_INSTALL_LIBDIR:PATH=lib' runtest = "test" diff --git a/easybuild/easyconfigs/l/libjpeg-turbo/libjpeg-turbo-2.0.6-GCCcore-10.3.0.eb b/easybuild/easyconfigs/l/libjpeg-turbo/libjpeg-turbo-2.0.6-GCCcore-10.3.0.eb index 13a118e1614..6b17cef5654 100644 --- a/easybuild/easyconfigs/l/libjpeg-turbo/libjpeg-turbo-2.0.6-GCCcore-10.3.0.eb +++ b/easybuild/easyconfigs/l/libjpeg-turbo/libjpeg-turbo-2.0.6-GCCcore-10.3.0.eb @@ -27,7 +27,11 @@ dependencies = [ ('NASM', '2.15.05'), ] -configopts = ' -G"Unix Makefiles" -DWITH_JPEG8=1' +# make sure that libraries are installed to /lib (instead of /lib64), +# which helps with avoiding problems when libjpeg-turbo is a dependency that +# gets linked via RPATH and Meson/Ninja are involved, +# see https://github.com/easybuilders/easybuild-easyconfigs/issues/16256 +configopts = ' -G"Unix Makefiles" -DWITH_JPEG8=1 -DCMAKE_INSTALL_LIBDIR:PATH=lib' runtest = "test" diff --git a/easybuild/easyconfigs/l/libjpeg-turbo/libjpeg-turbo-2.0.6-GCCcore-11.2.0.eb b/easybuild/easyconfigs/l/libjpeg-turbo/libjpeg-turbo-2.0.6-GCCcore-11.2.0.eb index 35de4049393..c39bc3b974a 100644 --- a/easybuild/easyconfigs/l/libjpeg-turbo/libjpeg-turbo-2.0.6-GCCcore-11.2.0.eb +++ b/easybuild/easyconfigs/l/libjpeg-turbo/libjpeg-turbo-2.0.6-GCCcore-11.2.0.eb @@ -27,7 +27,11 @@ dependencies = [ ('NASM', '2.15.05'), ] -configopts = ' -G"Unix Makefiles" -DWITH_JPEG8=1' +# make sure that libraries are installed to /lib (instead of /lib64), +# which helps with avoiding problems when libjpeg-turbo is a dependency that +# gets linked via RPATH and Meson/Ninja are involved, +# see https://github.com/easybuilders/easybuild-easyconfigs/issues/16256 +configopts = ' -G"Unix Makefiles" -DWITH_JPEG8=1 -DCMAKE_INSTALL_LIBDIR:PATH=lib' runtest = "test" diff --git a/easybuild/easyconfigs/l/libjpeg-turbo/libjpeg-turbo-2.1.3-GCCcore-11.3.0.eb b/easybuild/easyconfigs/l/libjpeg-turbo/libjpeg-turbo-2.1.3-GCCcore-11.3.0.eb index e88b1b5987f..9f8f5bac2bb 100644 --- a/easybuild/easyconfigs/l/libjpeg-turbo/libjpeg-turbo-2.1.3-GCCcore-11.3.0.eb +++ b/easybuild/easyconfigs/l/libjpeg-turbo/libjpeg-turbo-2.1.3-GCCcore-11.3.0.eb @@ -27,7 +27,11 @@ dependencies = [ ('NASM', '2.15.05'), ] -configopts = ' -G"Unix Makefiles" -DWITH_JPEG8=1' +# make sure that libraries are installed to /lib (instead of /lib64), +# which helps with avoiding problems when libjpeg-turbo is a dependency that +# gets linked via RPATH and Meson/Ninja are involved, +# see https://github.com/easybuilders/easybuild-easyconfigs/issues/16256 +configopts = ' -G"Unix Makefiles" -DWITH_JPEG8=1 -DCMAKE_INSTALL_LIBDIR:PATH=lib' runtest = "test" diff --git a/easybuild/easyconfigs/l/libjpeg-turbo/libjpeg-turbo-2.1.4-GCCcore-12.2.0.eb b/easybuild/easyconfigs/l/libjpeg-turbo/libjpeg-turbo-2.1.4-GCCcore-12.2.0.eb index 0117bb716bf..b372bc82f3f 100644 --- a/easybuild/easyconfigs/l/libjpeg-turbo/libjpeg-turbo-2.1.4-GCCcore-12.2.0.eb +++ b/easybuild/easyconfigs/l/libjpeg-turbo/libjpeg-turbo-2.1.4-GCCcore-12.2.0.eb @@ -27,7 +27,11 @@ dependencies = [ ('NASM', '2.15.05'), ] -configopts = ' -G"Unix Makefiles" -DWITH_JPEG8=1' +# make sure that libraries are installed to /lib (instead of /lib64), +# which helps with avoiding problems when libjpeg-turbo is a dependency that +# gets linked via RPATH and Meson/Ninja are involved, +# see https://github.com/easybuilders/easybuild-easyconfigs/issues/16256 +configopts = ' -G"Unix Makefiles" -DWITH_JPEG8=1 -DCMAKE_INSTALL_LIBDIR:PATH=lib' runtest = "test" diff --git a/easybuild/easyconfigs/l/libjpeg-turbo/libjpeg-turbo-2.1.5.1-GCCcore-12.3.0.eb b/easybuild/easyconfigs/l/libjpeg-turbo/libjpeg-turbo-2.1.5.1-GCCcore-12.3.0.eb index db21ae7cbeb..f1608484f69 100644 --- a/easybuild/easyconfigs/l/libjpeg-turbo/libjpeg-turbo-2.1.5.1-GCCcore-12.3.0.eb +++ b/easybuild/easyconfigs/l/libjpeg-turbo/libjpeg-turbo-2.1.5.1-GCCcore-12.3.0.eb @@ -27,7 +27,11 @@ dependencies = [ ('NASM', '2.16.01'), ] -configopts = ' -G"Unix Makefiles" -DWITH_JPEG8=1' +# make sure that libraries are installed to /lib (instead of /lib64), +# which helps with avoiding problems when libjpeg-turbo is a dependency that +# gets linked via RPATH and Meson/Ninja are involved, +# see https://github.com/easybuilders/easybuild-easyconfigs/issues/16256 +configopts = ' -G"Unix Makefiles" -DWITH_JPEG8=1 -DCMAKE_INSTALL_LIBDIR:PATH=lib' runtest = "test" diff --git a/easybuild/easyconfigs/l/libjpeg-turbo/libjpeg-turbo-3.0.1-GCCcore-13.2.0.eb b/easybuild/easyconfigs/l/libjpeg-turbo/libjpeg-turbo-3.0.1-GCCcore-13.2.0.eb index 680c3f1f34d..e952da0425e 100644 --- a/easybuild/easyconfigs/l/libjpeg-turbo/libjpeg-turbo-3.0.1-GCCcore-13.2.0.eb +++ b/easybuild/easyconfigs/l/libjpeg-turbo/libjpeg-turbo-3.0.1-GCCcore-13.2.0.eb @@ -27,7 +27,11 @@ dependencies = [ ('NASM', '2.16.01'), ] -configopts = ' -G"Unix Makefiles" -DWITH_JPEG8=1' +# make sure that libraries are installed to /lib (instead of /lib64), +# which helps with avoiding problems when libjpeg-turbo is a dependency that +# gets linked via RPATH and Meson/Ninja are involved, +# see https://github.com/easybuilders/easybuild-easyconfigs/issues/16256 +configopts = ' -G"Unix Makefiles" -DWITH_JPEG8=1 -DCMAKE_INSTALL_LIBDIR:PATH=lib' runtest = "test" diff --git a/easybuild/easyconfigs/l/libjpeg-turbo/libjpeg-turbo-3.0.1-GCCcore-13.3.0.eb b/easybuild/easyconfigs/l/libjpeg-turbo/libjpeg-turbo-3.0.1-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..f4a61f429a2 --- /dev/null +++ b/easybuild/easyconfigs/l/libjpeg-turbo/libjpeg-turbo-3.0.1-GCCcore-13.3.0.eb @@ -0,0 +1,42 @@ +easyblock = 'CMakeMake' + +name = 'libjpeg-turbo' +version = '3.0.1' + +homepage = 'https://sourceforge.net/projects/libjpeg-turbo/' + +description = """ + libjpeg-turbo is a fork of the original IJG libjpeg which uses SIMD to + accelerate baseline JPEG compression and decompression. libjpeg is a library + that implements JPEG image encoding, decoding and transcoding. +""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} +toolchainopts = {'pic': True} + +source_urls = [SOURCEFORGE_SOURCE] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['22429507714ae147b3acacd299e82099fce5d9f456882fc28e252e4579ba2a75'] + +builddependencies = [ + ('CMake', '3.29.3'), + ('binutils', '2.42'), +] + +dependencies = [ + ('NASM', '2.16.03'), +] + +configopts = ' -G"Unix Makefiles" -DWITH_JPEG8=1' + +runtest = "test" + +sanity_check_paths = { + 'files': ['bin/cjpeg', 'bin/djpeg', 'bin/jpegtran', 'bin/rdjpgcom', + 'bin/tjbench', 'bin/wrjpgcom', 'lib/libjpeg.a', + 'lib/libjpeg.%s' % SHLIB_EXT, 'lib/libturbojpeg.a', + 'lib/libturbojpeg.%s' % SHLIB_EXT], + 'dirs': ['include', 'share'], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/l/libjxl/libjxl-0.8.2-GCCcore-12.3.0.eb b/easybuild/easyconfigs/l/libjxl/libjxl-0.8.2-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..22bddfd467b --- /dev/null +++ b/easybuild/easyconfigs/l/libjxl/libjxl-0.8.2-GCCcore-12.3.0.eb @@ -0,0 +1,53 @@ +easyblock = 'CMakeMake' + +name = 'libjxl' +version = '0.8.2' +# Newer versions of libjxl require Highway >=1.0.7 + +homepage = 'https://github.com/libjxl/libjxl' +description = "JPEG XL image format reference implementation" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +github_account = 'libjxl' +source_urls = [GITHUB_SOURCE] +sources = ['v%(version)s.tar.gz'] +checksums = ['c70916fb3ed43784eb840f82f05d390053a558e2da106e40863919238fa7b420'] + +builddependencies = [ + ('binutils', '2.40'), + ('CMake', '3.26.3'), + ('googletest', '1.13.0'), + ('pkgconf', '1.9.5'), + ('Highway', '1.0.4'), # Highway only has a static library +] + +dependencies = [ + ('LittleCMS', '2.15'), + ('Brotli', '1.0.9'), + ('libjpeg-turbo', '2.1.5.1'), + ('libpng', '1.6.39'), + ('zlib', '1.2.13'), + ('giflib', '5.2.1'), + ('libwebp', '1.3.1'), + ('OpenEXR', '3.1.7'), + ('gperftools', '2.12'), +] + +configopts = '-DJPEGXL_WARNINGS_AS_ERRORS=OFF -DJPEGXL_ENABLE_SJPEG=OFF -DJPEGXL_ENABLE_SKCMS=OFF ' +# building man pages requires/uses asciidoc (which may be installed in OS, and may fail) +configopts += '-DJPEGXL_ENABLE_MANPAGES=OFF ' +configopts += '-DJPEGXL_FORCE_SYSTEM_BROTLI=ON -DJPEGXL_FORCE_SYSTEM_HWY=ON ' +configopts += '-DJPEGXL_FORCE_SYSTEM_GTEST=ON -DJPEGXL_FORCE_SYSTEM_LCMS2=ON ' + +sanity_check_paths = { + 'files': ['bin/cjxl', 'bin/djxl', 'lib/libjxl.%s' % SHLIB_EXT], + 'dirs': ['include/jxl'], +} + +sanity_check_commands = [ + "cjxl --help", + "djxl --help", +] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/l/libmad/libmad-0.15.1b-GCCcore-12.3.0.eb b/easybuild/easyconfigs/l/libmad/libmad-0.15.1b-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..f0d6ed43058 --- /dev/null +++ b/easybuild/easyconfigs/l/libmad/libmad-0.15.1b-GCCcore-12.3.0.eb @@ -0,0 +1,27 @@ +easyblock = 'ConfigureMake' + +name = 'libmad' +version = '0.15.1b' + +homepage = 'https://www.underbit.com/products/mad/' +description = """MAD is a high-quality MPEG audio decoder.""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +source_urls = ['https://sourceforge.net/projects/mad/files/%(name)s/%(version)s/'] +sources = [SOURCELOWER_TAR_GZ] +patches = ['libmad-0.15.1b-remove-depreciated-gcc-option.patch'] +checksums = [ + 'bbfac3ed6bfbc2823d3775ebb931087371e142bb0e9bb1bee51a76a6e0078690', # libmad-0.15.1b.tar.gz + # libmad-0.15.1b-remove-depreciated-gcc-option.patch + '8f96a23a22ba66e62f32e20064d01f4c7f6a18ba0aab85d3be9ce63794b2c678', +] + +builddependencies = [('binutils', '2.40')] + +sanity_check_paths = { + 'files': ['include/mad.h', 'lib/libmad.a', 'lib/libmad.la', 'lib/libmad.%s' % SHLIB_EXT], + 'dirs': ['include', 'lib', 'lib64'] +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/l/libnsl/libnsl-2.0.1-GCCcore-12.3.0.eb b/easybuild/easyconfigs/l/libnsl/libnsl-2.0.1-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..a00b43e2177 --- /dev/null +++ b/easybuild/easyconfigs/l/libnsl/libnsl-2.0.1-GCCcore-12.3.0.eb @@ -0,0 +1,33 @@ +easyblock = 'ConfigureMake' + +name = 'libnsl' +version = '2.0.1' + +homepage = 'https://github.com/thkukuk/libnsl' +description = """The libnsl package contains the public client interface for NIS(YP).""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +source_urls = ['https://github.com/thkukuk/%(name)s/releases/download/v%(version)s/'] +sources = [SOURCE_TAR_XZ] +checksums = ['5c9e470b232a7acd3433491ac5221b4832f0c71318618dc6aa04dd05ffcd8fd9'] + +builddependencies = [ + ('binutils', '2.40'), +] + +dependencies = [ + ('libtirpc', '1.3.3'), +] + +# Provide a symlink for libnsl.so.1, which used to be part of glibc. +# This new version of libnsl should be backwards compatible. +postinstallcmds = ['ln -s libnsl.so %(installdir)s/lib/libnsl.so.1'] + +sanity_check_paths = { + 'files': ['include/rpcsvc/yp.h', 'lib/libnsl.a', + 'lib/libnsl.%s' % SHLIB_EXT, 'lib/libnsl.%s.1' % SHLIB_EXT], + 'dirs': ['include'] +} + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/l/libpciaccess/libpciaccess-0.18.1-GCCcore-13.3.0.eb b/easybuild/easyconfigs/l/libpciaccess/libpciaccess-0.18.1-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..7b1be7bc436 --- /dev/null +++ b/easybuild/easyconfigs/l/libpciaccess/libpciaccess-0.18.1-GCCcore-13.3.0.eb @@ -0,0 +1,29 @@ +easyblock = 'MesonNinja' + +name = 'libpciaccess' +version = '0.18.1' + +homepage = 'https://cgit.freedesktop.org/xorg/lib/libpciaccess/' +description = """Generic PCI access library.""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = ['https://www.x.org/releases/individual/lib/'] +sources = [SOURCE_TAR_XZ] +checksums = ['4af43444b38adb5545d0ed1c2ce46d9608cc47b31c2387fc5181656765a6fa76'] + +builddependencies = [ + ('binutils', '2.42'), + ('Meson', '1.4.0'), + ('Ninja', '1.12.1'), + ('xorg-macros', '1.20.1'), +] + +configopts = "--default-library=both" # static and shared library + +sanity_check_paths = { + 'files': ['include/pciaccess.h', 'lib/libpciaccess.a'], + 'dirs': ['lib/pkgconfig'], +} + +moduleclass = 'system' diff --git a/easybuild/easyconfigs/l/libpng/libpng-1.6.43-GCCcore-13.3.0.eb b/easybuild/easyconfigs/l/libpng/libpng-1.6.43-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..04fc0f259cc --- /dev/null +++ b/easybuild/easyconfigs/l/libpng/libpng-1.6.43-GCCcore-13.3.0.eb @@ -0,0 +1,31 @@ +easyblock = 'ConfigureMake' + +name = 'libpng' +version = '1.6.43' + +homepage = 'http://www.libpng.org/pub/png/libpng.html' + +description = "libpng is the official PNG reference library" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} +toolchainopts = {'pic': True} + +source_urls = [SOURCEFORGE_SOURCE] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['e804e465d4b109b5ad285a8fb71f0dd3f74f0068f91ce3cdfde618180c174925'] + +builddependencies = [('binutils', '2.42')] + +dependencies = [('zlib', '1.3.1')] + +local_majminver = '%(version_major)s%(version_minor)s' + +sanity_check_paths = { + 'files': ['include/pngconf.h', 'include/png.h', 'include/pnglibconf.h', + 'lib/libpng.a', 'lib/libpng.%s' % SHLIB_EXT, + 'lib/libpng%s.a' % local_majminver, + 'lib/libpng%s.%s' % (local_majminver, SHLIB_EXT)], + 'dirs': ['bin', 'include/libpng%s' % local_majminver, 'share/man'], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/l/libreadline/libreadline-8.2-GCCcore-13.3.0.eb b/easybuild/easyconfigs/l/libreadline/libreadline-8.2-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..8cf47255fdc --- /dev/null +++ b/easybuild/easyconfigs/l/libreadline/libreadline-8.2-GCCcore-13.3.0.eb @@ -0,0 +1,41 @@ +easyblock = 'ConfigureMake' + +name = 'libreadline' +version = '8.2' + +homepage = 'https://tiswww.case.edu/php/chet/readline/rltop.html' +description = """ + The GNU Readline library provides a set of functions for use by applications + that allow users to edit command lines as they are typed in. Both Emacs and + vi editing modes are available. The Readline library includes additional + functions to maintain a list of previously-entered command lines, to recall + and perhaps reedit those lines, and perform csh-like history expansion on + previous commands. +""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://ftp.gnu.org/gnu/readline'] +sources = ['readline-%(version)s.tar.gz'] +checksums = ['3feb7171f16a84ee82ca18a36d7b9be109a52c04f492a053331d7d1095007c35'] + +builddependencies = [ + ('binutils', '2.42'), +] +dependencies = [ + ('ncurses', '6.5'), +] + +# for the termcap symbols, use EB ncurses +buildopts = "SHLIB_LIBS='-lncurses'" + +sanity_check_paths = { + 'files': ['lib/libreadline.a', 'lib/libhistory.a'] + + ['include/readline/%s' % x + for x in ['chardefs.h', 'history.h', 'keymaps.h', 'readline.h', + 'rlconf.h', 'rlstdc.h', 'rltypedefs.h', 'tilde.h']], + 'dirs': [], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/l/libspatialindex/libspatialindex-1.9.3-GCCcore-12.3.0.eb b/easybuild/easyconfigs/l/libspatialindex/libspatialindex-1.9.3-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..82f6fde1515 --- /dev/null +++ b/easybuild/easyconfigs/l/libspatialindex/libspatialindex-1.9.3-GCCcore-12.3.0.eb @@ -0,0 +1,25 @@ +easyblock = 'CMakeMake' + +name = 'libspatialindex' +version = '1.9.3' + +homepage = 'https://libspatialindex.org' +description = """C++ implementation of R*-tree, an MVR-tree and a TPR-tree with C API""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +source_urls = ['https://github.com/libspatialindex/libspatialindex/releases/download/%(version)s/'] +sources = ['spatialindex-src-%(version)s.tar.gz'] +checksums = ['47d8779e32477b330e46b62fb7e62cb812caee5d8e684c35cb635a42a749f3fc'] + +builddependencies = [ + ('binutils', '2.40'), + ('CMake', '3.26.3'), +] + +sanity_check_paths = { + 'files': ['lib/libspatialindex.%s' % SHLIB_EXT], + 'dirs': ['include/spatialindex'], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/l/libsupermesh/libsupermesh-2025-01-25-foss-2023a.eb b/easybuild/easyconfigs/l/libsupermesh/libsupermesh-2025-01-25-foss-2023a.eb new file mode 100644 index 00000000000..d0c5e1de51f --- /dev/null +++ b/easybuild/easyconfigs/l/libsupermesh/libsupermesh-2025-01-25-foss-2023a.eb @@ -0,0 +1,35 @@ +# Author J. Sassmannshausen (Imperial College London/UK) + +easyblock = 'CMakeMake' + +name = 'libsupermesh' +version = '2025-01-25' +local_commit = '84becef14eb117defa49354116c04aa180471a07' + +homepage = 'https://github.com/firedrakeproject/libsupermesh' +description = "libsupermesh parallel supermeshing library." + +toolchain = {'name': 'foss', 'version': '2023a'} + +source_urls = ['https://github.com/firedrakeproject/libsupermesh/archive/%s' % local_commit] +sources = [{'download_filename': '%s.tar.gz' % local_commit, 'filename': SOURCE_TAR_GZ}] +checksums = ['c8a13609f9eaabc5a2635808eaa90013aff5b724c9edf50280f869b6f5c51ae6'] + +builddependencies = [ + ('CMake', '3.26.3'), +] + +dependencies = [ + ('Python', '3.11.3'), + ('Rtree', '1.2.0'), + ('libspatialindex', '1.9.3'), +] + +sanity_check_paths = { + 'files': ['include/%(name)s.h', 'lib/%(name)s.a'], + 'dirs': [], +} + +test_cmd = 'ctest' + +moduleclass = 'numlib' diff --git a/easybuild/easyconfigs/l/libtasn1/libtasn1-4.19.0-GCCcore-12.3.0.eb b/easybuild/easyconfigs/l/libtasn1/libtasn1-4.19.0-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..38372984a5f --- /dev/null +++ b/easybuild/easyconfigs/l/libtasn1/libtasn1-4.19.0-GCCcore-12.3.0.eb @@ -0,0 +1,25 @@ +easyblock = 'ConfigureMake' + +name = 'libtasn1' +version = '4.19.0' + +homepage = 'https://www.gnu.org/software/libtasn1/' +description = """Libtasn1 is the ASN.1 library used by GnuTLS, GNU Shishi and + some other packages. It was written by Fabio Fiorina, and has been shipped as + part of GnuTLS for some time but is now a proper GNU package.""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +source_urls = [GNU_SOURCE] +sources = [SOURCE_TAR_GZ] +checksums = ['1613f0ac1cf484d6ec0ce3b8c06d56263cc7242f1c23b30d82d23de345a63f7a'] + +builddependencies = [('binutils', '2.40')] + +sanity_check_paths = { + 'files': ['bin/asn1%s' % x for x in ['Coding', 'Decoding', 'Parser']] + + ['lib/libtasn1.%s' % x for x in ['a', SHLIB_EXT]], + 'dirs': ['include'], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/l/libtool/libtool-2.4.7-GCCcore-13.3.0.eb b/easybuild/easyconfigs/l/libtool/libtool-2.4.7-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..ae8cf1bd5b0 --- /dev/null +++ b/easybuild/easyconfigs/l/libtool/libtool-2.4.7-GCCcore-13.3.0.eb @@ -0,0 +1,32 @@ +easyblock = 'ConfigureMake' + +name = 'libtool' +version = '2.4.7' + +homepage = 'https://www.gnu.org/software/libtool' + +description = """ + GNU libtool is a generic library support script. Libtool hides the complexity + of using shared libraries behind a consistent, portable interface. +""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = [GNU_SOURCE] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['04e96c2404ea70c590c546eba4202a4e12722c640016c12b9b2f1ce3d481e9a8'] + +builddependencies = [ + ('binutils', '2.42'), +] + +dependencies = [ + ('M4', '1.4.19'), +] + +sanity_check_paths = { + 'files': ['bin/libtool', 'bin/libtoolize', 'lib/libltdl.%s' % SHLIB_EXT], + 'dirs': ['include/libltdl', 'share/libtool/loaders', 'share/man/man1'], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/l/libuv/libuv-1.48.0-GCCcore-12.3.0.eb b/easybuild/easyconfigs/l/libuv/libuv-1.48.0-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..ee537f6dcb3 --- /dev/null +++ b/easybuild/easyconfigs/l/libuv/libuv-1.48.0-GCCcore-12.3.0.eb @@ -0,0 +1,28 @@ +easyblock = 'ConfigureMake' + +name = 'libuv' +version = '1.48.0' + +homepage = 'https://libuv.org' +description = "libuv is a multi-platform support library with a focus on asynchronous I/O." + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +github_account = 'libuv' +source_urls = [GITHUB_SOURCE] +sources = [{'download_filename': 'v%(version)s.tar.gz', 'filename': SOURCELOWER_TAR_GZ}] +checksums = ['8c253adb0f800926a6cbd1c6576abae0bc8eb86a4f891049b72f9e5b7dc58f33'] + +builddependencies = [ + ('binutils', '2.40'), + ('Autotools', '20220317'), +] + +preconfigopts = './autogen.sh; ' + +sanity_check_paths = { + 'files': ['include/uv.h', 'lib/libuv.a', 'lib/libuv.%s' % SHLIB_EXT, 'lib/pkgconfig/libuv.pc'], + 'dirs': [] +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/l/libwebp/libwebp-1.3.1-GCCcore-12.3.0.eb b/easybuild/easyconfigs/l/libwebp/libwebp-1.3.1-GCCcore-12.3.0.eb index 4ac82164e4b..7a8453a029c 100644 --- a/easybuild/easyconfigs/l/libwebp/libwebp-1.3.1-GCCcore-12.3.0.eb +++ b/easybuild/easyconfigs/l/libwebp/libwebp-1.3.1-GCCcore-12.3.0.eb @@ -10,6 +10,7 @@ webmasters and web developers can create smaller, richer images that make the web faster.""" toolchain = {'name': 'GCCcore', 'version': '12.3.0'} +toolchainopts = {'pic': True} source_urls = ['https://storage.googleapis.com/downloads.webmproject.org/releases/webp'] sources = [SOURCELOWER_TAR_GZ] diff --git a/easybuild/easyconfigs/l/libxml2/libxml2-2.12.7-GCCcore-13.3.0.eb b/easybuild/easyconfigs/l/libxml2/libxml2-2.12.7-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..a8a21aceaa9 --- /dev/null +++ b/easybuild/easyconfigs/l/libxml2/libxml2-2.12.7-GCCcore-13.3.0.eb @@ -0,0 +1,27 @@ +name = 'libxml2' +version = '2.12.7' + +homepage = 'http://xmlsoft.org/' + +description = """ + Libxml2 is the XML C parser and toolchain developed for the Gnome project + (but usable outside of the Gnome platform). +""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://download.gnome.org/sources/libxml2/%(version_major_minor)s/'] +sources = [SOURCE_TAR_XZ] +checksums = ['24ae78ff1363a973e6d8beba941a7945da2ac056e19b53956aeb6927fd6cfb56'] + +builddependencies = [ + ('binutils', '2.42'), +] + +dependencies = [ + ('XZ', '5.4.5'), + ('zlib', '1.3.1'), +] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/l/libyaml/libyaml-0.2.5-GCCcore-13.3.0.eb b/easybuild/easyconfigs/l/libyaml/libyaml-0.2.5-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..4b2e8e66632 --- /dev/null +++ b/easybuild/easyconfigs/l/libyaml/libyaml-0.2.5-GCCcore-13.3.0.eb @@ -0,0 +1,25 @@ +easyblock = 'ConfigureMake' + +name = 'libyaml' +version = '0.2.5' + +homepage = 'https://pyyaml.org/wiki/LibYAML' +description = "LibYAML is a YAML parser and emitter written in C." + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = ['https://pyyaml.org/download/%(name)s/'] +sources = ['yaml-%(version)s.tar.gz'] +checksums = ['c642ae9b75fee120b2d96c712538bd2cf283228d2337df2cf2988e3c02678ef4'] + +builddependencies = [ + ('binutils', '2.42'), +] + + +sanity_check_paths = { + 'files': ['include/yaml.h', 'lib/libyaml.a', 'lib/libyaml.%s' % SHLIB_EXT], + 'dirs': ['lib/pkgconfig'], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/l/likwid/likwid-5.2.2-GCC-12.3.0.eb b/easybuild/easyconfigs/l/likwid/likwid-5.2.2-GCC-12.3.0.eb new file mode 100644 index 00000000000..68b78db72f1 --- /dev/null +++ b/easybuild/easyconfigs/l/likwid/likwid-5.2.2-GCC-12.3.0.eb @@ -0,0 +1,54 @@ +easyblock = 'ConfigureMake' + +name = 'likwid' +version = '5.2.2' + +homepage = 'https://github.com/RRZE-HPC/likwid' + +description = """ +Likwid stands for Like I knew what I am doing. This project contributes easy +to use command line tools for Linux to support programmers in developing high +performance multi threaded programs. +""" + +toolchain = {'name': 'GCC', 'version': '12.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/RRZE-HPC/likwid/archive/'] +sources = ['v%(version)s.tar.gz'] +checksums = ['7dda6af722e04a6c40536fc9f89766ce10f595a8569b29e80563767a6a8f940e'] + +builddependencies = [ + ('Perl', '5.36.1'), +] + +dependencies = [ + ('hwloc', '2.9.1'), +] + +skipsteps = ['configure'] + +# include_GCC.mk is using ifort by default. +# Changing it to gfortran, to be consistent with GCC toolchain +prebuildopts = """sed -i 's@FC = ifort@FC = gfortran@g' make/include_GCC.mk && """ +prebuildopts += """sed -i 's@FCFLAGS = -module ./ # ifort@FCFLAGS = -J ./ -fsyntax-only #gfortran@g' """ +prebuildopts += """ make/include_GCC.mk && """ + +buildopts = 'CC="$CC" CFLAGS="$CFLAGS -std=c99" PREFIX=%(installdir)s BUILDFREQ="" ACCESSMODE=perf_event ' +buildopts += 'FORTRAN_INTERFACE=true ' +buildopts += 'CFG_FILE_PATH=%(installdir)s/etc/likwid.cfg TOPO_FILE_PATH=%(installdir)s/etc/likwid_topo.cfg ' +buildopts += 'HWLOC_INCLUDE_DIR=$EBROOTHWLOC/include HWLOC_LIB_DIR=$EBROOTHWLOC/lib HWLOC_LIB_NAME=hwloc ' + +maxparallel = 1 + +installopts = buildopts + 'INSTALL_CHOWN="" ' + +sanity_check_paths = { + 'files': ['bin/likwid-memsweeper', 'bin/likwid-mpirun', 'bin/likwid-perfctr', + 'bin/likwid-perfscope', 'bin/likwid-pin', 'bin/likwid-powermeter', + 'bin/likwid-topology', 'lib/liblikwidpin.%s' % SHLIB_EXT, + 'lib/liblikwid.%s' % SHLIB_EXT, 'include/likwid.mod'], + 'dirs': ['man/man1'] +} + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/l/likwid/likwid-5.3.0-GCC-13.2.0.eb b/easybuild/easyconfigs/l/likwid/likwid-5.3.0-GCC-13.2.0.eb new file mode 100644 index 00000000000..d46a451886d --- /dev/null +++ b/easybuild/easyconfigs/l/likwid/likwid-5.3.0-GCC-13.2.0.eb @@ -0,0 +1,54 @@ +easyblock = 'ConfigureMake' + +name = 'likwid' +version = '5.3.0' + +homepage = 'https://github.com/RRZE-HPC/likwid' + +description = """ +Likwid stands for Like I knew what I am doing. This project contributes easy +to use command line tools for Linux to support programmers in developing high +performance multi threaded programs. +""" + +toolchain = {'name': 'GCC', 'version': '13.2.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/RRZE-HPC/likwid/archive/'] +sources = ['v%(version)s.tar.gz'] +checksums = ['c290e554c4253124ac2ab8b056e14ee4d23966b8c9fbfa10ba81f75ae543ce4e'] + +builddependencies = [ + ('Perl', '5.38.0'), +] + +dependencies = [ + ('hwloc', '2.9.2'), +] + +skipsteps = ['configure'] + +# include_GCC.mk is using ifort by default. +# Changing it to gfortran, to be consistent with GCC toolchain +prebuildopts = """sed -i 's@FC = ifort@FC = gfortran@g' make/include_GCC.mk && """ +prebuildopts += """sed -i 's@FCFLAGS = -module ./ # ifort@FCFLAGS = -J ./ -fsyntax-only #gfortran@g' """ +prebuildopts += """ make/include_GCC.mk && """ + +buildopts = 'CC="$CC" CFLAGS="$CFLAGS -std=c99" PREFIX=%(installdir)s BUILDFREQ="" ACCESSMODE=perf_event ' +buildopts += 'FORTRAN_INTERFACE=true ' +buildopts += 'CFG_FILE_PATH=%(installdir)s/etc/likwid.cfg TOPO_FILE_PATH=%(installdir)s/etc/likwid_topo.cfg ' +buildopts += 'HWLOC_INCLUDE_DIR=$EBROOTHWLOC/include HWLOC_LIB_DIR=$EBROOTHWLOC/lib HWLOC_LIB_NAME=hwloc ' + +maxparallel = 1 + +installopts = buildopts + 'INSTALL_CHOWN="" ' + +sanity_check_paths = { + 'files': ['bin/likwid-memsweeper', 'bin/likwid-mpirun', 'bin/likwid-perfctr', + 'bin/likwid-perfscope', 'bin/likwid-pin', 'bin/likwid-powermeter', + 'bin/likwid-topology', 'lib/liblikwidpin.%s' % SHLIB_EXT, + 'lib/liblikwid.%s' % SHLIB_EXT, 'include/likwid.mod'], + 'dirs': ['man/man1'] +} + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/l/lil-aretomo/lil-aretomo-0.1.1-foss-2023a.eb b/easybuild/easyconfigs/l/lil-aretomo/lil-aretomo-0.1.1-foss-2023a.eb new file mode 100644 index 00000000000..121e49d9047 --- /dev/null +++ b/easybuild/easyconfigs/l/lil-aretomo/lil-aretomo-0.1.1-foss-2023a.eb @@ -0,0 +1,33 @@ +# Thomas Hoffmann, EMBL Heidelberg, structures-it@embl.de, 2024/05 +easyblock = 'PythonBundle' + +name = 'lil-aretomo' +version = '0.1.1' + +homepage = 'https://github.com/teamtomo/lil-aretomo' +description = """ +A lightweight Python API for AreTomo. +""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +dependencies = [ + ('Python', '3.11.3'), + ('mrcfile', '1.5.0'), + ('SciPy-bundle', '2023.07'), +] + +use_pip = True + +exts_list = [ + ('typer', '0.9.0', { + 'checksums': ['50922fd79aea2f4751a8e0408ff10d2662bd0c8bbfa84755a699f3bada2978b2'], + }), + ('lil_aretomo', version, { + 'checksums': ['02ccb0efbf2c06304570117f142e78331bfffdde46864e22de11c6cd7f30f178'], + }), +] + +sanity_pip_check = True + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/l/line_profiler/line_profiler-4.1.2-GCCcore-13.2.0.eb b/easybuild/easyconfigs/l/line_profiler/line_profiler-4.1.2-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..b5f689a928f --- /dev/null +++ b/easybuild/easyconfigs/l/line_profiler/line_profiler-4.1.2-GCCcore-13.2.0.eb @@ -0,0 +1,41 @@ +easyblock = 'PythonPackage' + +name = 'line_profiler' +version = '4.1.2' + +homepage = 'https://github.com/pyutils/line_profiler' +description = """line_profiler is a module for doing line-by-line profiling +of functions. kernprof is a convenient script for running either +line_profiler or the Python standard library's cProfile or profile modules, +depending on what is available.""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +github_account = 'pyutils' +source_urls = [GITHUB_SOURCE] +sources = ['v%(version)s.tar.gz'] +checksums = ['a1f3458c1dd1bf4b2d1d2657b78225f4e4e9046a1841f18cf528f01ebd3d5f43'] + +builddependencies = [ + ('binutils', '2.40'), + ('scikit-build', '0.17.6'), + ('CMake', '3.27.6'), + ('Ninja', '1.11.1'), +] +dependencies = [ + ('Python', '3.11.5'), + ('IPython', '8.17.2'), +] + +use_pip = True +download_dep_fail = True +sanity_pip_check = True + +sanity_check_paths = { + 'files': ['bin/kernprof'], + 'dirs': [], +} + +sanity_check_commands = ['kernprof --help'] + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/l/lrslib/lrslib-7.2-gompi-2023b.eb b/easybuild/easyconfigs/l/lrslib/lrslib-7.2-gompi-2023b.eb new file mode 100644 index 00000000000..ba6714df325 --- /dev/null +++ b/easybuild/easyconfigs/l/lrslib/lrslib-7.2-gompi-2023b.eb @@ -0,0 +1,41 @@ +easyblock = 'ConfigureMake' + +name = 'lrslib' +version = '7.2' + +homepage = 'http://cgm.cs.mcgill.ca/~avis/C/lrs.html' +description = """lrslib is a self-contained ANSI C implementation of the +reverse search algorithm for vertex enumeration/convex hull problems""" + +toolchain = {'name': 'gompi', 'version': '2023b'} +toolchainopts = {'usempi': True, 'pic': True} + +source_urls = ['http://cgm.cs.mcgill.ca/~avis/C/lrslib/archive/'] +sources = ['lrslib-0%(version_major)s%(version_minor)s.tar.gz'] +patches = ['lrslib-%(version)s-use-EB-values.patch'] +checksums = [ + {'lrslib-072.tar.gz': 'fc48754a1ded1d8445d40ecfbe3546e4f27d53aaee95dc2c8c0c79fb9cd532f0'}, + {'lrslib-7.2-use-EB-values.patch': '16b0b4d987a751a45c7961bb7e0cb12aac50410a562dab3299335186456ab2ad'}, +] + +dependencies = [ + ('GMP', '6.3.0'), +] + +skipsteps = ['configure'] + +# Default built plus mplrs +buildopts = 'lrs lrsgmp mplrs CFLAGS="$CFLAGS"' + +installopts = 'prefix=%(installdir)s' + +sanity_check_paths = { + 'files': ['bin/%s' % x for x in ['lrs', 'lrsnash']] + + ['include/lrslib/lrs%s.h' % h for h in ['driver', 'gmp', 'lib', 'long', 'mp', 'restart']] + + ['lib/liblrs.%s' % SHLIB_EXT], + 'dirs': [] +} + +sanity_check_commands = ["lrsnash --help 2>&1 | grep 'usage.*lrsnash'"] + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/l/lz4/lz4-1.9.4-GCCcore-13.3.0.eb b/easybuild/easyconfigs/l/lz4/lz4-1.9.4-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..8f4914fbdde --- /dev/null +++ b/easybuild/easyconfigs/l/lz4/lz4-1.9.4-GCCcore-13.3.0.eb @@ -0,0 +1,30 @@ +easyblock = 'ConfigureMake' + +name = 'lz4' +version = '1.9.4' + +homepage = 'https://lz4.github.io/lz4/' +description = """LZ4 is lossless compression algorithm, providing compression speed at 400 MB/s per core. + It features an extremely fast decoder, with speed in multiple GB/s per core.""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +github_account = '%(name)s' +source_urls = [GITHUB_SOURCE] +sources = ['v%(version)s.tar.gz'] +checksums = ['0b0e3aa07c8c063ddf40b082bdf7e37a1562bda40a0ff5272957f3e987e0e54b'] + +builddependencies = [('binutils', '2.42')] + +skipsteps = ['configure'] + +installopts = "PREFIX=%(installdir)s" + +runtest = 'check' + +sanity_check_paths = { + 'files': ["bin/lz4", "lib/liblz4.%s" % SHLIB_EXT, "include/lz4.h"], + 'dirs': ["lib/pkgconfig"] +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/m/M4/M4-1.4.19-GCCcore-13.3.0.eb b/easybuild/easyconfigs/m/M4/M4-1.4.19-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..7ea1e75f83c --- /dev/null +++ b/easybuild/easyconfigs/m/M4/M4-1.4.19-GCCcore-13.3.0.eb @@ -0,0 +1,29 @@ +easyblock = 'ConfigureMake' + +name = 'M4' +version = '1.4.19' + +homepage = 'https://www.gnu.org/software/m4/m4.html' +description = """GNU M4 is an implementation of the traditional Unix macro processor. It is mostly SVR4 compatible + although it has some extensions (for example, handling more than 9 positional parameters to macros). + GNU M4 also has built-in functions for including files, running shell commands, doing arithmetic, etc.""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = [GNU_SOURCE] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['3be4a26d825ffdfda52a56fc43246456989a3630093cced3fbddf4771ee58a70'] + +# use same binutils version that was used when building GCC toolchain +builddependencies = [('binutils', '2.42', '', SYSTEM)] + +# '-fgnu89-inline' is required to avoid linking errors with older glibc's, +# see https://github.com/easybuilders/easybuild-easyconfigs/issues/529 +configopts = "--enable-c++ CPPFLAGS=-fgnu89-inline" + +sanity_check_paths = { + 'files': ['bin/m4'], + 'dirs': [], +} + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/m/M4/M4-1.4.19-GCCcore-14.1.0.eb b/easybuild/easyconfigs/m/M4/M4-1.4.19-GCCcore-14.1.0.eb new file mode 100644 index 00000000000..95aa2b91a0a --- /dev/null +++ b/easybuild/easyconfigs/m/M4/M4-1.4.19-GCCcore-14.1.0.eb @@ -0,0 +1,29 @@ +easyblock = 'ConfigureMake' + +name = 'M4' +version = '1.4.19' + +homepage = 'https://www.gnu.org/software/m4/m4.html' +description = """GNU M4 is an implementation of the traditional Unix macro processor. It is mostly SVR4 compatible + although it has some extensions (for example, handling more than 9 positional parameters to macros). + GNU M4 also has built-in functions for including files, running shell commands, doing arithmetic, etc.""" + +toolchain = {'name': 'GCCcore', 'version': '14.1.0'} + +source_urls = [GNU_SOURCE] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['3be4a26d825ffdfda52a56fc43246456989a3630093cced3fbddf4771ee58a70'] + +# use same binutils version that was used when building GCC toolchain +builddependencies = [('binutils', '2.42', '', SYSTEM)] + +# '-fgnu89-inline' is required to avoid linking errors with older glibc's, +# see https://github.com/easybuilders/easybuild-easyconfigs/issues/529 +configopts = "--enable-c++ CPPFLAGS=-fgnu89-inline" + +sanity_check_paths = { + 'files': ['bin/m4'], + 'dirs': [], +} + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/m/MACS2/MACS2-2.2.9.1-foss-2023a.eb b/easybuild/easyconfigs/m/MACS2/MACS2-2.2.9.1-foss-2023a.eb new file mode 100644 index 00000000000..4a84341d4bc --- /dev/null +++ b/easybuild/easyconfigs/m/MACS2/MACS2-2.2.9.1-foss-2023a.eb @@ -0,0 +1,35 @@ +# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild + +easyblock = 'PythonPackage' + +name = 'MACS2' +version = '2.2.9.1' + +homepage = 'https://github.com/taoliu/MACS' +description = "Model Based Analysis for ChIP-Seq data" + +toolchain = {'name': 'foss', 'version': '2023a'} + +sources = [SOURCE_TAR_GZ] +checksums = ['8d56bc37fb823fc6387d78138ce968405c54a0a8cd9776682705fd0983252d16'] + +dependencies = [ + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), +] + +use_pip = True +download_dep_fail = True + +sanity_check_paths = { + 'files': ['bin/macs2'], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +sanity_check_commands = [('%(namelower)s --version')] + +options = {'modulename': name} + +sanity_pip_check = True + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/m/MACS3/MACS3-3.0.1-foss-2022b.eb b/easybuild/easyconfigs/m/MACS3/MACS3-3.0.1-foss-2022b.eb new file mode 100644 index 00000000000..a8dcdeb068b --- /dev/null +++ b/easybuild/easyconfigs/m/MACS3/MACS3-3.0.1-foss-2022b.eb @@ -0,0 +1,38 @@ +easyblock = 'PythonBundle' + +name = 'MACS3' +version = '3.0.1' + +homepage = 'https://macs3-project.github.io/MACS/' +description = """Model Based Analysis for ChIP-Seq data""" + +toolchain = {'name': 'foss', 'version': '2022b'} + +builddependencies = [ + ('pybind11', '2.10.3'), +] + +dependencies = [ + ('Python', '3.10.8'), + ('SciPy-bundle', '2023.02'), + ('matplotlib', '3.7.0'), + ('hmmlearn', '0.3.0'), +] + +use_pip = True +sanity_pip_check = True + +exts_list = [ + ('cykhash', '2.0.1', { + 'checksums': ['b4794bc9f549114d8cf1d856d9f64e08ff5f246bf043cf369fdb414e9ceb97f7'], + }), + (name, version, { + 'checksums': ['b07ca6e84a71aab29589f63e3dff96049aa6739e055a629125b31c788c877016'], + 'preinstallopts': "sed -i 's/scipy>=1.11.4/scipy>=1.10/g' setup.py && ", + 'modulename': 'MACS3', + }), +] + +sanity_check_commands = ["macs3 --help"] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/m/MATSim/MATSim-15.0-GCCcore-12.3.0-Java-17.eb b/easybuild/easyconfigs/m/MATSim/MATSim-15.0-GCCcore-12.3.0-Java-17.eb new file mode 100644 index 00000000000..c3ef3b7aeda --- /dev/null +++ b/easybuild/easyconfigs/m/MATSim/MATSim-15.0-GCCcore-12.3.0-Java-17.eb @@ -0,0 +1,37 @@ +easyblock = 'PackedBinary' + +name = 'MATSim' +version = '15.0' +versionsuffix = '-Java-%(javaver)s' + +homepage = 'https://www.matsim.org/' +description = """MATSim is an open-source framework to implement large-scale agent-based transport simulations.""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +source_urls = ['https://github.com/matsim-org/matsim-libs/releases/download/%(version)s'] +sources = ['%(namelower)s-%(version)s-release.zip'] +checksums = ['0ab5d83d0c7d8592e70f055e880dac958f8f05b6fed8bf74d2dfad7560dc29ee'] + +dependencies = [ + ('Java', '17', '', SYSTEM), + ('Mesa', '23.1.4'), + ('X11', '20230603'), +] + +sanity_check_paths = { + 'files': ['%(namelower)s-%(version)s.jar'], + 'dirs': ['libs', 'examples'], +} + +sanity_check_commands = ["java org.matsim.run.ReleaseInfo"] + +modextrapaths = {'CLASSPATH': 'libs/*'} + +modloadmsg = """ +To execute MATSim GUI: java -jar $EBROOTMATSIM/%(namelower)s-%(version)s.jar +To execute MATSim in batch mode: java org.matsim.run.RunMatsim +You might have to adjust the maximum memory of the JVM (-Xmx) +""" + +moduleclass = 'cae' diff --git a/easybuild/easyconfigs/m/MATSim/MATSim-15.0-Java-17.eb b/easybuild/easyconfigs/m/MATSim/MATSim-15.0-Java-17.eb new file mode 100644 index 00000000000..cff55a8e4c6 --- /dev/null +++ b/easybuild/easyconfigs/m/MATSim/MATSim-15.0-Java-17.eb @@ -0,0 +1,34 @@ +easyblock = 'PackedBinary' + +name = 'MATSim' +version = '15.0' +versionsuffix = '-Java-%(javaver)s' + +homepage = 'https://www.matsim.org/' +description = """MATSim is an open-source framework to implement large-scale agent-based transport simulations.""" + +toolchain = SYSTEM + +source_urls = ['https://github.com/matsim-org/matsim-libs/releases/download/%(version)s'] +sources = ['%(namelower)s-%(version)s-release.zip'] +checksums = ['0ab5d83d0c7d8592e70f055e880dac958f8f05b6fed8bf74d2dfad7560dc29ee'] + +dependencies = [ + ('Java', '17'), +] + +sanity_check_paths = { + 'files': ['%(namelower)s-%(version)s.jar'], + 'dirs': ['libs', 'examples'], +} + +sanity_check_commands = ["java org.matsim.run.ReleaseInfo"] + +modextrapaths = {'CLASSPATH': 'libs/*'} + +modloadmsg = """ +To execute MATSim in batch mode: java org.matsim.run.RunMatsim +You might have to adjust the maximum memory of the JVM (-Xmx) +""" + +moduleclass = 'cae' diff --git a/easybuild/easyconfigs/m/MDTraj/MDTraj-1.9.9-gfbf-2023a.eb b/easybuild/easyconfigs/m/MDTraj/MDTraj-1.9.9-gfbf-2023a.eb new file mode 100644 index 00000000000..8f172912989 --- /dev/null +++ b/easybuild/easyconfigs/m/MDTraj/MDTraj-1.9.9-gfbf-2023a.eb @@ -0,0 +1,39 @@ +# Updated: Pavel Grochal (INUITS) + +easyblock = 'PythonBundle' + +name = 'MDTraj' +version = '1.9.9' + +homepage = 'https://mdtraj.org' +description = "Read, write and analyze MD trajectories with only a few lines of Python code." + +toolchain = {'name': 'gfbf', 'version': '2023a'} +toolchainopts = {'openmp': True} + +dependencies = [ + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), + ('zlib', '1.2.13'), +] + +use_pip = True +exts_list = [ + ('pyparsing', '3.1.0', { + 'checksums': ['edb662d6fe322d6e990b1594b5feaeadf806803359e3d4d42f11e295e588f0ea'], + }), + ('astunparse', '1.6.3', { + 'checksums': ['5ad93a8456f0d084c3456d059fd9a92cce667963232cbf763eac3bc5b7940872'], + }), + ('mdtraj', version, { + 'checksums': ['1b03f7ac753af5ca07cf874842689c8d49e791ee1242510875581df6100ca15e'], + }), +] + +# The unit tests of MDTraj are a pain to get to work: they require +# a massive number of extra dependencies. See +# https://github.com/mdtraj/mdtraj/blob/master/devtools/conda-recipe/meta.yaml + +sanity_pip_check = True + +moduleclass = 'chem' diff --git a/easybuild/easyconfigs/m/METIS/METIS-5.1.0-GCCcore-13.2.0.eb b/easybuild/easyconfigs/m/METIS/METIS-5.1.0-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..20d6766c825 --- /dev/null +++ b/easybuild/easyconfigs/m/METIS/METIS-5.1.0-GCCcore-13.2.0.eb @@ -0,0 +1,36 @@ +name = 'METIS' +version = '5.1.0' + +homepage = 'http://glaros.dtc.umn.edu/gkhome/metis/metis/overview' + +description = """ + METIS is a set of serial programs for partitioning graphs, partitioning + finite element meshes, and producing fill reducing orderings for sparse + matrices. The algorithms implemented in METIS are based on the multilevel + recursive-bisection, multilevel k-way, and multi-constraint partitioning + schemes. +""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} +toolchainopts = {'pic': True} + +source_urls = [ + 'http://glaros.dtc.umn.edu/gkhome/fetch/sw/metis', + 'http://glaros.dtc.umn.edu/gkhome/fetch/sw/metis/OLD', +] +sources = [SOURCELOWER_TAR_GZ] +patches = ['%(name)s-%(version)s-use-doubles.patch'] +checksums = [ + {'metis-5.1.0.tar.gz': '76faebe03f6c963127dbb73c13eab58c9a3faeae48779f049066a21c087c5db2'}, + {'METIS-5.1.0-use-doubles.patch': '7e38a3ec8f2b8e3d189239bade5b28c0dd1c564485050109164fa71a6a767c67'}, +] + +# We use 32bit for indices and 64bit for content +builddependencies = [ + ('binutils', '2.40'), + ('CMake', '3.27.6'), +] + +configopts = ['', 'shared=1'] + +moduleclass = 'math' 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..2f2d4eb9cbc --- /dev/null +++ b/easybuild/easyconfigs/m/MICOM/MICOM-0.33.2-foss-2023b.eb @@ -0,0 +1,44 @@ +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'), +] + +use_pip = True +sanity_pip_check = True + +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/MOFA2/MOFA2-1.14.0-foss-2023a-R-4.3.2.eb b/easybuild/easyconfigs/m/MOFA2/MOFA2-1.14.0-foss-2023a-R-4.3.2.eb new file mode 100644 index 00000000000..99d3036b37a --- /dev/null +++ b/easybuild/easyconfigs/m/MOFA2/MOFA2-1.14.0-foss-2023a-R-4.3.2.eb @@ -0,0 +1,37 @@ +easyblock = 'RPackage' + +name = 'MOFA2' +version = '1.14.0' +versionsuffix = '-R-%(rver)s' + +homepage = 'https://cran.r-project.org/web/packages/rhandsontable/index.html' +description = """MOFA is a factor analysis model that provides a general framework + for the integration of multi-omic data sets in an unsupervised fashion. Intuitively, + MOFA can be viewed as a versatile and statistically rigorous generalization of principal + component analysis to multi-omics data. Given several data matrices with measurements + of multiple -omics data types on the same or on overlapping sets of samples, + MOFA infers an interpretable low-dimensional representation in terms of a few latent factors. + These learnt factors represent the driving sources of variation across data modalities, + thus facilitating the identification of cellular states or disease subgroups.""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +source_urls = [ + 'https://bioconductor.org/packages/release/bioc/src/contrib/', + 'https://bioconductor.org/packages/3.19/bioc/src/contrib/', +] +sources = ['%(name)s_%(version)s.tar.gz'] +checksums = ['18975d2072c35160cc4f5218977e2c94ab82389478b65c5c6f3412c257dcc069'] + +dependencies = [ + ('R', '4.3.2'), + ('R-bundle-Bioconductor', '3.18', versionsuffix), + ('SeuratDisk', '20231104', versionsuffix), +] + +sanity_check_paths = { + 'files': [], + 'dirs': ['%(name)s'], +} + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/m/MONAI/MONAI-1.3.0-foss-2023a-CUDA-12.1.1.eb b/easybuild/easyconfigs/m/MONAI/MONAI-1.3.0-foss-2023a-CUDA-12.1.1.eb new file mode 100644 index 00000000000..5c196d917a9 --- /dev/null +++ b/easybuild/easyconfigs/m/MONAI/MONAI-1.3.0-foss-2023a-CUDA-12.1.1.eb @@ -0,0 +1,100 @@ +easyblock = 'PythonBundle' + +name = 'MONAI' +version = '1.3.0' +versionsuffix = '-CUDA-%(cudaver)s' + +homepage = 'https://monai.io/' +description = """ +MONAI is a PyTorch-based, open-source framework for deep learning in healthcare +imaging, part of PyTorch Ecosystem. +""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +github_account = 'Project-MONAI' + +builddependencies = [ + ('hatchling', '1.18.0'), + ('Ninja', '1.11.1'), +] + +dependencies = [ + ('CUDA', '12.1.1', '', SYSTEM), + ('Python', '3.11.3'), + ('Python-bundle-PyPI', '2023.06'), + ('SciPy-bundle', '2023.07'), + ('PyTorch', '2.1.2', versionsuffix), + ('einops', '0.7.0'), + ('ITK', '5.3.0'), + ('NiBabel', '5.2.0'), + ('scikit-image', '0.22.0'), + ('tensorboard', '2.15.1'), + ('torchvision', '0.16.0', versionsuffix), + ('tqdm', '4.66.1'), + ('Pillow', '10.0.0'), + ('openslide-python', '1.3.1'), + ('BeautifulSoup', '4.12.2'), +] + +use_pip = True + +# install MONAI with list of 'extras', which require additional dependencies +local_pip_extras = "einops,fire,gdown,ignite,itk,jsonschema,lmdb,nibabel," +local_pip_extras += "openslide,pandas,pillow,psutil,pydicom,pyyaml,scipy," +local_pip_extras += "skimage,tensorboard,torchvision,tqdm" + +# PyTorch-Ignite v0.4.11 bundled as an extension because MONAI v1.3.0 has a strict requirement on it +exts_list = [ + ('gdown', '4.7.1', { + 'checksums': ['347f23769679aaf7efa73e5655270fcda8ca56be65eb84a4a21d143989541045'], + }), + ('lmdb', '1.4.1', { + 'checksums': ['1f4c76af24e907593487c904ef5eba1993beb38ed385af82adb25a858f2d658d'], + }), + ('termcolor', '2.3.0', { + 'source_tmpl': '%(name)s-%(version)s-py3-none-any.whl', + 'checksums': ['3afb05607b89aed0ffe25202399ee0867ad4d3cb4180d98aaf8eefa6a5f7d475'], + }), + ('fire', '0.5.0', { + 'checksums': ['a6b0d49e98c8963910021f92bba66f65ab440da2982b78eb1bbf95a0a34aacc6'], + }), + ('pytorch-ignite', '0.4.11', { + 'modulename': 'ignite', + 'patches': ['PyTorch-Ignite-0.4.11_fix_error_on_importing_Events.patch'], + 'checksums': [ + {'pytorch-ignite-0.4.11.tar.gz': 'ee31096a58679417097ef7f3f27d88bec40b789ac5e13cd9ed08bc89ca8ce2e2'}, + {'PyTorch-Ignite-0.4.11_fix_error_on_importing_Events.patch': + 'd45c0da30c01f7ce47b7be49a6d5d6eb9529c94a0b9de89260d4b07d9d2359e0'}, + ], + }), + (name, version, { + 'preinstallopts': 'BUILD_MONAI=1', + 'source_urls': ['https://github.com/%(github_account)s/%(name)s/archive'], + 'sources': ['%(version)s.tar.gz'], + 'use_pip_extras': local_pip_extras, + # 2 valid checksums, as source tarball provided by GitHub for MONAI 1.3.0 slightly changed at some point + # see also https://github.com/easybuilders/easybuild-easyconfigs/issues/20617 + 'checksums': [('67e0f55678faad4bd38b1ea69d5de94586b20b551b8ad745415623a8b6c1c5e2', + '076d75458d490b4f2dafbf5974fcc8e07a86c03f39f5ef48c6689ab6e4347da9')], + }), +] + +sanity_pip_check = True + +# 'pip check' does not verify whether all optional dependencies required to support 'extras' +# are actually available, so we do it here via an import check; +local_extra_mod_check = {x: x for x in local_pip_extras.split(",")} +# Some special cases with different module name than extra name +local_extra_mod_check['pillow'] = 'PIL' +local_extra_mod_check['pyyaml'] = 'yaml' + +sanity_check_commands = ["python -c 'import monai; monai.config.print_config()'"] +sanity_check_commands += ["python -c 'import %s'" % local_extra_mod_check[x] for x in local_extra_mod_check] + +sanity_check_paths = { + 'files': ['lib/python%%(pyshortver)s/site-packages/%%(namelower)s/_C.%s' % SHLIB_EXT], + 'dirs': ['lib/python%(pyshortver)s/site-packages/ignite'], +} + +moduleclass = 'vis' diff --git a/easybuild/easyconfigs/m/MONAI/MONAI-1.3.0-foss-2023a.eb b/easybuild/easyconfigs/m/MONAI/MONAI-1.3.0-foss-2023a.eb index c00b11caf83..1132edecf91 100644 --- a/easybuild/easyconfigs/m/MONAI/MONAI-1.3.0-foss-2023a.eb +++ b/easybuild/easyconfigs/m/MONAI/MONAI-1.3.0-foss-2023a.eb @@ -71,7 +71,10 @@ exts_list = [ 'source_urls': ['https://github.com/%(github_account)s/%(name)s/archive'], 'sources': ['%(version)s.tar.gz'], 'use_pip_extras': local_pip_extras, - 'checksums': ['67e0f55678faad4bd38b1ea69d5de94586b20b551b8ad745415623a8b6c1c5e2'], + # 2 valid checksums, as source tarball provided by GitHub for MONAI 1.3.0 slightly changed at some point + # see also https://github.com/easybuilders/easybuild-easyconfigs/issues/20617 + 'checksums': [('67e0f55678faad4bd38b1ea69d5de94586b20b551b8ad745415623a8b6c1c5e2', + '076d75458d490b4f2dafbf5974fcc8e07a86c03f39f5ef48c6689ab6e4347da9')], }), ] diff --git a/easybuild/easyconfigs/m/MPC/MPC-1.3.1-GCCcore-13.3.0.eb b/easybuild/easyconfigs/m/MPC/MPC-1.3.1-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..dce3ae2d1d9 --- /dev/null +++ b/easybuild/easyconfigs/m/MPC/MPC-1.3.1-GCCcore-13.3.0.eb @@ -0,0 +1,35 @@ +easyblock = 'ConfigureMake' + +name = 'MPC' +version = '1.3.1' + +homepage = 'http://www.multiprecision.org/' +description = """Gnu Mpc is a C library for the arithmetic of + complex numbers with arbitrarily high precision and correct + rounding of the result. It extends the principles of the IEEE-754 + standard for fixed precision real floating point numbers to + complex numbers, providing well-defined semantics for every + operation. At the same time, speed of operation at high precision + is a major design goal.""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = ['https://ftpmirror.gnu.org/gnu/mpc/'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['ab642492f5cf882b74aa0cb730cd410a81edcdbec895183ce930e706c1c759b8'] + +builddependencies = [('binutils', '2.42')] + +dependencies = [ + ('GMP', '6.3.0'), + ('MPFR', '4.2.1'), +] + +runtest = 'check' + +sanity_check_paths = { + 'files': ['lib/libmpc.%s' % SHLIB_EXT, 'include/mpc.h'], + 'dirs': [] +} + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/m/MPFI/MPFI-1.5.4-GCCcore-13.2.0.eb b/easybuild/easyconfigs/m/MPFI/MPFI-1.5.4-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..aa47b551aab --- /dev/null +++ b/easybuild/easyconfigs/m/MPFI/MPFI-1.5.4-GCCcore-13.2.0.eb @@ -0,0 +1,26 @@ +easyblock = 'ConfigureMake' + +name = 'MPFI' +version = '1.5.4' + +homepage = 'https://perso.ens-lyon.fr/nathalie.revol/software.html' +description = "MPFI stands for Multiple Precision Floating-point Interval library." + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +source_urls = ['https://perso.ens-lyon.fr/nathalie.revol/softwares/'] +sources = ['mpfi-%(version)s.tar.bz2'] +checksums = ['d20ba56a8d57d0816f028be8b18a4aa909a068efcb9a260e69577939e4199752'] + +builddependencies = [('binutils', '2.40')] + +dependencies = [ + ('MPFR', '4.2.1'), +] + +sanity_check_paths = { + 'files': ['include/mpfi.h'] + ['lib/libmpfi.%s' % e for e in ['a', SHLIB_EXT]], + 'dirs': ['share'], +} + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/m/MPFR/MPFR-4.2.1-GCCcore-13.3.0.eb b/easybuild/easyconfigs/m/MPFR/MPFR-4.2.1-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..6b5fb75a0a3 --- /dev/null +++ b/easybuild/easyconfigs/m/MPFR/MPFR-4.2.1-GCCcore-13.3.0.eb @@ -0,0 +1,39 @@ +easyblock = 'ConfigureMake' + +name = 'MPFR' +version = '4.2.1' + +homepage = 'https://www.mpfr.org' + +description = """ + The MPFR library is a C library for multiple-precision floating-point + computations with correct rounding. +""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = ['https://www.mpfr.org/mpfr-%(version)s/'] +sources = [SOURCELOWER_TAR_BZ2] +checksums = ['b9df93635b20e4089c29623b19420c4ac848a1b29df1cfd59f26cab0d2666aa0'] + +builddependencies = [ + ('binutils', '2.42'), +] + +dependencies = [ + ('GMP', '6.3.0'), +] + +runtest = 'check' + +# copy libmpfr.so* to /lib to make sure that it is picked up by tests +# when EasyBuild is configured with --rpath, and clean up afterwards (let 'make install' do its job) +pretestopts = "mkdir -p %%(installdir)s/lib && cp -a src/.libs/libmpfr.%s* %%(installdir)s/lib && " % SHLIB_EXT +testopts = " && rm -r %(installdir)s/lib" + +sanity_check_paths = { + 'files': ['lib/libmpfr.%s' % SHLIB_EXT, 'include/mpfr.h'], + 'dirs': [], +} + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/m/MUMPS/MUMPS-5.6.1-gomkl-2023a-metis-seq.eb b/easybuild/easyconfigs/m/MUMPS/MUMPS-5.6.1-gomkl-2023a-metis-seq.eb new file mode 100644 index 00000000000..0ffdd5acbe8 --- /dev/null +++ b/easybuild/easyconfigs/m/MUMPS/MUMPS-5.6.1-gomkl-2023a-metis-seq.eb @@ -0,0 +1,35 @@ +name = 'MUMPS' +version = '5.6.1' +versionsuffix = '-metis-seq' + +homepage = 'https://graal.ens-lyon.fr/MUMPS/' +description = "A parallel sparse direct solver. This module is for its sequential variant." + +toolchain = {'name': 'gomkl', 'version': '2023a'} +toolchainopts = {'pic': True, 'usempi': False} + +source_urls = ['https://graal.ens-lyon.fr/MUMPS/'] +sources = ['%(name)s_%(version)s.tar.gz'] +patches = [ + '%(name)s-%(version)s_shared-pord.patch', # builds the shared libs of PORD + '%(name)s-%(version)s_shared-mumps.patch', # builds shared libs of MUMPS +] +checksums = [ + {'MUMPS_5.6.1.tar.gz': '1920426d543e34d377604070fde93b8d102aa38ebdf53300cbce9e15f92e2896'}, + {'MUMPS-5.6.1_shared-pord.patch': '51d3685208a42581b462592eea977f185d87e871fb65e8e90a54dd2ad18ac715'}, + {'MUMPS-5.6.1_shared-mumps.patch': '27f788a5f85e8c9a6a7ec1651097b87c1de0ede0be943df7a10fa7c1ff5f494f'}, +] + +dependencies = [ + ('SCOTCH', '7.0.3'), + ('METIS', '5.1.0'), +] + +parallel = 1 + +# fix 'Type mismatch between actual argument' errors with GCC 10.x +prebuildopts = 'export FFLAGS="$FFLAGS -fallow-argument-mismatch" && ' + +buildopts = 'all SONAME_VERSION="%(version)s"' + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/m/MUMPS/MUMPS-5.6.2_shared-pord.patch b/easybuild/easyconfigs/m/MUMPS/MUMPS-5.6.2_shared-pord.patch new file mode 100644 index 00000000000..98dc0371d60 --- /dev/null +++ b/easybuild/easyconfigs/m/MUMPS/MUMPS-5.6.2_shared-pord.patch @@ -0,0 +1,46 @@ +Heavily inspired from https://src.fedoraproject.org/rpms/MUMPS//blob/rawhide/f/MUMPS-shared.patch +Author: micketeer@gmail.com +Updatd to version 5.5.0: J. Sassmannshausen/ICL (UK) +Updatd to version 5.5.1: maxim-masterov (SURF) +Updatd to version 5.6.1: Petr Král (INUITS) +Updatd to version 5.6.2: Petr Král (INUITS) +diff -u MUMPS_5.6.2/Makefile.orig MUMPS_5.6.2/Makefile +--- MUMPS_5.6.2/Makefile.orig 2023-10-11 11:36:26.000000000 +0200 ++++ MUMPS_5.6.2/Makefile 2024-04-09 13:02:40.710623825 +0200 +@@ -65,7 +65,7 @@ + + include Makefile.inc + +-prerequisites: Makefile.inc $(LIBSEQNEEDED) $(libdir)/libpord$(PLAT)$(LIBEXT) ++prerequisites: Makefile.inc $(LIBSEQNEEDED) $(libdir)/libpord$(PLAT)$(LIBEXT) $(libdir)/libpord$(PLAT).so + + prerequisitesshared: Makefile.inc $(LIBSEQNEEDED)sharedlibseq $(libdir)/libpord$(PLAT)$(LIBEXT_SHARED) + +@@ -103,8 +103,11 @@ + cp $(LPORDDIR)/libpord$(PLAT)$(LIBEXT_SHARED) $@; \ + fi; + +- +- ++$(libdir)/libpord$(PLAT).so: ++ if [ "$(LPORDDIR)" != "" ] ; then \ ++ cd $(LPORDDIR); make CC="$(CC)" CFLAGS="$(OPTC)" AR="$(AR)" ARFUNCT= RANLIB="$(RANLIB)" libpord$(PLAT).so; fi; ++ if [ "$(LPORDDIR)" != "" ] ; then \ ++ cp -a $(LPORDDIR)/libpord*.so lib/; fi; + + clean: + (cd src; $(MAKE) clean) +diff -u MUMPS_5.6.1/PORD/lib/Makefile.orig MUMPS_5.6.1/PORD/lib/Makefile +--- MUMPS_5.6.1/PORD/lib/Makefile.orig 2023-07-11 09:51:28.000000000 +0200 ++++ MUMPS_5.6.1/PORD/lib/Makefile 2023-07-26 10:47:36.312139519 +0200 +@@ -31,6 +31,10 @@ + libpord$(PLAT)$(LIBEXT_SHARED):$(OBJS) + $(CC) -shared $(OBJS) -o libpord.so + ++libpord$(PLAT).so: $(OBJS) ++ $(CC) -shared $(OBJS) -Wl,-soname,libpord$(PLAT)-$(SONAME_VERSION).so -o libpord$(PLAT)-$(SONAME_VERSION).so $(OPTL) -Wl,-z,defs ++ ln -fs libpord$(PLAT)-$(SONAME_VERSION).so $@ ++ + clean: + rm -f *.o + diff --git a/easybuild/easyconfigs/m/MUMmer/MUMmer-4.0.0rc1-GCCcore-11.2.0.eb b/easybuild/easyconfigs/m/MUMmer/MUMmer-4.0.0rc1-GCCcore-11.2.0.eb index 609e244fec2..c261d2484b3 100644 --- a/easybuild/easyconfigs/m/MUMmer/MUMmer-4.0.0rc1-GCCcore-11.2.0.eb +++ b/easybuild/easyconfigs/m/MUMmer/MUMmer-4.0.0rc1-GCCcore-11.2.0.eb @@ -8,7 +8,7 @@ easyblock = 'ConfigureMake' name = 'MUMmer' version = '4.0.0rc1' -homepage = 'http://mummer.sourceforge.net/' +homepage = 'https://mummer.sourceforge.net/' description = """ MUMmer is a system for rapidly aligning entire genomes, @@ -22,7 +22,15 @@ source_urls = ['https://github.com/gmarcais/mummer/releases/download/v%(version) sources = ['%(namelower)s-%(version)s.tar.gz'] checksums = ['85006adb2d6539c2f738c3e3bb14b58bb6f62cd6c6ca5ede884a87ae76e07d1d'] -builddependencies = [('binutils', '2.37')] +builddependencies = [ + ('binutils', '2.37'), +] + +dependencies = [ + ('gnuplot', '5.4.2'), +] + +configopts = 'GNUPLOT=gnuplot' sanity_check_paths = { 'files': ['bin/mummer', 'bin/annotate', 'bin/combineMUMs', 'bin/delta-filter', diff --git a/easybuild/easyconfigs/m/MUMmer/MUMmer-4.0.0rc1-GCCcore-11.3.0.eb b/easybuild/easyconfigs/m/MUMmer/MUMmer-4.0.0rc1-GCCcore-11.3.0.eb index d078c854c66..f403869b209 100644 --- a/easybuild/easyconfigs/m/MUMmer/MUMmer-4.0.0rc1-GCCcore-11.3.0.eb +++ b/easybuild/easyconfigs/m/MUMmer/MUMmer-4.0.0rc1-GCCcore-11.3.0.eb @@ -22,7 +22,15 @@ source_urls = ['https://github.com/gmarcais/mummer/releases/download/v%(version) sources = ['%(namelower)s-%(version)s.tar.gz'] checksums = ['85006adb2d6539c2f738c3e3bb14b58bb6f62cd6c6ca5ede884a87ae76e07d1d'] -builddependencies = [('binutils', '2.38')] +builddependencies = [ + ('binutils', '2.38'), +] + +dependencies = [ + ('gnuplot', '5.4.4'), +] + +configopts = 'GNUPLOT=gnuplot' sanity_check_paths = { 'files': ['bin/mummer', 'bin/annotate', 'bin/combineMUMs', 'bin/delta-filter', diff --git a/easybuild/easyconfigs/m/MUMmer/MUMmer-4.0.0rc1-GCCcore-12.2.0.eb b/easybuild/easyconfigs/m/MUMmer/MUMmer-4.0.0rc1-GCCcore-12.2.0.eb index b2d716125cf..ce38884c04c 100644 --- a/easybuild/easyconfigs/m/MUMmer/MUMmer-4.0.0rc1-GCCcore-12.2.0.eb +++ b/easybuild/easyconfigs/m/MUMmer/MUMmer-4.0.0rc1-GCCcore-12.2.0.eb @@ -24,7 +24,15 @@ source_urls = ['https://github.com/gmarcais/mummer/releases/download/v%(version) sources = ['%(namelower)s-%(version)s.tar.gz'] checksums = ['85006adb2d6539c2f738c3e3bb14b58bb6f62cd6c6ca5ede884a87ae76e07d1d'] -builddependencies = [('binutils', '2.39')] +builddependencies = [ + ('binutils', '2.39'), +] + +dependencies = [ + ('gnuplot', '5.4.6'), +] + +configopts = 'GNUPLOT=gnuplot' sanity_check_paths = { 'files': ['bin/mummer', 'bin/annotate', 'bin/combineMUMs', 'bin/delta-filter', diff --git a/easybuild/easyconfigs/m/MUMmer/MUMmer-4.0.0rc1-GCCcore-12.3.0.eb b/easybuild/easyconfigs/m/MUMmer/MUMmer-4.0.0rc1-GCCcore-12.3.0.eb index 46bb7b4a03f..809143d9839 100644 --- a/easybuild/easyconfigs/m/MUMmer/MUMmer-4.0.0rc1-GCCcore-12.3.0.eb +++ b/easybuild/easyconfigs/m/MUMmer/MUMmer-4.0.0rc1-GCCcore-12.3.0.eb @@ -25,7 +25,15 @@ source_urls = ['https://github.com/gmarcais/mummer/releases/download/v%(version) sources = ['%(namelower)s-%(version)s.tar.gz'] checksums = ['85006adb2d6539c2f738c3e3bb14b58bb6f62cd6c6ca5ede884a87ae76e07d1d'] -builddependencies = [('binutils', '2.40')] +builddependencies = [ + ('binutils', '2.40'), +] + +dependencies = [ + ('gnuplot', '5.4.8'), +] + +configopts = 'GNUPLOT=gnuplot' sanity_check_paths = { 'files': ['bin/mummer', 'bin/annotate', 'bin/combineMUMs', 'bin/delta-filter', diff --git a/easybuild/easyconfigs/m/Mako/Mako-1.3.5-GCCcore-13.3.0.eb b/easybuild/easyconfigs/m/Mako/Mako-1.3.5-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..6df66e4a2e0 --- /dev/null +++ b/easybuild/easyconfigs/m/Mako/Mako-1.3.5-GCCcore-13.3.0.eb @@ -0,0 +1,35 @@ +easyblock = 'PythonBundle' + +name = 'Mako' +version = '1.3.5' + +homepage = 'https://www.makotemplates.org' +description = """A super-fast templating language that borrows the best ideas from the existing templating languages""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +builddependencies = [('binutils', '2.42')] + +dependencies = [('Python', '3.12.3')] + +use_pip = True + +exts_list = [ + ('MarkupSafe', '2.1.5', { + 'checksums': ['d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b'], + }), + (name, version, { + 'checksums': ['48dbc20568c1d276a2698b36d968fa76161bf127194907ea6fc594fa81f943bc'], + }), +] + +sanity_pip_check = True + +sanity_check_paths = { + 'files': ['bin/mako-render'], + 'dirs': ['lib/python%(pyshortver)s/site-packages/%(namelower)s'], +} + +sanity_check_commands = ["mako-render --help"] + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/m/Markdown/Markdown-3.6-GCCcore-12.3.0.eb b/easybuild/easyconfigs/m/Markdown/Markdown-3.6-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..84b4c527498 --- /dev/null +++ b/easybuild/easyconfigs/m/Markdown/Markdown-3.6-GCCcore-12.3.0.eb @@ -0,0 +1,24 @@ +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.3.0'} + +sources = [SOURCE_TAR_GZ] +checksums = ['ed4f41f6daecbeeb96e576ce414c41d2d876daa9a16cb35fa8ed8c2ddfad0224'] + +builddependencies = [('binutils', '2.40')] +dependencies = [('Python', '3.11.3')] + +download_dep_fail = True +sanity_pip_check = True +use_pip = True + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/m/Meson/Meson-1.4.0-GCCcore-13.3.0.eb b/easybuild/easyconfigs/m/Meson/Meson-1.4.0-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..7e8d5b0b7bb --- /dev/null +++ b/easybuild/easyconfigs/m/Meson/Meson-1.4.0-GCCcore-13.3.0.eb @@ -0,0 +1,36 @@ +easyblock = 'PythonPackage' + +name = 'Meson' +version = '1.4.0' + +homepage = 'https://mesonbuild.com' +description = "Meson is a cross-platform build system designed to be both as fast and as user friendly as possible." + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +sources = [SOURCELOWER_TAR_GZ] +checksums = ['8fd6630c25c27f1489a8a0392b311a60481a3c161aa699b330e25935b750138d'] + +builddependencies = [ + ('binutils', '2.42'), +] + +dependencies = [ + ('Python', '3.12.3'), # includes required 'wheel' package + ('Ninja', '1.12.1'), +] + +download_dep_fail = True +use_pip = True +sanity_pip_check = True + +options = {'modulename': 'mesonbuild'} + +sanity_check_paths = { + 'files': ['bin/meson'], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +sanity_check_commands = ["meson --help"] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/m/Mesquite/Mesquite-2.3.0-GCCcore-12.3.0.eb b/easybuild/easyconfigs/m/Mesquite/Mesquite-2.3.0-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..ccf2bdaf150 --- /dev/null +++ b/easybuild/easyconfigs/m/Mesquite/Mesquite-2.3.0-GCCcore-12.3.0.eb @@ -0,0 +1,31 @@ +easyblock = 'ConfigureMake' + +name = 'Mesquite' +version = '2.3.0' + +homepage = 'https://software.sandia.gov/mesquite/' + +description = """Mesh-Quality Improvement Library""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/sandialabs/mesquite/raw/main/mesquite/'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['4ab4ceadfa596e16c00dbb0e8b830a9112fa1b73291ca07633ec379a39b8bb28'] + +builddependencies = [ + ('binutils', '2.40'), +] + +sanity_check_paths = { + 'files': ['bin/msqquality', 'bin/msqshape', 'lib/libmesquite.a'], + 'dirs': ['include'], +} + +sanity_check_commands = [ + "msqquality -h", + "msqshape -h", +] + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/m/MetaMorpheus/MetaMorpheus-1.0.5.eb b/easybuild/easyconfigs/m/MetaMorpheus/MetaMorpheus-1.0.5.eb new file mode 100644 index 00000000000..9570e0d7ede --- /dev/null +++ b/easybuild/easyconfigs/m/MetaMorpheus/MetaMorpheus-1.0.5.eb @@ -0,0 +1,35 @@ +easyblock = 'Tarball' + +name = 'MetaMorpheus' +version = '1.0.5' + +homepage = 'https://github.com/smith-chem-wisc/MetaMorpheus' +description = """MetaMorpheus is a bottom-up proteomics database search software + with integrated post-translational modification (PTM) discovery capability. + This program combines features of Morpheus and G-PTM-D in a single tool. +""" + +toolchain = SYSTEM + +source_urls = ['https://github.com/smith-chem-wisc/%(name)s/releases/download/%(version)s'] +sources = [{ + 'download_filename': '%(name)s_CommandLine.zip', + 'filename': SOURCE_ZIP, +}] +checksums = ['cad92b262ca5508c4d8a04e0d342f1260b85d354cd53152db9d7f6cc1e5a0490'] + +dependencies = [ + ('dotNET-Core', '6.0'), +] + +sanity_check_paths = { + 'files': ['CMD.dll'], + 'dirs': [], +} + +_cmd = "dotnet %(installdir)s/CMD.dll" +sanity_check_commands = ["%s %s" % (_cmd, x) for x in ['--help', '--test -o %(builddir)s/test']] + +modaliases = {'metamorpheus': _cmd} + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/m/MetalWalls/MetalWalls-21.06.1-foss-2023a.eb b/easybuild/easyconfigs/m/MetalWalls/MetalWalls-21.06.1-foss-2023a.eb new file mode 100644 index 00000000000..7f8f6858397 --- /dev/null +++ b/easybuild/easyconfigs/m/MetalWalls/MetalWalls-21.06.1-foss-2023a.eb @@ -0,0 +1,47 @@ +name = 'MetalWalls' +version = '21.06.1' + +homepage = 'https://gitlab.com/ampere2/metalwalls' +description = """MetalWalls (MW) is a molecular dynamics code dedicated to the modelling of electrochemical systems. +Its main originality is the inclusion of a series of methods allowing to apply a constant potential within the +electrode materials.""" + +toolchain = {'name': 'foss', 'version': '2023a'} +toolchainopts = {'usempi': True} + +sources = [ + { + "filename": "metalwalls-%(version)s.tar.gz", + "git_config": { + "url": "https://gitlab.com/ampere2", + "repo_name": "metalwalls", + "tag": '%(version)s', + + }, + }, +] +checksums = [ + # # Holding off checksum checks untill 5.0.x + # # https://github.com/easybuilders/easybuild-framework/pull/4248 + # '8852bf5bd3591868cc2af6be378ac4dbfcd209d53acc176536038dbe69892b3d', + None +] + +builddependencies = [ + ("Python", "3.11.3"), + ("SciPy-bundle", "2023.07"), +] +dependencies = [ + ("PLUMED", "2.9.0"), + ("f90wrap", "0.2.13"), + ("mpi4py", "3.1.4") +] + +files_to_copy = [ + (['mw'], 'bin'), +] + +runtest = 'test' +pretestopts = 'export OMPI_MCA_rmaps_base_oversubscribe=true && ' # Test-suite requires minimum number of cores + +moduleclass = 'chem' diff --git a/easybuild/easyconfigs/m/Molpro/Molpro-mpp-2024.1.0.linux_x86_64_mpipr.eb b/easybuild/easyconfigs/m/Molpro/Molpro-mpp-2024.1.0.linux_x86_64_mpipr.eb new file mode 100644 index 00000000000..cf49bc2f86c --- /dev/null +++ b/easybuild/easyconfigs/m/Molpro/Molpro-mpp-2024.1.0.linux_x86_64_mpipr.eb @@ -0,0 +1,23 @@ +name = 'Molpro' +versionprefix = 'mpp-' +version = '2024.1.0' +versionsuffix = '.linux_x86_64_mpipr' + +homepage = 'https://www.molpro.net' +description = """Molpro is a complete system of ab initio programs for molecular electronic structure calculations.""" + +toolchain = SYSTEM + +download_instructions = """Molpro is proprietary software, see https://www.molpro.net/info/ordering.php + on how to obtain the software.""" + +sources = ['%(namelower)s-%(versionprefix)s%(version)s%(versionsuffix)s.sh'] +checksums = ['30ee6b4a807481ca1a118dfe16a00fae1cff50ce3b872cbfe49aa0f4702d13ad'] + +precompiled_binaries = True + +# license file - uncomment if a licence file is supplied by your site and +# is valid for all users - the value of license_file may have to be changed +# license_file = HOME + '/licenses/%(name)s/license.lic' + +moduleclass = 'chem' diff --git a/easybuild/easyconfigs/m/Molpro/Molpro-mpp-2024.1.0.linux_x86_64_sockets.eb b/easybuild/easyconfigs/m/Molpro/Molpro-mpp-2024.1.0.linux_x86_64_sockets.eb new file mode 100644 index 00000000000..74ee3b41b35 --- /dev/null +++ b/easybuild/easyconfigs/m/Molpro/Molpro-mpp-2024.1.0.linux_x86_64_sockets.eb @@ -0,0 +1,23 @@ +name = 'Molpro' +versionprefix = 'mpp-' +version = '2024.1.0' +versionsuffix = '.linux_x86_64_sockets' + +homepage = 'https://www.molpro.net' +description = """Molpro is a complete system of ab initio programs for molecular electronic structure calculations.""" + +toolchain = SYSTEM + +download_instructions = """Molpro is proprietary software, see https://www.molpro.net/info/ordering.php + on how to obtain the software.""" + +sources = ['%(namelower)s-%(versionprefix)s%(version)s%(versionsuffix)s.sh'] +checksums = ['0d983455af62816b91b92d6413948a626797670533d0d6e6e30ce4a0172df043'] + +precompiled_binaries = True + +# license file - uncomment if a licence file is supplied by your site and +# is valid for all users - the value of license_file may have to be changed +# license_file = HOME + '/licenses/%(name)s/license.lic' + +moduleclass = 'chem' diff --git a/easybuild/easyconfigs/m/MuJoCo/MuJoCo-3.1.4-GCCcore-12.3.0.eb b/easybuild/easyconfigs/m/MuJoCo/MuJoCo-3.1.4-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..fe1f93209e0 --- /dev/null +++ b/easybuild/easyconfigs/m/MuJoCo/MuJoCo-3.1.4-GCCcore-12.3.0.eb @@ -0,0 +1,48 @@ +easyblock = 'PackedBinary' + +name = 'MuJoCo' +version = '3.1.4' + +homepage = 'https://mujoco.org/' +description = """MuJoCo stands for Multi-Joint dynamics with Contact. It is a general purpose +physics engine that aims to facilitate research and development in robotics, +biomechanics, graphics and animation, machine learning, and other areas which +demand fast and accurate simulation of articulated structures interacting with +their environment.""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +source_urls = ['https://github.com/deepmind/mujoco/releases/download/%(version)s'] +sources = ['%(namelower)s-%(version)s-linux-%(arch)s.tar.gz'] +checksums = ['3bb373e081daaf6bf179d7f83dd8fa39e491a6daa4250a1b7ac42850309cb313'] + +builddependencies = [ + ('binutils', '2.40'), +] + +# MuJoCo bundles 3 variants of glew using non-standard sonames: +# - libglew with GLX +# - libglewegl with EGL +# - libglewosmesa with OSMESA +# - Software depending on MuJoCo expect these non-standard sonames, so they should not be removed +# - libglew and libglewegl seem to work with Mesa and X11 for toolchain GCCcore/11.2.0 +# - libglewosmesa has to be replaced as it links to an old libOSMesa + +dependencies = [ + ('glew', '2.2.0', '-osmesa'), +] + +postinstallcmds = [ + # replace bundled libglewosmesa.so with glew libs from EB + "ln -sf $EBROOTGLEW/lib64/libGLEW.so %(installdir)s/lib/libglewosmesa.so", +] + +sanity_check_paths = { + 'files': ['bin/basic', 'bin/record', 'bin/simulate', + 'lib/libmujoco.%s' % SHLIB_EXT], + 'dirs': ['include', 'model', 'sample'], +} + +sanity_check_commands = ['basic'] + +moduleclass = 'phys' diff --git a/easybuild/easyconfigs/m/m4ri/m4ri-20200125-GCC-13.2.0.eb b/easybuild/easyconfigs/m/m4ri/m4ri-20200125-GCC-13.2.0.eb new file mode 100644 index 00000000000..77325b93d92 --- /dev/null +++ b/easybuild/easyconfigs/m/m4ri/m4ri-20200125-GCC-13.2.0.eb @@ -0,0 +1,25 @@ +easyblock = 'ConfigureMake' + +name = 'm4ri' +version = '20200125' + +homepage = 'https://github.com/malb/m4ri' +description = "M4RI is a library for fast arithmetic with dense matrices over F2." + +toolchain = {'name': 'GCC', 'version': '13.2.0'} + +source_urls = ['https://github.com/malb/m4ri/archive/refs/tags/'] +sources = ['release-%(version)s.tar.gz'] +checksums = ['7369adcecb72d4dacfb23fd437a6b59a956f76b26dee07f32558cb915a9d6e9d'] + +builddependencies = [('Autotools', '20220317')] + +preconfigopts = "autoreconf --install && " +configopts = "--enable-openmp " + +sanity_check_paths = { + 'files': ['include/m4ri/m4ri.h', 'lib/libm4ri.a', 'lib/libm4ri.%s' % SHLIB_EXT], + 'dirs': [], +} + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/m/m4rie/m4rie-20200125-GCC-13.2.0.eb b/easybuild/easyconfigs/m/m4rie/m4rie-20200125-GCC-13.2.0.eb new file mode 100644 index 00000000000..e1fa04ffef0 --- /dev/null +++ b/easybuild/easyconfigs/m/m4rie/m4rie-20200125-GCC-13.2.0.eb @@ -0,0 +1,27 @@ +easyblock = 'ConfigureMake' + +name = 'm4rie' +version = '20200125' + +homepage = 'https://github.com/malb/m4rie' +description = "M4RIE is a library for fast arithmetic with dense matrices." + +toolchain = {'name': 'GCC', 'version': '13.2.0'} + +source_urls = ['https://github.com/malb/m4rie/archive/refs/tags/'] +sources = ['release-%(version)s.tar.gz'] +checksums = ['bc5c515e6151203b7a483f6ca84a22ec8c0407ea3621d8e11de3c997b5009d69'] + +builddependencies = [('Autotools', '20220317')] + +dependencies = [('m4ri', version)] + +preconfigopts = "autoreconf --install && " +configopts = "--enable-openmp " + +sanity_check_paths = { + 'files': ['include/m4rie/m4rie.h'] + ['lib/libm4rie.%s' % e for e in ['a', SHLIB_EXT]], + 'dirs': [], +} + +moduleclass = 'math' 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/make/make-4.4.1-GCCcore-13.3.0.eb b/easybuild/easyconfigs/m/make/make-4.4.1-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..040ca1f7716 --- /dev/null +++ b/easybuild/easyconfigs/m/make/make-4.4.1-GCCcore-13.3.0.eb @@ -0,0 +1,29 @@ +easyblock = 'ConfigureMake' + +name = 'make' +version = '4.4.1' + +homepage = 'https://www.gnu.org/software/make/make.html' +description = "GNU version of make utility" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = [GNU_SOURCE] +sources = [SOURCE_TAR_GZ] +checksums = ['dd16fb1d67bfab79a72f5e8390735c49e3e8e70b4945a15ab1f81ddb78658fb3'] + +builddependencies = [('binutils', '2.42')] + +postinstallcmds = ["cd %(installdir)s/bin && ln -s make gmake"] + +sanity_check_paths = { + 'files': ['bin/gmake', 'bin/make'], + 'dirs': [] +} + +sanity_check_commands = [ + "gmake --help", + "make --help", +] + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/m/makefun/makefun-1.15.2-GCCcore-12.3.0.eb b/easybuild/easyconfigs/m/makefun/makefun-1.15.2-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..b4b0097cc53 --- /dev/null +++ b/easybuild/easyconfigs/m/makefun/makefun-1.15.2-GCCcore-12.3.0.eb @@ -0,0 +1,32 @@ +# Thomas Hoffmann, EMBL Heidelberg, structures-it@embl.de, 2024/02 +easyblock = 'PythonBundle' + +name = 'makefun' +version = '1.15.2' + +homepage = 'https://github.com/smarie/python-makefun' +description = """Small library to dynamically create python functions. +makefun helps you create functions dynamically, with the signature of your +choice. It was largely inspired by decorator and functools, and created mainly +to cover some of their limitations.""" +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +builddependencies = [ + ('binutils', '2.40'), + ('poetry', '1.5.1'), +] +dependencies = [ + ('Python', '3.11.3'), +] + +use_pip = True + +exts_list = [ + (name, version, { + 'checksums': ['16f2a2b34d9ee0c2b578c960a1808c974e2822cf79f6e9b9c455aace10882d45'], + }), +] + +sanity_pip_check = True + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/m/makeinfo/makeinfo-7.1-GCCcore-13.3.0.eb b/easybuild/easyconfigs/m/makeinfo/makeinfo-7.1-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..b2d35c079d4 --- /dev/null +++ b/easybuild/easyconfigs/m/makeinfo/makeinfo-7.1-GCCcore-13.3.0.eb @@ -0,0 +1,25 @@ +easyblock = 'ConfigureMake' + +name = 'makeinfo' +version = '7.1' + +homepage = 'https://www.gnu.org/software/texinfo/' +description = """makeinfo is part of the Texinfo project, the official documentation format of the GNU project.""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = ['https://ftpmirror.gnu.org/gnu/texinfo'] +sources = ['texinfo-%(version)s.tar.xz'] +checksums = ['deeec9f19f159e046fdf8ad22231981806dac332cc372f1c763504ad82b30953'] + +builddependencies = [('binutils', '2.42')] +dependencies = [('Perl', '5.38.2')] + +sanity_check_paths = { + 'files': ['bin/makeinfo'], + 'dirs': ['share'], +} + +sanity_check_commands = ["makeinfo --help"] + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/m/matlab-proxy/matlab-proxy-0.18.1-GCCcore-12.3.0.eb b/easybuild/easyconfigs/m/matlab-proxy/matlab-proxy-0.18.1-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..bf1c9fec2ed --- /dev/null +++ b/easybuild/easyconfigs/m/matlab-proxy/matlab-proxy-0.18.1-GCCcore-12.3.0.eb @@ -0,0 +1,46 @@ +easyblock = "PythonBundle" + +name = 'matlab-proxy' +version = '0.18.1' + +homepage = 'https://github.com/mathworks/matlab-proxy' +description = "A Python package which enables you to launch MATLAB and access it from a web browser." + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +builddependencies = [ + ('binutils', '2.40'), + ('nodejs', '18.17.1'), +] + +dependencies = [ + ('Python', '3.11.3'), + ('aiohttp', '3.8.5'), + ('Xvfb', '21.1.8'), +] + +use_pip = True +sanity_pip_check = True + +exts_list = [ + ('aiohttp-session', '2.12.0', { + 'checksums': ['0ccd11a7c77cb9e5a61f4daacdc9170d561112f9cfaf9e9a2d9867c0587d1950'], + }), + (name, version, { + 'patches': ['%(name)s-%(version)s_use_lic_from_eb_installed_matlab.patch'], + 'checksums': [ + {'matlab-proxy-0.18.1.tar.gz': 'c6ffe60de2e34b007f94b61c6c2f29b38115e4c9cb8b1e8f45d42a2713e0ac24'}, + {'matlab-proxy-0.18.1_use_lic_from_eb_installed_matlab.patch': + 'a6b994d8b511bd00f86f232c9d9cf230883090b575383a42c06857f26ea08210'}, + ], + }), +] + +sanity_check_paths = { + 'files': ['bin/matlab-proxy-app'], + 'dirs': ['lib64/python%(pyshortver)s/site-packages'] +} + +modloadmsg = 'matlab-proxy requires MATLAB to be loaded separately and BEFORE this module (2020b or later)' + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/m/matlab-proxy/matlab-proxy-0.18.1_use_lic_from_eb_installed_matlab.patch b/easybuild/easyconfigs/m/matlab-proxy/matlab-proxy-0.18.1_use_lic_from_eb_installed_matlab.patch new file mode 100644 index 00000000000..a37df91943d --- /dev/null +++ b/easybuild/easyconfigs/m/matlab-proxy/matlab-proxy-0.18.1_use_lic_from_eb_installed_matlab.patch @@ -0,0 +1,23 @@ +Use the license file from EB's MATLAB installation by default +Author: Mikael Öhman micketeer@gmail.com +--- matlab_proxy/settings.py.orig 2024-05-30 16:01:07.778707000 +0200 ++++ matlab_proxy/settings.py 2024-05-30 16:03:48.517654923 +0200 +@@ -357,9 +357,16 @@ + # folder may cause hinderance in this workflow. So specifying -licmode as 'file' + # overrides license_info.xml and enforces MLM_LICENSE_FILE to be the topmost priority + +- # NLM Connection String provided by MLM_LICENSE_FILE environment variable ++ license_file = None ++ if mwi_env.get_env_name_network_license_manager() in os.environ: ++ # NLM Connection String provided by MLM_LICENSE_FILE environment variable ++ license_file = os.environ.get(mwi_env.get_env_name_network_license_manager()) ++ elif 'EBROOTMATLAB' in os.environ: ++ # License file provided by MATLAB installation in EasyBuild ++ license_file = os.environ.get('EBROOTMATLAB') + '/licenses/network.lic' ++ + nlm_conn_str = mwi.validators.validate_mlm_license_file( +- os.environ.get(mwi_env.get_env_name_network_license_manager()) ++ license_file + ) + matlab_lic_mode = ["-licmode", "file"] if nlm_conn_str else "" + # flag to hide MATLAB Window diff --git a/easybuild/easyconfigs/m/ml-collections/ml-collections-0.1.1-foss-2022a.eb b/easybuild/easyconfigs/m/ml-collections/ml-collections-0.1.1-foss-2022a.eb new file mode 100644 index 00000000000..d29a795341f --- /dev/null +++ b/easybuild/easyconfigs/m/ml-collections/ml-collections-0.1.1-foss-2022a.eb @@ -0,0 +1,38 @@ +easyblock = 'PythonBundle' + +name = 'ml-collections' +version = '0.1.1' + +homepage = 'https://github.com/google/ml_collections' +description = """ +ML Collections is a library of Python Collections designed for ML use cases. +""" + +toolchain = {'name': 'foss', 'version': '2022a'} + +dependencies = [ + ('Python', '3.10.4'), + ('SciPy-bundle', '2022.05'), + ('PyYAML', '6.0'), +] + + +use_pip = True + +exts_list = [ + ('absl-py', '1.4.0', { + 'modulename': 'absl', + 'checksums': ['d2c244d01048ba476e7c080bd2c6df5e141d211de80223460d5b3b8a2a58433d'], + }), + ('contextlib2', '21.6.0', { + 'checksums': ['ab1e2bfe1d01d968e1b7e8d9023bc51ef3509bba217bb730cee3827e1ee82869'], + }), + ('ml_collections', version, { + 'preinstallopts': "touch requirements.txt && touch requirements-test.txt && ", + 'checksums': ['3fefcc72ec433aa1e5d32307a3e474bbb67f405be814ea52a2166bfc9dbe68cc'], + }), +] + +sanity_pip_check = True + +moduleclass = 'vis' diff --git a/easybuild/easyconfigs/m/ml_dtypes/ml_dtypes-0.3.2-gfbf-2023a.eb b/easybuild/easyconfigs/m/ml_dtypes/ml_dtypes-0.3.2-gfbf-2023a.eb new file mode 100644 index 00000000000..9c3a18bfdb5 --- /dev/null +++ b/easybuild/easyconfigs/m/ml_dtypes/ml_dtypes-0.3.2-gfbf-2023a.eb @@ -0,0 +1,51 @@ +# Thomas Hoffmann, EMBL Heidelberg, structures-it@embl.de, 2024/02 +easyblock = 'PythonBundle' + +name = 'ml_dtypes' +version = '0.3.2' + +homepage = 'https://github.com/jax-ml/ml_dtypes' +description = """ +ml_dtypes is a stand-alone implementation of several NumPy dtype extensions used +in machine learning libraries, including: + +bfloat16: an alternative to the standard float16 format +float8_*: several experimental 8-bit floating point representations including: +float8_e4m3b11fnuz +float8_e4m3fn +float8_e4m3fnuz +float8_e5m2 +float8_e5m2fnuz +""" + +toolchain = {'name': 'gfbf', 'version': '2023a'} + +dependencies = [ + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), +] + + +use_pip = True + +default_easyblock = 'PythonPackage' + +exts_list = [ + ('opt_einsum', '3.3.0', { + 'checksums': ['59f6475f77bbc37dcf7cd748519c0ec60722e91e63ca114e68821c0c54a46549'], + }), + ('etils', '1.6.0', { + 'checksums': ['c635fbd02a79fed4ad76825d31306b581d22b40671721daa8bc279cf6333e48a'], + }), + (name, version, { + 'patches': [('ml_dtypes-0.3.2_EigenAvx512.patch', 1)], + 'checksums': [ + {'ml_dtypes-0.3.2.tar.gz': '533059bc5f1764fac071ef54598db358c167c51a718f68f5bb55e3dee79d2967'}, + {'ml_dtypes-0.3.2_EigenAvx512.patch': '197b05b0b7f611749824369f026099f6a172f9e8eab6ebb6504a16573746c892'}, + ], + }), +] + +sanity_pip_check = True + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/m/ml_dtypes/ml_dtypes-0.3.2_EigenAvx512.patch b/easybuild/easyconfigs/m/ml_dtypes/ml_dtypes-0.3.2_EigenAvx512.patch new file mode 100644 index 00000000000..42ea0606391 --- /dev/null +++ b/easybuild/easyconfigs/m/ml_dtypes/ml_dtypes-0.3.2_EigenAvx512.patch @@ -0,0 +1,1219 @@ +# Thomas Hoffmann, EMBL Heidelberg, structures-it@embl.de, 2024/01 +# ml_dtype 0.3.2 ships a copy of Eigen commit 7bf2968 (https://gitlab.com/libeigen/eigen/-/commit/7bf2968). +# This copy is missing the file src/Core/arch/AVX512/TrsmUnrolls.inc, which is added by the present patch. +diff -ru --new-file old/third_party_ori/eigen/Eigen/src/Core/arch/AVX512/TrsmUnrolls.inc new/third_party/eigen/Eigen/src/Core/arch/AVX512/TrsmUnrolls.inc +--- old/third_party/eigen/Eigen/src/Core/arch/AVX512/TrsmUnrolls.inc 1970-01-01 01:00:00.000000000 +0100 ++++ new/third_party/eigen/Eigen/src/Core/arch/AVX512/TrsmUnrolls.inc 2024-02-14 10:32:25.492978066 +0100 +@@ -0,0 +1,1212 @@ ++// This file is part of Eigen, a lightweight C++ template library ++// for linear algebra. ++// ++// Copyright (C) 2022 Intel Corporation ++// ++// This Source Code Form is subject to the terms of the Mozilla ++// Public License v. 2.0. If a copy of the MPL was not distributed ++// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. ++ ++#ifndef EIGEN_CORE_ARCH_AVX512_TRSM_UNROLLS_H ++#define EIGEN_CORE_ARCH_AVX512_TRSM_UNROLLS_H ++ ++template ++EIGEN_ALWAYS_INLINE int64_t idA(int64_t i, int64_t j, int64_t LDA) { ++ EIGEN_IF_CONSTEXPR(isARowMajor) return i * LDA + j; ++ else return i + j * LDA; ++} ++ ++/** ++ * This namespace contains various classes used to generate compile-time unrolls which are ++ * used throughout the trsm/gemm kernels. The unrolls are characterized as for-loops (1-D), nested ++ * for-loops (2-D), or triple nested for-loops (3-D). Unrolls are generated using template recursion ++ * ++ * Example, the 2-D for-loop is unrolled recursively by first flattening to a 1-D loop. ++ * ++ * for(startI = 0; startI < endI; startI++) for(startC = 0; startC < endI*endJ; startC++) ++ * for(startJ = 0; startJ < endJ; startJ++) ----> startI = (startC)/(endJ) ++ * func(startI,startJ) startJ = (startC)%(endJ) ++ * func(...) ++ * ++ * The 1-D loop can be unrolled recursively by using enable_if and defining an auxillary function ++ * with a template parameter used as a counter. ++ * ++ * template ++ * std::enable_if_t<(counter <= 0)> <---- tail case. ++ * aux_func {} ++ * ++ * template ++ * std::enable_if_t<(counter > 0)> <---- actual for-loop ++ * aux_func { ++ * startC = endI*endJ - counter ++ * startI = (startC)/(endJ) ++ * startJ = (startC)%(endJ) ++ * func(startI, startJ) ++ * aux_func() ++ * } ++ * ++ * Note: Additional wrapper functions are provided for aux_func which hides the counter template ++ * parameter since counter usually depends on endI, endJ, etc... ++ * ++ * Conventions: ++ * 1) endX: specifies the terminal value for the for-loop, (ex: for(startX = 0; startX < endX; startX++)) ++ * ++ * 2) rem, remM, remK template parameters are used for deciding whether to use masked operations for ++ * handling remaining tails (when sizes are not multiples of PacketSize or EIGEN_AVX_MAX_NUM_ROW) ++ */ ++namespace unrolls { ++ ++template ++EIGEN_ALWAYS_INLINE auto remMask(int64_t m) { ++ EIGEN_IF_CONSTEXPR(N == 16) { return 0xFFFF >> (16 - m); } ++ else EIGEN_IF_CONSTEXPR(N == 8) { ++ return 0xFF >> (8 - m); ++ } ++ else EIGEN_IF_CONSTEXPR(N == 4) { ++ return 0x0F >> (4 - m); ++ } ++ return 0; ++} ++ ++template ++EIGEN_ALWAYS_INLINE void trans8x8blocks(PacketBlock &kernel); ++ ++template <> ++EIGEN_ALWAYS_INLINE void trans8x8blocks(PacketBlock &kernel) { ++ __m512 T0 = _mm512_unpacklo_ps(kernel.packet[0], kernel.packet[1]); ++ __m512 T1 = _mm512_unpackhi_ps(kernel.packet[0], kernel.packet[1]); ++ __m512 T2 = _mm512_unpacklo_ps(kernel.packet[2], kernel.packet[3]); ++ __m512 T3 = _mm512_unpackhi_ps(kernel.packet[2], kernel.packet[3]); ++ __m512 T4 = _mm512_unpacklo_ps(kernel.packet[4], kernel.packet[5]); ++ __m512 T5 = _mm512_unpackhi_ps(kernel.packet[4], kernel.packet[5]); ++ __m512 T6 = _mm512_unpacklo_ps(kernel.packet[6], kernel.packet[7]); ++ __m512 T7 = _mm512_unpackhi_ps(kernel.packet[6], kernel.packet[7]); ++ ++ kernel.packet[0] = _mm512_castpd_ps(_mm512_unpacklo_pd(_mm512_castps_pd(T0), _mm512_castps_pd(T2))); ++ kernel.packet[1] = _mm512_castpd_ps(_mm512_unpackhi_pd(_mm512_castps_pd(T0), _mm512_castps_pd(T2))); ++ kernel.packet[2] = _mm512_castpd_ps(_mm512_unpacklo_pd(_mm512_castps_pd(T1), _mm512_castps_pd(T3))); ++ kernel.packet[3] = _mm512_castpd_ps(_mm512_unpackhi_pd(_mm512_castps_pd(T1), _mm512_castps_pd(T3))); ++ kernel.packet[4] = _mm512_castpd_ps(_mm512_unpacklo_pd(_mm512_castps_pd(T4), _mm512_castps_pd(T6))); ++ kernel.packet[5] = _mm512_castpd_ps(_mm512_unpackhi_pd(_mm512_castps_pd(T4), _mm512_castps_pd(T6))); ++ kernel.packet[6] = _mm512_castpd_ps(_mm512_unpacklo_pd(_mm512_castps_pd(T5), _mm512_castps_pd(T7))); ++ kernel.packet[7] = _mm512_castpd_ps(_mm512_unpackhi_pd(_mm512_castps_pd(T5), _mm512_castps_pd(T7))); ++ ++ T0 = _mm512_castpd_ps(_mm512_permutex_pd(_mm512_castps_pd(kernel.packet[4]), 0x4E)); ++ T0 = _mm512_mask_blend_ps(0xF0F0, kernel.packet[0], T0); ++ T4 = _mm512_castpd_ps(_mm512_permutex_pd(_mm512_castps_pd(kernel.packet[0]), 0x4E)); ++ T4 = _mm512_mask_blend_ps(0xF0F0, T4, kernel.packet[4]); ++ T1 = _mm512_castpd_ps(_mm512_permutex_pd(_mm512_castps_pd(kernel.packet[5]), 0x4E)); ++ T1 = _mm512_mask_blend_ps(0xF0F0, kernel.packet[1], T1); ++ T5 = _mm512_castpd_ps(_mm512_permutex_pd(_mm512_castps_pd(kernel.packet[1]), 0x4E)); ++ T5 = _mm512_mask_blend_ps(0xF0F0, T5, kernel.packet[5]); ++ T2 = _mm512_castpd_ps(_mm512_permutex_pd(_mm512_castps_pd(kernel.packet[6]), 0x4E)); ++ T2 = _mm512_mask_blend_ps(0xF0F0, kernel.packet[2], T2); ++ T6 = _mm512_castpd_ps(_mm512_permutex_pd(_mm512_castps_pd(kernel.packet[2]), 0x4E)); ++ T6 = _mm512_mask_blend_ps(0xF0F0, T6, kernel.packet[6]); ++ T3 = _mm512_castpd_ps(_mm512_permutex_pd(_mm512_castps_pd(kernel.packet[7]), 0x4E)); ++ T3 = _mm512_mask_blend_ps(0xF0F0, kernel.packet[3], T3); ++ T7 = _mm512_castpd_ps(_mm512_permutex_pd(_mm512_castps_pd(kernel.packet[3]), 0x4E)); ++ T7 = _mm512_mask_blend_ps(0xF0F0, T7, kernel.packet[7]); ++ ++ kernel.packet[0] = T0; ++ kernel.packet[1] = T1; ++ kernel.packet[2] = T2; ++ kernel.packet[3] = T3; ++ kernel.packet[4] = T4; ++ kernel.packet[5] = T5; ++ kernel.packet[6] = T6; ++ kernel.packet[7] = T7; ++} ++ ++template <> ++EIGEN_ALWAYS_INLINE void trans8x8blocks(PacketBlock &kernel) { ++ ptranspose(kernel); ++} ++ ++/*** ++ * Unrolls for tranposed C stores ++ */ ++template ++class trans { ++ public: ++ using vec = typename std::conditional::value, vecFullFloat, vecFullDouble>::type; ++ using vecHalf = typename std::conditional::value, vecHalfFloat, vecFullDouble>::type; ++ static constexpr int64_t PacketSize = packet_traits::size; ++ ++ /*********************************** ++ * Auxillary Functions for: ++ * - storeC ++ *********************************** ++ */ ++ ++ /** ++ * aux_storeC ++ * ++ * 1-D unroll ++ * for(startN = 0; startN < endN; startN++) ++ * ++ * (endN <= PacketSize) is required to handle the fp32 case, see comments in transStoreC ++ * ++ **/ ++ template ++ static EIGEN_ALWAYS_INLINE std::enable_if_t<(counter > 0 && endN <= PacketSize)> aux_storeC( ++ Scalar *C_arr, int64_t LDC, PacketBlock &zmm, int64_t remM_ = 0) { ++ constexpr int64_t counterReverse = endN - counter; ++ constexpr int64_t startN = counterReverse; ++ ++ EIGEN_IF_CONSTEXPR(startN < EIGEN_AVX_MAX_NUM_ROW) { ++ EIGEN_IF_CONSTEXPR(remM) { ++ pstoreu( ++ C_arr + LDC * startN, ++ padd(ploadu((const Scalar *)C_arr + LDC * startN, remMask(remM_)), ++ preinterpret(zmm.packet[packetIndexOffset + (unrollN / PacketSize) * startN]), ++ remMask(remM_)), ++ remMask(remM_)); ++ } ++ else { ++ pstoreu(C_arr + LDC * startN, ++ padd(ploadu((const Scalar *)C_arr + LDC * startN), ++ preinterpret(zmm.packet[packetIndexOffset + (unrollN / PacketSize) * startN]))); ++ } ++ } ++ else { // This block is only needed for fp32 case ++ // Reinterpret as __m512 for _mm512_shuffle_f32x4 ++ vecFullFloat zmm2vecFullFloat = preinterpret( ++ zmm.packet[packetIndexOffset + (unrollN / PacketSize) * (startN - EIGEN_AVX_MAX_NUM_ROW)]); ++ // Swap lower and upper half of avx register. ++ zmm.packet[packetIndexOffset + (unrollN / PacketSize) * (startN - EIGEN_AVX_MAX_NUM_ROW)] = ++ preinterpret(_mm512_shuffle_f32x4(zmm2vecFullFloat, zmm2vecFullFloat, 0b01001110)); ++ ++ EIGEN_IF_CONSTEXPR(remM) { ++ pstoreu( ++ C_arr + LDC * startN, ++ padd(ploadu((const Scalar *)C_arr + LDC * startN, remMask(remM_)), ++ preinterpret( ++ zmm.packet[packetIndexOffset + (unrollN / PacketSize) * (startN - EIGEN_AVX_MAX_NUM_ROW)])), ++ remMask(remM_)); ++ } ++ else { ++ pstoreu( ++ C_arr + LDC * startN, ++ padd(ploadu((const Scalar *)C_arr + LDC * startN), ++ preinterpret( ++ zmm.packet[packetIndexOffset + (unrollN / PacketSize) * (startN - EIGEN_AVX_MAX_NUM_ROW)]))); ++ } ++ } ++ aux_storeC(C_arr, LDC, zmm, remM_); ++ } ++ ++ template ++ static EIGEN_ALWAYS_INLINE std::enable_if_t 0 && endN <= PacketSize)> aux_storeC( ++ Scalar *C_arr, int64_t LDC, PacketBlock &zmm, int64_t remM_ = 0) { ++ EIGEN_UNUSED_VARIABLE(C_arr); ++ EIGEN_UNUSED_VARIABLE(LDC); ++ EIGEN_UNUSED_VARIABLE(zmm); ++ EIGEN_UNUSED_VARIABLE(remM_); ++ } ++ ++ template ++ static EIGEN_ALWAYS_INLINE void storeC(Scalar *C_arr, int64_t LDC, ++ PacketBlock &zmm, ++ int64_t remM_ = 0) { ++ aux_storeC(C_arr, LDC, zmm, remM_); ++ } ++ ++ /** ++ * Transposes LxunrollN row major block of matrices stored EIGEN_AVX_MAX_NUM_ACC zmm registers to ++ * "unrollN"xL ymm registers to be stored col-major into C. ++ * ++ * For 8x48, the 8x48 block (row-major) is stored in zmm as follows: ++ * ++ * row0: zmm0 zmm1 zmm2 ++ * row1: zmm3 zmm4 zmm5 ++ * . ++ * . ++ * row7: zmm21 zmm22 zmm23 ++ * ++ * For 8x32, the 8x32 block (row-major) is stored in zmm as follows: ++ * ++ * row0: zmm0 zmm1 ++ * row1: zmm2 zmm3 ++ * . ++ * . ++ * row7: zmm14 zmm15 ++ * ++ * ++ * In general we will have {1,2,3} groups of avx registers each of size ++ * EIGEN_AVX_MAX_NUM_ROW. packetIndexOffset is used to select which "block" of ++ * avx registers are being transposed. ++ */ ++ template ++ static EIGEN_ALWAYS_INLINE void transpose(PacketBlock &zmm) { ++ // Note: this assumes EIGEN_AVX_MAX_NUM_ROW = 8. Unrolls should be adjusted ++ // accordingly if EIGEN_AVX_MAX_NUM_ROW is smaller. ++ constexpr int64_t zmmStride = unrollN / PacketSize; ++ PacketBlock r; ++ r.packet[0] = zmm.packet[packetIndexOffset + zmmStride * 0]; ++ r.packet[1] = zmm.packet[packetIndexOffset + zmmStride * 1]; ++ r.packet[2] = zmm.packet[packetIndexOffset + zmmStride * 2]; ++ r.packet[3] = zmm.packet[packetIndexOffset + zmmStride * 3]; ++ r.packet[4] = zmm.packet[packetIndexOffset + zmmStride * 4]; ++ r.packet[5] = zmm.packet[packetIndexOffset + zmmStride * 5]; ++ r.packet[6] = zmm.packet[packetIndexOffset + zmmStride * 6]; ++ r.packet[7] = zmm.packet[packetIndexOffset + zmmStride * 7]; ++ trans8x8blocks(r); ++ zmm.packet[packetIndexOffset + zmmStride * 0] = r.packet[0]; ++ zmm.packet[packetIndexOffset + zmmStride * 1] = r.packet[1]; ++ zmm.packet[packetIndexOffset + zmmStride * 2] = r.packet[2]; ++ zmm.packet[packetIndexOffset + zmmStride * 3] = r.packet[3]; ++ zmm.packet[packetIndexOffset + zmmStride * 4] = r.packet[4]; ++ zmm.packet[packetIndexOffset + zmmStride * 5] = r.packet[5]; ++ zmm.packet[packetIndexOffset + zmmStride * 6] = r.packet[6]; ++ zmm.packet[packetIndexOffset + zmmStride * 7] = r.packet[7]; ++ } ++}; ++ ++/** ++ * Unrolls for copyBToRowMajor ++ * ++ * Idea: ++ * 1) Load a block of right-hand sides to registers (using loadB). ++ * 2) Convert the block from column-major to row-major (transposeLxL) ++ * 3) Store the blocks from register either to a temp array (toTemp == true), or back to B (toTemp == false). ++ * ++ * We use at most EIGEN_AVX_MAX_NUM_ACC avx registers to store the blocks of B. The remaining registers are ++ * used as temps for transposing. ++ * ++ * Blocks will be of size Lx{U1,U2,U3}. packetIndexOffset is used to index between these subblocks ++ * For fp32, PacketSize = 2*EIGEN_AVX_MAX_NUM_ROW, so we reinterpret packets as packets half the size (zmm -> ymm). ++ */ ++template ++class transB { ++ public: ++ using vec = typename std::conditional::value, vecFullFloat, vecFullDouble>::type; ++ using vecHalf = typename std::conditional::value, vecHalfFloat, vecFullDouble>::type; ++ static constexpr int64_t PacketSize = packet_traits::size; ++ ++ /*********************************** ++ * Auxillary Functions for: ++ * - loadB ++ * - storeB ++ * - loadBBlock ++ * - storeBBlock ++ *********************************** ++ */ ++ ++ /** ++ * aux_loadB ++ * ++ * 1-D unroll ++ * for(startN = 0; startN < endN; startN++) ++ **/ ++ template ++ static EIGEN_ALWAYS_INLINE std::enable_if_t<(counter > 0)> aux_loadB( ++ Scalar *B_arr, int64_t LDB, PacketBlock &ymm, ++ int64_t remM_ = 0) { ++ constexpr int64_t counterReverse = endN - counter; ++ constexpr int64_t startN = counterReverse; ++ ++ EIGEN_IF_CONSTEXPR(remM) { ++ ymm.packet[packetIndexOffset + startN] = ++ ploadu((const Scalar *)&B_arr[startN * LDB], remMask(remM_)); ++ } ++ else ymm.packet[packetIndexOffset + startN] = ploadu((const Scalar *)&B_arr[startN * LDB]); ++ ++ aux_loadB(B_arr, LDB, ymm, remM_); ++ } ++ ++ template ++ static EIGEN_ALWAYS_INLINE std::enable_if_t<(counter <= 0)> aux_loadB( ++ Scalar *B_arr, int64_t LDB, PacketBlock &ymm, ++ int64_t remM_ = 0) { ++ EIGEN_UNUSED_VARIABLE(B_arr); ++ EIGEN_UNUSED_VARIABLE(LDB); ++ EIGEN_UNUSED_VARIABLE(ymm); ++ EIGEN_UNUSED_VARIABLE(remM_); ++ } ++ ++ /** ++ * aux_storeB ++ * ++ * 1-D unroll ++ * for(startN = 0; startN < endN; startN++) ++ **/ ++ template ++ static EIGEN_ALWAYS_INLINE std::enable_if_t<(counter > 0)> aux_storeB( ++ Scalar *B_arr, int64_t LDB, PacketBlock &ymm, int64_t rem_ = 0) { ++ constexpr int64_t counterReverse = endN - counter; ++ constexpr int64_t startN = counterReverse; ++ ++ EIGEN_IF_CONSTEXPR(remK || remM) { ++ pstoreu(&B_arr[startN * LDB], ymm.packet[packetIndexOffset + startN], ++ remMask(rem_)); ++ } ++ else { ++ pstoreu(&B_arr[startN * LDB], ymm.packet[packetIndexOffset + startN]); ++ } ++ ++ aux_storeB(B_arr, LDB, ymm, rem_); ++ } ++ ++ template ++ static EIGEN_ALWAYS_INLINE std::enable_if_t<(counter <= 0)> aux_storeB( ++ Scalar *B_arr, int64_t LDB, PacketBlock &ymm, int64_t rem_ = 0) { ++ EIGEN_UNUSED_VARIABLE(B_arr); ++ EIGEN_UNUSED_VARIABLE(LDB); ++ EIGEN_UNUSED_VARIABLE(ymm); ++ EIGEN_UNUSED_VARIABLE(rem_); ++ } ++ ++ /** ++ * aux_loadBBlock ++ * ++ * 1-D unroll ++ * for(startN = 0; startN < endN; startN += EIGEN_AVX_MAX_NUM_ROW) ++ **/ ++ template ++ static EIGEN_ALWAYS_INLINE std::enable_if_t<(counter > 0)> aux_loadBBlock( ++ Scalar *B_arr, int64_t LDB, Scalar *B_temp, int64_t LDB_, ++ PacketBlock &ymm, int64_t remM_ = 0) { ++ constexpr int64_t counterReverse = endN - counter; ++ constexpr int64_t startN = counterReverse; ++ transB::template loadB(&B_temp[startN], LDB_, ymm); ++ aux_loadBBlock(B_arr, LDB, B_temp, LDB_, ymm, remM_); ++ } ++ ++ template ++ static EIGEN_ALWAYS_INLINE std::enable_if_t<(counter <= 0)> aux_loadBBlock( ++ Scalar *B_arr, int64_t LDB, Scalar *B_temp, int64_t LDB_, ++ PacketBlock &ymm, int64_t remM_ = 0) { ++ EIGEN_UNUSED_VARIABLE(B_arr); ++ EIGEN_UNUSED_VARIABLE(LDB); ++ EIGEN_UNUSED_VARIABLE(B_temp); ++ EIGEN_UNUSED_VARIABLE(LDB_); ++ EIGEN_UNUSED_VARIABLE(ymm); ++ EIGEN_UNUSED_VARIABLE(remM_); ++ } ++ ++ /** ++ * aux_storeBBlock ++ * ++ * 1-D unroll ++ * for(startN = 0; startN < endN; startN += EIGEN_AVX_MAX_NUM_ROW) ++ **/ ++ template ++ static EIGEN_ALWAYS_INLINE std::enable_if_t<(counter > 0)> aux_storeBBlock( ++ Scalar *B_arr, int64_t LDB, Scalar *B_temp, int64_t LDB_, ++ PacketBlock &ymm, int64_t remM_ = 0) { ++ constexpr int64_t counterReverse = endN - counter; ++ constexpr int64_t startN = counterReverse; ++ ++ EIGEN_IF_CONSTEXPR(toTemp) { ++ transB::template storeB(&B_temp[startN], LDB_, ymm, remK_); ++ } ++ else { ++ transB::template storeB(&B_arr[0 + startN * LDB], LDB, ++ ymm, remM_); ++ } ++ aux_storeBBlock(B_arr, LDB, B_temp, LDB_, ymm, remM_); ++ } ++ ++ template ++ static EIGEN_ALWAYS_INLINE std::enable_if_t<(counter <= 0)> aux_storeBBlock( ++ Scalar *B_arr, int64_t LDB, Scalar *B_temp, int64_t LDB_, ++ PacketBlock &ymm, int64_t remM_ = 0) { ++ EIGEN_UNUSED_VARIABLE(B_arr); ++ EIGEN_UNUSED_VARIABLE(LDB); ++ EIGEN_UNUSED_VARIABLE(B_temp); ++ EIGEN_UNUSED_VARIABLE(LDB_); ++ EIGEN_UNUSED_VARIABLE(ymm); ++ EIGEN_UNUSED_VARIABLE(remM_); ++ } ++ ++ /******************************************************** ++ * Wrappers for aux_XXXX to hide counter parameter ++ ********************************************************/ ++ ++ template ++ static EIGEN_ALWAYS_INLINE void loadB(Scalar *B_arr, int64_t LDB, ++ PacketBlock &ymm, ++ int64_t remM_ = 0) { ++ aux_loadB(B_arr, LDB, ymm, remM_); ++ } ++ ++ template ++ static EIGEN_ALWAYS_INLINE void storeB(Scalar *B_arr, int64_t LDB, ++ PacketBlock &ymm, ++ int64_t rem_ = 0) { ++ aux_storeB(B_arr, LDB, ymm, rem_); ++ } ++ ++ template ++ static EIGEN_ALWAYS_INLINE void loadBBlock(Scalar *B_arr, int64_t LDB, Scalar *B_temp, int64_t LDB_, ++ PacketBlock &ymm, ++ int64_t remM_ = 0) { ++ EIGEN_IF_CONSTEXPR(toTemp) { transB::template loadB(&B_arr[0], LDB, ymm, remM_); } ++ else { ++ aux_loadBBlock(B_arr, LDB, B_temp, LDB_, ymm, remM_); ++ } ++ } ++ ++ template ++ static EIGEN_ALWAYS_INLINE void storeBBlock(Scalar *B_arr, int64_t LDB, Scalar *B_temp, int64_t LDB_, ++ PacketBlock &ymm, ++ int64_t remM_ = 0) { ++ aux_storeBBlock(B_arr, LDB, B_temp, LDB_, ymm, remM_); ++ } ++ ++ template ++ static EIGEN_ALWAYS_INLINE void transposeLxL(PacketBlock &ymm) { ++ // Note: this assumes EIGEN_AVX_MAX_NUM_ROW = 8. Unrolls should be adjusted ++ // accordingly if EIGEN_AVX_MAX_NUM_ROW is smaller. ++ PacketBlock r; ++ r.packet[0] = ymm.packet[packetIndexOffset + 0]; ++ r.packet[1] = ymm.packet[packetIndexOffset + 1]; ++ r.packet[2] = ymm.packet[packetIndexOffset + 2]; ++ r.packet[3] = ymm.packet[packetIndexOffset + 3]; ++ r.packet[4] = ymm.packet[packetIndexOffset + 4]; ++ r.packet[5] = ymm.packet[packetIndexOffset + 5]; ++ r.packet[6] = ymm.packet[packetIndexOffset + 6]; ++ r.packet[7] = ymm.packet[packetIndexOffset + 7]; ++ ptranspose(r); ++ ymm.packet[packetIndexOffset + 0] = r.packet[0]; ++ ymm.packet[packetIndexOffset + 1] = r.packet[1]; ++ ymm.packet[packetIndexOffset + 2] = r.packet[2]; ++ ymm.packet[packetIndexOffset + 3] = r.packet[3]; ++ ymm.packet[packetIndexOffset + 4] = r.packet[4]; ++ ymm.packet[packetIndexOffset + 5] = r.packet[5]; ++ ymm.packet[packetIndexOffset + 6] = r.packet[6]; ++ ymm.packet[packetIndexOffset + 7] = r.packet[7]; ++ } ++ ++ template ++ static EIGEN_ALWAYS_INLINE void transB_kernel(Scalar *B_arr, int64_t LDB, Scalar *B_temp, int64_t LDB_, ++ PacketBlock &ymm, ++ int64_t remM_ = 0) { ++ constexpr int64_t U3 = PacketSize * 3; ++ constexpr int64_t U2 = PacketSize * 2; ++ constexpr int64_t U1 = PacketSize * 1; ++ /** ++ * Unrolls needed for each case: ++ * - AVX512 fp32 48 32 16 8 4 2 1 ++ * - AVX512 fp64 24 16 8 4 2 1 ++ * ++ * For fp32 L and U1 are 1:2 so for U3/U2 cases the loads/stores need to be split up. ++ */ ++ EIGEN_IF_CONSTEXPR(unrollN == U3) { ++ // load LxU3 B col major, transpose LxU3 row major ++ constexpr int64_t maxUBlock = std::min(3 * EIGEN_AVX_MAX_NUM_ROW, U3); ++ transB::template loadBBlock(B_arr, LDB, B_temp, LDB_, ymm, remM_); ++ transB::template transposeLxL<0 * EIGEN_AVX_MAX_NUM_ROW>(ymm); ++ transB::template transposeLxL<1 * EIGEN_AVX_MAX_NUM_ROW>(ymm); ++ transB::template transposeLxL<2 * EIGEN_AVX_MAX_NUM_ROW>(ymm); ++ transB::template storeBBlock(B_arr, LDB, B_temp, LDB_, ymm, remM_); ++ ++ EIGEN_IF_CONSTEXPR(maxUBlock < U3) { ++ transB::template loadBBlock(&B_arr[maxUBlock * LDB], LDB, &B_temp[maxUBlock], LDB_, ++ ymm, remM_); ++ transB::template transposeLxL<0 * EIGEN_AVX_MAX_NUM_ROW>(ymm); ++ transB::template transposeLxL<1 * EIGEN_AVX_MAX_NUM_ROW>(ymm); ++ transB::template transposeLxL<2 * EIGEN_AVX_MAX_NUM_ROW>(ymm); ++ transB::template storeBBlock(&B_arr[maxUBlock * LDB], LDB, &B_temp[maxUBlock], LDB_, ++ ymm, remM_); ++ } ++ } ++ else EIGEN_IF_CONSTEXPR(unrollN == U2) { ++ // load LxU2 B col major, transpose LxU2 row major ++ constexpr int64_t maxUBlock = std::min(3 * EIGEN_AVX_MAX_NUM_ROW, U2); ++ transB::template loadBBlock(B_arr, LDB, B_temp, LDB_, ymm, remM_); ++ transB::template transposeLxL<0 * EIGEN_AVX_MAX_NUM_ROW>(ymm); ++ transB::template transposeLxL<1 * EIGEN_AVX_MAX_NUM_ROW>(ymm); ++ EIGEN_IF_CONSTEXPR(maxUBlock < U2) transB::template transposeLxL<2 * EIGEN_AVX_MAX_NUM_ROW>(ymm); ++ transB::template storeBBlock(B_arr, LDB, B_temp, LDB_, ymm, remM_); ++ ++ EIGEN_IF_CONSTEXPR(maxUBlock < U2) { ++ transB::template loadBBlock(&B_arr[maxUBlock * LDB], LDB, ++ &B_temp[maxUBlock], LDB_, ymm, remM_); ++ transB::template transposeLxL<0>(ymm); ++ transB::template storeBBlock(&B_arr[maxUBlock * LDB], LDB, ++ &B_temp[maxUBlock], LDB_, ymm, remM_); ++ } ++ } ++ else EIGEN_IF_CONSTEXPR(unrollN == U1) { ++ // load LxU1 B col major, transpose LxU1 row major ++ transB::template loadBBlock(B_arr, LDB, B_temp, LDB_, ymm, remM_); ++ transB::template transposeLxL<0>(ymm); ++ EIGEN_IF_CONSTEXPR(EIGEN_AVX_MAX_NUM_ROW < U1) { transB::template transposeLxL<1 * EIGEN_AVX_MAX_NUM_ROW>(ymm); } ++ transB::template storeBBlock(B_arr, LDB, B_temp, LDB_, ymm, remM_); ++ } ++ else EIGEN_IF_CONSTEXPR(unrollN == 8 && U1 > 8) { ++ // load Lx4 B col major, transpose Lx4 row major ++ transB::template loadBBlock<8, toTemp, remM>(B_arr, LDB, B_temp, LDB_, ymm, remM_); ++ transB::template transposeLxL<0>(ymm); ++ transB::template storeBBlock<8, toTemp, remM, 8>(B_arr, LDB, B_temp, LDB_, ymm, remM_); ++ } ++ else EIGEN_IF_CONSTEXPR(unrollN == 4 && U1 > 4) { ++ // load Lx4 B col major, transpose Lx4 row major ++ transB::template loadBBlock<4, toTemp, remM>(B_arr, LDB, B_temp, LDB_, ymm, remM_); ++ transB::template transposeLxL<0>(ymm); ++ transB::template storeBBlock<4, toTemp, remM, 4>(B_arr, LDB, B_temp, LDB_, ymm, remM_); ++ } ++ else EIGEN_IF_CONSTEXPR(unrollN == 2) { ++ // load Lx2 B col major, transpose Lx2 row major ++ transB::template loadBBlock<2, toTemp, remM>(B_arr, LDB, B_temp, LDB_, ymm, remM_); ++ transB::template transposeLxL<0>(ymm); ++ transB::template storeBBlock<2, toTemp, remM, 2>(B_arr, LDB, B_temp, LDB_, ymm, remM_); ++ } ++ else EIGEN_IF_CONSTEXPR(unrollN == 1) { ++ // load Lx1 B col major, transpose Lx1 row major ++ transB::template loadBBlock<1, toTemp, remM>(B_arr, LDB, B_temp, LDB_, ymm, remM_); ++ transB::template transposeLxL<0>(ymm); ++ transB::template storeBBlock<1, toTemp, remM, 1>(B_arr, LDB, B_temp, LDB_, ymm, remM_); ++ } ++ } ++}; ++ ++/** ++ * Unrolls for triSolveKernel ++ * ++ * Idea: ++ * 1) Load a block of right-hand sides to registers in RHSInPacket (using loadRHS). ++ * 2) Do triangular solve with RHSInPacket and a small block of A (triangular matrix) ++ * stored in AInPacket (using triSolveMicroKernel). ++ * 3) Store final results (in avx registers) back into memory (using storeRHS). ++ * ++ * RHSInPacket uses at most EIGEN_AVX_MAX_NUM_ACC avx registers and AInPacket uses at most ++ * EIGEN_AVX_MAX_NUM_ROW registers. ++ */ ++template ++class trsm { ++ public: ++ using vec = typename std::conditional::value, vecFullFloat, vecFullDouble>::type; ++ static constexpr int64_t PacketSize = packet_traits::size; ++ ++ /*********************************** ++ * Auxillary Functions for: ++ * - loadRHS ++ * - storeRHS ++ * - divRHSByDiag ++ * - updateRHS ++ * - triSolveMicroKernel ++ ************************************/ ++ /** ++ * aux_loadRHS ++ * ++ * 2-D unroll ++ * for(startM = 0; startM < endM; startM++) ++ * for(startK = 0; startK < endK; startK++) ++ **/ ++ template ++ static EIGEN_ALWAYS_INLINE std::enable_if_t<(counter > 0)> aux_loadRHS( ++ Scalar *B_arr, int64_t LDB, PacketBlock &RHSInPacket, int64_t rem = 0) { ++ constexpr int64_t counterReverse = endM * endK - counter; ++ constexpr int64_t startM = counterReverse / (endK); ++ constexpr int64_t startK = counterReverse % endK; ++ ++ constexpr int64_t packetIndex = startM * endK + startK; ++ constexpr int64_t startM_ = isFWDSolve ? startM : -startM; ++ const int64_t rhsIndex = (startK * PacketSize) + startM_ * LDB; ++ EIGEN_IF_CONSTEXPR(krem) { ++ RHSInPacket.packet[packetIndex] = ploadu(&B_arr[rhsIndex], remMask(rem)); ++ } ++ else { ++ RHSInPacket.packet[packetIndex] = ploadu(&B_arr[rhsIndex]); ++ } ++ aux_loadRHS(B_arr, LDB, RHSInPacket, rem); ++ } ++ ++ template ++ static EIGEN_ALWAYS_INLINE std::enable_if_t<(counter <= 0)> aux_loadRHS( ++ Scalar *B_arr, int64_t LDB, PacketBlock &RHSInPacket, int64_t rem = 0) { ++ EIGEN_UNUSED_VARIABLE(B_arr); ++ EIGEN_UNUSED_VARIABLE(LDB); ++ EIGEN_UNUSED_VARIABLE(RHSInPacket); ++ EIGEN_UNUSED_VARIABLE(rem); ++ } ++ ++ /** ++ * aux_storeRHS ++ * ++ * 2-D unroll ++ * for(startM = 0; startM < endM; startM++) ++ * for(startK = 0; startK < endK; startK++) ++ **/ ++ template ++ static EIGEN_ALWAYS_INLINE std::enable_if_t<(counter > 0)> aux_storeRHS( ++ Scalar *B_arr, int64_t LDB, PacketBlock &RHSInPacket, int64_t rem = 0) { ++ constexpr int64_t counterReverse = endM * endK - counter; ++ constexpr int64_t startM = counterReverse / (endK); ++ constexpr int64_t startK = counterReverse % endK; ++ ++ constexpr int64_t packetIndex = startM * endK + startK; ++ constexpr int64_t startM_ = isFWDSolve ? startM : -startM; ++ const int64_t rhsIndex = (startK * PacketSize) + startM_ * LDB; ++ EIGEN_IF_CONSTEXPR(krem) { ++ pstoreu(&B_arr[rhsIndex], RHSInPacket.packet[packetIndex], remMask(rem)); ++ } ++ else { ++ pstoreu(&B_arr[rhsIndex], RHSInPacket.packet[packetIndex]); ++ } ++ aux_storeRHS(B_arr, LDB, RHSInPacket, rem); ++ } ++ ++ template ++ static EIGEN_ALWAYS_INLINE std::enable_if_t<(counter <= 0)> aux_storeRHS( ++ Scalar *B_arr, int64_t LDB, PacketBlock &RHSInPacket, int64_t rem = 0) { ++ EIGEN_UNUSED_VARIABLE(B_arr); ++ EIGEN_UNUSED_VARIABLE(LDB); ++ EIGEN_UNUSED_VARIABLE(RHSInPacket); ++ EIGEN_UNUSED_VARIABLE(rem); ++ } ++ ++ /** ++ * aux_divRHSByDiag ++ * ++ * currM may be -1, (currM >=0) in enable_if checks for this ++ * ++ * 1-D unroll ++ * for(startK = 0; startK < endK; startK++) ++ **/ ++ template ++ static EIGEN_ALWAYS_INLINE std::enable_if_t<(counter > 0 && currM >= 0)> aux_divRHSByDiag( ++ PacketBlock &RHSInPacket, PacketBlock &AInPacket) { ++ constexpr int64_t counterReverse = endK - counter; ++ constexpr int64_t startK = counterReverse; ++ ++ constexpr int64_t packetIndex = currM * endK + startK; ++ RHSInPacket.packet[packetIndex] = pmul(AInPacket.packet[currM], RHSInPacket.packet[packetIndex]); ++ aux_divRHSByDiag(RHSInPacket, AInPacket); ++ } ++ ++ template ++ static EIGEN_ALWAYS_INLINE std::enable_if_t 0 && currM >= 0)> aux_divRHSByDiag( ++ PacketBlock &RHSInPacket, PacketBlock &AInPacket) { ++ EIGEN_UNUSED_VARIABLE(RHSInPacket); ++ EIGEN_UNUSED_VARIABLE(AInPacket); ++ } ++ ++ /** ++ * aux_updateRHS ++ * ++ * 2-D unroll ++ * for(startM = initM; startM < endM; startM++) ++ * for(startK = 0; startK < endK; startK++) ++ **/ ++ template ++ static EIGEN_ALWAYS_INLINE std::enable_if_t<(counter > 0)> aux_updateRHS( ++ Scalar *A_arr, int64_t LDA, PacketBlock &RHSInPacket, ++ PacketBlock &AInPacket) { ++ constexpr int64_t counterReverse = (endM - initM) * endK - counter; ++ constexpr int64_t startM = initM + counterReverse / (endK); ++ constexpr int64_t startK = counterReverse % endK; ++ ++ // For each row of A, first update all corresponding RHS ++ constexpr int64_t packetIndex = startM * endK + startK; ++ EIGEN_IF_CONSTEXPR(currentM > 0) { ++ RHSInPacket.packet[packetIndex] = ++ pnmadd(AInPacket.packet[startM], RHSInPacket.packet[(currentM - 1) * endK + startK], ++ RHSInPacket.packet[packetIndex]); ++ } ++ ++ EIGEN_IF_CONSTEXPR(startK == endK - 1) { ++ // Once all RHS for previous row of A is updated, we broadcast the next element in the column A_{i, currentM}. ++ EIGEN_IF_CONSTEXPR(startM == currentM && !isUnitDiag) { ++ // If diagonal is not unit, we broadcast reciprocals of diagonals AinPacket.packet[currentM]. ++ // This will be used in divRHSByDiag ++ EIGEN_IF_CONSTEXPR(isFWDSolve) ++ AInPacket.packet[currentM] = pset1(Scalar(1) / A_arr[idA(currentM, currentM, LDA)]); ++ else AInPacket.packet[currentM] = pset1(Scalar(1) / A_arr[idA(-currentM, -currentM, LDA)]); ++ } ++ else { ++ // Broadcast next off diagonal element of A ++ EIGEN_IF_CONSTEXPR(isFWDSolve) ++ AInPacket.packet[startM] = pset1(A_arr[idA(startM, currentM, LDA)]); ++ else AInPacket.packet[startM] = pset1(A_arr[idA(-startM, -currentM, LDA)]); ++ } ++ } ++ ++ aux_updateRHS( ++ A_arr, LDA, RHSInPacket, AInPacket); ++ } ++ ++ template ++ static EIGEN_ALWAYS_INLINE std::enable_if_t<(counter <= 0)> aux_updateRHS( ++ Scalar *A_arr, int64_t LDA, PacketBlock &RHSInPacket, ++ PacketBlock &AInPacket) { ++ EIGEN_UNUSED_VARIABLE(A_arr); ++ EIGEN_UNUSED_VARIABLE(LDA); ++ EIGEN_UNUSED_VARIABLE(RHSInPacket); ++ EIGEN_UNUSED_VARIABLE(AInPacket); ++ } ++ ++ /** ++ * aux_triSolverMicroKernel ++ * ++ * 1-D unroll ++ * for(startM = 0; startM < endM; startM++) ++ **/ ++ template ++ static EIGEN_ALWAYS_INLINE std::enable_if_t<(counter > 0)> aux_triSolveMicroKernel( ++ Scalar *A_arr, int64_t LDA, PacketBlock &RHSInPacket, ++ PacketBlock &AInPacket) { ++ constexpr int64_t counterReverse = endM - counter; ++ constexpr int64_t startM = counterReverse; ++ ++ constexpr int64_t currentM = startM; ++ // Divides the right-hand side in row startM, by digonal value of A ++ // broadcasted to AInPacket.packet[startM-1] in the previous iteration. ++ // ++ // Without "if constexpr" the compiler instantiates the case <-1, numK> ++ // this is handled with enable_if to prevent out-of-bound warnings ++ // from the compiler ++ EIGEN_IF_CONSTEXPR(!isUnitDiag && startM > 0) ++ trsm::template divRHSByDiag(RHSInPacket, AInPacket); ++ ++ // After division, the rhs corresponding to subsequent rows of A can be partially updated ++ // We also broadcast the reciprocal of the next diagonal to AInPacket.packet[currentM] (if needed) ++ // to be used in the next iteration. ++ trsm::template updateRHS(A_arr, LDA, RHSInPacket, ++ AInPacket); ++ ++ // Handle division for the RHS corresponding to the final row of A. ++ EIGEN_IF_CONSTEXPR(!isUnitDiag && startM == endM - 1) ++ trsm::template divRHSByDiag(RHSInPacket, AInPacket); ++ ++ aux_triSolveMicroKernel(A_arr, LDA, RHSInPacket, ++ AInPacket); ++ } ++ ++ template ++ static EIGEN_ALWAYS_INLINE std::enable_if_t<(counter <= 0)> aux_triSolveMicroKernel( ++ Scalar *A_arr, int64_t LDA, PacketBlock &RHSInPacket, ++ PacketBlock &AInPacket) { ++ EIGEN_UNUSED_VARIABLE(A_arr); ++ EIGEN_UNUSED_VARIABLE(LDA); ++ EIGEN_UNUSED_VARIABLE(RHSInPacket); ++ EIGEN_UNUSED_VARIABLE(AInPacket); ++ } ++ ++ /******************************************************** ++ * Wrappers for aux_XXXX to hide counter parameter ++ ********************************************************/ ++ ++ /** ++ * Load endMxendK block of B to RHSInPacket ++ * Masked loads are used for cases where endK is not a multiple of PacketSize ++ */ ++ template ++ static EIGEN_ALWAYS_INLINE void loadRHS(Scalar *B_arr, int64_t LDB, ++ PacketBlock &RHSInPacket, int64_t rem = 0) { ++ aux_loadRHS(B_arr, LDB, RHSInPacket, rem); ++ } ++ ++ /** ++ * Load endMxendK block of B to RHSInPacket ++ * Masked loads are used for cases where endK is not a multiple of PacketSize ++ */ ++ template ++ static EIGEN_ALWAYS_INLINE void storeRHS(Scalar *B_arr, int64_t LDB, ++ PacketBlock &RHSInPacket, int64_t rem = 0) { ++ aux_storeRHS(B_arr, LDB, RHSInPacket, rem); ++ } ++ ++ /** ++ * Only used if Triangular matrix has non-unit diagonal values ++ */ ++ template ++ static EIGEN_ALWAYS_INLINE void divRHSByDiag(PacketBlock &RHSInPacket, ++ PacketBlock &AInPacket) { ++ aux_divRHSByDiag(RHSInPacket, AInPacket); ++ } ++ ++ /** ++ * Update right-hand sides (stored in avx registers) ++ * Traversing along the column A_{i,currentM}, where currentM <= i <= endM, and broadcasting each value to AInPacket. ++ **/ ++ template ++ static EIGEN_ALWAYS_INLINE void updateRHS(Scalar *A_arr, int64_t LDA, ++ PacketBlock &RHSInPacket, ++ PacketBlock &AInPacket) { ++ aux_updateRHS( ++ A_arr, LDA, RHSInPacket, AInPacket); ++ } ++ ++ /** ++ * endM: dimension of A. 1 <= endM <= EIGEN_AVX_MAX_NUM_ROW ++ * numK: number of avx registers to use for each row of B (ex fp32: 48 rhs => 3 avx reg used). 1 <= endK <= 3. ++ * isFWDSolve: true => forward substitution, false => backwards substitution ++ * isUnitDiag: true => triangular matrix has unit diagonal. ++ */ ++ template ++ static EIGEN_ALWAYS_INLINE void triSolveMicroKernel(Scalar *A_arr, int64_t LDA, ++ PacketBlock &RHSInPacket, ++ PacketBlock &AInPacket) { ++ static_assert(numK >= 1 && numK <= 3, "numK out of range"); ++ aux_triSolveMicroKernel(A_arr, LDA, RHSInPacket, AInPacket); ++ } ++}; ++ ++/** ++ * Unrolls for gemm kernel ++ * ++ * isAdd: true => C += A*B, false => C -= A*B ++ */ ++template ++class gemm { ++ public: ++ using vec = typename std::conditional::value, vecFullFloat, vecFullDouble>::type; ++ static constexpr int64_t PacketSize = packet_traits::size; ++ ++ /*********************************** ++ * Auxillary Functions for: ++ * - setzero ++ * - updateC ++ * - storeC ++ * - startLoadB ++ * - triSolveMicroKernel ++ ************************************/ ++ ++ /** ++ * aux_setzero ++ * ++ * 2-D unroll ++ * for(startM = 0; startM < endM; startM++) ++ * for(startN = 0; startN < endN; startN++) ++ **/ ++ template ++ static EIGEN_ALWAYS_INLINE std::enable_if_t<(counter > 0)> aux_setzero( ++ PacketBlock &zmm) { ++ constexpr int64_t counterReverse = endM * endN - counter; ++ constexpr int64_t startM = counterReverse / (endN); ++ constexpr int64_t startN = counterReverse % endN; ++ ++ zmm.packet[startN * endM + startM] = pzero(zmm.packet[startN * endM + startM]); ++ aux_setzero(zmm); ++ } ++ ++ template ++ static EIGEN_ALWAYS_INLINE std::enable_if_t<(counter <= 0)> aux_setzero( ++ PacketBlock &zmm) { ++ EIGEN_UNUSED_VARIABLE(zmm); ++ } ++ ++ /** ++ * aux_updateC ++ * ++ * 2-D unroll ++ * for(startM = 0; startM < endM; startM++) ++ * for(startN = 0; startN < endN; startN++) ++ **/ ++ template ++ static EIGEN_ALWAYS_INLINE std::enable_if_t<(counter > 0)> aux_updateC( ++ Scalar *C_arr, int64_t LDC, PacketBlock &zmm, int64_t rem_ = 0) { ++ EIGEN_UNUSED_VARIABLE(rem_); ++ constexpr int64_t counterReverse = endM * endN - counter; ++ constexpr int64_t startM = counterReverse / (endN); ++ constexpr int64_t startN = counterReverse % endN; ++ ++ EIGEN_IF_CONSTEXPR(rem) ++ zmm.packet[startN * endM + startM] = ++ padd(ploadu(&C_arr[(startN)*LDC + startM * PacketSize], remMask(rem_)), ++ zmm.packet[startN * endM + startM], remMask(rem_)); ++ else zmm.packet[startN * endM + startM] = ++ padd(ploadu(&C_arr[(startN)*LDC + startM * PacketSize]), zmm.packet[startN * endM + startM]); ++ aux_updateC(C_arr, LDC, zmm, rem_); ++ } ++ ++ template ++ static EIGEN_ALWAYS_INLINE std::enable_if_t<(counter <= 0)> aux_updateC( ++ Scalar *C_arr, int64_t LDC, PacketBlock &zmm, int64_t rem_ = 0) { ++ EIGEN_UNUSED_VARIABLE(C_arr); ++ EIGEN_UNUSED_VARIABLE(LDC); ++ EIGEN_UNUSED_VARIABLE(zmm); ++ EIGEN_UNUSED_VARIABLE(rem_); ++ } ++ ++ /** ++ * aux_storeC ++ * ++ * 2-D unroll ++ * for(startM = 0; startM < endM; startM++) ++ * for(startN = 0; startN < endN; startN++) ++ **/ ++ template ++ static EIGEN_ALWAYS_INLINE std::enable_if_t<(counter > 0)> aux_storeC( ++ Scalar *C_arr, int64_t LDC, PacketBlock &zmm, int64_t rem_ = 0) { ++ EIGEN_UNUSED_VARIABLE(rem_); ++ constexpr int64_t counterReverse = endM * endN - counter; ++ constexpr int64_t startM = counterReverse / (endN); ++ constexpr int64_t startN = counterReverse % endN; ++ ++ EIGEN_IF_CONSTEXPR(rem) ++ pstoreu(&C_arr[(startN)*LDC + startM * PacketSize], zmm.packet[startN * endM + startM], ++ remMask(rem_)); ++ else pstoreu(&C_arr[(startN)*LDC + startM * PacketSize], zmm.packet[startN * endM + startM]); ++ aux_storeC(C_arr, LDC, zmm, rem_); ++ } ++ ++ template ++ static EIGEN_ALWAYS_INLINE std::enable_if_t<(counter <= 0)> aux_storeC( ++ Scalar *C_arr, int64_t LDC, PacketBlock &zmm, int64_t rem_ = 0) { ++ EIGEN_UNUSED_VARIABLE(C_arr); ++ EIGEN_UNUSED_VARIABLE(LDC); ++ EIGEN_UNUSED_VARIABLE(zmm); ++ EIGEN_UNUSED_VARIABLE(rem_); ++ } ++ ++ /** ++ * aux_startLoadB ++ * ++ * 1-D unroll ++ * for(startL = 0; startL < endL; startL++) ++ **/ ++ template ++ static EIGEN_ALWAYS_INLINE std::enable_if_t<(counter > 0)> aux_startLoadB( ++ Scalar *B_t, int64_t LDB, PacketBlock &zmm, int64_t rem_ = 0) { ++ EIGEN_UNUSED_VARIABLE(rem_); ++ constexpr int64_t counterReverse = endL - counter; ++ constexpr int64_t startL = counterReverse; ++ ++ EIGEN_IF_CONSTEXPR(rem) ++ zmm.packet[unrollM * unrollN + startL] = ++ ploadu(&B_t[(startL / unrollM) * LDB + (startL % unrollM) * PacketSize], remMask(rem_)); ++ else zmm.packet[unrollM * unrollN + startL] = ++ ploadu(&B_t[(startL / unrollM) * LDB + (startL % unrollM) * PacketSize]); ++ ++ aux_startLoadB(B_t, LDB, zmm, rem_); ++ } ++ ++ template ++ static EIGEN_ALWAYS_INLINE std::enable_if_t<(counter <= 0)> aux_startLoadB( ++ Scalar *B_t, int64_t LDB, PacketBlock &zmm, int64_t rem_ = 0) { ++ EIGEN_UNUSED_VARIABLE(B_t); ++ EIGEN_UNUSED_VARIABLE(LDB); ++ EIGEN_UNUSED_VARIABLE(zmm); ++ EIGEN_UNUSED_VARIABLE(rem_); ++ } ++ ++ /** ++ * aux_startBCastA ++ * ++ * 1-D unroll ++ * for(startB = 0; startB < endB; startB++) ++ **/ ++ template ++ static EIGEN_ALWAYS_INLINE std::enable_if_t<(counter > 0)> aux_startBCastA( ++ Scalar *A_t, int64_t LDA, PacketBlock &zmm) { ++ constexpr int64_t counterReverse = endB - counter; ++ constexpr int64_t startB = counterReverse; ++ ++ zmm.packet[unrollM * unrollN + numLoad + startB] = pload1(&A_t[idA(startB, 0, LDA)]); ++ ++ aux_startBCastA(A_t, LDA, zmm); ++ } ++ ++ template ++ static EIGEN_ALWAYS_INLINE std::enable_if_t<(counter <= 0)> aux_startBCastA( ++ Scalar *A_t, int64_t LDA, PacketBlock &zmm) { ++ EIGEN_UNUSED_VARIABLE(A_t); ++ EIGEN_UNUSED_VARIABLE(LDA); ++ EIGEN_UNUSED_VARIABLE(zmm); ++ } ++ ++ /** ++ * aux_loadB ++ * currK: current K ++ * ++ * 1-D unroll ++ * for(startM = 0; startM < endM; startM++) ++ **/ ++ template ++ static EIGEN_ALWAYS_INLINE std::enable_if_t<(counter > 0)> aux_loadB( ++ Scalar *B_t, int64_t LDB, PacketBlock &zmm, int64_t rem_ = 0) { ++ EIGEN_UNUSED_VARIABLE(rem_); ++ if ((numLoad / endM + currK < unrollK)) { ++ constexpr int64_t counterReverse = endM - counter; ++ constexpr int64_t startM = counterReverse; ++ ++ EIGEN_IF_CONSTEXPR(rem) { ++ zmm.packet[endM * unrollN + (startM + currK * endM) % numLoad] = ++ ploadu(&B_t[(numLoad / endM + currK) * LDB + startM * PacketSize], remMask(rem_)); ++ } ++ else { ++ zmm.packet[endM * unrollN + (startM + currK * endM) % numLoad] = ++ ploadu(&B_t[(numLoad / endM + currK) * LDB + startM * PacketSize]); ++ } ++ ++ aux_loadB(B_t, LDB, zmm, rem_); ++ } ++ } ++ ++ template ++ static EIGEN_ALWAYS_INLINE std::enable_if_t<(counter <= 0)> aux_loadB( ++ Scalar *B_t, int64_t LDB, PacketBlock &zmm, int64_t rem_ = 0) { ++ EIGEN_UNUSED_VARIABLE(B_t); ++ EIGEN_UNUSED_VARIABLE(LDB); ++ EIGEN_UNUSED_VARIABLE(zmm); ++ EIGEN_UNUSED_VARIABLE(rem_); ++ } ++ ++ /** ++ * aux_microKernel ++ * ++ * 3-D unroll ++ * for(startM = 0; startM < endM; startM++) ++ * for(startN = 0; startN < endN; startN++) ++ * for(startK = 0; startK < endK; startK++) ++ **/ ++ template ++ static EIGEN_ALWAYS_INLINE std::enable_if_t<(counter > 0)> aux_microKernel( ++ Scalar *B_t, Scalar *A_t, int64_t LDB, int64_t LDA, PacketBlock &zmm, ++ int64_t rem_ = 0) { ++ EIGEN_UNUSED_VARIABLE(rem_); ++ constexpr int64_t counterReverse = endM * endN * endK - counter; ++ constexpr int startK = counterReverse / (endM * endN); ++ constexpr int startN = (counterReverse / (endM)) % endN; ++ constexpr int startM = counterReverse % endM; ++ ++ EIGEN_IF_CONSTEXPR(startK == 0 && startM == 0 && startN == 0) { ++ gemm::template startLoadB(B_t, LDB, zmm, rem_); ++ gemm::template startBCastA(A_t, LDA, zmm); ++ } ++ ++ { ++ // Interleave FMA and Bcast ++ EIGEN_IF_CONSTEXPR(isAdd) { ++ zmm.packet[startN * endM + startM] = ++ pmadd(zmm.packet[endM * endN + numLoad + (startN + startK * endN) % numBCast], ++ zmm.packet[endM * endN + (startM + startK * endM) % numLoad], zmm.packet[startN * endM + startM]); ++ } ++ else { ++ zmm.packet[startN * endM + startM] = ++ pnmadd(zmm.packet[endM * endN + numLoad + (startN + startK * endN) % numBCast], ++ zmm.packet[endM * endN + (startM + startK * endM) % numLoad], zmm.packet[startN * endM + startM]); ++ } ++ // Bcast ++ EIGEN_IF_CONSTEXPR(startM == endM - 1 && (numBCast + startN + startK * endN < endK * endN)) { ++ zmm.packet[endM * endN + numLoad + (startN + startK * endN) % numBCast] = pload1(&A_t[idA( ++ (numBCast + startN + startK * endN) % endN, (numBCast + startN + startK * endN) / endN, LDA)]); ++ } ++ } ++ ++ // We have updated all accumlators, time to load next set of B's ++ EIGEN_IF_CONSTEXPR((startN == endN - 1) && (startM == endM - 1)) { ++ gemm::template loadB(B_t, LDB, zmm, rem_); ++ } ++ aux_microKernel(B_t, A_t, LDB, LDA, zmm, rem_); ++ } ++ ++ template ++ static EIGEN_ALWAYS_INLINE std::enable_if_t<(counter <= 0)> aux_microKernel( ++ Scalar *B_t, Scalar *A_t, int64_t LDB, int64_t LDA, PacketBlock &zmm, ++ int64_t rem_ = 0) { ++ EIGEN_UNUSED_VARIABLE(B_t); ++ EIGEN_UNUSED_VARIABLE(A_t); ++ EIGEN_UNUSED_VARIABLE(LDB); ++ EIGEN_UNUSED_VARIABLE(LDA); ++ EIGEN_UNUSED_VARIABLE(zmm); ++ EIGEN_UNUSED_VARIABLE(rem_); ++ } ++ ++ /******************************************************** ++ * Wrappers for aux_XXXX to hide counter parameter ++ ********************************************************/ ++ ++ template ++ static EIGEN_ALWAYS_INLINE void setzero(PacketBlock &zmm) { ++ aux_setzero(zmm); ++ } ++ ++ /** ++ * Ideally the compiler folds these into vaddp{s,d} with an embedded memory load. ++ */ ++ template ++ static EIGEN_ALWAYS_INLINE void updateC(Scalar *C_arr, int64_t LDC, ++ PacketBlock &zmm, ++ int64_t rem_ = 0) { ++ EIGEN_UNUSED_VARIABLE(rem_); ++ aux_updateC(C_arr, LDC, zmm, rem_); ++ } ++ ++ template ++ static EIGEN_ALWAYS_INLINE void storeC(Scalar *C_arr, int64_t LDC, ++ PacketBlock &zmm, ++ int64_t rem_ = 0) { ++ EIGEN_UNUSED_VARIABLE(rem_); ++ aux_storeC(C_arr, LDC, zmm, rem_); ++ } ++ ++ /** ++ * Use numLoad registers for loading B at start of microKernel ++ */ ++ template ++ static EIGEN_ALWAYS_INLINE void startLoadB(Scalar *B_t, int64_t LDB, ++ PacketBlock &zmm, ++ int64_t rem_ = 0) { ++ EIGEN_UNUSED_VARIABLE(rem_); ++ aux_startLoadB(B_t, LDB, zmm, rem_); ++ } ++ ++ /** ++ * Use numBCast registers for broadcasting A at start of microKernel ++ */ ++ template ++ static EIGEN_ALWAYS_INLINE void startBCastA(Scalar *A_t, int64_t LDA, ++ PacketBlock &zmm) { ++ aux_startBCastA(A_t, LDA, zmm); ++ } ++ ++ /** ++ * Loads next set of B into vector registers between each K unroll. ++ */ ++ template ++ static EIGEN_ALWAYS_INLINE void loadB(Scalar *B_t, int64_t LDB, ++ PacketBlock &zmm, ++ int64_t rem_ = 0) { ++ EIGEN_UNUSED_VARIABLE(rem_); ++ aux_loadB(B_t, LDB, zmm, rem_); ++ } ++ ++ /** ++ * Generates a microkernel for gemm (row-major) with unrolls {1,2,4,8}x{U1,U2,U3} to compute C -= A*B. ++ * A matrix can be row/col-major. B matrix is assumed row-major. ++ * ++ * isARowMajor: is A row major ++ * endM: Number registers per row ++ * endN: Number of rows ++ * endK: Loop unroll for K. ++ * numLoad: Number of registers for loading B. ++ * numBCast: Number of registers for broadcasting A. ++ * ++ * Ex: microkernel: 8x48 unroll (24 accumulators), k unrolled 4 times, ++ * 6 register for loading B, 2 for broadcasting A. ++ * ++ * Note: Ideally the microkernel should not have any register spilling. ++ * The avx instruction counts should be: ++ * - endK*endN vbroadcasts{s,d} ++ * - endK*endM vmovup{s,d} ++ * - endK*endN*endM FMAs ++ * ++ * From testing, there are no register spills with clang. There are register spills with GNU, which ++ * causes a performance hit. ++ */ ++ template ++ static EIGEN_ALWAYS_INLINE void microKernel(Scalar *B_t, Scalar *A_t, int64_t LDB, int64_t LDA, ++ PacketBlock &zmm, ++ int64_t rem_ = 0) { ++ EIGEN_UNUSED_VARIABLE(rem_); ++ aux_microKernel(B_t, A_t, LDB, LDA, zmm, ++ rem_); ++ } ++}; ++} // namespace unrolls ++ ++#endif // EIGEN_CORE_ARCH_AVX512_TRSM_UNROLLS_H diff --git a/easybuild/easyconfigs/m/mlpack/mlpack-4.3.0-foss-2023a.eb b/easybuild/easyconfigs/m/mlpack/mlpack-4.3.0-foss-2023a.eb new file mode 100644 index 00000000000..beb49e03d1e --- /dev/null +++ b/easybuild/easyconfigs/m/mlpack/mlpack-4.3.0-foss-2023a.eb @@ -0,0 +1,32 @@ +easyblock = 'CMakeMake' + +name = 'mlpack' +version = '4.3.0' + +homepage = 'https://www.mlpack.org/' +description = """mlpack is a fast, header-only C++ machine learning library +written in C++ and built on the Armadillo linear algebra library, the ensmallen +numerical optimization library, and the cereal serialization library.""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +source_urls = ['https://github.com/mlpack/mlpack/archive/refs/tags/'] +sources = ['%(version)s.tar.gz'] +checksums = ['08cd54f711fde66fc3b6c9db89dc26776f9abf1a6256c77cfa3556e2a56f1a3d'] + +builddependencies = [ + ('CMake', '3.26.3'), +] + +dependencies = [ + ('Armadillo', '12.6.2'), + ('ensmallen', '2.21.1'), + ('Cereal', '1.3.2', '', SYSTEM), +] + +sanity_check_paths = { + 'files': ['bin/mlpack_pca', 'include/mlpack.hpp'], + 'dirs': ['bin', 'include', 'lib64'], +} + +moduleclass = 'numlib' diff --git a/easybuild/easyconfigs/m/mold/mold-2.31.0-GCCcore-13.3.0.eb b/easybuild/easyconfigs/m/mold/mold-2.31.0-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..e918d8ff41e --- /dev/null +++ b/easybuild/easyconfigs/m/mold/mold-2.31.0-GCCcore-13.3.0.eb @@ -0,0 +1,36 @@ +easyblock = 'CMakeMake' + +name = 'mold' +version = '2.31.0' + +homepage = 'https://github.com/rui314/mold' +description = "mold is a high-performance drop-in replacement for existing Unix linkers." + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = ['https://github.com/rui314/mold/archive/refs/tags/'] +sources = ['v%(version)s.tar.gz'] +checksums = ['3dc3af83a5d22a4b29971bfad17261851d426961c665480e2ca294e5c74aa1e5'] + +builddependencies = [ + ('binutils', '2.42'), + ('CMake', '3.29.3'), +] +dependencies = [ + ('zlib', '1.3.1'), + ('OpenSSL', '3', '', SYSTEM), +] + +runtest = 'test' + +sanity_check_paths = { + 'files': ['bin/mold', 'lib/mold/mold-wrapper.%s' % SHLIB_EXT], + 'dirs': ['share/man'], +} + +sanity_check_commands = [ + "mold --help", + "mold --run gcc -v", +] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/m/mpmath/mpmath-1.3.0-GCCcore-12.3.0.eb b/easybuild/easyconfigs/m/mpmath/mpmath-1.3.0-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..4e88d210ec2 --- /dev/null +++ b/easybuild/easyconfigs/m/mpmath/mpmath-1.3.0-GCCcore-12.3.0.eb @@ -0,0 +1,45 @@ +# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild +# +# Author: Adam Huffman +# adam.huffman@crick.ac.uk +# The Francis Crick Institute +# Update: Pavel Tománek (Inuits) + +easyblock = 'PythonPackage' + +name = 'mpmath' +version = '1.3.0' + +homepage = 'https://mpmath.org/' +description = """mpmath can be used as an arbitrary-precision substitute for Python's float/complex + types and math/cmath modules, but also does much more advanced mathematics. Almost any calculation + can be performed just as well at 10-digit or 1000-digit precision, with either real or complex + numbers, and in many cases mpmath implements efficient algorithms that scale well for extremely + high precision work.""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +sources = [SOURCE_TAR_GZ] +checksums = ['7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f'] + +builddependencies = [ + ('binutils', '2.40') +] + +dependencies = [ + ('Python', '3.11.3'), + ('pytest', '7.4.2'), +] + +download_dep_fail = True +use_pip = True +sanity_pip_check = True + +runtest = 'python -c "import mpmath; mpmath.runtests();"' + +sanity_check_paths = { + 'files': [], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/m/mumott/mumott-2.1-foss-2022b.eb b/easybuild/easyconfigs/m/mumott/mumott-2.1-foss-2022b.eb new file mode 100644 index 00000000000..4cb23e2deff --- /dev/null +++ b/easybuild/easyconfigs/m/mumott/mumott-2.1-foss-2022b.eb @@ -0,0 +1,43 @@ +easyblock = 'PythonBundle' + +name = 'mumott' +version = '2.1' + +homepage = 'https://mumott.org/' +description = "mumott is a Python library for the analysis of multi-modal tensor tomography data." + +toolchain = {'name': 'foss', 'version': '2022b'} + +dependencies = [ + ('Python', '3.10.8'), + ('SciPy-bundle', '2023.02'), + ('numba', '0.58.1'), + ('matplotlib', '3.7.0'), + ('scikit-image', '0.21.0'), + ('h5py', '3.8.0'), + ('tqdm', '4.64.1') +] + + +use_pip = True + +exts_list = [ + ('colorcet', '3.1.0', { + 'checksums': ['2921b3cd81a2288aaf2d63dbc0ce3c26dcd882e8c389cc505d6886bf7aa9a4eb'], + }), + ('colorspacious', '1.1.2', { + 'checksums': ['5e9072e8cdca889dac445c35c9362a22ccf758e97b00b79ff0d5a7ba3e11b618'], + }), + (name, version, { + 'runtest': "pytest tests/cpu_tests/unit_tests", + 'source_urls': ['https://gitlab.com/liebi-group/software/%(name)s/-/archive/%(version)s/'], + 'testinstall': True, + 'checksums': ['018c3be97c3bdfb1409218a15e8f0deed9e78caf9b2cd62c7f5424c8772128b8'], + }), +] + +sanity_pip_check = True + +sanity_check_commands = ["python -c 'import mumott'"] + +moduleclass = 'phys' diff --git a/easybuild/easyconfigs/n/NASM/NASM-2.16.03-GCCcore-13.3.0.eb b/easybuild/easyconfigs/n/NASM/NASM-2.16.03-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..7ecd06f10c0 --- /dev/null +++ b/easybuild/easyconfigs/n/NASM/NASM-2.16.03-GCCcore-13.3.0.eb @@ -0,0 +1,25 @@ +easyblock = 'ConfigureMake' + +name = 'NASM' +version = '2.16.03' + +homepage = 'https://www.nasm.us/' + +description = """NASM: General-purpose x86 assembler""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = ['https://www.nasm.us/pub/nasm/releasebuilds/%(version)s'] +sources = [SOURCELOWER_TAR_BZ2] +checksums = ['bef3de159bcd61adf98bb7cc87ee9046e944644ad76b7633f18ab063edb29e57'] + +builddependencies = [ + ('binutils', '2.42'), +] + +sanity_check_paths = { + 'files': ['bin/nasm'], + 'dirs': [], +} + +moduleclass = 'lang' 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/NanoPlot/NanoPlot-1.42.0-foss-2022a.eb b/easybuild/easyconfigs/n/NanoPlot/NanoPlot-1.42.0-foss-2022a.eb new file mode 100644 index 00000000000..7dbb7c29aba --- /dev/null +++ b/easybuild/easyconfigs/n/NanoPlot/NanoPlot-1.42.0-foss-2022a.eb @@ -0,0 +1,42 @@ +# Author: Pavel Grochal (INUITS) +# License: GPLv2 + +easyblock = 'PythonPackage' + +name = 'NanoPlot' +version = '1.42.0' + +homepage = 'https://github.com/wdecoster/NanoPlot' +description = "Plotting suite for long read sequencing data and alignments" + +toolchain = {'name': 'foss', 'version': '2022a'} + +sources = [SOURCE_TAR_GZ] +checksums = ['0f8fd2cffd33a346b3306716058c6cb4091c931e8ab502f10b17a28749e8b6d9'] + +dependencies = [ + ('Python', '3.10.4'), + ('SciPy-bundle', '2022.05'), + ('Biopython', '1.79'), + ('Pysam', '0.19.1'), + ('nanomath', '1.3.0'), + ('nanoget', '1.19.1'), + ('plotly.py', '5.12.0'), + ('statsmodels', '0.13.1'), + ('Arrow', '8.0.0'), # for pyarrow + ('Kaleido', '0.2.1'), +] + +download_dep_fail = True +use_pip = True + +sanity_check_paths = { + 'files': ['bin/NanoPlot'], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +sanity_check_commands = ["NanoPlot --help"] + +sanity_pip_check = True + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/n/NanoStat/NanoStat-1.6.0-foss-2022a.eb b/easybuild/easyconfigs/n/NanoStat/NanoStat-1.6.0-foss-2022a.eb index 40c1f10d183..c09007f4644 100644 --- a/easybuild/easyconfigs/n/NanoStat/NanoStat-1.6.0-foss-2022a.eb +++ b/easybuild/easyconfigs/n/NanoStat/NanoStat-1.6.0-foss-2022a.eb @@ -11,7 +11,7 @@ toolchain = {'name': 'foss', 'version': '2022a'} dependencies = [ ('Python', '3.10.4'), - ('nanoget', '1.18.1'), + ('nanoget', '1.19.1'), ('nanomath', '1.3.0'), ] diff --git a/easybuild/easyconfigs/n/Nextflow/Nextflow-24.04.2.eb b/easybuild/easyconfigs/n/Nextflow/Nextflow-24.04.2.eb new file mode 100644 index 00000000000..21a90e473cc --- /dev/null +++ b/easybuild/easyconfigs/n/Nextflow/Nextflow-24.04.2.eb @@ -0,0 +1,35 @@ +easyblock = 'Binary' + +name = 'Nextflow' +version = '24.04.2' + +homepage = 'https://www.nextflow.io/' +description = """Nextflow is a reactive workflow framework and a programming DSL + that eases writing computational pipelines with complex data""" + +toolchain = SYSTEM + +source_urls = ['https://github.com/nextflow-io/nextflow/releases/download/v%(version)s/'] +sources = ['nextflow-%(version)s-all'] +checksums = ['1491a4efc06f0df9eed1fa6aa5a8c657435397fa99c34bf954281460e9b1c5ee'] + +dependencies = [('Java', '11')] + +install_cmds = [ + "mkdir -p %(installdir)s/bin", + "cp %(builddir)s/nextflow-%(version)s-all %(installdir)s/bin", + "cd %(installdir)s/bin && ln -s nextflow-%(version)s-all nextflow", + "cd %(installdir)s/bin && chmod +x %(installdir)s/bin/nextflow-%(version)s-all", +] + +sanity_check_paths = { + 'files': ['bin/nextflow-%(version)s-all', 'bin/nextflow'], + 'dirs': [] +} + +sanity_check_commands = [ + "nextflow -v", + "nextflow help", +] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/n/Ninja/Ninja-1.12.1-GCCcore-13.3.0.eb b/easybuild/easyconfigs/n/Ninja/Ninja-1.12.1-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..9e6a998f707 --- /dev/null +++ b/easybuild/easyconfigs/n/Ninja/Ninja-1.12.1-GCCcore-13.3.0.eb @@ -0,0 +1,31 @@ +easyblock = 'CmdCp' + +name = 'Ninja' +version = '1.12.1' + +homepage = 'https://ninja-build.org/' +description = "Ninja is a small build system with a focus on speed." + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = ['https://github.com/ninja-build/ninja/archive/'] +sources = ['v%(version)s.tar.gz'] +checksums = ['821bdff48a3f683bc4bb3b6f0b5fe7b2d647cf65d52aeb63328c91a6c6df285a'] + +builddependencies = [ + ('binutils', '2.42'), + ('Python', '3.12.3'), +] + +cmds_map = [('.*', "./configure.py --bootstrap")] + +files_to_copy = [(['ninja'], 'bin')] + +sanity_check_paths = { + 'files': ['bin/ninja'], + 'dirs': [], +} + +sanity_check_commands = ["ninja --version"] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/n/nanocompore/nanocompore-1.0.0rc3-2-intel-2020a-Python-3.8.2.eb b/easybuild/easyconfigs/n/nanocompore/nanocompore-1.0.0rc3-2-intel-2020a-Python-3.8.2.eb index a043ce37c6f..516ddbc5043 100644 --- a/easybuild/easyconfigs/n/nanocompore/nanocompore-1.0.0rc3-2-intel-2020a-Python-3.8.2.eb +++ b/easybuild/easyconfigs/n/nanocompore/nanocompore-1.0.0rc3-2-intel-2020a-Python-3.8.2.eb @@ -10,6 +10,10 @@ description += "sequencing raw signal corresponding to RNA modifications by comp toolchain = {'name': 'intel', 'version': '2020a'} +builddependencies = [ + ('poetry', '1.0.9', versionsuffix), +] + dependencies = [ ('Python', '3.8.2'), ('SciPy-bundle', '2020.03', versionsuffix), @@ -18,7 +22,6 @@ dependencies = [ ('Seaborn', '0.10.1', versionsuffix), ('scikit-learn', '0.23.1', versionsuffix), ('statsmodels', '0.11.1', versionsuffix), - ('poetry', '1.0.9', versionsuffix), ('PyYAML', '5.3'), ] diff --git a/easybuild/easyconfigs/n/nanoget/nanoget-1.18.1-foss-2022b.eb b/easybuild/easyconfigs/n/nanoget/nanoget-1.18.1-foss-2022b.eb new file mode 100644 index 00000000000..6c11fb4bd05 --- /dev/null +++ b/easybuild/easyconfigs/n/nanoget/nanoget-1.18.1-foss-2022b.eb @@ -0,0 +1,30 @@ +# Author: Pavel Grochal (INUITS) +# License: GPLv2 +# Update: Petr Král (INUITS) + +easyblock = 'PythonPackage' + +name = 'nanoget' +version = '1.18.1' + +homepage = 'https://github.com/wdecoster/nanoget' +description = "Functions to extract information from Oxford Nanopore sequencing data and alignments" + +toolchain = {'name': 'foss', 'version': '2022b'} + +sources = [SOURCE_TAR_GZ] +checksums = ['e4fa37ab1bccc3287947f5792acad3c96fd1c02cb9c0a1f5d218d26bcdbe1632'] + +dependencies = [ + ('Python', '3.10.8'), + ('SciPy-bundle', '2023.02'), + ('Biopython', '1.81'), + ('Pysam', '0.21.0'), + ('nanomath', '1.3.0'), +] + +download_dep_fail = True +use_pip = True +sanity_pip_check = True + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/n/nanoget/nanoget-1.19.1-foss-2022a.eb b/easybuild/easyconfigs/n/nanoget/nanoget-1.19.1-foss-2022a.eb new file mode 100644 index 00000000000..2126128d14c --- /dev/null +++ b/easybuild/easyconfigs/n/nanoget/nanoget-1.19.1-foss-2022a.eb @@ -0,0 +1,30 @@ +# Author: Pavel Grochal (INUITS) +# License: GPLv2 +# Update: Petr Král (INUITS) + +easyblock = 'PythonPackage' + +name = 'nanoget' +version = '1.19.1' + +homepage = 'https://github.com/wdecoster/nanoget' +description = "Functions to extract information from Oxford Nanopore sequencing data and alignments" + +toolchain = {'name': 'foss', 'version': '2022a'} + +sources = [SOURCE_TAR_GZ] +checksums = ['14f4883a995503dbae757b55cb42fcb4430c58ce2201b79abd4e8e0e3d10ca18'] + +dependencies = [ + ('Python', '3.10.4'), + ('SciPy-bundle', '2022.05'), + ('Biopython', '1.79'), + ('Pysam', '0.19.1'), + ('nanomath', '1.3.0'), +] + +download_dep_fail = True +use_pip = True +sanity_pip_check = True + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/n/nanomath/nanomath-1.3.0-foss-2022b.eb b/easybuild/easyconfigs/n/nanomath/nanomath-1.3.0-foss-2022b.eb new file mode 100644 index 00000000000..9bf917fba1d --- /dev/null +++ b/easybuild/easyconfigs/n/nanomath/nanomath-1.3.0-foss-2022b.eb @@ -0,0 +1,33 @@ +# Author: Pavel Grochal (INUITS) +# License: GPLv2 +# Update: Petr Král (INUITS) + +easyblock = 'PythonBundle' + +name = 'nanomath' +version = '1.3.0' + +homepage = 'https://github.com/wdecoster/nanomath' +description = "A few simple math functions for other Oxford Nanopore processing scripts" + +toolchain = {'name': 'foss', 'version': '2022b'} + +dependencies = [ + ('Python', '3.10.8'), + ('SciPy-bundle', '2023.02'), +] + +use_pip = True +sanity_pip_check = True + +exts_list = [ + ('Python-Deprecated', '1.1.0', { + 'modulename': 'deprecated', + 'checksums': ['a242b3c1721f97912330b12cd5529abfa5b3876084a6c60a2c683a87d4b0dd6f'], + }), + (name, version, { + 'checksums': ['c35a024b10b34dd8f539cefed1fd69e0a46d18037ca48bed63c7941c67ae028e'], + }), +] + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/n/napari/napari-0.4.18-foss-2023a.eb b/easybuild/easyconfigs/n/napari/napari-0.4.18-foss-2023a.eb index 713e2ef6492..46fb74f0d2b 100644 --- a/easybuild/easyconfigs/n/napari/napari-0.4.18-foss-2023a.eb +++ b/easybuild/easyconfigs/n/napari/napari-0.4.18-foss-2023a.eb @@ -34,6 +34,7 @@ dependencies = [ ('Qtconsole', '5.5.1'), ('Pint', '0.23'), ('wrapt', '1.15.0'), + ('build', '1.0.3'), ] use_pip = True @@ -85,9 +86,6 @@ exts_list = [ ('pyproject_hooks', '1.0.0', { 'checksums': ['f271b298b97f5955d53fb12b72c1fb1948c22c1a6b70b315c54cedaca0264ef5'], }), - ('build', '1.0.3', { - 'checksums': ['538aab1b64f9828977f84bc63ae570b060a8ed1be419e7870b8b4fc5e6ea553b'], - }), ('mdurl', '0.1.2', { 'checksums': ['bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba'], }), diff --git a/easybuild/easyconfigs/n/napari/napari-0.4.19.post1-foss-2023a.eb b/easybuild/easyconfigs/n/napari/napari-0.4.19.post1-foss-2023a.eb new file mode 100644 index 00000000000..dd8ff3a3059 --- /dev/null +++ b/easybuild/easyconfigs/n/napari/napari-0.4.19.post1-foss-2023a.eb @@ -0,0 +1,121 @@ +# Thomas Hoffmann, EMBL Heidelberg, structures-it@emblde, 2024/01 +easyblock = 'PythonBundle' + +name = 'napari' +version = '0.4.19.post1' + +homepage = 'https://napari.org/' +description = """napari is a fast, interactive, multi-dimensional image viewer for Python. It's +designed for browsing, annotating, and analyzing large multi-dimensional images. +It's built on top of Qt (for the GUI), vispy (for performant GPU-based +rendering), and the scientific Python stack (numpy, scipy).""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +builddependencies = [ + ('poetry', '1.5.1'), +] + +dependencies = [ + ('Python', '3.11.3'), + ('PyQt5', '5.15.10'), + ('SciPy-bundle', '2023.07'), + ('PyYAML', '6.0'), + ('pydantic', '2.5.3'), + ('dask', '2023.9.2'), + ('PyOpenGL', '3.1.7'), + ('imageio', '2.33.1'), + ('tqdm', '4.66.1'), + ('IPython', '8.14.0'), + ('VisPy', '0.14.1'), + ('scikit-image', '0.22.0'), + ('matplotlib', '3.7.2'), + ('Qtconsole', '5.5.1'), + ('Pint', '0.23'), + ('wrapt', '1.15.0'), +] + +use_pip = True +sanity_pip_check = True + +exts_list = [ + ('in_n_out', '0.1.9', { + 'checksums': ['89feb944e420faf42d3c2542145681b4d57144355932c2b859695fcdc4f9a2da'], + }), + ('pydantic_compat', '0.1.2', { + 'checksums': ['c5c5bca39ca2d22cad00c02898e400e1920e5127649a8e860637f15566739373'], + }), + ('app_model', '0.2.4', { + 'checksums': ['127cda637003a34b26371c9c68ae5b24d7012682f071a10657a94900c8cd439d'], + }), + ('cachey', '0.2.1', { + 'checksums': ['0310ba8afe52729fa7626325c8d8356a8421c434bf887ac851e58dcf7cf056a6'], + }), + ('docstring_parser', '0.15', { + 'checksums': ['48ddc093e8b1865899956fcc03b03e66bb7240c310fac5af81814580c55bf682'], + }), + ('magicgui', '0.8.1', { + 'checksums': ['43553d8f11002a79dd5fee57caff3ba9d3e37d7d50e8ed40efe79b360adc806a'], + }), + ('numpydoc', '1.6.0', { + 'checksums': ['ae7a5380f0a06373c3afe16ccd15bd79bc6b07f2704cbc6f1e7ecc94b4f5fc0d'], + }), + ('psygnal', '0.9.5', { + 'checksums': ['4956ea6c36a75f7fc457558935b67dd8be2594661b4d08eeb3357d69c509c55f'], + }), + ('superqt', '0.6.1', { + 'checksums': ['f1a9e0499c4bbcef34b6f895eb57cd41301b3799242cd030029238124184dade'], + }), + ('napari-console', '0.0.9', { + 'modulename': 'napari_console', + 'checksums': ['3bc86dd96cf94b1af96bba1043f90a39b1369bb978a8df9038a1ac422e66b532'], + }), + ('napari-plugin-engine', '0.2.0', { + 'checksums': ['fa926f869d70e0d652c005661948cd0c7fee5508ae17d437937f34f5287590b3'], + }), + ('napari-svg', '0.1.10', { + 'checksums': ['18e642c888a71e09c9d1097f25bced1e7ef5dde1771469647bcd77975800f77d'], + }), + ('typer', '0.9.0', { + 'checksums': ['50922fd79aea2f4751a8e0408ff10d2662bd0c8bbfa84755a699f3bada2978b2'], + }), + ('pyproject_hooks', '1.0.0', { + 'checksums': ['f271b298b97f5955d53fb12b72c1fb1948c22c1a6b70b315c54cedaca0264ef5'], + }), + ('build', '1.1.1', { + 'checksums': ['8eea65bb45b1aac2e734ba2cc8dad3a6d97d97901a395bd0ed3e7b46953d2a31'], + }), + ('mdurl', '0.1.2', { + 'checksums': ['bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba'], + }), + ('markdown-it-py', '3.0.0', { + 'modulename': 'markdown_it', + 'checksums': ['e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb'], + }), + ('rich', '13.7.1', { + 'checksums': ['9be308cb1fe2f1f57d67ce99e95af38a1e2bc71ad9813b0e247cf7ffbcc3a432'], + }), + ('npe2', '0.7.4', { + 'checksums': ['969d5394b24225cff1ab6625f29ea1603a6509714bd9496c49e697c3e49077b0'], + }), + ('mypy_extensions', '1.0.0', { + 'checksums': ['75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782'], + }), + (name, version, { + 'checksums': ['88e298697c38c9f842d7c26c8d51d2e0fbb90d0be05575fdd159d27eede11301'], + }), +] + +fix_python_shebang_for = ['bin/napari'] + +sanity_check_paths = { + 'files': ['bin/%(name)s'], + 'dirs': ['lib/python%(pyshortver)s/site-packages/%(name)s'], +} + +sanity_check_commands = [ + '%(name)s --help', + 'pyrcc5 -version 2>&1 |grep pyrcc5' # make sure PyQt5 module was not built with --no-tools +] + +moduleclass = 'vis' diff --git a/easybuild/easyconfigs/n/nauty/nauty-2.8.8-GCC-13.2.0.eb b/easybuild/easyconfigs/n/nauty/nauty-2.8.8-GCC-13.2.0.eb new file mode 100644 index 00000000000..66a269da4e9 --- /dev/null +++ b/easybuild/easyconfigs/n/nauty/nauty-2.8.8-GCC-13.2.0.eb @@ -0,0 +1,53 @@ +easyblock = 'MakeCp' + +name = 'nauty' +version = '2.8.8' + +homepage = 'https://pallini.di.uniroma1.it/' +description = """nauty and Traces are programs for computing automorphism groups of graphs and +digraphs. They can also produce a canonical label.""" + +toolchain = {'name': 'GCC', 'version': '13.2.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://pallini.di.uniroma1.it'] +sources = ['nauty%s.tar.gz' % version.replace('.', '_')] +checksums = ['159d2156810a6bb240410cd61eb641add85088d9f15c888cdaa37b8681f929ce'] + +local_executables = [ + 'addedgeg', 'amtog', 'assembleg', 'biplabg', 'catg', 'complg', 'converseg', 'copyg', 'countg', 'cubhamg', + 'deledgeg', 'delptg', 'directg', 'dreadnaut', 'dretodot', 'dretog', 'edgetransg', 'genbg', 'genbgL', 'geng', + 'gengL', 'genquarticg', 'genrang', 'genspecialg', 'gentourng', 'gentreeg', 'hamheuristic', 'labelg', 'linegraphg', + 'listg', 'multig', 'newedgeg', 'NRswitchg', 'pickg', 'planarg', 'ranlabg', 'shortg', 'showg', 'subdivideg', + 'twohamg', 'underlyingg', 'vcolg', 'watercluster2' +] +local_headers = [ + 'gtools.h', 'gutils.h', 'naugroup.h', 'naugstrings.h', 'naurng.h', 'nausparse.h', 'nautaux.h', 'nautinv.h', + 'naututil.h', 'nautycliquer.h', 'nauty.h', 'planarity.h', 'quarticirred28.h', 'schreier.h', 'traces.h' +] +local_libs = ['nauty%s.a' % l for l in ['', '1', 'L', 'L1', 'W', 'W1']] + +# Configure and enable thread-local variables +prebuildopts = "./configure --enable-tls && " + +runtest = "checks" + +files_to_copy = [ + (local_executables, "bin"), + (local_headers, "include/%(name)s"), + (local_libs, "lib"), +] + +# prepend "lib" to library files to standarize their name +postinstallcmds = ["cd %%(installdir)s/lib/ && mv %s lib%s" % (l, l) for l in local_libs] + +sanity_check_paths = { + 'files': ['bin/%s' % x for x in local_executables] + + ['include/%%(name)s/%s' % h for h in local_headers] + + ['lib/lib%s' % l for l in local_libs], + 'dirs': [''] +} + +sanity_check_commands = ["dreadnaut --help"] + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/n/nbclassic/nbclassic-1.0.0-GCCcore-13.2.0.eb b/easybuild/easyconfigs/n/nbclassic/nbclassic-1.0.0-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..26033ffa7ec --- /dev/null +++ b/easybuild/easyconfigs/n/nbclassic/nbclassic-1.0.0-GCCcore-13.2.0.eb @@ -0,0 +1,51 @@ +easyblock = 'PythonPackage' + +name = 'nbclassic' +version = "1.0.0" + +homepage = 'https://jupyter.org/' +description = """NbClassic provides a backwards compatible Jupyter Notebook interface + that you can install side-by-side with the latest versions: That way, you can fearlessly + upgrade without worrying about your classic extensions and customizations breaking.""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +builddependencies = [ + ('binutils', '2.40'), + ('maturin', '1.3.1'), +] +dependencies = [ + ('Python', '3.11.5'), + ('jupyter-server', '2.14.0'), +] + +sources = [SOURCE_TAR_GZ] +patches = ['nbclassic-1.0.0_fix_setup_version.patch'] +checksums = [ + {'nbclassic-1.0.0.tar.gz': '0ae11eb2319455d805596bf320336cda9554b41d99ab9a3c31bf8180bffa30e3'}, + {'nbclassic-1.0.0_fix_setup_version.patch': 'c26d91ac1d0cea2b361b2619076acdaf5fcd5ff2363d9e5f5e1bd737b4b50736'}, +] + +download_dep_fail = True +sanity_pip_check = True +use_pip = True + +local_binaries = [ + 'jupyter-nbclassic', + 'jupyter-nbclassic-bundlerextension', + 'jupyter-nbclassic-extension', + 'jupyter-nbclassic-serverextension', +] +sanity_check_paths = { + 'files': ['bin/%s' % x for x in local_binaries], + 'dirs': [], +} + +sanity_check_commands = ['jupyter nbclassic --help'] + +modextrapaths = { + 'JUPYTER_CONFIG_PATH': 'etc/jupyter', + 'JUPYTER_PATH': 'share/jupyter', +} + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/n/ncurses/ncurses-6.4-GCCcore-12.3.0.eb b/easybuild/easyconfigs/n/ncurses/ncurses-6.4-GCCcore-12.3.0.eb index b1731393710..868596ebe86 100644 --- a/easybuild/easyconfigs/n/ncurses/ncurses-6.4-GCCcore-12.3.0.eb +++ b/easybuild/easyconfigs/n/ncurses/ncurses-6.4-GCCcore-12.3.0.eb @@ -18,9 +18,13 @@ source_urls = [GNU_SOURCE] sources = [SOURCE_TAR_GZ] checksums = ['6931283d9ac87c5073f30b6290c4c75f21632bb4fc3603ac8100812bed248159'] -builddependencies = [('binutils', '2.40')] +builddependencies = [ + ('binutils', '2.40'), + ('pkgconf', '1.9.5') +] local_common_configopts = "--with-shared --enable-overwrite --without-ada --enable-symlinks --with-versioned-syms " +local_common_configopts += "--enable-pc-files " configopts = [ # build ncurses: serial build in default paths with shared libraries local_common_configopts, @@ -35,12 +39,14 @@ postinstallcmds = ['cd %(installdir)s/lib && for l in libncurses{.,_,w}*; do ln _target_suffix = ['', 'w'] # '': ncurses, 'w': ncursesw _lib_suffix = ['%s%s' % (x, y) for x in _target_suffix for y in ['.a', '_g.a', '.' + SHLIB_EXT]] _lib_names = ['form', 'menu', 'ncurses', 'panel', 'tinfo'] +_pc_names = ['form', 'menu', 'ncurses++', 'ncurses', 'panel'] sanity_check_paths = { 'files': ['bin/%s' % x for x in ["captoinfo", "clear", "infocmp", "infotocap", "ncurses%(version_major)s-config", "reset", "tabs", "tic", "toe", "tput", "tset"]] + ['lib/lib%s%s' % (x, y) for x in _lib_names for y in _lib_suffix] + - ['lib/libncurses++%s.a' % x for x in _target_suffix], + ['lib/libncurses++%s.a' % x for x in _target_suffix] + + ['lib/pkgconfig/%s%s.pc' % (x, y) for x in _pc_names for y in _target_suffix], 'dirs': ['include', 'include/ncursesw'], } diff --git a/easybuild/easyconfigs/n/ncurses/ncurses-6.4-GCCcore-13.1.0.eb b/easybuild/easyconfigs/n/ncurses/ncurses-6.4-GCCcore-13.1.0.eb index edca9ab5954..40a35192762 100644 --- a/easybuild/easyconfigs/n/ncurses/ncurses-6.4-GCCcore-13.1.0.eb +++ b/easybuild/easyconfigs/n/ncurses/ncurses-6.4-GCCcore-13.1.0.eb @@ -18,9 +18,13 @@ source_urls = [GNU_SOURCE] sources = [SOURCE_TAR_GZ] checksums = ['6931283d9ac87c5073f30b6290c4c75f21632bb4fc3603ac8100812bed248159'] -builddependencies = [('binutils', '2.40')] +builddependencies = [ + ('binutils', '2.40'), + ('pkgconf', '1.9.4'), +] local_common_configopts = "--with-shared --enable-overwrite --without-ada --enable-symlinks --with-versioned-syms " +local_common_configopts += "--enable-pc-files " configopts = [ # build ncurses: serial build in default paths with shared libraries local_common_configopts, @@ -35,12 +39,14 @@ postinstallcmds = ['cd %(installdir)s/lib && for l in libncurses{.,_,w}*; do ln _target_suffix = ['', 'w'] # '': ncurses, 'w': ncursesw _lib_suffix = ['%s%s' % (x, y) for x in _target_suffix for y in ['.a', '_g.a', '.' + SHLIB_EXT]] _lib_names = ['form', 'menu', 'ncurses', 'panel', 'tinfo'] +_pc_names = ['form', 'menu', 'ncurses++', 'ncurses', 'panel'] sanity_check_paths = { 'files': ['bin/%s' % x for x in ["captoinfo", "clear", "infocmp", "infotocap", "ncurses%(version_major)s-config", "reset", "tabs", "tic", "toe", "tput", "tset"]] + ['lib/lib%s%s' % (x, y) for x in _lib_names for y in _lib_suffix] + - ['lib/libncurses++%s.a' % x for x in _target_suffix], + ['lib/libncurses++%s.a' % x for x in _target_suffix] + + ['lib/pkgconfig/%s%s.pc' % (x, y) for x in _pc_names for y in _target_suffix], 'dirs': ['include', 'include/ncursesw'], } diff --git a/easybuild/easyconfigs/n/ncurses/ncurses-6.4-GCCcore-13.2.0.eb b/easybuild/easyconfigs/n/ncurses/ncurses-6.4-GCCcore-13.2.0.eb index 0bda2c35075..4c46e083143 100644 --- a/easybuild/easyconfigs/n/ncurses/ncurses-6.4-GCCcore-13.2.0.eb +++ b/easybuild/easyconfigs/n/ncurses/ncurses-6.4-GCCcore-13.2.0.eb @@ -18,9 +18,13 @@ source_urls = [GNU_SOURCE] sources = [SOURCE_TAR_GZ] checksums = ['6931283d9ac87c5073f30b6290c4c75f21632bb4fc3603ac8100812bed248159'] -builddependencies = [('binutils', '2.40')] +builddependencies = [ + ('binutils', '2.40'), + ('pkgconf', '2.0.3'), +] local_common_configopts = "--with-shared --enable-overwrite --without-ada --enable-symlinks --with-versioned-syms " +local_common_configopts += "--enable-pc-files " configopts = [ # build ncurses: serial build in default paths with shared libraries local_common_configopts, @@ -35,12 +39,14 @@ postinstallcmds = ['cd %(installdir)s/lib && for l in libncurses{.,_,w}*; do ln _target_suffix = ['', 'w'] # '': ncurses, 'w': ncursesw _lib_suffix = ['%s%s' % (x, y) for x in _target_suffix for y in ['.a', '_g.a', '.' + SHLIB_EXT]] _lib_names = ['form', 'menu', 'ncurses', 'panel', 'tinfo'] +_pc_names = ['form', 'menu', 'ncurses++', 'ncurses', 'panel'] sanity_check_paths = { 'files': ['bin/%s' % x for x in ["captoinfo", "clear", "infocmp", "infotocap", "ncurses%(version_major)s-config", "reset", "tabs", "tic", "toe", "tput", "tset"]] + ['lib/lib%s%s' % (x, y) for x in _lib_names for y in _lib_suffix] + - ['lib/libncurses++%s.a' % x for x in _target_suffix], + ['lib/libncurses++%s.a' % x for x in _target_suffix] + + ['lib/pkgconfig/%s%s.pc' % (x, y) for x in _pc_names for y in _target_suffix], 'dirs': ['include', 'include/ncursesw'], } diff --git a/easybuild/easyconfigs/n/ncurses/ncurses-6.5-GCCcore-13.3.0.eb b/easybuild/easyconfigs/n/ncurses/ncurses-6.5-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..c34643c0b37 --- /dev/null +++ b/easybuild/easyconfigs/n/ncurses/ncurses-6.5-GCCcore-13.3.0.eb @@ -0,0 +1,53 @@ +easyblock = 'ConfigureMake' + +name = 'ncurses' +version = '6.5' + +homepage = 'https://www.gnu.org/software/ncurses/' +description = """ + The Ncurses (new curses) library is a free software emulation of curses in + System V Release 4.0, and more. It uses Terminfo format, supports pads and + color and multiple highlights and forms characters and function-key mapping, + and has all the other SYSV-curses enhancements over BSD Curses. +""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} +toolchainopts = {'pic': True} + +source_urls = [GNU_SOURCE] +sources = [SOURCE_TAR_GZ] +checksums = ['136d91bc269a9a5785e5f9e980bc76ab57428f604ce3e5a5a90cebc767971cc6'] + +builddependencies = [ + ('binutils', '2.42'), + ('pkgconf', '2.2.0'), +] + +local_common_configopts = "--with-shared --enable-overwrite --without-ada --enable-symlinks --with-versioned-syms " +local_common_configopts += "--enable-pc-files --with-pkg-config-libdir=%(installdir)s/lib/pkgconfig " +configopts = [ + # build ncurses: serial build in default paths with shared libraries + local_common_configopts + "--disable-widec", + # build ncursesw: serial with UTF-8 + local_common_configopts + "--enable-ext-colors --enable-widec --includedir=%(installdir)s/include/ncursesw/", +] + +# Symlink libtinfo to libncurses +# libncurses with this configopts has all the symbols from libtinfo, but some packages look for libtinfo specifically +postinstallcmds = ['cd %(installdir)s/lib && for l in libncurses{.,_,w}*; do ln -s "${l}" "${l/ncurses/tinfo}"; done'] + +_target_suffix = ['', 'w'] # '': ncurses, 'w': ncursesw +_lib_suffix = ['%s%s' % (x, y) for x in _target_suffix for y in ['.a', '_g.a', '.' + SHLIB_EXT]] +_lib_names = ['form', 'menu', 'ncurses', 'panel', 'tinfo'] +_pc_names = ['form', 'menu', 'ncurses++', 'ncurses', 'panel'] + +sanity_check_paths = { + 'files': ['bin/%s' % x for x in ["captoinfo", "clear", "infocmp", "infotocap", "ncurses%(version_major)s-config", + "reset", "tabs", "tic", "toe", "tput", "tset"]] + + ['lib/lib%s%s' % (x, y) for x in _lib_names for y in _lib_suffix] + + ['lib/libncurses++%s.a' % x for x in _target_suffix] + + ['lib/pkgconfig/%s%s.pc' % (x, y) for x in _pc_names for y in _target_suffix], + 'dirs': ['include', 'include/ncursesw'], +} + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/n/ncurses/ncurses-6.5.eb b/easybuild/easyconfigs/n/ncurses/ncurses-6.5.eb new file mode 100644 index 00000000000..a3ff51a30fc --- /dev/null +++ b/easybuild/easyconfigs/n/ncurses/ncurses-6.5.eb @@ -0,0 +1,48 @@ +easyblock = 'ConfigureMake' + +name = 'ncurses' +version = '6.5' + +homepage = 'https://www.gnu.org/software/ncurses/' +description = """ + The Ncurses (new curses) library is a free software emulation of curses in + System V Release 4.0, and more. It uses Terminfo format, supports pads and + color and multiple highlights and forms characters and function-key mapping, + and has all the other SYSV-curses enhancements over BSD Curses. +""" + +toolchain = SYSTEM + +source_urls = [GNU_SOURCE] +sources = [SOURCE_TAR_GZ] +checksums = ['136d91bc269a9a5785e5f9e980bc76ab57428f604ce3e5a5a90cebc767971cc6'] + +local_common_configopts = "--with-shared --enable-overwrite --without-ada --enable-symlinks --with-versioned-syms " +configopts = [ + # build ncurses: serial build in default paths with shared libraries + local_common_configopts + "--disable-widec", + # build ncursesw: serial with UTF-8 + local_common_configopts + "--enable-ext-colors --enable-widec --includedir=%(installdir)s/include/ncursesw/", +] + +# need to take care of $CFLAGS ourselves with SYSTEM toolchain +# we need to add -fPIC, but should also include -O* option to avoid compiling with -O0 (default for GCC) +buildopts = 'CFLAGS="-O2 -fPIC"' + +# Symlink libtinfo to libncurses +# libncurses with this configopts has all the symbols from libtinfo, but some packages look for libtinfo specifically +postinstallcmds = ['cd %(installdir)s/lib && for l in libncurses{.,_,w}*; do ln -s "${l}" "${l/ncurses/tinfo}"; done'] + +_target_suffix = ['', 'w'] # '': ncurses, 'w': ncursesw +_lib_suffix = ['%s%s' % (x, y) for x in _target_suffix for y in ['.a', '_g.a', '.' + SHLIB_EXT]] +_lib_names = ['form', 'menu', 'ncurses', 'panel', 'tinfo'] + +sanity_check_paths = { + 'files': ['bin/%s' % x for x in ["captoinfo", "clear", "infocmp", "infotocap", "ncurses%(version_major)s-config", + "reset", "tabs", "tic", "toe", "tput", "tset"]] + + ['lib/lib%s%s' % (x, y) for x in _lib_names for y in _lib_suffix] + + ['lib/libncurses++%s.a' % x for x in _target_suffix], + 'dirs': ['include', 'include/ncursesw'], +} + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/n/nghttp2/nghttp2-1.58.0-GCC-12.3.0.eb b/easybuild/easyconfigs/n/nghttp2/nghttp2-1.58.0-GCC-12.3.0.eb new file mode 100644 index 00000000000..95087f63a51 --- /dev/null +++ b/easybuild/easyconfigs/n/nghttp2/nghttp2-1.58.0-GCC-12.3.0.eb @@ -0,0 +1,55 @@ +# Author: J. Sassmannshausen (Imperial College London/UK) +# Update: Pavel Tománek (Inuits) + +easyblock = 'CMakeMake' + +name = 'nghttp2' +version = '1.58.0' + +homepage = 'https://github.com/nghttp2/nghttp2' +description = """ +This is an implementation of the Hypertext Transfer Protocol version 2 in C. + +The framing layer of HTTP/2 is implemented as a reusable C library. +On top of that, we have implemented an HTTP/2 client, server and proxy. +We have also developed load test and benchmarking tools for HTTP/2. + +An HPACK encoder and decoder are available as a public API.""" + +toolchain = {'name': 'GCC', 'version': '12.3.0'} +toolchainopts = {'pic': True} + +github_account = 'nghttp2' +source_urls = [GITHUB_SOURCE] +sources = ['v%(version)s.tar.gz'] +checksums = ['7da19947b33a07ddcf97b9791331bfee8a8545e6b394275a9971f43cae9d636b'] + +builddependencies = [ + ('binutils', '2.40'), + ('pkgconf', '1.9.5'), + ('CMake', '3.26.3'), + ('CUnit', '2.1-3'), + ('Boost', '1.82.0'), +] + +dependencies = [ + ('OpenSSL', '1.1', '', SYSTEM), + ('nghttp3', '1.3.0'), + ('Python', '3.11.3'), + ('libxml2', '2.11.4'), + ('Jansson', '2.14'), + ('jemalloc', '5.3.0'), + ('ngtcp2', '1.2.0'), + ('libevent', '2.1.12'), + ('libev', '4.33'), + ('c-ares', '1.19.1'), +] + +runtest = 'check' + +sanity_check_paths = { + 'files': ['lib/libnghttp2.%s' % SHLIB_EXT], + 'dirs': ['include/nghttp2', 'share'], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/n/nghttp3/nghttp3-1.3.0-GCCcore-12.3.0.eb b/easybuild/easyconfigs/n/nghttp3/nghttp3-1.3.0-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..5800863a567 --- /dev/null +++ b/easybuild/easyconfigs/n/nghttp3/nghttp3-1.3.0-GCCcore-12.3.0.eb @@ -0,0 +1,43 @@ +easyblock = 'CMakeMake' + +name = 'nghttp3' +version = '1.3.0' + +homepage = 'https://github.com/ngtcp2/nghttp3' +description = """ nghttp3 is an implementation of RFC 9114 HTTP/3 +mapping over QUIC and RFC 9204 QPACK in C. +It does not depend on any particular QUIC transport implementation.""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} +toolchainopts = {'pic': True} + +# github_account = 'ngtcp2' +# source_urls = [GITHUB_SOURCE] +# sources = ['v%(version)s.tar.gz'] +sources = [{ + 'filename': 'v%(version)s.tar.gz', + 'git_config': { + 'url': 'https://github.com/ngtcp2', + 'repo_name': 'nghttp3', + 'tag': 'v%(version)s', + 'recursive': True, + 'keep_git_dir': True, + } +}] +checksums = [None] + +builddependencies = [ + ('binutils', '2.40'), + ('CMake', '3.26.3'), + ('pkgconf', '1.9.5'), + ('CUnit', '2.1-3'), +] + +runtest = 'check' + +sanity_check_paths = { + 'files': ['lib/libnghttp3.a', 'lib/libnghttp3.%s' % SHLIB_EXT], + 'dirs': ['include/nghttp3'], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/n/nglview/nglview-3.1.2-foss-2023a.eb b/easybuild/easyconfigs/n/nglview/nglview-3.1.2-foss-2023a.eb new file mode 100644 index 00000000000..55899477fd5 --- /dev/null +++ b/easybuild/easyconfigs/n/nglview/nglview-3.1.2-foss-2023a.eb @@ -0,0 +1,37 @@ +easyblock = 'PythonBundle' + +name = 'nglview' +version = '3.1.2' + +homepage = 'https://github.com/arose/nglview' +description = "IPython widget to interactively view molecular structures and trajectories." + +toolchain = {'name': 'foss', 'version': '2023a'} + +builddependencies = [ + ('nodejs', '18.17.1'), +] + +dependencies = [ + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), + ('JupyterNotebook', '7.0.2'), + ('ASE', '3.22.1'), # optional + ('MDAnalysis', '2.7.0'), # optional + ('MDTraj', '1.9.9'), # optional +] + +use_pip = True + +exts_list = [ + (name, version, { + 'use_pip_extras': 'ase,MDAnalysis,mdtraj', + 'checksums': ['7f672efa2b6ca0db34de968e5b5766b14b1b3dade212d2f8a083c600a11345ce'], + }), +] + +sanity_pip_check = True + +modextrapaths = {'EB_ENV_JUPYTER_ROOT': ''} + +moduleclass = 'chem' diff --git a/easybuild/easyconfigs/n/ngtcp2/ngtcp2-1.2.0-GCC-12.3.0.eb b/easybuild/easyconfigs/n/ngtcp2/ngtcp2-1.2.0-GCC-12.3.0.eb new file mode 100644 index 00000000000..67309cf83e2 --- /dev/null +++ b/easybuild/easyconfigs/n/ngtcp2/ngtcp2-1.2.0-GCC-12.3.0.eb @@ -0,0 +1,45 @@ +# Author: J. Sassmannshausen (Imperial College London/UK) +# Update: P.Tománek (Inuits) + +easyblock = 'CMakeMake' + +name = 'ngtcp2' +version = '1.2.0' + +homepage = 'https://github.com/ngtcp2/ngtcp2' +description = """ +'Call it TCP/2. One More Time.' + +ngtcp2 project is an effort to implement RFC9000 QUIC protocol.""" + +toolchain = {'name': 'GCC', 'version': '12.3.0'} +toolchainopts = {'pic': True} + +github_account = 'ngtcp2' +source_urls = [GITHUB_SOURCE] +sources = ['v%(version)s.tar.gz'] +checksums = ['15f3dd4cc4db2435bcd0b5253ccce4cbab26d18cc6ef4f00b5cb4af21ed06a0b'] + +builddependencies = [ + ('binutils', '2.40'), + ('CMake', '3.26.3'), + ('CUnit', '2.1-3'), +] + +dependencies = [ + ('OpenSSL', '1.1', '', SYSTEM), + ('GnuTLS', '3.7.8'), + ('nghttp3', '1.3.0'), + ('libev', '4.33'), +] + +configopts = '-DENABLE_GNUTLS=True' + +runtest = 'check' + +sanity_check_paths = { + 'files': ['lib/libngtcp2.%s' % SHLIB_EXT], + 'dirs': ['share/doc/ngtcp2'], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/n/nodejs/nodejs-20.13.1-GCCcore-13.3.0.eb b/easybuild/easyconfigs/n/nodejs/nodejs-20.13.1-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..b49990e46e7 --- /dev/null +++ b/easybuild/easyconfigs/n/nodejs/nodejs-20.13.1-GCCcore-13.3.0.eb @@ -0,0 +1,54 @@ +easyblock = 'ConfigureMake' + +name = 'nodejs' +version = '20.13.1' # LTS on 2024-05-24 +local_libversion = '115' + +homepage = 'https://nodejs.org' +description = """Node.js is a platform built on Chrome's JavaScript runtime + for easily building fast, scalable network applications. Node.js uses an + event-driven, non-blocking I/O model that makes it lightweight and efficient, + perfect for data-intensive real-time applications that run across distributed devices.""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = ['https://nodejs.org/dist/v%(version)s/'] +sources = ['node-v%(version)s.tar.gz'] +checksums = ['a85ee53aa0a5c2f5ca94fa414cdbceb91eb7d18a77fc498358512c14cc6c6991'] + +builddependencies = [ + ('binutils', '2.42'), + ('Python', '3.12.3'), + ('pkgconf', '2.2.0'), +] + +dependencies = [ + ('ICU', '75.1'), + ('OpenSSL', '3', '', SYSTEM), +] + +# Use ICU and OpenSSL from EasyBuild +local_common_configopts = "--with-intl=system-icu --shared-openssl " + +configopts = [ + local_common_configopts, # Static build + '--shared %s' % local_common_configopts, # Build libnode.so in a second run +] + +# Link libv8 libs to libnode +local_extra_sonames = ['libnode', 'libv8', 'libv8_libbase', 'libv8_libplatform'] +local_extra_libs = ['%s.%s' % (x, SHLIB_EXT) for x in local_extra_sonames] +local_libnode_real = "libnode.%s.%s" % (SHLIB_EXT, local_libversion) + +postinstallcmds = [ + "cd %%(installdir)s/lib && ln -s %s %s" % (local_libnode_real, x) for x in local_extra_libs +] + +sanity_check_paths = { + 'files': ['bin/node', 'bin/npm'] + ['lib/%s' % x for x in [local_libnode_real] + local_extra_libs], + 'dirs': ['lib/node_modules', 'include/node'] +} + +sanity_check_commands = ["node --help"] + +moduleclass = 'lang' diff --git a/easybuild/easyconfigs/n/numactl/numactl-2.0.18-GCCcore-13.3.0.eb b/easybuild/easyconfigs/n/numactl/numactl-2.0.18-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..119e66afaa7 --- /dev/null +++ b/easybuild/easyconfigs/n/numactl/numactl-2.0.18-GCCcore-13.3.0.eb @@ -0,0 +1,34 @@ +easyblock = 'ConfigureMake' + +name = 'numactl' +version = '2.0.18' + +homepage = 'https://github.com/numactl/numactl' + +description = """ + The numactl program allows you to run your application program on specific + cpu's and memory nodes. It does this by supplying a NUMA memory policy to + the operating system before running your program. The libnuma library provides + convenient ways for you to add NUMA memory policies into your own program. +""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/numactl/numactl/archive/'] +sources = ['v%(version)s.tar.gz'] +checksums = ['8cd6c13f3096e9c2293c1d732f56e2aa37a7ada1a98deed3fac7bd6da1aaaaf6'] + +builddependencies = [ + ('binutils', '2.42'), + ('Autotools', '20231222'), +] + +preconfigopts = "./autogen.sh && " + +sanity_check_paths = { + 'files': ['bin/numactl', 'bin/numastat', 'lib/libnuma.%s' % SHLIB_EXT, 'lib/libnuma.a'], + 'dirs': ['share/man', 'include'] +} + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/n/nvitop/nvitop-1.3.2-GCCcore-12.3.0-CUDA-12.3.0.eb b/easybuild/easyconfigs/n/nvitop/nvitop-1.3.2-GCCcore-12.3.0-CUDA-12.3.0.eb new file mode 100644 index 00000000000..86418708323 --- /dev/null +++ b/easybuild/easyconfigs/n/nvitop/nvitop-1.3.2-GCCcore-12.3.0-CUDA-12.3.0.eb @@ -0,0 +1,47 @@ +# Autor: J. Sassmannshausen (Imperial College London/UK) + +easyblock = 'PythonBundle' + +name = 'nvitop' +version = '1.3.2' +versionsuffix = '-CUDA-%(cudaver)s' + +homepage = 'https://nvitop.readthedocs.io.' +description = """An interactive NVIDIA-GPU process viewer and beyond, the one-stop +solution for GPU process management.""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +builddependencies = [ + ('binutils', '2.40'), + ('hatchling', '1.18.0'), +] + +dependencies = [ + ('Python', '3.11.3'), + ('CUDA', '12.3.0', '', SYSTEM), +] + +use_pip = True +sanity_pip_check = True + +exts_list = [ + ('termcolor', '2.3.0', { + 'checksums': ['b5b08f68937f138fe92f6c089b99f1e2da0ae56c52b78bf7075fd95420fd9a5a'], + }), + ('cachetools', '5.3.3', { + 'checksums': ['ba29e2dfa0b8b556606f097407ed1aa62080ee108ab0dc5ec9d6a723a007d105'], + }), + ('psutil', '5.9.8', { + 'checksums': ['6be126e3225486dff286a8fb9a06246a5253f4c7c53b475ea5f5ac934e64194c'], + }), + ('nvidia-ml-py', '12.535.161', { + 'checksums': ['2bcc31ff7a0ea291ed8d7fc39b149391a42c2fb1cb4256c935e692de488b4d17'], + 'modulename': 'pynvml', + }), + (name, version, { + 'checksums': ['9ea401dfca6b268cf30c041e428f461aab31e4bc5e17bc8e923568e16c9cb1f1'], + }), +] + +moduleclass = 'vis' diff --git a/easybuild/easyconfigs/n/nvtop/nvtop-3.1.0-GCCcore-12.3.0.eb b/easybuild/easyconfigs/n/nvtop/nvtop-3.1.0-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..7e479cb9a2e --- /dev/null +++ b/easybuild/easyconfigs/n/nvtop/nvtop-3.1.0-GCCcore-12.3.0.eb @@ -0,0 +1,37 @@ +easyblock = 'CMakeMake' + +name = 'nvtop' +version = '3.1.0' + +homepage = 'https://github.com/Syllo/nvtop' +description = 'htop-like GPU usage monitor' + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +source_urls = ['https://github.com/Syllo/nvtop/archive/'] +sources = ['%(version)s.tar.gz'] +checksums = ['9481c45c136163574f1f16d87789859430bc90a1dc62f181b269b5edd92f01f3'] + +builddependencies = [ + ('binutils', '2.40'), + ('CMake', '3.26.3'), +] + +# Note: software dlopen's libraries from the OS installed drivers, thus no specific CUDA dependency. +dependencies = [ + ('ncurses', '6.4'), + ('libdrm', '2.4.115'), +] + +osdependencies = [('libsystemd-dev', 'libudev-dev', 'systemd-devel')] + +separate_build_dir = True + +sanity_check_paths = { + 'files': ['bin/nvtop'], + 'dirs': [], +} + +sanity_check_commands = ["nvtop --help"] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/o/OCaml/OCaml-5.1.1-GCC-13.2.0.eb b/easybuild/easyconfigs/o/OCaml/OCaml-5.1.1-GCC-13.2.0.eb new file mode 100644 index 00000000000..bd3ad98eb7e --- /dev/null +++ b/easybuild/easyconfigs/o/OCaml/OCaml-5.1.1-GCC-13.2.0.eb @@ -0,0 +1,54 @@ +name = 'OCaml' +version = '5.1.1' + +homepage = 'http://ocaml.org/' +description = """OCaml is a general purpose industrial-strength programming language + with an emphasis on expressiveness and safety. Developed for more than 20 years at Inria + it benefits from one of the most advanced type systems and supports functional, + imperative and object-oriented styles of programming.""" + +toolchain = {'name': 'GCC', 'version': '13.2.0'} + +local_opam_ver = '2.1.5' +source_urls = [ + 'https://github.com/ocaml/ocaml/archive', + 'https://github.com/ocaml/opam/releases/download/%s' % local_opam_ver, +] +sources = [ + '%s.tar.gz' % version, + 'opam-full-%s.tar.gz' % local_opam_ver, +] +checksums = [ + {'5.1.1.tar.gz': '57f7b382b3d71198413ede405d95ef3506f1cdc480cda1dca1e26b37cb090e17'}, + {'opam-full-2.1.5.tar.gz': '09f8d9e410b2f5723c2bfedbf7970e3b305f5017895fcd91759f05e753ddcea5'}, +] + +builddependencies = [ + ('Autotools', '20220317'), + ('pkgconf', '2.0.3'), +] + +dependencies = [ + ('ncurses', '6.4'), + ('libreadline', '8.2'), +] + +preconfigopts = 'export CFLAGS="$CFLAGS -lm -lpthread" && ' +preconfigopts += 'export AS=as && ' + +# parallel build tends to break +parallel = 1 + +# handled by OPAM, order matters! +# see https://opam.ocaml.org/packages +exts_list = [ + ('ocamlfind', '1.9.6'), + ('batteries', '3.8.0'), + ('conf-pkg-config', '3'), + ('dune-configurator', '3.14.2'), + ('dune', '3.14.2'), + ('base', 'v0.16.3'), + ('stdio', 'v0.16.0'), +] + +moduleclass = 'lang' diff --git a/easybuild/easyconfigs/o/ONNX/ONNX-1.15.0-gfbf-2023a.eb b/easybuild/easyconfigs/o/ONNX/ONNX-1.15.0-gfbf-2023a.eb new file mode 100644 index 00000000000..d538bcb0c02 --- /dev/null +++ b/easybuild/easyconfigs/o/ONNX/ONNX-1.15.0-gfbf-2023a.eb @@ -0,0 +1,62 @@ +easyblock = 'PythonPackage' + +name = 'ONNX' +version = '1.15.0' + +homepage = 'https://onnx.ai' +description = """ +Open Neural Network Exchange (ONNX) is an open ecosystem that empowers AI +developers to choose the right tools as their project evolves. ONNX provides an +open source format for AI models, both deep learning and traditional ML. It +defines an extensible computation graph model, as well as definitions of +built-in operators and standard data types. Currently we focus on the +capabilities needed for inferencing (scoring).""" + +toolchain = {'name': 'gfbf', 'version': '2023a'} + +sources = [SOURCELOWER_TAR_GZ] +patches = ['ONNX-1.15.0_fix-protobuf-linking.patch'] +checksums = [ + {'onnx-1.15.0.tar.gz': 'b18461a7d38f286618ca2a6e78062a2a9c634ce498e631e708a8041b00094825'}, + {'ONNX-1.15.0_fix-protobuf-linking.patch': '5c11eca5275a25d69f989571fe1f387b84c7334478356577f6f6349c5954f54d'}, +] + +builddependencies = [ + ('CMake', '3.26.3'), +] + +dependencies = [ + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), + ('protobuf-python', '4.24.0'), + ('typing-extensions', '4.9.0'), +] + +use_pip = True +download_dep_fail = True + +# hardcode version in pyproject.toml rather than determining it dynamically +preinstallopts = """sed -i 's/"version",//g' pyproject.toml && """ +preinstallopts += """sed -i 's/readme = .*/version = "%(version)s"/g' pyproject.toml && """ + +# specify C++17 standard and link to protobuf shared library (also requires patch to use -DPROTOBUF_USE_DLLS); +# required to fix "error: 'string_view' in namespace 'std' does not name a type", +# see also https://github.com/onnx/onnx/issues/5430 +preinstallopts += "export CMAKE_ARGS='-DCMAKE_CXX_STANDARD=17 -DONNX_USE_PROTOBUF_SHARED_LIBS=ON' && " + +preinstallopts += 'env MAX_JOBS="%(parallel)s"' + +sanity_check_paths = { + 'files': ['bin/check-model', 'bin/check-node', 'bin/backend-test-tools'], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +sanity_check_commands = [ + ('check-model', '-h'), + ('check-node', '-h'), + ('backend-test-tools', '-h'), +] + +sanity_pip_check = True + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/o/OSU-Micro-Benchmarks/OSU-Micro-Benchmarks-7.4-gompi-2024.05.eb b/easybuild/easyconfigs/o/OSU-Micro-Benchmarks/OSU-Micro-Benchmarks-7.4-gompi-2024.05.eb new file mode 100644 index 00000000000..60bfb29130b --- /dev/null +++ b/easybuild/easyconfigs/o/OSU-Micro-Benchmarks/OSU-Micro-Benchmarks-7.4-gompi-2024.05.eb @@ -0,0 +1,26 @@ +easyblock = 'ConfigureMake' + +name = 'OSU-Micro-Benchmarks' +version = '7.4' + +homepage = 'https://mvapich.cse.ohio-state.edu/benchmarks/' +description = """OSU Micro-Benchmarks""" + +toolchain = {'name': 'gompi', 'version': '2024.05'} +toolchainopts = {'usempi': True} + +source_urls = ['https://mvapich.cse.ohio-state.edu/download/mvapich/'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['1edd0c2efa61999409bfb28740a7f39689a5b42b1a1b4c66d1656e5637f7cefc'] + +local_benchmark_dirs = [ + 'libexec/osu-micro-benchmarks/mpi/%s' % x for x in ['collective', 'one-sided', 'pt2pt', 'startup'] +] +modextrapaths = {'PATH': local_benchmark_dirs} + +sanity_check_paths = { + 'files': [], + 'dirs': local_benchmark_dirs, +} + +moduleclass = 'perf' diff --git a/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.3.20-GCC-11.3.0-int8.eb b/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.3.20-GCC-11.3.0-int8.eb new file mode 100644 index 00000000000..9c82eead66a --- /dev/null +++ b/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.3.20-GCC-11.3.0-int8.eb @@ -0,0 +1,62 @@ +name = 'OpenBLAS' +version = '0.3.20' +versionsuffix = '-int8' + +homepage = 'http://www.openblas.net/' +description = """OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version. +This build supports 64bit integers in Fortran (integer*8)""" + +toolchain = {'name': 'GCC', 'version': '11.3.0'} + +source_urls = [ + # order matters, trying to download the large.tgz/timing.tgz LAPACK tarballs from GitHub causes trouble + 'https://www.netlib.org/lapack/timing/', + 'https://github.com/xianyi/OpenBLAS/archive/', +] +sources = ['v%(version)s.tar.gz'] +patches = [ + ('large.tgz', '.'), + ('timing.tgz', '.'), + 'OpenBLAS-0.3.15_workaround-gcc-miscompilation.patch', + 'OpenBLAS-0.3.20_fix-cpuid-neoverse-v1-n2.patch', + 'OpenBLAS-0.3.20_fix-x86-cpuid.patch', + 'OpenBLAS-0.3.20_use-xASUM-microkernels-on-new-intel-cpus.patch', + 'OpenBLAS-0.3.21_fix-order-vectorization.patch', + 'OpenBLAS-0.3.21_disable-fma-in-cscal-zscal.patch', + 'OpenBLAS-0.3.21_avoid-crash-in-zdot.patch', +] +checksums = [ + {'v0.3.20.tar.gz': '8495c9affc536253648e942908e88e097f2ec7753ede55aca52e5dead3029e3c'}, + {'large.tgz': 'f328d88b7fa97722f271d7d0cfea1c220e0f8e5ed5ff01d8ef1eb51d6f4243a1'}, + {'timing.tgz': '999c65f8ea8bd4eac7f1c7f3463d4946917afd20a997807300fe35d70122f3af'}, + {'OpenBLAS-0.3.15_workaround-gcc-miscompilation.patch': + 'e6b326fb8c4a8a6fd07741d9983c37a72c55c9ff9a4f74a80e1352ce5f975971'}, + {'OpenBLAS-0.3.20_fix-cpuid-neoverse-v1-n2.patch': + '1b495465f8dd1e151d74cf5aa4288120361d29164d6a377228a8d51c255b8a9e'}, + {'OpenBLAS-0.3.20_fix-x86-cpuid.patch': '57e8384404e136b9f0dafc26573adeb7dc69e60d84a7e189643b91d6299888fc'}, + {'OpenBLAS-0.3.20_use-xASUM-microkernels-on-new-intel-cpus.patch': + '1dbd0f9473963dbdd9131611b455d8a801f1e995eae82896186d3d3ffe6d5f03'}, + {'OpenBLAS-0.3.21_fix-order-vectorization.patch': + '08af834e5d60441fd35c128758ed9c092ba6887c829e0471ecd489079539047d'}, + {'OpenBLAS-0.3.21_disable-fma-in-cscal-zscal.patch': + 'bd6836206a883208dc8bc997946f97e4c97d91d8e101fc54db414aaa56902fc3'}, + {'OpenBLAS-0.3.21_avoid-crash-in-zdot.patch': '3dac2c1ec896df574f1b37cde81a16f24550b7f1eb81fbfacb0c4449b0dc7894'}, +] + +builddependencies = [ + ('make', '4.3'), + # required by LAPACK test suite + ('Python', '3.10.4', '-bare'), +] + +_int8_opts = "INTERFACE64='1' USE_OPENMP='0'" +buildopts = _int8_opts +testopts = _int8_opts + +run_lapack_tests = True +max_failing_lapack_tests_num_errors = 150 + +# extensive testing can be enabled by uncommenting the line below +# runtest = 'PATH=.:$PATH lapack-timing' + +moduleclass = 'numlib' diff --git a/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.3.26_lapack_qr_noninittest.patch b/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.3.26_lapack_qr_noninittest.patch new file mode 100644 index 00000000000..f6940980d1f --- /dev/null +++ b/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.3.26_lapack_qr_noninittest.patch @@ -0,0 +1,640 @@ +See https://github.com/OpenMathLib/OpenBLAS/issues/4625 +Uninitialized test results in the GEQP3RK routines introduced with LAPACK 3.12 +and in OpenBLAS 0.3.26 are causing abnormal number of errors. +Fixed with https://github.com/OpenMathLib/OpenBLAS/pull/4647 +(should not be needed for OpenBLAS > 0.3.27) +index 79d6add72e..b794d4664c 100644 +--- lapack-netlib/TESTING/LIN/cchkqp3rk.f.orig ++++ lapack-netlib/TESTING/LIN/cchkqp3rk.f +@@ -608,6 +608,9 @@ SUBROUTINE CCHKQP3RK( DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, + CALL CLACPY( 'All', M, NRHS, COPYB, LDA, + $ B, LDA ) + CALL ICOPY( N, IWORK( 1 ), 1, IWORK( N+1 ), 1 ) ++ DO I = 1, NTESTS ++ RESULT( I ) = ZERO ++ END DO + * + ABSTOL = -1.0 + RELTOl = -1.0 +@@ -652,16 +655,6 @@ SUBROUTINE CCHKQP3RK( DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, + RESULT( 1 ) = CQRT12( M, N, A, LDA, S, WORK, + $ LWORK , RWORK ) + * +- DO T = 1, 1 +- IF( RESULT( T ).GE.THRESH ) THEN +- IF( NFAIL.EQ.0 .AND. NERRS.EQ.0 ) +- $ CALL ALAHD( NOUT, PATH ) +- WRITE( NOUT, FMT = 9999 ) 'CGEQP3RK', M, N, +- $ NRHS, KMAX, ABSTOL, RELTOL, NB, NX, +- $ IMAT, T, RESULT( T ) +- NFAIL = NFAIL + 1 +- END IF +- END DO + NRUN = NRUN + 1 + * + * End test 1 +@@ -675,7 +668,7 @@ SUBROUTINE CCHKQP3RK( DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, + * 1-norm( A*P - Q*R ) / ( max(M,N) * 1-norm(A) * EPS ) + * + RESULT( 2 ) = CQPT01( M, N, KFACT, COPYA, A, LDA, TAU, +- $ IWORK( N+1 ), WORK, LWORK ) ++ $ IWORK( N+1 ), WORK, LWORK ) + * + * Compute test 3: + * +@@ -684,21 +677,8 @@ SUBROUTINE CCHKQP3RK( DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, + * 1-norm( Q**T * Q - I ) / ( M * EPS ) + * + RESULT( 3 ) = CQRT11( M, KFACT, A, LDA, TAU, WORK, +- $ LWORK ) ++ $ LWORK ) + * +-* Print information about the tests that did not pass +-* the threshold. +-* +- DO T = 2, 3 +- IF( RESULT( T ).GE.THRESH ) THEN +- IF( NFAIL.EQ.0 .AND. NERRS.EQ.0 ) +- $ CALL ALAHD( NOUT, PATH ) +- WRITE( NOUT, FMT = 9999 ) 'CGEQP3RK', M, N, +- $ NRHS, KMAX, ABSTOL, RELTOL, +- $ NB, NX, IMAT, T, RESULT( T ) +- NFAIL = NFAIL + 1 +- END IF +- END DO + NRUN = NRUN + 2 + * + * Compute test 4: +@@ -717,8 +697,8 @@ SUBROUTINE CCHKQP3RK( DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, + * + DO J = 1, KFACT-1, 1 + * +- DTEMP = (( ABS( A( (J-1)*M+J ) ) - +- $ ABS( A( (J)*M+J+1 ) ) ) / ++ DTEMP = (( ABS( A( (J-1)*LDA+J ) ) - ++ $ ABS( A( (J)*LDA+J+1 ) ) ) / + $ ABS( A(1) ) ) + * + IF( DTEMP.LT.ZERO ) THEN +@@ -727,20 +707,6 @@ SUBROUTINE CCHKQP3RK( DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, + * + END DO + * +-* Print information about the tests that did not +-* pass the threshold. +-* +- DO T = 4, 4 +- IF( RESULT( T ).GE.THRESH ) THEN +- IF( NFAIL.EQ.0 .AND. NERRS.EQ.0 ) +- $ CALL ALAHD( NOUT, PATH ) +- WRITE( NOUT, FMT = 9999 ) 'CGEQP3RK', +- $ M, N, NRHS, KMAX, ABSTOL, RELTOL, +- $ NB, NX, IMAT, T, +- $ RESULT( T ) +- NFAIL = NFAIL + 1 +- END IF +- END DO + NRUN = NRUN + 1 + * + * End test 4. +@@ -762,42 +728,41 @@ SUBROUTINE CCHKQP3RK( DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, + * + LWORK_MQR = MAX(1, NRHS) + CALL CUNMQR( 'Left', 'Conjugate transpose', +- $ M, NRHS, KFACT, A, LDA, TAU, B, LDA, +- $ WORK, LWORK_MQR, INFO ) ++ $ M, NRHS, KFACT, A, LDA, TAU, B, LDA, ++ $ WORK, LWORK_MQR, INFO ) + * + DO I = 1, NRHS + * + * Compare N+J-th column of A and J-column of B. + * + CALL CAXPY( M, -CONE, A( ( N+I-1 )*LDA+1 ), 1, +- $ B( ( I-1 )*LDA+1 ), 1 ) ++ $ B( ( I-1 )*LDA+1 ), 1 ) + END DO + * +- RESULT( 5 ) = +- $ ABS( +- $ CLANGE( 'One-norm', M, NRHS, B, LDA, RDUMMY ) / +- $ ( REAL( M )*SLAMCH( 'Epsilon' ) ) +- $ ) +-* +-* Print information about the tests that did not pass +-* the threshold. +-* +- DO T = 5, 5 +- IF( RESULT( T ).GE.THRESH ) THEN +- IF( NFAIL.EQ.0 .AND. NERRS.EQ.0 ) +- $ CALL ALAHD( NOUT, PATH ) +- WRITE( NOUT, FMT = 9999 ) 'CGEQP3RK', M, N, +- $ NRHS, KMAX, ABSTOL, RELTOL, +- $ NB, NX, IMAT, T, RESULT( T ) +- NFAIL = NFAIL + 1 +- END IF +- END DO ++ RESULT( 5 ) = ABS( ++ $ CLANGE( 'One-norm', M, NRHS, B, LDA, RDUMMY ) / ++ $ ( REAL( M )*SLAMCH( 'Epsilon' ) ) ) ++* + NRUN = NRUN + 1 + * + * End compute test 5. + * + END IF + * ++* Print information about the tests that did not pass ++* the threshold. ++* ++ DO T = 1, NTESTS ++ IF( RESULT( T ).GE.THRESH ) THEN ++ IF( NFAIL.EQ.0 .AND. NERRS.EQ.0 ) ++ $ CALL ALAHD( NOUT, PATH ) ++ WRITE( NOUT, FMT = 9999 ) 'CGEQP3RK', M, N, ++ $ NRHS, KMAX, ABSTOL, RELTOL, ++ $ NB, NX, IMAT, T, RESULT( T ) ++ NFAIL = NFAIL + 1 ++ END IF ++ END DO ++* + * END DO KMAX = 1, MIN(M,N)+1 + * + END DO +diff --git a/TESTING/LIN/dchkqp3rk.f b/TESTING/LIN/dchkqp3rk.f +index 434d2067e2..1834e63282 100755 +--- lapack-netlib/TESTING/LIN/dchkqp3rk.f.orig ++++ lapack-netlib/TESTING/LIN/dchkqp3rk.f +@@ -605,6 +605,9 @@ SUBROUTINE DCHKQP3RK( DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, + CALL DLACPY( 'All', M, NRHS, COPYB, LDA, + $ B, LDA ) + CALL ICOPY( N, IWORK( 1 ), 1, IWORK( N+1 ), 1 ) ++ DO I = 1, NTESTS ++ RESULT( I ) = ZERO ++ END DO + * + ABSTOL = -1.0 + RELTOL = -1.0 +@@ -648,16 +651,6 @@ SUBROUTINE DCHKQP3RK( DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, + RESULT( 1 ) = DQRT12( M, N, A, LDA, S, WORK, + $ LWORK ) + * +- DO T = 1, 1 +- IF( RESULT( T ).GE.THRESH ) THEN +- IF( NFAIL.EQ.0 .AND. NERRS.EQ.0 ) +- $ CALL ALAHD( NOUT, PATH ) +- WRITE( NOUT, FMT = 9999 ) 'DGEQP3RK', M, N, +- $ NRHS, KMAX, ABSTOL, RELTOL, NB, NX, +- $ IMAT, T, RESULT( T ) +- NFAIL = NFAIL + 1 +- END IF +- END DO + NRUN = NRUN + 1 + * + * End test 1 +@@ -671,7 +664,7 @@ SUBROUTINE DCHKQP3RK( DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, + * 1-norm( A*P - Q*R ) / ( max(M,N) * 1-norm(A) * EPS ) + * + RESULT( 2 ) = DQPT01( M, N, KFACT, COPYA, A, LDA, TAU, +- $ IWORK( N+1 ), WORK, LWORK ) ++ $ IWORK( N+1 ), WORK, LWORK ) + * + * Compute test 3: + * +@@ -680,21 +673,8 @@ SUBROUTINE DCHKQP3RK( DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, + * 1-norm( Q**T * Q - I ) / ( M * EPS ) + * + RESULT( 3 ) = DQRT11( M, KFACT, A, LDA, TAU, WORK, +- $ LWORK ) +-* +-* Print information about the tests that did not pass +-* the threshold. ++ $ LWORK ) + * +- DO T = 2, 3 +- IF( RESULT( T ).GE.THRESH ) THEN +- IF( NFAIL.EQ.0 .AND. NERRS.EQ.0 ) +- $ CALL ALAHD( NOUT, PATH ) +- WRITE( NOUT, FMT = 9999 ) 'DGEQP3RK', M, N, +- $ NRHS, KMAX, ABSTOL, RELTOL, +- $ NB, NX, IMAT, T, RESULT( T ) +- NFAIL = NFAIL + 1 +- END IF +- END DO + NRUN = NRUN + 2 + * + * Compute test 4: +@@ -713,8 +693,8 @@ SUBROUTINE DCHKQP3RK( DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, + * + DO J = 1, KFACT-1, 1 + +- DTEMP = (( ABS( A( (J-1)*M+J ) ) - +- $ ABS( A( (J)*M+J+1 ) ) ) / ++ DTEMP = (( ABS( A( (J-1)*LDA+J ) ) - ++ $ ABS( A( (J)*LDA+J+1 ) ) ) / + $ ABS( A(1) ) ) + * + IF( DTEMP.LT.ZERO ) THEN +@@ -723,20 +703,6 @@ SUBROUTINE DCHKQP3RK( DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, + * + END DO + * +-* Print information about the tests that did not +-* pass the threshold. +-* +- DO T = 4, 4 +- IF( RESULT( T ).GE.THRESH ) THEN +- IF( NFAIL.EQ.0 .AND. NERRS.EQ.0 ) +- $ CALL ALAHD( NOUT, PATH ) +- WRITE( NOUT, FMT = 9999 ) 'DGEQP3RK', +- $ M, N, NRHS, KMAX, ABSTOL, RELTOL, +- $ NB, NX, IMAT, T, +- $ RESULT( T ) +- NFAIL = NFAIL + 1 +- END IF +- END DO + NRUN = NRUN + 1 + * + * End test 4. +@@ -758,42 +724,41 @@ SUBROUTINE DCHKQP3RK( DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, + * + LWORK_MQR = MAX(1, NRHS) + CALL DORMQR( 'Left', 'Transpose', +- $ M, NRHS, KFACT, A, LDA, TAU, B, LDA, +- $ WORK, LWORK_MQR, INFO ) ++ $ M, NRHS, KFACT, A, LDA, TAU, B, LDA, ++ $ WORK, LWORK_MQR, INFO ) + * + DO I = 1, NRHS + * + * Compare N+J-th column of A and J-column of B. + * + CALL DAXPY( M, -ONE, A( ( N+I-1 )*LDA+1 ), 1, +- $ B( ( I-1 )*LDA+1 ), 1 ) ++ $ B( ( I-1 )*LDA+1 ), 1 ) + END DO + * +- RESULT( 5 ) = +- $ ABS( +- $ DLANGE( 'One-norm', M, NRHS, B, LDA, RDUMMY ) / +- $ ( DBLE( M )*DLAMCH( 'Epsilon' ) ) +- $ ) +-* +-* Print information about the tests that did not pass +-* the threshold. +-* +- DO T = 5, 5 +- IF( RESULT( T ).GE.THRESH ) THEN +- IF( NFAIL.EQ.0 .AND. NERRS.EQ.0 ) +- $ CALL ALAHD( NOUT, PATH ) +- WRITE( NOUT, FMT = 9999 ) 'DGEQP3RK', M, N, +- $ NRHS, KMAX, ABSTOL, RELTOL, +- $ NB, NX, IMAT, T, RESULT( T ) +- NFAIL = NFAIL + 1 +- END IF +- END DO ++ RESULT( 5 ) = ABS( ++ $ DLANGE( 'One-norm', M, NRHS, B, LDA, RDUMMY ) / ++ $ ( DBLE( M )*DLAMCH( 'Epsilon' ) ) ) ++* + NRUN = NRUN + 1 + * + * End compute test 5. + * + END IF + * ++* Print information about the tests that did not ++* pass the threshold. ++* ++ DO T = 1, NTESTS ++ IF( RESULT( T ).GE.THRESH ) THEN ++ IF( NFAIL.EQ.0 .AND. NERRS.EQ.0 ) ++ $ CALL ALAHD( NOUT, PATH ) ++ WRITE( NOUT, FMT = 9999 ) 'DGEQP3RK', M, N, ++ $ NRHS, KMAX, ABSTOL, RELTOL, NB, NX, ++ $ IMAT, T, RESULT( T ) ++ NFAIL = NFAIL + 1 ++ END IF ++ END DO ++* + * END DO KMAX = 1, MIN(M,N)+1 + * + END DO +diff --git a/TESTING/LIN/schkqp3rk.f b/TESTING/LIN/schkqp3rk.f +index 36cf9370ea..c5ce7ff609 100755 +--- lapack-netlib/TESTING/LIN/schkqp3rk.f.orig ++++ lapack-netlib/TESTING/LIN/schkqp3rk.f +@@ -604,6 +604,9 @@ SUBROUTINE SCHKQP3RK( DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, + CALL SLACPY( 'All', M, NRHS, COPYB, LDA, + $ B, LDA ) + CALL ICOPY( N, IWORK( 1 ), 1, IWORK( N+1 ), 1 ) ++ DO I = 1, NTESTS ++ RESULT( I ) = ZERO ++ END DO + * + ABSTOL = -1.0 + RELTOL = -1.0 +@@ -647,16 +650,6 @@ SUBROUTINE SCHKQP3RK( DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, + RESULT( 1 ) = SQRT12( M, N, A, LDA, S, WORK, + $ LWORK ) + * +- DO T = 1, 1 +- IF( RESULT( T ).GE.THRESH ) THEN +- IF( NFAIL.EQ.0 .AND. NERRS.EQ.0 ) +- $ CALL ALAHD( NOUT, PATH ) +- WRITE( NOUT, FMT = 9999 ) 'SGEQP3RK', M, N, +- $ NRHS, KMAX, ABSTOL, RELTOL, NB, NX, +- $ IMAT, T, RESULT( T ) +- NFAIL = NFAIL + 1 +- END IF +- END DO + NRUN = NRUN + 1 + * + * End test 1 +@@ -670,7 +663,7 @@ SUBROUTINE SCHKQP3RK( DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, + * 1-norm( A*P - Q*R ) / ( max(M,N) * 1-norm(A) * EPS ) + * + RESULT( 2 ) = SQPT01( M, N, KFACT, COPYA, A, LDA, TAU, +- $ IWORK( N+1 ), WORK, LWORK ) ++ $ IWORK( N+1 ), WORK, LWORK ) + * + * Compute test 3: + * +@@ -679,21 +672,8 @@ SUBROUTINE SCHKQP3RK( DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, + * 1-norm( Q**T * Q - I ) / ( M * EPS ) + * + RESULT( 3 ) = SQRT11( M, KFACT, A, LDA, TAU, WORK, +- $ LWORK ) ++ $ LWORK ) + * +-* Print information about the tests that did not pass +-* the threshold. +-* +- DO T = 2, 3 +- IF( RESULT( T ).GE.THRESH ) THEN +- IF( NFAIL.EQ.0 .AND. NERRS.EQ.0 ) +- $ CALL ALAHD( NOUT, PATH ) +- WRITE( NOUT, FMT = 9999 ) 'SGEQP3RK', M, N, +- $ NRHS, KMAX, ABSTOL, RELTOL, +- $ NB, NX, IMAT, T, RESULT( T ) +- NFAIL = NFAIL + 1 +- END IF +- END DO + NRUN = NRUN + 2 + * + * Compute test 4: +@@ -712,8 +692,8 @@ SUBROUTINE SCHKQP3RK( DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, + * + DO J = 1, KFACT-1, 1 + +- DTEMP = (( ABS( A( (J-1)*M+J ) ) - +- $ ABS( A( (J)*M+J+1 ) ) ) / ++ DTEMP = (( ABS( A( (J-1)*LDA+J ) ) - ++ $ ABS( A( (J)*LDA+J+1 ) ) ) / + $ ABS( A(1) ) ) + * + IF( DTEMP.LT.ZERO ) THEN +@@ -722,20 +702,6 @@ SUBROUTINE SCHKQP3RK( DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, + * + END DO + * +-* Print information about the tests that did not +-* pass the threshold. +-* +- DO T = 4, 4 +- IF( RESULT( T ).GE.THRESH ) THEN +- IF( NFAIL.EQ.0 .AND. NERRS.EQ.0 ) +- $ CALL ALAHD( NOUT, PATH ) +- WRITE( NOUT, FMT = 9999 ) 'SGEQP3RK', +- $ M, N, NRHS, KMAX, ABSTOL, RELTOL, +- $ NB, NX, IMAT, T, +- $ RESULT( T ) +- NFAIL = NFAIL + 1 +- END IF +- END DO + NRUN = NRUN + 1 + * + * End test 4. +@@ -757,42 +723,41 @@ SUBROUTINE SCHKQP3RK( DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, + * + LWORK_MQR = MAX(1, NRHS) + CALL SORMQR( 'Left', 'Transpose', +- $ M, NRHS, KFACT, A, LDA, TAU, B, LDA, +- $ WORK, LWORK_MQR, INFO ) ++ $ M, NRHS, KFACT, A, LDA, TAU, B, LDA, ++ $ WORK, LWORK_MQR, INFO ) + * + DO I = 1, NRHS + * + * Compare N+J-th column of A and J-column of B. + * + CALL SAXPY( M, -ONE, A( ( N+I-1 )*LDA+1 ), 1, +- $ B( ( I-1 )*LDA+1 ), 1 ) ++ $ B( ( I-1 )*LDA+1 ), 1 ) + END DO + * +- RESULT( 5 ) = +- $ ABS( +- $ SLANGE( 'One-norm', M, NRHS, B, LDA, RDUMMY ) / +- $ ( REAL( M )*SLAMCH( 'Epsilon' ) ) +- $ ) +-* +-* Print information about the tests that did not pass +-* the threshold. +-* +- DO T = 5, 5 +- IF( RESULT( T ).GE.THRESH ) THEN +- IF( NFAIL.EQ.0 .AND. NERRS.EQ.0 ) +- $ CALL ALAHD( NOUT, PATH ) +- WRITE( NOUT, FMT = 9999 ) 'SGEQP3RK', M, N, +- $ NRHS, KMAX, ABSTOL, RELTOL, +- $ NB, NX, IMAT, T, RESULT( T ) +- NFAIL = NFAIL + 1 +- END IF +- END DO ++ RESULT( 5 ) = ABS( ++ $ SLANGE( 'One-norm', M, NRHS, B, LDA, RDUMMY ) / ++ $ ( REAL( M )*SLAMCH( 'Epsilon' ) ) ) ++* + NRUN = NRUN + 1 + * + * End compute test 5. + * + END IF + * ++* Print information about the tests that did not pass ++* the threshold. ++* ++ DO T = 1, NTESTS ++ IF( RESULT( T ).GE.THRESH ) THEN ++ IF( NFAIL.EQ.0 .AND. NERRS.EQ.0 ) ++ $ CALL ALAHD( NOUT, PATH ) ++ WRITE( NOUT, FMT = 9999 ) 'SGEQP3RK', M, N, ++ $ NRHS, KMAX, ABSTOL, RELTOL, ++ $ NB, NX, IMAT, T, RESULT( T ) ++ NFAIL = NFAIL + 1 ++ END IF ++ END DO ++* + * END DO KMAX = 1, MIN(M,N)+1 + * + END DO +diff --git a/TESTING/LIN/zchkqp3rk.f b/TESTING/LIN/zchkqp3rk.f +index 302c7b1a87..5092058837 100644 +--- lapack-netlib/TESTING/LIN/zchkqp3rk.f.orig ++++ lapack-netlib/TESTING/LIN/zchkqp3rk.f +@@ -608,6 +608,9 @@ SUBROUTINE ZCHKQP3RK( DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, + CALL ZLACPY( 'All', M, NRHS, COPYB, LDA, + $ B, LDA ) + CALL ICOPY( N, IWORK( 1 ), 1, IWORK( N+1 ), 1 ) ++ DO I = 1, NTESTS ++ RESULT( I ) = ZERO ++ END DO + * + ABSTOL = -1.0 + RELTOl = -1.0 +@@ -652,16 +655,6 @@ SUBROUTINE ZCHKQP3RK( DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, + RESULT( 1 ) = ZQRT12( M, N, A, LDA, S, WORK, + $ LWORK , RWORK ) + * +- DO T = 1, 1 +- IF( RESULT( T ).GE.THRESH ) THEN +- IF( NFAIL.EQ.0 .AND. NERRS.EQ.0 ) +- $ CALL ALAHD( NOUT, PATH ) +- WRITE( NOUT, FMT = 9999 ) 'ZGEQP3RK', M, N, +- $ NRHS, KMAX, ABSTOL, RELTOL, NB, NX, +- $ IMAT, T, RESULT( T ) +- NFAIL = NFAIL + 1 +- END IF +- END DO + NRUN = NRUN + 1 + * + * End test 1 +@@ -675,7 +668,7 @@ SUBROUTINE ZCHKQP3RK( DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, + * 1-norm( A*P - Q*R ) / ( max(M,N) * 1-norm(A) * EPS ) + * + RESULT( 2 ) = ZQPT01( M, N, KFACT, COPYA, A, LDA, TAU, +- $ IWORK( N+1 ), WORK, LWORK ) ++ $ IWORK( N+1 ), WORK, LWORK ) + * + * Compute test 3: + * +@@ -684,21 +677,8 @@ SUBROUTINE ZCHKQP3RK( DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, + * 1-norm( Q**T * Q - I ) / ( M * EPS ) + * + RESULT( 3 ) = ZQRT11( M, KFACT, A, LDA, TAU, WORK, +- $ LWORK ) ++ $ LWORK ) + * +-* Print information about the tests that did not pass +-* the threshold. +-* +- DO T = 2, 3 +- IF( RESULT( T ).GE.THRESH ) THEN +- IF( NFAIL.EQ.0 .AND. NERRS.EQ.0 ) +- $ CALL ALAHD( NOUT, PATH ) +- WRITE( NOUT, FMT = 9999 ) 'ZGEQP3RK', M, N, +- $ NRHS, KMAX, ABSTOL, RELTOL, +- $ NB, NX, IMAT, T, RESULT( T ) +- NFAIL = NFAIL + 1 +- END IF +- END DO + NRUN = NRUN + 2 + * + * Compute test 4: +@@ -717,8 +697,8 @@ SUBROUTINE ZCHKQP3RK( DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, + * + DO J = 1, KFACT-1, 1 + * +- DTEMP = (( ABS( A( (J-1)*M+J ) ) - +- $ ABS( A( (J)*M+J+1 ) ) ) / ++ DTEMP = (( ABS( A( (J-1)*LDA+J ) ) - ++ $ ABS( A( (J)*LDA+J+1 ) ) ) / + $ ABS( A(1) ) ) + * + IF( DTEMP.LT.ZERO ) THEN +@@ -727,20 +707,6 @@ SUBROUTINE ZCHKQP3RK( DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, + * + END DO + * +-* Print information about the tests that did not +-* pass the threshold. +-* +- DO T = 4, 4 +- IF( RESULT( T ).GE.THRESH ) THEN +- IF( NFAIL.EQ.0 .AND. NERRS.EQ.0 ) +- $ CALL ALAHD( NOUT, PATH ) +- WRITE( NOUT, FMT = 9999 ) 'ZGEQP3RK', +- $ M, N, NRHS, KMAX, ABSTOL, RELTOL, +- $ NB, NX, IMAT, T, +- $ RESULT( T ) +- NFAIL = NFAIL + 1 +- END IF +- END DO + NRUN = NRUN + 1 + * + * End test 4. +@@ -762,42 +728,41 @@ SUBROUTINE ZCHKQP3RK( DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, + * + LWORK_MQR = MAX(1, NRHS) + CALL ZUNMQR( 'Left', 'Conjugate transpose', +- $ M, NRHS, KFACT, A, LDA, TAU, B, LDA, +- $ WORK, LWORK_MQR, INFO ) ++ $ M, NRHS, KFACT, A, LDA, TAU, B, LDA, ++ $ WORK, LWORK_MQR, INFO ) + * + DO I = 1, NRHS + * + * Compare N+J-th column of A and J-column of B. + * + CALL ZAXPY( M, -CONE, A( ( N+I-1 )*LDA+1 ), 1, +- $ B( ( I-1 )*LDA+1 ), 1 ) ++ $ B( ( I-1 )*LDA+1 ), 1 ) + END DO + * +- RESULT( 5 ) = +- $ ABS( +- $ ZLANGE( 'One-norm', M, NRHS, B, LDA, RDUMMY ) / +- $ ( DBLE( M )*DLAMCH( 'Epsilon' ) ) +- $ ) +-* +-* Print information about the tests that did not pass +-* the threshold. +-* +- DO T = 5, 5 +- IF( RESULT( T ).GE.THRESH ) THEN +- IF( NFAIL.EQ.0 .AND. NERRS.EQ.0 ) +- $ CALL ALAHD( NOUT, PATH ) +- WRITE( NOUT, FMT = 9999 ) 'ZGEQP3RK', M, N, +- $ NRHS, KMAX, ABSTOL, RELTOL, +- $ NB, NX, IMAT, T, RESULT( T ) +- NFAIL = NFAIL + 1 +- END IF +- END DO ++ RESULT( 5 ) = ABS( ++ $ ZLANGE( 'One-norm', M, NRHS, B, LDA, RDUMMY ) / ++ $ ( DBLE( M )*DLAMCH( 'Epsilon' ) ) ) ++* + NRUN = NRUN + 1 + * + * End compute test 5. + * + END IF + * ++* Print information about the tests that did not pass ++* the threshold. ++* ++ DO T = 1, NTESTS ++ IF( RESULT( T ).GE.THRESH ) THEN ++ IF( NFAIL.EQ.0 .AND. NERRS.EQ.0 ) ++ $ CALL ALAHD( NOUT, PATH ) ++ WRITE( NOUT, FMT = 9999 ) 'ZGEQP3RK', M, N, ++ $ NRHS, KMAX, ABSTOL, RELTOL, ++ $ NB, NX, IMAT, T, RESULT( T ) ++ NFAIL = NFAIL + 1 ++ END IF ++ END DO ++* + * END DO KMAX = 1, MIN(M,N)+1 + * + END DO diff --git a/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.3.27-GCC-13.3.0.eb b/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.3.27-GCC-13.3.0.eb new file mode 100644 index 00000000000..c65deccb6e9 --- /dev/null +++ b/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.3.27-GCC-13.3.0.eb @@ -0,0 +1,50 @@ +name = 'OpenBLAS' +version = '0.3.27' + +homepage = 'https://www.openblas.net/' +description = "OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version." + +toolchain = {'name': 'GCC', 'version': '13.3.0'} + +source_urls = [ + # order matters, trying to download the large.tgz/timing.tgz LAPACK tarballs from GitHub causes trouble + 'https://www.netlib.org/lapack/timing/', + 'https://github.com/xianyi/OpenBLAS/archive/', +] +sources = ['v%(version)s.tar.gz'] +patches = [ + ('large.tgz', '.'), + ('timing.tgz', '.'), + 'OpenBLAS-0.3.15_workaround-gcc-miscompilation.patch', + 'OpenBLAS-0.3.21_fix-order-vectorization.patch', + 'OpenBLAS-0.3.26_lapack_qr_noninittest.patch', + 'OpenBLAS-0.3.27_fix_zscal.patch', + 'OpenBLAS-0.3.27_riscv-drop-static-fortran-flag.patch', +] +checksums = [ + {'v0.3.27.tar.gz': 'aa2d68b1564fe2b13bc292672608e9cdeeeb6dc34995512e65c3b10f4599e897'}, + {'large.tgz': 'f328d88b7fa97722f271d7d0cfea1c220e0f8e5ed5ff01d8ef1eb51d6f4243a1'}, + {'timing.tgz': '999c65f8ea8bd4eac7f1c7f3463d4946917afd20a997807300fe35d70122f3af'}, + {'OpenBLAS-0.3.15_workaround-gcc-miscompilation.patch': + 'e6b326fb8c4a8a6fd07741d9983c37a72c55c9ff9a4f74a80e1352ce5f975971'}, + {'OpenBLAS-0.3.21_fix-order-vectorization.patch': + '08af834e5d60441fd35c128758ed9c092ba6887c829e0471ecd489079539047d'}, + {'OpenBLAS-0.3.26_lapack_qr_noninittest.patch': '4781bf1d7b239374fd8069e15b4e2c0ef0e8efaa1a7d4c33557bd5b27e5de77c'}, + {'OpenBLAS-0.3.27_fix_zscal.patch': '9210d7b66538dabaddbe1bfceb16f8225708856f60876ca5561b19d3599f9fd1'}, + {'OpenBLAS-0.3.27_riscv-drop-static-fortran-flag.patch': + 'f374e41efffd592ab1c9034df9e7abf1045ed151f4fc0fd0da618ce9826f2d4b'}, +] + +builddependencies = [ + ('make', '4.4.1'), + # required by LAPACK test suite + ('Python', '3.12.3'), +] + +run_lapack_tests = True +max_failing_lapack_tests_num_errors = 150 + +# extensive testing can be enabled by uncommenting the line below +# runtest = 'PATH=.:$PATH lapack-timing' + +moduleclass = 'numlib' diff --git a/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.3.27_fix_zscal.patch b/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.3.27_fix_zscal.patch new file mode 100644 index 00000000000..81c1b32e77a --- /dev/null +++ b/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.3.27_fix_zscal.patch @@ -0,0 +1,38 @@ +From 62f7b244ff5c268f311e5f080d1f44c3b432f3d0 Mon Sep 17 00:00:00 2001 +From: Bart Oldeman +Date: Fri, 24 May 2024 17:20:27 +0000 +Subject: [PATCH] Replace use of FLT_MAX in x86_64 zscal.c by isinf() + +Commit def4996 fixed issues with inf and nan values in zscal, +but used FLT_MAX, where DBL_MAX or isinf() is more appropriate, +as FLT_MAX is for single precision only. +Using FLT_MAX caused test case failures in the LAPACK tests. + +isinf() is consistent with the later fix 969601a1 +--- + kernel/x86_64/zscal.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/kernel/x86_64/zscal.c b/kernel/x86_64/zscal.c +index bc79c0cafd..075b6091fe 100644 +--- a/kernel/x86_64/zscal.c ++++ b/kernel/x86_64/zscal.c +@@ -394,7 +394,7 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da_r, FLOAT da_i, + } + + } +- else if (da_r < -FLT_MAX || da_r > FLT_MAX) { ++ else if (isinf(da_r)) { + while(j < n) + { + x[i]= NAN; +@@ -410,7 +410,7 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da_r, FLOAT da_i, + while(j < n) + { + temp0 = -da_i * x[i+1]; +- if (x[i] < -FLT_MAX || x[i] > FLT_MAX) ++ if (isinf(x[i])) + temp0 = NAN; + x[i+1] = da_i * x[i]; + if ( x[i] == x[i]) //preserve NaN + diff --git a/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.3.27_riscv-drop-static-fortran-flag.patch b/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.3.27_riscv-drop-static-fortran-flag.patch new file mode 100644 index 00000000000..262c6bc5bd0 --- /dev/null +++ b/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.3.27_riscv-drop-static-fortran-flag.patch @@ -0,0 +1,31 @@ +From df87aeb5a2a3785e15a3d94dbf92e2e03448500f Mon Sep 17 00:00:00 2001 +From: Martin Kroeker +Date: Tue, 4 Jun 2024 09:49:18 +0200 +Subject: [PATCH] Drop the -static Fortran flag from generic builds as it + breaks OpenMP + +--- + Makefile.riscv64 | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/Makefile.riscv64 b/Makefile.riscv64 +index 113cc57c53..9f6e48b7ad 100644 +--- a/Makefile.riscv64 ++++ b/Makefile.riscv64 +@@ -8,13 +8,13 @@ FCOMMON_OPT += -march=rv64imafdcv_zba_zbb_zfh -mabi=lp64d -static + endif + ifeq ($(CORE), RISCV64_ZVL256B) + CCOMMON_OPT += -march=rv64imafdcv_zvl256b -mabi=lp64d +-FCOMMON_OPT += -march=rv64imafdcv -mabi=lp64d -static ++FCOMMON_OPT += -march=rv64imafdcv -mabi=lp64d + endif + ifeq ($(CORE), RISCV64_ZVL128B) + CCOMMON_OPT += -march=rv64imafdcv -mabi=lp64d +-FCOMMON_OPT += -march=rv64imafdcv -mabi=lp64d -static ++FCOMMON_OPT += -march=rv64imafdcv -mabi=lp64d + endif + ifeq ($(CORE), RISCV64_GENERIC) + CCOMMON_OPT += -march=rv64imafdc -mabi=lp64d +-FCOMMON_OPT += -march=rv64imafdc -mabi=lp64d -static ++FCOMMON_OPT += -march=rv64imafdc -mabi=lp64d + endif diff --git a/easybuild/easyconfigs/o/OpenCV/OpenCV-4.8.1-foss-2023a-CUDA-12.1.1-contrib.eb b/easybuild/easyconfigs/o/OpenCV/OpenCV-4.8.1-foss-2023a-CUDA-12.1.1-contrib.eb new file mode 100644 index 00000000000..5ebd7b02024 --- /dev/null +++ b/easybuild/easyconfigs/o/OpenCV/OpenCV-4.8.1-foss-2023a-CUDA-12.1.1-contrib.eb @@ -0,0 +1,113 @@ +name = 'OpenCV' +version = '4.8.1' +versionsuffix = '-CUDA-%(cudaver)s-contrib' + +# the hash is version dependent! see 3rdparty/ippicv/ippicv.cmake +local_ippicv_hash = '1224f78da6684df04397ac0f40c961ed37f79ccb' + +homepage = 'https://opencv.org/' +description = """OpenCV (Open Source Computer Vision Library) is an open source computer vision + and machine learning software library. OpenCV was built to provide + a common infrastructure for computer vision applications and to accelerate + the use of machine perception in the commercial products. + Includes extra modules for OpenCV from the contrib repository.""" + +toolchain = {'name': 'foss', 'version': '2023a'} +toolchainopts = {'cstd': 'c++14'} + +sources = [ + { + 'source_urls': ['https://github.com/%(namelower)s/%(namelower)s/archive/'], + 'download_filename': '%(version)s.tar.gz', + 'filename': SOURCELOWER_TAR_GZ + }, + { + 'source_urls': ['https://github.com/%(namelower)s/opencv_contrib/archive/'], + 'download_filename': '%(version)s.tar.gz', + 'filename': '%(namelower)s_contrib-%(version)s.tar.gz' + }, + { + 'source_urls': ['https://raw.githubusercontent.com/opencv/opencv_3rdparty/%s/ippicv' % local_ippicv_hash], + 'filename': 'ippicv_2021.8_lnx_intel64_20230330_general.tgz', + 'extract_cmd': 'cp %s %(builddir)s' + }, +] + +patches = [('opencv_contrib_python.egg-info', '..')] + +checksums = [ + {'%(namelower)s-%(version)s.tar.gz': '62f650467a60a38794d681ae7e66e3e8cfba38f445e0bf87867e2f2cdc8be9d5'}, + {'%(namelower)s_contrib-%(version)s.tar.gz': '0c082a0b29b3118f2a0a1856b403bb098643af7b994a0080f402a12159a99c6e'}, + {'ippicv_2021.8_lnx_intel64_20230330_general.tgz': + '7cfe0fb0e15ea8f3d2d971c19df2d14382469943d4efa85e48bf358930daa85d'}, + {'opencv_contrib_python.egg-info': '08eb95c735d4ff82e35e3df56c2e7e75501cc263a8efcb9348d04e6322a4b034'}, +] + +builddependencies = [ + ('CMake', '3.26.3'), +] +dependencies = [ + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), + ('Python-bundle-PyPI', '2023.06'), + ('zlib', '1.2.13'), + ('FFmpeg', '6.0'), + ('freetype', '2.13.0'), + ('HarfBuzz', '5.3.1'), + ('libjpeg-turbo', '2.1.5.1'), + ('OpenJPEG', '2.5.0'), + ('libpng', '1.6.39'), + ('LibTIFF', '4.5.0'), + ('libwebp', '1.3.1'), + ('OpenEXR', '3.1.7'), + ('JasPer', '4.0.0'), + ('Java', '11', '', SYSTEM), + ('ant', '1.10.14', '-Java-%(javaver)s', SYSTEM), + ('GLib', '2.77.1'), + ('GTK4', '4.13.1'), + ('HDF5', '1.14.0'), + ('CUDA', '12.1.1', '', SYSTEM), + ('cuDNN', '8.9.2.26', '-CUDA-%(cudaver)s', SYSTEM), +] + +# XXXX in configurations is a bug fix in OpenCV because ocv_check_modules is not able to recognize freetype and harfbuzz +# ref: https://github.com/opencv/opencv/blob/6e8daaec0f46aaba9ea22e2afce47307b1dbff9f/cmake/OpenCVUtils.cmake#L861 +configopts = " ".join([ + "-DOPENCV_EXTRA_MODULES_PATH=%(builddir)s/%(namelower)s_contrib-%(version)s/modules", + "-DOPENCV_GENERATE_PKGCONFIG=ON", + "-DFREETYPE_FOUND=ON", + "-DFREETYPE_INCLUDE_DIRS=$EBROOTFREETYPE/include/freetype2/", + "-DFREETYPE_LIBRARIES=$EBROOTFREETYPE/lib64/libfreetype.so", + "-DFREETYPE_LINK_LIBRARIES=$EBROOTFREETYPE/lib64/libfreetype.so", + "-DFREETYPE_LINK_LIBRARIES_XXXXX=ON", + "-DHARFBUZZ_FOUND=ON", + "-DHARFBUZZ_INCLUDE_DIRS=$EBROOTHARFBUZZ/include/harfbuzz", + "-DHARFBUZZ_LIBRARIES=$EBROOTHARFBUZZ/lib64/libharfbuzz.so", + "-DHARFBUZZ_LINK_LIBRARIES=$EBROOTHARFBUZZ/lib64/libharfbuzz.so", + "-DHARFBUZZ_LINK_LIBRARIES_XXXXX=ON", + "-DBUILD_opencv_python2=OFF", + "-DCUDA_NVCC_FLAGS=--std=c++14", +]) + +# Install a egg-info file so it is more python friendly +local_egg_info_src = '%(builddir)s/opencv_contrib_python.egg-info' +local_egg_info_dest = '%(installdir)s/lib/python%(pyshortver)s/site-packages/opencv_contrib_python-%(version)s.egg-info' +postinstallcmds = [ + 'sed "s/#OPENCV_VERSION#/%%(version)s/" %s > %s' % (local_egg_info_src, local_egg_info_dest), +] + +enhance_sanity_check = True + +local_contrib_libs = [ + 'aruco', 'bgsegm', 'bioinspired', 'ccalib', 'datasets', 'dnn_objdetect', 'dnn_superres', 'dpm', 'face', 'freetype', + 'fuzzy', 'hdf', 'hfs', 'img_hash', 'line_descriptor', 'optflow', 'phase_unwrapping', 'plot', 'quality', 'reg', + 'rgbd', 'saliency', 'shape', 'stereo', 'structured_light', 'superres', 'surface_matching', 'text', 'tracking', + 'videostab', 'xfeatures2d', 'ximgproc', 'xobjdetect', 'xphoto' +] + +sanity_check_paths = { + 'files': ['lib64/libopencv_%s.%s' % (x, SHLIB_EXT) for x in local_contrib_libs], + 'dirs': [], +} + +moduleclass = 'vis' diff --git a/easybuild/easyconfigs/o/OpenFOAM/OpenFOAM-v2212-wmake-OpenMPI.patch b/easybuild/easyconfigs/o/OpenFOAM/OpenFOAM-v2212-wmake-OpenMPI.patch index 0cd23ac34f7..4c442fa0060 100644 --- a/easybuild/easyconfigs/o/OpenFOAM/OpenFOAM-v2212-wmake-OpenMPI.patch +++ b/easybuild/easyconfigs/o/OpenFOAM/OpenFOAM-v2212-wmake-OpenMPI.patch @@ -1,6 +1,36 @@ +# - Corrected output of "wmake -show-c" and "wmake -show-c++" with OpenMPI in +# order to allow compilation of paraFoam. This is required as we define the +# compiler as "OMPI_CC=gcc mpicc" when using OpenMPI +# (this patch should not be removed in future versions due to this definition) # - Add mplibEASYBUILDMPI configuration for wmake (OpenMPI version) # # author: Jiri Furst +--- OpenFOAM-v2112/wmake/makefiles/info.orig 2019-11-07 18:12:53.000000000 +0100 ++++ OpenFOAM-v2112/wmake/makefiles/info 2019-11-23 12:52:50.700688579 +0100 +@@ -73,19 +73,19 @@ + + .PHONY: c + c: +- @echo "$(firstword $(cc))" ++ @echo "$(lastword $(cc))" + + .PHONY: cxx + cxx: +- @echo "$(firstword $(CC))" ++ @echo "$(lastword $(CC))" + + .PHONY: cflags + cflags: +- @echo "$(wordlist 2,$(words $(COMPILE_C)), $(COMPILE_C))" ++ @echo "$(wordlist 3,$(words $(COMPILE_C)), $(COMPILE_C))" + + .PHONY: cxxflags + cxxflags: +- @echo "$(wordlist 2,$(words $(COMPILE_CXX)), $(COMPILE_CXX))" ++ @echo "$(wordlist 3,$(words $(COMPILE_CXX)), $(COMPILE_CXX))" + + .PHONY: cflags-arch + cflags-arch: --- /dev/null 2023-03-06 18:30:28.397302047 +0100 +++ OpenFOAM-v2212/wmake/rules/General/mplibEASYBUILDMPI 2023-03-10 14:52:38.100740228 +0100 @@ -0,0 +1,6 @@ diff --git a/easybuild/easyconfigs/o/OpenFOAM/OpenFOAM-v2306-foss-2022b.eb b/easybuild/easyconfigs/o/OpenFOAM/OpenFOAM-v2306-foss-2022b.eb index 74d81fdd5a1..f4380374929 100644 --- a/easybuild/easyconfigs/o/OpenFOAM/OpenFOAM-v2306-foss-2022b.eb +++ b/easybuild/easyconfigs/o/OpenFOAM/OpenFOAM-v2306-foss-2022b.eb @@ -22,7 +22,7 @@ patches = [ checksums = [ {'OpenFOAM-v2306.tgz': 'd7fba773658c0f06ad17f90199565f32e9bf502b7bb03077503642064e1f5344'}, {'OpenFOAM-v2206-cleanup.patch': '25333124581acae57c173587de4ebd6e143b894b1a26e4f0326db8b7e0cb1972'}, - {'OpenFOAM-v2212-wmake-OpenMPI.patch': '4f5110e98df1f057dc4b478a004e4ae2dc5cc763899f0d3ceb6773315c5c8ba9'}, + {'OpenFOAM-v2212-wmake-OpenMPI.patch': '241dc4898c22aab0cbd10c1ea931a07a786508ee03462d45dbc1c202fee3ebe8'}, ] builddependencies = [ diff --git a/easybuild/easyconfigs/o/OpenFOAM/OpenFOAM-v2312-foss-2023a.eb b/easybuild/easyconfigs/o/OpenFOAM/OpenFOAM-v2312-foss-2023a.eb index 661327ff9a6..bc5f33912b5 100644 --- a/easybuild/easyconfigs/o/OpenFOAM/OpenFOAM-v2312-foss-2023a.eb +++ b/easybuild/easyconfigs/o/OpenFOAM/OpenFOAM-v2312-foss-2023a.eb @@ -22,7 +22,7 @@ patches = [ checksums = [ {'OpenFOAM-v2312.tgz': 'f113183a4d027c93939212af8967053c5f8fe76fb62e5848cb11bbcf8e829552'}, {'OpenFOAM-v2312-cleanup.patch': 'f1389e5d89510209d99d35917a4a6bd727134121bbbaa12471235042e675dacf'}, - {'OpenFOAM-v2212-wmake-OpenMPI.patch': '4f5110e98df1f057dc4b478a004e4ae2dc5cc763899f0d3ceb6773315c5c8ba9'}, + {'OpenFOAM-v2212-wmake-OpenMPI.patch': '241dc4898c22aab0cbd10c1ea931a07a786508ee03462d45dbc1c202fee3ebe8'}, ] builddependencies = [ diff --git a/easybuild/easyconfigs/o/OpenMPI/OpenMPI-4.1.5-GCC-12.3.0.eb b/easybuild/easyconfigs/o/OpenMPI/OpenMPI-4.1.5-GCC-12.3.0.eb index 797e9c0f0de..e415d495156 100644 --- a/easybuild/easyconfigs/o/OpenMPI/OpenMPI-4.1.5-GCC-12.3.0.eb +++ b/easybuild/easyconfigs/o/OpenMPI/OpenMPI-4.1.5-GCC-12.3.0.eb @@ -13,6 +13,7 @@ patches = [ 'OpenMPI-4.1.1_opal-datatype-cuda-performance.patch', 'OpenMPI-4.1.5_fix-pmix3x.patch', 'OpenMPI-4.1.x_add_atomic_wmb.patch', + 'OpenMPI-4.1.5_fix_opal_unsupported_key.patch', ] checksums = [ {'openmpi-4.1.5.tar.bz2': 'a640986bc257389dd379886fdae6264c8cfa56bc98b71ce3ae3dfbd8ce61dbe3'}, @@ -22,6 +23,8 @@ checksums = [ 'b767c7166cf0b32906132d58de5439c735193c9fd09ec3c5c11db8d5fa68750e'}, {'OpenMPI-4.1.5_fix-pmix3x.patch': '46edac3dbf32f2a611d45e8a3c8edd3ae2f430eec16a1373b510315272115c40'}, {'OpenMPI-4.1.x_add_atomic_wmb.patch': '9494bbc546d661ba5189e44b4c84a7f8df30a87cdb9d96ce2e73a7c8fecba172'}, + {'OpenMPI-4.1.5_fix_opal_unsupported_key.patch': + '4375a58a18c8bced14cc5978f98a7f2395cc6a9c07dd65b1c28f53294cad4385'}, ] builddependencies = [ diff --git a/easybuild/easyconfigs/o/OpenMPI/OpenMPI-4.1.5_fix_opal_unsupported_key.patch b/easybuild/easyconfigs/o/OpenMPI/OpenMPI-4.1.5_fix_opal_unsupported_key.patch new file mode 100644 index 00000000000..c6e998a1127 --- /dev/null +++ b/easybuild/easyconfigs/o/OpenMPI/OpenMPI-4.1.5_fix_opal_unsupported_key.patch @@ -0,0 +1,73 @@ +# Fix: "UNPACK-OPAL-VALUE: UNSUPPORTED TYPE 33 FOR KEY" error +# See: https://github.com/open-mpi/ompi/issues/11749 +# Original patch by Gilles Gouaillardet +# Note: the patch is already included in openmpi 4.1.6 + +--- orig/openmpi-4.1.5/opal/mca/pmix/pmix3x/pmix3x.c 2023-06-14 21:45:40.159479390 +0900 ++++ openmpi-4.1.5/opal/mca/pmix/pmix3x/pmix3x.c 2023-06-14 21:48:02.469473048 +0900 +@@ -807,14 +807,17 @@ + PMIX_INFO_LOAD(i, kv->key, &kv->data.time, PMIX_TIME); + break; + case OPAL_STATUS: ++ PMIX_LOAD_KEY(i->key, kv->key); + i->value.type = PMIX_STATUS; + i->value.data.status = pmix3x_convert_opalrc(kv->data.status); + break; + case OPAL_VPID: ++ PMIX_LOAD_KEY(i->key, kv->key); + i->value.type = PMIX_PROC_RANK; + i->value.data.rank = pmix3x_convert_opalrank(kv->data.name.vpid); + break; + case OPAL_NAME: ++ PMIX_LOAD_KEY(i->key, kv->key); + i->value.type = PMIX_PROC; + /* have to stringify the jobid */ + PMIX_PROC_CREATE(i->value.data.proc, 1); +@@ -833,6 +836,7 @@ + i->value.data.proc->rank = pmix3x_convert_opalrank(kv->data.name.vpid); + break; + case OPAL_BYTE_OBJECT: ++ PMIX_LOAD_KEY(i->key, kv->key); + i->value.type = PMIX_BYTE_OBJECT; + if (NULL != kv->data.bo.bytes) { + i->value.data.bo.bytes = (char*)malloc(kv->data.bo.size); +@@ -844,18 +848,22 @@ + } + break; + case OPAL_PERSIST: ++ PMIX_LOAD_KEY(i->key, kv->key); + i->value.type = PMIX_PERSIST; + i->value.data.persist = pmix3x_convert_opalpersist((opal_pmix_persistence_t)kv->data.uint8); + break; + case OPAL_SCOPE: ++ PMIX_LOAD_KEY(i->key, kv->key); + i->value.type = PMIX_SCOPE; + i->value.data.scope = pmix3x_convert_opalscope((opal_pmix_scope_t)kv->data.uint8); + break; + case OPAL_DATA_RANGE: ++ PMIX_LOAD_KEY(i->key, kv->key); + i->value.type = PMIX_DATA_RANGE; + i->value.data.range = pmix3x_convert_opalrange((opal_pmix_data_range_t)kv->data.uint8); + break; + case OPAL_PROC_STATE: ++ PMIX_LOAD_KEY(i->key, kv->key); + i->value.type = PMIX_PROC_STATE; + /* the OPAL layer doesn't have any concept of proc state, + * so the ORTE layer is responsible for converting it */ +@@ -873,6 +881,7 @@ + * opal_value_t's that we need to convert to a pmix_data_array + * of pmix_info_t structures */ + list = (opal_list_t*)kv->data.ptr; ++ PMIX_LOAD_KEY(i->key, kv->key); + i->value.type = PMIX_DATA_ARRAY; + i->value.data.darray = (pmix_data_array_t*)malloc(sizeof(pmix_data_array_t)); + i->value.data.darray->type = PMIX_INFO; +@@ -893,6 +902,7 @@ + } + break; + case OPAL_PROC_INFO: ++ PMIX_LOAD_KEY(i->key, kv->key); + i->value.type = PMIX_PROC_INFO; + PMIX_PROC_INFO_CREATE(i->value.data.pinfo, 1); + /* see if this job is in our list of known nspaces */ + diff --git a/easybuild/easyconfigs/o/OpenMPI/OpenMPI-5.0.2_build-with-internal-cuda-header.patch b/easybuild/easyconfigs/o/OpenMPI/OpenMPI-5.0.2_build-with-internal-cuda-header.patch new file mode 100644 index 00000000000..2d935fda64a --- /dev/null +++ b/easybuild/easyconfigs/o/OpenMPI/OpenMPI-5.0.2_build-with-internal-cuda-header.patch @@ -0,0 +1,139 @@ +Allow building Open MPI with an internal CUDA header and stub library via +--with-cuda=%(start_dir)s/opal/mca/cuda +by providing an internal minimal cuda.h header file, and function stubs. +This eliminates the CUDA (build)dependency; as long as the runtime CUDA version is 8.0+, +the system's libcuda.so will be used successfully by dynamically loaded plugins in +$EBROOTOPENMPI/lib/openmpi, not by the main libmpi.so. + +Author: Bart Oldeman +diff -urN openmpi-5.0.2.orig/opal/mca/cuda/cuda.c openmpi-5.0.2/opal/mca/cuda/cuda.c +--- openmpi-5.0.2.orig/opal/mca/cuda/lib/cuda.c 1970-01-01 00:00:00.000000000 +0000 ++++ openmpi-5.0.2/opal/mca/cuda/lib/cuda.c 2024-02-15 01:39:24.969142045 +0000 +@@ -0,0 +1,28 @@ ++#include "cuda.h" ++ ++CUresult cuPointerGetAttribute(void *, CUpointer_attribute, CUdeviceptr) { return CUDA_ERROR_UNKNOWN; } ++CUresult cuMemcpyAsync(CUdeviceptr, CUdeviceptr, size_t, CUstream) { return CUDA_ERROR_UNKNOWN; } ++CUresult cuMemAlloc(CUdeviceptr *, size_t) { return CUDA_ERROR_UNKNOWN; } ++CUresult cuMemFree(CUdeviceptr buf) { return CUDA_ERROR_UNKNOWN; } ++CUresult cuCtxGetCurrent(void *cuContext) { return CUDA_ERROR_UNKNOWN; } ++CUresult cuStreamCreate(CUstream *, int) { return CUDA_ERROR_UNKNOWN; } ++CUresult cuEventCreate(CUevent *, int) { return CUDA_ERROR_UNKNOWN; } ++CUresult cuEventRecord(CUevent, CUstream) { return CUDA_ERROR_UNKNOWN; } ++CUresult cuEventQuery(CUevent) { return CUDA_ERROR_UNKNOWN; } ++CUresult cuEventDestroy(CUevent) { return CUDA_ERROR_UNKNOWN; } ++CUresult cuMemHostRegister(void *, size_t, unsigned int) { return CUDA_ERROR_UNKNOWN; } ++CUresult cuMemHostUnregister(void *) { return CUDA_ERROR_UNKNOWN; } ++CUresult cuMemGetAddressRange(CUdeviceptr *, size_t *, CUdeviceptr) { return CUDA_ERROR_UNKNOWN; } ++CUresult cuIpcGetEventHandle(CUipcEventHandle *, CUevent) { return CUDA_ERROR_UNKNOWN; } ++CUresult cuIpcOpenEventHandle(CUevent *, CUipcEventHandle) { return CUDA_ERROR_UNKNOWN; } ++CUresult cuIpcOpenMemHandle(CUdeviceptr *, CUipcMemHandle, unsigned int) { return CUDA_ERROR_UNKNOWN; } ++CUresult cuIpcCloseMemHandle(CUdeviceptr) { return CUDA_ERROR_UNKNOWN; } ++CUresult cuIpcGetMemHandle(CUipcMemHandle *, CUdeviceptr) { return CUDA_ERROR_UNKNOWN; } ++CUresult cuCtxGetDevice(CUdevice *) { return CUDA_ERROR_UNKNOWN; } ++CUresult cuDeviceCanAccessPeer(int *, CUdevice, CUdevice) { return CUDA_ERROR_UNKNOWN; } ++CUresult cuCtxSetCurrent(CUcontext) { return CUDA_ERROR_UNKNOWN; } ++CUresult cuStreamSynchronize(CUstream) { return CUDA_ERROR_UNKNOWN; } ++CUresult cuStreamDestroy(CUstream) { return CUDA_ERROR_UNKNOWN; } ++CUresult cuPointerSetAttribute(const void *, CUpointer_attribute, CUdeviceptr) { return CUDA_ERROR_UNKNOWN; } ++CUresult cuDeviceGetPCIBusId(char*, int, CUdevice) { return CUDA_ERROR_UNKNOWN; } ++CUresult cuPointerGetAttributes(unsigned int, CUpointer_attribute *, void **, CUdeviceptr) { return CUDA_ERROR_UNKNOWN; } +diff -urN openmpi-5.0.2.orig/opal/mca/cuda/include/cuda.h openmpi-5.0.2/opal/mca/cuda/include/cuda.h +--- openmpi-5.0.2.orig/opal/mca/cuda/include/cuda.h 1970-01-01 00:00:00.000000000 +0000 ++++ openmpi-5.0.2/opal/mca/cuda/include/cuda.h 2024-02-15 03:07:26.480531383 +0000 +@@ -0,0 +1,95 @@ ++/* This header provides minimal parts of the CUDA Driver API, without having to ++ rely on the proprietary CUDA toolkit. ++ ++ References (to avoid copying from NVidia's proprietary cuda.h): ++ https://github.com/gcc-mirror/gcc/blob/master/include/cuda/cuda.h ++ https://github.com/Theano/libgpuarray/blob/master/src/loaders/libcuda.h ++ https://github.com/CPFL/gdev/blob/master/cuda/driver/cuda.h ++ https://github.com/CudaWrangler/cuew/blob/master/include/cuew.h ++*/ ++ ++#ifndef OMPI_CUDA_H ++#define OMPI_CUDA_H ++ ++#include ++ ++#define CUDA_VERSION 8000 ++ ++typedef void *CUcontext; ++typedef int CUdevice; ++#if defined(__LP64__) || defined(_WIN64) ++typedef unsigned long long CUdeviceptr; ++#else ++typedef unsigned CUdeviceptr; ++#endif ++typedef void *CUevent; ++typedef void *CUstream; ++ ++typedef enum { ++ CUDA_SUCCESS = 0, ++ CUDA_ERROR_INVALID_VALUE = 1, ++ CUDA_ERROR_NOT_INITIALIZED = 3, ++ CUDA_ERROR_DEINITIALIZED = 4, ++ CUDA_ERROR_ALREADY_MAPPED = 208, ++ CUDA_ERROR_NOT_READY = 600, ++ CUDA_ERROR_UNKNOWN = 999, ++} CUresult; ++ ++enum { ++ CU_EVENT_DISABLE_TIMING = 0x2, ++ CU_EVENT_INTERPROCESS = 0x4, ++}; ++ ++enum { ++ CU_IPC_MEM_LAZY_ENABLE_PEER_ACCESS = 0x1, ++}; ++ ++typedef enum { ++ CU_POINTER_ATTRIBUTE_CONTEXT = 1, ++ CU_POINTER_ATTRIBUTE_MEMORY_TYPE = 2, ++ CU_POINTER_ATTRIBUTE_SYNC_MEMOPS = 6, ++ CU_POINTER_ATTRIBUTE_BUFFER_ID = 7, ++ CU_POINTER_ATTRIBUTE_IS_MANAGED = 8, ++} CUpointer_attribute; ++ ++typedef enum { ++ CU_MEMORYTYPE_HOST = 0x01, ++} CUmemorytype; ++ ++#define CU_IPC_HANDLE_SIZE 64 ++typedef struct CUipcEventHandle_st { ++ char reserved[CU_IPC_HANDLE_SIZE]; ++} CUipcEventHandle; ++ ++typedef struct CUipcMemHandle_st { ++ char reserved[CU_IPC_HANDLE_SIZE]; ++} CUipcMemHandle; ++ ++CUresult cuPointerGetAttribute(void *, CUpointer_attribute, CUdeviceptr); ++CUresult cuMemcpyAsync(CUdeviceptr, CUdeviceptr, size_t, CUstream); ++CUresult cuMemAlloc(CUdeviceptr *, size_t); ++CUresult cuMemFree(CUdeviceptr buf); ++CUresult cuCtxGetCurrent(void *cuContext); ++CUresult cuStreamCreate(CUstream *, int); ++CUresult cuEventCreate(CUevent *, int); ++CUresult cuEventRecord(CUevent, CUstream); ++CUresult cuEventQuery(CUevent); ++CUresult cuEventDestroy(CUevent); ++CUresult cuMemHostRegister(void *, size_t, unsigned int); ++CUresult cuMemHostUnregister(void *); ++CUresult cuMemGetAddressRange(CUdeviceptr *, size_t *, CUdeviceptr); ++CUresult cuIpcGetEventHandle(CUipcEventHandle *, CUevent); ++CUresult cuIpcOpenEventHandle(CUevent *, CUipcEventHandle); ++CUresult cuIpcOpenMemHandle(CUdeviceptr *, CUipcMemHandle, unsigned int); ++CUresult cuIpcCloseMemHandle(CUdeviceptr); ++CUresult cuIpcGetMemHandle(CUipcMemHandle *, CUdeviceptr); ++CUresult cuCtxGetDevice(CUdevice *); ++CUresult cuDeviceCanAccessPeer(int *, CUdevice, CUdevice); ++CUresult cuCtxSetCurrent(CUcontext); ++CUresult cuStreamSynchronize(CUstream); ++CUresult cuStreamDestroy(CUstream); ++CUresult cuPointerSetAttribute(const void *, CUpointer_attribute, CUdeviceptr); ++CUresult cuDeviceGetPCIBusId(char*, int, CUdevice); ++CUresult cuPointerGetAttributes(unsigned int, CUpointer_attribute *, void **, CUdeviceptr); ++ ++#endif diff --git a/easybuild/easyconfigs/o/OpenMPI/OpenMPI-5.0.3-GCC-13.3.0.eb b/easybuild/easyconfigs/o/OpenMPI/OpenMPI-5.0.3-GCC-13.3.0.eb new file mode 100644 index 00000000000..6864e213a9f --- /dev/null +++ b/easybuild/easyconfigs/o/OpenMPI/OpenMPI-5.0.3-GCC-13.3.0.eb @@ -0,0 +1,38 @@ +name = 'OpenMPI' +version = '5.0.3' + +homepage = 'https://www.open-mpi.org/' +description = """The Open MPI Project is an open source MPI-3 implementation.""" + +toolchain = {'name': 'GCC', 'version': '13.3.0'} + +source_urls = ['https://www.open-mpi.org/software/ompi/v%(version_major_minor)s/downloads'] +sources = [SOURCELOWER_TAR_BZ2] +patches = [('OpenMPI-5.0.2_build-with-internal-cuda-header.patch', 1)] +checksums = [ + {'openmpi-5.0.3.tar.bz2': '990582f206b3ab32e938aa31bbf07c639368e4405dca196fabe7f0f76eeda90b'}, + {'OpenMPI-5.0.2_build-with-internal-cuda-header.patch': + 'f52dc470543f35efef10d651dd159c771ae25f8f76a420d20d87abf4dc769ed7'}, +] + +builddependencies = [ + ('pkgconf', '2.2.0'), + ('Autotools', '20231222'), +] + +dependencies = [ + ('zlib', '1.3.1'), + ('hwloc', '2.10.0'), + ('libevent', '2.1.12'), + ('UCX', '1.16.0'), + ('libfabric', '1.21.0'), + ('PMIx', '5.0.2'), + ('PRRTE', '3.0.5'), + ('UCC', '1.3.0'), +] + +# CUDA related patches and custom configure option can be removed if CUDA support isn't wanted. +preconfigopts = 'gcc -Iopal/mca/cuda/include -shared opal/mca/cuda/lib/cuda.c -o opal/mca/cuda/lib/libcuda.so && ' +configopts = '--with-cuda=%(start_dir)s/opal/mca/cuda --with-show-load-errors=no ' + +moduleclass = 'mpi' 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/Optax/Optax-0.1.7-foss-2022a-CUDA-11.7.0.eb b/easybuild/easyconfigs/o/Optax/Optax-0.1.7-foss-2022a-CUDA-11.7.0.eb new file mode 100644 index 00000000000..4fd9f0da8ab --- /dev/null +++ b/easybuild/easyconfigs/o/Optax/Optax-0.1.7-foss-2022a-CUDA-11.7.0.eb @@ -0,0 +1,44 @@ +easyblock = 'PythonBundle' + +name = 'Optax' +version = '0.1.7' +versionsuffix = '-CUDA-%(cudaver)s' + +homepage = 'https://github.com/deepmind/optax' +description = """Optax is a gradient processing and optimization library for JAX.""" + +toolchain = {'name': 'foss', 'version': '2022a'} + +dependencies = [ + ('CUDA', '11.7.0', '', SYSTEM), + ('Python', '3.10.4'), + ('dm-haiku', '0.0.9', versionsuffix), + ('dm-tree', '0.1.8'), + ('typing-extensions', '4.3.0'), +] + +builddependencies = [ + ('pytest-xdist', '2.5.0'), +] + +use_pip = True + +exts_list = [ + ('toolz', '0.12.0', { + 'checksums': ['88c570861c440ee3f2f6037c4654613228ff40c93a6c25e0eba70d17282c6194'], + }), + ('chex', '0.1.6', { + 'checksums': ['adb5d2352b5f0d248ccf594be1b1bf9ee7a2bee2a57f0eac78547538d479b0e7'], + }), + ('optax', version, { + 'checksums': ['6a5a848bc5e55e619b187c749fdddc4a5443ea14be85cc769f995779865c110d'], + # ignore equivalence_test.py which imports flax, which depends on optax + 'runtest': 'python -m pytest -n %(parallel)s --pyargs --ignore-glob="**/equivalence_test.py" optax', + }), +] + +sanity_pip_check = True + +sanity_check_commands = ["python -c 'from optax import GradientTransformation'"] + +moduleclass = 'lib' 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 index 90959bb82f0..73bf89e6cc8 100644 --- a/easybuild/easyconfigs/o/Optuna/Optuna-3.5.0-foss-2023a.eb +++ b/easybuild/easyconfigs/o/Optuna/Optuna-3.5.0-foss-2023a.eb @@ -22,26 +22,19 @@ dependencies = [ ('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'), + ('SQLAlchemy', '2.0.25'), ] use_pip = True sanity_pip_check = True 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'], diff --git a/easybuild/easyconfigs/o/ocamlbuild/ocamlbuild-0.14.3-GCC-13.2.0.eb b/easybuild/easyconfigs/o/ocamlbuild/ocamlbuild-0.14.3-GCC-13.2.0.eb new file mode 100644 index 00000000000..209be487770 --- /dev/null +++ b/easybuild/easyconfigs/o/ocamlbuild/ocamlbuild-0.14.3-GCC-13.2.0.eb @@ -0,0 +1,41 @@ +easyblock = 'ConfigureMake' + +name = 'ocamlbuild' +version = '0.14.3' + +homepage = 'https://github.com/ocaml/ocamlbuild' +description = """OCamlbuild is a generic build tool, + that has built-in rules for building OCaml library and programs.""" + +toolchain = {'name': 'GCC', 'version': '13.2.0'} + +source_urls = ['https://github.com/ocaml/ocamlbuild/archive'] +sources = ['%(version)s.tar.gz'] +checksums = ['ce151bfd2141abc6ee0b3f25ba609e989ff564a48bf795d6fa7138a4db0fc2e1'] + +builddependencies = [ + ('binutils', '2.40'), +] + +dependencies = [ + ('OCaml', '5.1.1'), + ('zstd', '1.5.5'), +] + +skipsteps = ['configure'] + +prebuildopts = 'make configure && ' + +buildopts = 'CXX="$CXX" CFLAGS="$CXXFLAGS"' + +installopts = 'DESTDIR="%(installdir)s" INSTALL_BINDIR="%(installdir)s/bin" ' +installopts += 'INSTALL_LIBDIR="%(installdir)s/lib" INSTALL_MANDIR="%(installdir)s/man" ' + +sanity_check_paths = { + 'files': ['bin/%(name)s', 'lib/ocamlbuild/%(name)slib.a'], + 'dirs': ['man'], +} + +sanity_check_commands = ['%(name)s --help'] + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/o/optiSLang/optiSLang-2024R1.eb b/easybuild/easyconfigs/o/optiSLang/optiSLang-2024R1.eb new file mode 100644 index 00000000000..0f8a2c17da9 --- /dev/null +++ b/easybuild/easyconfigs/o/optiSLang/optiSLang-2024R1.eb @@ -0,0 +1,17 @@ +name = 'optiSLang' +version = '2024R1' + +homepage = 'https://www.ansys.com/products/connect/ansys-optislang' +description = """Ansys optiSLang is a constantly evolving, leading-edge answer +to the challenges posed by CAE-based Robust Design Optimization (RDO). Its +state-of-the-art algorithms efficiently and automatically search for the most +robust design configuration, eliminating the slow, manual process that used to +define RDO.""" + +toolchain = SYSTEM + +download_instructions = 'Manually obtain (OPTISLANG_%(version)s_LINX64.tgz) from your ANSYS vendor' +sources = ['OPTISLANG_%(version)s_LINX64.tgz'] +checksums = ['18be4bf600f3d7f30d586811262bc1a544cbb448e85007f5869335da7a173ea4'] + +moduleclass = 'phys' diff --git a/easybuild/easyconfigs/o/orthAgogue/orthAgogue-20141105-gompi-2023a.eb b/easybuild/easyconfigs/o/orthAgogue/orthAgogue-20141105-gompi-2023a.eb new file mode 100644 index 00000000000..bf5d8f3ad6c --- /dev/null +++ b/easybuild/easyconfigs/o/orthAgogue/orthAgogue-20141105-gompi-2023a.eb @@ -0,0 +1,41 @@ +easyblock = 'CMakeMake' + +name = 'orthAgogue' +version = '20141105' +_commit = 'ebe3467' + +homepage = 'https://github.com/guyleonard/orthagogue' +description = """ +orthAgogue: a tool for high speed estimation of homology relations within and between species +in massive data sets. orthAgogue is easy to use and offers flexibility through a range of +optional parameters. +""" + +toolchain = {'name': 'gompi', 'version': '2023a'} +toolchainopts = {'usempi': True, 'pic': True} + +source_urls = ['https://github.com/guyleonard/orthagogue/archive'] +sources = ['%s.tar.gz' % _commit] +checksums = ['c83f33c8d9d31faeeefc88fb6a7345c2f4f81b98f2b63cb6fc803c0bfcd71500'] + +separate_build_dir = False # Must use the same directory because this software is old + +dependencies = [ + ('cmph', '2.0'), + ('tbb', '2020.3'), # Needs old tbb as 2021 versions are not backward compatible with any of the previous releases +] + +builddependencies = [ + ('CMake', '3.26.3'), +] + +sanity_check_paths = { + 'files': ['bin/orthAgogue'], + 'dirs': [], +} + +sanity_check_commands = [ + "orthAgogue | grep USAGE", +] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/p/PAPI/PAPI-7.1.0-GCCcore-13.2.0.eb b/easybuild/easyconfigs/p/PAPI/PAPI-7.1.0-GCCcore-13.2.0.eb index fafbe94664c..27c5255c39a 100644 --- a/easybuild/easyconfigs/p/PAPI/PAPI-7.1.0-GCCcore-13.2.0.eb +++ b/easybuild/easyconfigs/p/PAPI/PAPI-7.1.0-GCCcore-13.2.0.eb @@ -23,7 +23,11 @@ toolchain = {'name': 'GCCcore', 'version': '13.2.0'} source_urls = ['https://icl.utk.edu/projects/papi/downloads'] sources = [SOURCELOWER_TAR_GZ] -checksums = ['5818afb6dba3ece57f51e65897db5062f8e3464e6ed294b654ebf34c3991bc4f'] +patches = ['%(name)s-%(version)s_add_initial_riscv_support.patch'] +checksums = [ + '5818afb6dba3ece57f51e65897db5062f8e3464e6ed294b654ebf34c3991bc4f', + {'PAPI-7.1.0_add_initial_riscv_support.patch': '6c7d0d63ccf2b8c46f2ed736fbd4c58303038fb2a45315aed94c026b773af35a'} +] builddependencies = [ ('binutils', '2.40'), diff --git a/easybuild/easyconfigs/p/PAPI/PAPI-7.1.0_add_initial_riscv_support.patch b/easybuild/easyconfigs/p/PAPI/PAPI-7.1.0_add_initial_riscv_support.patch new file mode 100644 index 00000000000..ac57971d845 --- /dev/null +++ b/easybuild/easyconfigs/p/PAPI/PAPI-7.1.0_add_initial_riscv_support.patch @@ -0,0 +1,64 @@ +From b464420f3a2855b2c800413a4c5767b69e088087 Mon Sep 17 00:00:00 2001 +From: Vince Weaver +Date: Tue, 9 Jan 2024 21:50:26 +0000 +Subject: [PATCH] add initial riscv support + +This adds basic support for the RISC-V architecture + +After this PAPI will compile and the tools will run, however no events will +work because of missing libpfm4 support. + +Tested on a BeagleV-Ahead board +--- + src/linux-context.h | 2 ++ + src/linux-timer.c | 2 +- + src/mb.h | 10 ++++++++++ + 3 files changed, 13 insertions(+), 1 deletion(-) + +diff --git a/src/linux-context.h b/src/linux-context.h +index f46e5577b..394a4804d 100644 +--- a/src/linux-context.h ++++ b/src/linux-context.h +@@ -39,6 +39,8 @@ typedef ucontext_t hwd_ucontext_t; + #define OVERFLOW_ADDRESS(ctx) ctx.ucontext->uc_mcontext.pc + #elif defined(__hppa__) + #define OVERFLOW_ADDRESS(ctx) ctx.ucontext->uc_mcontext.sc_iaoq[0] ++#elif defined(__riscv) ++#define OVERFLOW_ADDRESS(ctx) ctx.ucontext->uc_mcontext.__gregs[REG_PC] + #else + #error "OVERFLOW_ADDRESS() undefined!" + #endif +diff --git a/src/linux-timer.c b/src/linux-timer.c +index 0eaa79c66..be489f325 100644 +--- a/src/linux-timer.c ++++ b/src/linux-timer.c +@@ -281,7 +281,7 @@ static inline long long get_cycles() + return retval; + } + +-#elif (defined(__arm__) || defined(__mips__) || defined(__hppa__)) ++#elif (defined(__arm__) || defined(__mips__) || defined(__hppa__)) || defined(__riscv) + static inline long long + get_cycles( void ) + { +diff --git a/src/mb.h b/src/mb.h +index 81797c553..56d980410 100644 +--- a/src/mb.h ++++ b/src/mb.h +@@ -63,6 +63,16 @@ + #define rmb() asm volatile("lfence":::"memory") + #endif + ++ ++#elif defined (__riscv) ++#define RISCV_FENCE(p, s) \ ++ __asm__ __volatile__ ("fence " #p "," #s : : : "memory") ++ ++/* These barriers need to enforce ordering on both devices or memory. */ ++#define mb() RISCV_FENCE(iorw,iorw) ++#define rmb() RISCV_FENCE(ir,ir) ++#define wmb() RISCV_FENCE(ow,ow) ++ + #else + #error Need to define rmb for this architecture! + #error See the kernel source directory: tools/perf/perf.h file diff --git a/easybuild/easyconfigs/p/PARI-GP/PARI-GP-2.15.5-GCCcore-13.2.0.eb b/easybuild/easyconfigs/p/PARI-GP/PARI-GP-2.15.5-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..f8bef46aa9c --- /dev/null +++ b/easybuild/easyconfigs/p/PARI-GP/PARI-GP-2.15.5-GCCcore-13.2.0.eb @@ -0,0 +1,38 @@ +easyblock = 'ConfigureMake' + +name = 'PARI-GP' +version = '2.15.5' + +homepage = 'https://pari.math.u-bordeaux.fr' +description = """PARI/GP is a widely used computer algebra system designed for fast computations in number theory + (factorizations, algebraic number theory, elliptic curves...), but also contains a large number of other useful + functions to compute with mathematical entities such as matrices, polynomials, power series, algebraic numbers etc., + and a lot of transcendental functions. PARI is also available as a C library to allow for faster computations. +""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +source_urls = ['https://pari.math.u-bordeaux.fr/pub/pari/unix/'] +sources = ['pari-%(version)s.tar.gz'] +checksums = ['0efdda7515d9d954f63324c34b34c560e60f73a81c3924a71260a2cc91d5f981'] + +builddependencies = [('binutils', '2.40')] + +dependencies = [ + ('libreadline', '8.2'), + ('ncurses', '6.4'), +] + +skipsteps = ['configure'] + +prebuildopts = './Configure --prefix=%(installdir)s &&' + +sanity_check_paths = { + 'files': ['bin/%s' % x for x in ['gp', 'gp-2.15', 'gphelp', 'tex2mail']] + + ['include/pari/%s' % x for x in ['pari.h', 'genpari.h']], + 'dirs': ['bin', 'include'] +} + +sanity_check_commands = ["gp --help"] + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/p/PCRE2/PCRE2-10.43-GCCcore-13.3.0.eb b/easybuild/easyconfigs/p/PCRE2/PCRE2-10.43-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..fcbe54f5a34 --- /dev/null +++ b/easybuild/easyconfigs/p/PCRE2/PCRE2-10.43-GCCcore-13.3.0.eb @@ -0,0 +1,28 @@ +easyblock = 'ConfigureMake' + +name = 'PCRE2' +version = '10.43' + +homepage = 'https://www.pcre.org/' +description = """ + The PCRE library is a set of functions that implement regular expression pattern matching using the same syntax + and semantics as Perl 5. +""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/PCRE2Project/%(namelower)s/releases/download/%(namelower)s-%(version)s'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['889d16be5abb8d05400b33c25e151638b8d4bac0e2d9c76e9d6923118ae8a34e'] + +builddependencies = [('binutils', '2.42')] + +configopts = "--enable-shared --enable-jit --enable-pcre2-16 --enable-unicode" + +sanity_check_paths = { + 'files': ["bin/pcre2-config", "bin/pcre2grep", "bin/pcre2test", "lib/libpcre2-8.a", "lib/libpcre2-16.a"], + 'dirs': [], +} + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/p/PLINK/PLINK-2.00a3.7-foss-2022a.eb b/easybuild/easyconfigs/p/PLINK/PLINK-2.00a3.7-foss-2022a.eb index 60ba9b0260b..6141b6cb6fe 100644 --- a/easybuild/easyconfigs/p/PLINK/PLINK-2.00a3.7-foss-2022a.eb +++ b/easybuild/easyconfigs/p/PLINK/PLINK-2.00a3.7-foss-2022a.eb @@ -48,7 +48,7 @@ components = [ ] # run tests (<1h) -postinstallcmds = ["cd Tests && sh run_tests.sh %(installdir)s/bin"] +postinstallcmds = ["cd Tests && bash run_tests.sh %(installdir)s/bin"] sanity_check_paths = { 'files': ['bin/plink', 'bin/plink2', 'bin/pgen_compress'], diff --git a/easybuild/easyconfigs/p/PLINK/PLINK-2.00a3.7-gfbf-2023a.eb b/easybuild/easyconfigs/p/PLINK/PLINK-2.00a3.7-gfbf-2023a.eb index c6d897b040b..7c69a0665b6 100644 --- a/easybuild/easyconfigs/p/PLINK/PLINK-2.00a3.7-gfbf-2023a.eb +++ b/easybuild/easyconfigs/p/PLINK/PLINK-2.00a3.7-gfbf-2023a.eb @@ -48,7 +48,7 @@ components = [ ] # run tests (<1h) -postinstallcmds = ["cd Tests && sh run_tests.sh %(installdir)s/bin"] +postinstallcmds = ["cd Tests && bash run_tests.sh %(installdir)s/bin"] sanity_check_paths = { 'files': ['bin/plink', 'bin/plink2', 'bin/pgen_compress'], diff --git a/easybuild/easyconfigs/p/PMIx/PMIx-5.0.2-GCCcore-13.3.0.eb b/easybuild/easyconfigs/p/PMIx/PMIx-5.0.2-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..1d6208ff9f0 --- /dev/null +++ b/easybuild/easyconfigs/p/PMIx/PMIx-5.0.2-GCCcore-13.3.0.eb @@ -0,0 +1,45 @@ +easyblock = 'ConfigureMake' + +name = 'PMIx' +version = '5.0.2' + +homepage = 'https://pmix.org/' +description = """Process Management for Exascale Environments +PMI Exascale (PMIx) represents an attempt to +provide an extended version of the PMI standard specifically designed +to support clusters up to and including exascale sizes. The overall +objective of the project is not to branch the existing pseudo-standard +definitions - in fact, PMIx fully supports both of the existing PMI-1 +and PMI-2 APIs - but rather to (a) augment and extend those APIs to +eliminate some current restrictions that impact scalability, and (b) +provide a reference implementation of the PMI-server that demonstrates +the desired level of scalability. +""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/openpmix/openpmix/releases/download/v%(version)s'] +sources = ['%(namelower)s-%(version)s.tar.bz2'] +checksums = ['28227ff2ba925da2c3fece44502f23a91446017de0f5a58f5cea9370c514b83c'] + +builddependencies = [('binutils', '2.42')] + +dependencies = [ + ('libevent', '2.1.12'), + ('zlib', '1.3.1'), + ('hwloc', '2.10.0'), +] + +configopts = ' --with-libevent=$EBROOTLIBEVENT --with-zlib=$EBROOTZLIB' +configopts += ' --with-hwloc=$EBROOTHWLOC' +configopts += ' --enable-pmix-binaries' + +buildopts = 'V=1' + +sanity_check_paths = { + 'files': ['bin/pevent', 'bin/plookup', 'bin/pmix_info', 'bin/pps'], + 'dirs': ['etc', 'include', 'lib', 'share'] +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/p/POV-Ray/POV-Ray-3.7.0.10-GCC-12.3.0.eb b/easybuild/easyconfigs/p/POV-Ray/POV-Ray-3.7.0.10-GCC-12.3.0.eb new file mode 100644 index 00000000000..25b29b178d7 --- /dev/null +++ b/easybuild/easyconfigs/p/POV-Ray/POV-Ray-3.7.0.10-GCC-12.3.0.eb @@ -0,0 +1,64 @@ +## +# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild +# +# Copyright:: Copyright 2012-2014 Uni.Lu, NTUA +# Authors:: Fotis Georgatos +# License:: MIT/GPL +# $Id$ +# +# This work implements a part of the HPCBIOS project and is a component of the policy: +# http://hpcbios.readthedocs.org/en/latest/ +## + +easyblock = 'ConfigureMake' + +name = 'POV-Ray' +version = '3.7.0.10' + +homepage = 'https://www.povray.org/' +description = """The Persistence of Vision Raytracer, or POV-Ray, is a ray tracing program + which generates images from a text-based scene description, and is available for a variety + of computer platforms. POV-Ray is a high-quality, Free Software tool for creating stunning + three-dimensional graphics. The source code is available for those wanting to do their own ports.""" + +toolchain = {'name': 'GCC', 'version': '12.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/POV-Ray/povray/archive/'] +sources = ['v%(version)s.tar.gz'] +patches = ['POV-Ray-3.7.0.7_dont-touch-home.patch'] +checksums = [ + {'v3.7.0.10.tar.gz': '7bee83d9296b98b7956eb94210cf30aa5c1bbeada8ef6b93bb52228bbc83abff'}, + {'POV-Ray-3.7.0.7_dont-touch-home.patch': '45103afca808e279dcdee80194c65e2a760c76d011d351392a46e817b0b655f7'}, +] + +builddependencies = [ + ('Autotools', '20220317'), +] + +dependencies = [ + ('Boost', '1.82.0'), + ('zlib', '1.2.13'), + ('libpng', '1.6.39'), + ('libjpeg-turbo', '2.1.5.1'), + ('X11', '20230603'), + ('LibTIFF', '4.5.0'), + ('SDL2', '2.28.2'), + ('OpenEXR', '3.1.7'), +] + +preconfigopts = "cd unix && sed -i 's/^automake/automake --add-missing; automake/g' prebuild.sh && " +preconfigopts += " ./prebuild.sh && cd .. && " +configopts = "COMPILED_BY='EasyBuild' " +configopts += "--with-boost=$EBROOTBOOST --with-zlib=$EBROOTZLIB --with-libpng=$EBROOTLIBPNG " +configopts += "--with-libtiff=$EBROOTLIBTIFF --with-libjpeg=$EBROOTLIBJPEGMINTURBO --with-libsdl=$EBROOTSDL2 " +# configopts += " --with-libmkl=DIR " ## upstream needs to fix this, still in BETA + +runtest = 'check' + +sanity_check_paths = { + 'files': ['bin/povray'], + 'dirs': ['etc/povray/%(version_major_minor)s', 'share'] +} + +moduleclass = 'vis' diff --git a/easybuild/easyconfigs/p/PRRTE/PRRTE-3.0.5-GCCcore-13.3.0.eb b/easybuild/easyconfigs/p/PRRTE/PRRTE-3.0.5-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..2a8688776d8 --- /dev/null +++ b/easybuild/easyconfigs/p/PRRTE/PRRTE-3.0.5-GCCcore-13.3.0.eb @@ -0,0 +1,38 @@ +easyblock = 'ConfigureMake' + +name = 'PRRTE' +version = '3.0.5' + +homepage = 'https://docs.prrte.org/' +description = """PRRTE is the PMIx Reference RunTime Environment""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/openpmix/prrte/releases/download/v%(version)s'] +sources = ['%(namelower)s-%(version)s.tar.bz2'] +checksums = ['75ce732b02f3bc7eff5e51b81469e4373f1effc6a42d8445e2935d3670e58c8e'] + +builddependencies = [('binutils', '2.42')] + +dependencies = [ + ('libevent', '2.1.12'), + ('hwloc', '2.10.0'), + ('PMIx', '5.0.2'), +] + +configopts = ' --with-libevent=$EBROOTLIBEVENT' +configopts += ' --with-hwloc=$EBROOTHWLOC --with-pmix=$EBROOTPMIX' + +buildopts = 'V=1' + +local_binaries = ['prte', 'prte_info', 'prterun', 'prun', 'pterm'] + +sanity_check_paths = { + 'files': ['bin/%s' % x for x in local_binaries] + ['lib/libprrte.%s' % SHLIB_EXT], + 'dirs': ['etc', 'include', 'share'] +} + +sanity_check_commands = ['%s --version' % x for x in local_binaries] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/p/PSIPRED/PSIPRED-4.02-GCC-12.3.0.eb b/easybuild/easyconfigs/p/PSIPRED/PSIPRED-4.02-GCC-12.3.0.eb new file mode 100644 index 00000000000..9f9d2f1539f --- /dev/null +++ b/easybuild/easyconfigs/p/PSIPRED/PSIPRED-4.02-GCC-12.3.0.eb @@ -0,0 +1,30 @@ +easyblock = 'MakeCp' + +name = 'PSIPRED' +version = '4.02' + +homepage = 'http://bioinf.cs.ucl.ac.uk' +description = 'Accurate protein secondary structure prediction' + +toolchain = {'name': 'GCC', 'version': '12.3.0'} + +source_urls = ['http://bioinfadmin.cs.ucl.ac.uk/downloads/psipred/'] +sources = ['%(namelower)s.%(version)s.tar.gz'] +patches = ['PSIPRED-4.02_fix_segfault.patch'] +checksums = [ + {'psipred.4.02.tar.gz': 'b4009b6a5f8b76c6d60ac91c4a743512d844864cf015c492fb6d1dc0d092c467'}, + {'PSIPRED-4.02_fix_segfault.patch': 'd9e52ecf43b04640ebd0693df37871659d598abaec7a2c66264e9a79ee1baa82'}, +] + +parallel = 1 +start_dir = 'src' +build_cmd_targets = 'all install' # install copies binaries to ../bin + +files_to_copy = ['bin', 'data', 'LICENSE'] + +sanity_check_paths = { + 'files': ['bin/chkparse', 'bin/psipass2', 'bin/psipred', 'bin/seq2mtx'], + 'dirs': ['bin', 'data'], +} + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/p/PSM2/PSM2-11.2.80_hfi-user.patch b/easybuild/easyconfigs/p/PSM2/PSM2-11.2.80_hfi-user.patch new file mode 100644 index 00000000000..b63fd7d1854 --- /dev/null +++ b/easybuild/easyconfigs/p/PSM2/PSM2-11.2.80_hfi-user.patch @@ -0,0 +1,982 @@ +Patch in rdma headers required to build PSM2 +diff -urN libpsm2-11.2.80.orig/include/rdma/hfi/hfi1_ioctl.h libpsm2-11.2.80/include/rdma/hfi/hfi1_ioctl.h +--- libpsm2-11.2.80.orig/include/rdma/hfi/hfi1_ioctl.h 1970-01-01 00:00:00.000000000 +0000 ++++ libpsm2-11.2.80/include/rdma/hfi/hfi1_ioctl.h 2019-02-27 21:28:05.000000000 +0000 +@@ -0,0 +1,283 @@ ++/* ++ * ++ * This file is provided under a dual BSD/GPLv2 license. When using or ++ * redistributing this file, you may do so under either license. ++ * ++ * GPL LICENSE SUMMARY ++ * ++ * Copyright(c) 2015 Intel Corporation. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of version 2 of the GNU General Public License as ++ * published by the Free Software Foundation. ++ * ++ * This program is distributed in the hope that it will be useful, but ++ * WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * General Public License for more details. ++ * ++ * BSD LICENSE ++ * ++ * Copyright(c) 2015 Intel Corporation. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * ++ * - Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * - Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in ++ * the documentation and/or other materials provided with the ++ * distribution. ++ * - Neither the name of Intel Corporation nor the names of its ++ * contributors may be used to endorse or promote products derived ++ * from this software without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ * ++ */ ++ ++#ifndef _LINUX__HFI1_IOCTL_H ++#define _LINUX__HFI1_IOCTL_H ++#include ++ ++/* ++ * This structure is passed to the driver to tell it where ++ * user code buffers are, sizes, etc. The offsets and sizes of the ++ * fields must remain unchanged, for binary compatibility. It can ++ * be extended, if userversion is changed so user code can tell, if needed ++ */ ++struct hfi1_user_info { ++ /* ++ * version of user software, to detect compatibility issues. ++ * Should be set to HFI1_USER_SWVERSION. ++ */ ++ __u32 userversion; ++ __u32 pad; ++ /* ++ * If two or more processes wish to share a context, each process ++ * must set the subcontext_cnt and subcontext_id to the same ++ * values. The only restriction on the subcontext_id is that ++ * it be unique for a given node. ++ */ ++ __u16 subctxt_cnt; ++ __u16 subctxt_id; ++ /* 128bit UUID passed in by PSM. */ ++ __u8 uuid[16]; ++}; ++ ++struct hfi1_ctxt_info { ++ __u64 runtime_flags; /* chip/drv runtime flags (HFI1_CAP_*) */ ++ __u32 rcvegr_size; /* size of each eager buffer */ ++ __u16 num_active; /* number of active units */ ++ __u16 unit; /* unit (chip) assigned to caller */ ++ __u16 ctxt; /* ctxt on unit assigned to caller */ ++ __u16 subctxt; /* subctxt on unit assigned to caller */ ++ __u16 rcvtids; /* number of Rcv TIDs for this context */ ++ __u16 credits; /* number of PIO credits for this context */ ++ __u16 numa_node; /* NUMA node of the assigned device */ ++ __u16 rec_cpu; /* cpu # for affinity (0xffff if none) */ ++ __u16 send_ctxt; /* send context in use by this user context */ ++ __u16 egrtids; /* number of RcvArray entries for Eager Rcvs */ ++ __u16 rcvhdrq_cnt; /* number of RcvHdrQ entries */ ++ __u16 rcvhdrq_entsize; /* size (in bytes) for each RcvHdrQ entry */ ++ __u16 sdma_ring_size; /* number of entries in SDMA request ring */ ++}; ++ ++struct hfi1_tid_info { ++ /* virtual address of first page in transfer */ ++ __u64 vaddr; ++ /* pointer to tid array. this array is big enough */ ++ __u64 tidlist; ++ /* number of tids programmed by this request */ ++ __u32 tidcnt; ++ /* length of transfer buffer programmed by this request */ ++ __u32 length; ++}; ++ ++#ifdef NVIDIA_GPU_DIRECT ++/* ++ * struct hfi1_tid_info_v2 is a copy of struct hfi1_tid_info plus a flags field ++ * added at the end of the structure. A new structure is defined instead of ++ * adding the flags field to struct hfi1_tid_info to prevent changing the IOCTL ++ * command number and maintain backwards compatibility with older PSM versions. ++ */ ++struct hfi1_tid_info_v2 { ++ /* virtual address of first page in transfer */ ++ __u64 vaddr; ++ /* pointer to tid array. this array is big enough */ ++ __u64 tidlist; ++ /* number of tids programmed by this request */ ++ __u32 tidcnt; ++ /* length of transfer buffer programmed by this request */ ++ __u32 length; ++ /* Buffer flags. See HFI1_BUF_* */ ++ __u16 flags; ++}; ++#endif ++ ++/* ++ * This structure is returned by the driver immediately after ++ * open to get implementation-specific info, and info specific to this ++ * instance. ++ * ++ * This struct must have explicit pad fields where type sizes ++ * may result in different alignments between 32 and 64 bit ++ * programs, since the 64 bit * bit kernel requires the user code ++ * to have matching offsets ++ */ ++struct hfi1_base_info { ++ /* version of hardware, for feature checking. */ ++ __u32 hw_version; ++ /* version of software, for feature checking. */ ++ __u32 sw_version; ++ /* Job key */ ++ __u16 jkey; ++ __u16 padding1; ++ /* ++ * The special QP (queue pair) value that identifies PSM ++ * protocol packet from standard IB packets. ++ */ ++ __u32 bthqp; ++ /* PIO credit return address, */ ++ __u64 sc_credits_addr; ++ /* ++ * Base address of write-only pio buffers for this process. ++ * Each buffer has sendpio_credits*64 bytes. ++ */ ++ __u64 pio_bufbase_sop; ++ /* ++ * Base address of write-only pio buffers for this process. ++ * Each buffer has sendpio_credits*64 bytes. ++ */ ++ __u64 pio_bufbase; ++ /* address where receive buffer queue is mapped into */ ++ __u64 rcvhdr_bufbase; ++ /* base address of Eager receive buffers. */ ++ __u64 rcvegr_bufbase; ++ /* base address of SDMA completion ring */ ++ __u64 sdma_comp_bufbase; ++ /* ++ * User register base for init code, not to be used directly by ++ * protocol or applications. Always maps real chip register space. ++ * the register addresses are: ++ * ur_rcvhdrhead, ur_rcvhdrtail, ur_rcvegrhead, ur_rcvegrtail, ++ * ur_rcvtidflow ++ */ ++ __u64 user_regbase; ++ /* notification events */ ++ __u64 events_bufbase; ++ /* status page */ ++ __u64 status_bufbase; ++ /* rcvhdrtail update */ ++ __u64 rcvhdrtail_base; ++ /* ++ * shared memory pages for subctxts if ctxt is shared; these cover ++ * all the processes in the group sharing a single context. ++ * all have enough space for the num_subcontexts value on this job. ++ */ ++ __u64 subctxt_uregbase; ++ __u64 subctxt_rcvegrbuf; ++ __u64 subctxt_rcvhdrbuf; ++}; ++ ++#ifdef NVIDIA_GPU_DIRECT ++ ++/* ++ * Use this for the version field in all the GDR related ioctl parameter ++ * structures. We are starting with version 1. ++ */ ++#define HFI1_GDR_VERSION 0x1UL ++ ++/** ++ * struct hfi1_sdma_gpu_cache_evict_params - arguments for sdma cache evict ++ * @evict_params_in: Values passed into the ioctl ++ * @version: The version number for this ioctl. ++ * @pages_to_evict: The number of GPU pages we want evicted from this cache. ++ * @evict_params_out: Values returned from the ioctl ++ * @pages_evicted: The number of GPU pages that were actually evicted. ++ * @pages_in_cache: The number of GPU pages resident in this cache. ++ */ ++struct hfi1_sdma_gpu_cache_evict_params { ++ union { ++ struct { ++ __u32 version; ++ __u32 pages_to_evict; ++ } evict_params_in; ++ struct { ++ __u32 pages_evicted; ++ __u32 pages_in_cache; ++ } evict_params_out; ++ }; ++}; ++ ++/** ++ * struct hfi1_gdr_query_parms - argument for gdr driver ioctl command ++ * @query_parms_in: Union member containing values passed into the ioctl() ++ * @version: A way to pass in a version number for this interface. ++ * @gpu_buf_addr: The starting address of a gpu buffer to be operated upon ++ * @gpu_buf_size: The size of a gpu buffer to be operated upon ++ * @query_params_out: Union member containig values pass back from ioctl() ++ * @host_buf_addr: the host address of a pinned and mmaped gpu buffer. ++ * ++ * This structure is associated with the gdr_ops driver's ioctl commands; ++ * ++ * HFI1_IOCTL_GDR_GPU_PIN_MMAP ++ * HFI1_IOCTL_GDR_GPU_MUNMAP_UNPIN ++ * ++ * It is used to pass in GPU buffer descriptors into the hfi_ops ++ * driver. ++ * ++ * The driver will reject any gpu buffer address or gpu buffer size that ++ * is NOT rounded to GPU buffer boundaries. GPU buffer addresses must ++ * start on a NV_GPU_PAGE_SIZE boundary, and a multiple of NV_GPU_PAGE_SIZE ++ * in length. ++ * ++ */ ++struct hfi1_gdr_query_params { ++ union { ++ struct { ++ __u32 version; ++ __u32 gpu_buf_size; ++ __u64 gpu_buf_addr; ++ } query_params_in; ++ struct { ++ __u64 host_buf_addr; ++ } query_params_out; ++ }; ++}; ++ ++/** ++ * struct hfi1_gdr_cache_evict_params - arguments for GDR cache evict ioctl ++ * @version: The version number for this ioctl. ++ * @evict_params_in: Values passed into the ioctl ++ * @pages_to_evict: The number of GPU pages we want evicted from this cache. ++ * @evict_params_out: Values returned from the ioctl ++ * @pages_evicted: The number of GPU pages that were actually evicted. ++ * @pages_in_cache: The number of GPU pages resident in this cache. ++ */ ++struct hfi1_gdr_cache_evict_params { ++ union { ++ struct { ++ __u32 version; ++ __u32 pages_to_evict; ++ } evict_params_in; ++ struct { ++ __u32 pages_evicted; ++ __u32 pages_in_cache; ++ } evict_params_out; ++ }; ++}; ++#endif ++#endif /* _LINIUX__HFI1_IOCTL_H */ +diff -urN libpsm2-11.2.80.orig/include/rdma/hfi/hfi1_user.h libpsm2-11.2.80/include/rdma/hfi/hfi1_user.h +--- libpsm2-11.2.80.orig/include/rdma/hfi/hfi1_user.h 1970-01-01 00:00:00.000000000 +0000 ++++ libpsm2-11.2.80/include/rdma/hfi/hfi1_user.h 2019-02-27 21:28:05.000000000 +0000 +@@ -0,0 +1,287 @@ ++/* ++ * ++ * This file is provided under a dual BSD/GPLv2 license. When using or ++ * redistributing this file, you may do so under either license. ++ * ++ * GPL LICENSE SUMMARY ++ * ++ * Copyright(c) 2015 Intel Corporation. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of version 2 of the GNU General Public License as ++ * published by the Free Software Foundation. ++ * ++ * This program is distributed in the hope that it will be useful, but ++ * WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * General Public License for more details. ++ * ++ * BSD LICENSE ++ * ++ * Copyright(c) 2015 Intel Corporation. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * ++ * - Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * - Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in ++ * the documentation and/or other materials provided with the ++ * distribution. ++ * - Neither the name of Intel Corporation nor the names of its ++ * contributors may be used to endorse or promote products derived ++ * from this software without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ * ++ */ ++ ++/* ++ * This file contains defines, structures, etc. that are used ++ * to communicate between kernel and user code. ++ */ ++ ++#ifndef _LINUX__HFI1_USER_H ++#define _LINUX__HFI1_USER_H ++ ++#include ++#include ++ ++/* ++ * This version number is given to the driver by the user code during ++ * initialization in the spu_userversion field of hfi1_user_info, so ++ * the driver can check for compatibility with user code. ++ * ++ * The major version changes when data structures change in an incompatible ++ * way. The driver must be the same for initialization to succeed. ++ */ ++#define HFI1_USER_SWMAJOR 6 ++ ++/* ++ * Minor version differences are always compatible ++ * a within a major version, however if user software is larger ++ * than driver software, some new features and/or structure fields ++ * may not be implemented; the user code must deal with this if it ++ * cares, or it must abort after initialization reports the difference. ++ */ ++#define HFI1_USER_SWMINOR 3 ++ ++/* ++ * We will encode the major/minor inside a single 32bit version number. ++ */ ++#define HFI1_SWMAJOR_SHIFT 16 ++ ++/* ++ * Set of HW and driver capability/feature bits. ++ * These bit values are used to configure enabled/disabled HW and ++ * driver features. The same set of bits are communicated to user ++ * space. ++ */ ++#define HFI1_CAP_DMA_RTAIL (1UL << 0) /* Use DMA'ed RTail value */ ++#define HFI1_CAP_SDMA (1UL << 1) /* Enable SDMA support */ ++#define HFI1_CAP_SDMA_AHG (1UL << 2) /* Enable SDMA AHG support */ ++#define HFI1_CAP_EXTENDED_PSN (1UL << 3) /* Enable Extended PSN support */ ++#define HFI1_CAP_HDRSUPP (1UL << 4) /* Enable Header Suppression */ ++#define HFI1_CAP_TID_RDMA (1UL << 5) /* Enable TID RDMA operations */ ++#define HFI1_CAP_USE_SDMA_HEAD (1UL << 6) /* DMA Hdr Q tail vs. use CSR */ ++#define HFI1_CAP_MULTI_PKT_EGR (1UL << 7) /* Enable multi-packet Egr buffs*/ ++#define HFI1_CAP_NODROP_RHQ_FULL (1UL << 8) /* Don't drop on Hdr Q full */ ++#define HFI1_CAP_NODROP_EGR_FULL (1UL << 9) /* Don't drop on EGR buffs full */ ++#define HFI1_CAP_TID_UNMAP (1UL << 10) /* Disable Expected TID caching */ ++#define HFI1_CAP_PRINT_UNIMPL (1UL << 11) /* Show for unimplemented feats */ ++#define HFI1_CAP_ALLOW_PERM_JKEY (1UL << 12) /* Allow use of permissive JKEY */ ++#define HFI1_CAP_NO_INTEGRITY (1UL << 13) /* Enable ctxt integrity checks */ ++#define HFI1_CAP_PKEY_CHECK (1UL << 14) /* Enable ctxt PKey checking */ ++#define HFI1_CAP_STATIC_RATE_CTRL (1UL << 15) /* Allow PBC.StaticRateControl */ ++#define HFI1_CAP_OPFN (1UL << 16) /* Enable the OPFN protocol */ ++#define HFI1_CAP_SDMA_HEAD_CHECK (1UL << 17) /* SDMA head checking */ ++#define HFI1_CAP_EARLY_CREDIT_RETURN (1UL << 18) /* early credit return */ ++ ++#ifdef NVIDIA_GPU_DIRECT ++/* ++ * Bit-63 is being used instead of the LSB that is available since ++ * HFI1_CAP_GPUDIRECT_OT will only be used in an out of tree driver. ++ */ ++#define HFI1_CAP_GPUDIRECT_OT (1UL << 63) /* GPU Direct RDMA support */ ++#endif ++ ++#define HFI1_RCVHDR_ENTSIZE_2 (1UL << 0) ++#define HFI1_RCVHDR_ENTSIZE_16 (1UL << 1) ++#define HFI1_RCVDHR_ENTSIZE_32 (1UL << 2) ++ ++#define _HFI1_EVENT_FROZEN_BIT 0 ++#define _HFI1_EVENT_LINKDOWN_BIT 1 ++#define _HFI1_EVENT_LID_CHANGE_BIT 2 ++#define _HFI1_EVENT_LMC_CHANGE_BIT 3 ++#define _HFI1_EVENT_SL2VL_CHANGE_BIT 4 ++#define _HFI1_EVENT_TID_MMU_NOTIFY_BIT 5 ++#define _HFI1_MAX_EVENT_BIT _HFI1_EVENT_TID_MMU_NOTIFY_BIT ++ ++#define HFI1_EVENT_FROZEN (1UL << _HFI1_EVENT_FROZEN_BIT) ++#define HFI1_EVENT_LINKDOWN (1UL << _HFI1_EVENT_LINKDOWN_BIT) ++#define HFI1_EVENT_LID_CHANGE (1UL << _HFI1_EVENT_LID_CHANGE_BIT) ++#define HFI1_EVENT_LMC_CHANGE (1UL << _HFI1_EVENT_LMC_CHANGE_BIT) ++#define HFI1_EVENT_SL2VL_CHANGE (1UL << _HFI1_EVENT_SL2VL_CHANGE_BIT) ++#define HFI1_EVENT_TID_MMU_NOTIFY (1UL << _HFI1_EVENT_TID_MMU_NOTIFY_BIT) ++ ++#ifdef NVIDIA_GPU_DIRECT ++#define HFI1_BUF_GPU_MEM_BIT 0 ++#define HFI1_BUF_GPU_MEM (1UL << HFI1_BUF_GPU_MEM_BIT) ++#endif ++ ++/* ++ * These are the status bits readable (in ASCII form, 64bit value) ++ * from the "status" sysfs file. For binary compatibility, values ++ * must remain as is; removed states can be reused for different ++ * purposes. ++ */ ++#define HFI1_STATUS_INITTED 0x1 /* basic initialization done */ ++/* Chip has been found and initialized */ ++#define HFI1_STATUS_CHIP_PRESENT 0x20 ++/* IB link is at ACTIVE, usable for data traffic */ ++#define HFI1_STATUS_IB_READY 0x40 ++/* link is configured, LID, MTU, etc. have been set */ ++#define HFI1_STATUS_IB_CONF 0x80 ++/* A Fatal hardware error has occurred. */ ++#define HFI1_STATUS_HWERROR 0x200 ++ ++/* ++ * Number of supported shared contexts. ++ * This is the maximum number of software contexts that can share ++ * a hardware send/receive context. ++ */ ++#define HFI1_MAX_SHARED_CTXTS 8 ++ ++/* ++ * Poll types ++ */ ++#define HFI1_POLL_TYPE_ANYRCV 0x0 ++#define HFI1_POLL_TYPE_URGENT 0x1 ++ ++enum hfi1_sdma_comp_state { ++ FREE = 0, ++ QUEUED, ++ COMPLETE, ++ ERROR ++}; ++ ++/* ++ * SDMA completion ring entry ++ */ ++struct hfi1_sdma_comp_entry { ++ __u32 status; ++ __u32 errcode; ++}; ++ ++/* ++ * Device status and notifications from driver to user-space. ++ */ ++struct hfi1_status { ++ __u64 dev; /* device/hw status bits */ ++ __u64 port; /* port state and status bits */ ++ char freezemsg[0]; ++}; ++ ++enum sdma_req_opcode { ++ EXPECTED = 0, ++ EAGER ++}; ++ ++#define HFI1_SDMA_REQ_VERSION_MASK 0xF ++#define HFI1_SDMA_REQ_VERSION_SHIFT 0x0 ++#define HFI1_SDMA_REQ_OPCODE_MASK 0xF ++#define HFI1_SDMA_REQ_OPCODE_SHIFT 0x4 ++#define HFI1_SDMA_REQ_IOVCNT_MASK 0xFF ++#define HFI1_SDMA_REQ_IOVCNT_SHIFT 0x8 ++ ++struct sdma_req_info { ++ /* ++ * bits 0-3 - version (currently used only for GPU direct) ++ * 1 - user space is NOT using flags field ++ * 2 - user space is using flags field ++ * bits 4-7 - opcode (enum sdma_req_opcode) ++ * bits 8-15 - io vector count ++ */ ++ __u16 ctrl; ++ /* ++ * Number of fragments contained in this request. ++ * User-space has already computed how many ++ * fragment-sized packet the user buffer will be ++ * split into. ++ */ ++ __u16 npkts; ++ /* ++ * Size of each fragment the user buffer will be ++ * split into. ++ */ ++ __u16 fragsize; ++ /* ++ * Index of the slot in the SDMA completion ring ++ * this request should be using. User-space is ++ * in charge of managing its own ring. ++ */ ++ __u16 comp_idx; ++#ifdef NVIDIA_GPU_DIRECT ++ /* ++ * Buffer flags for this request. See HFI1_BUF_* ++ */ ++ __u16 flags; ++#endif ++} __attribute__((packed)); ++ ++/* ++ * SW KDETH header. ++ * swdata is SW defined portion. ++ */ ++struct hfi1_kdeth_header { ++ __le32 ver_tid_offset; ++ __le16 jkey; ++ __le16 hcrc; ++ __le32 swdata[7]; ++} __attribute__((packed)); ++ ++/* ++ * Structure describing the headers that User space uses. The ++ * structure above is a subset of this one. ++ */ ++struct hfi1_pkt_header { ++ __le16 pbc[4]; ++ __be16 lrh[4]; ++ __be32 bth[3]; ++ struct hfi1_kdeth_header kdeth; ++} __attribute__((packed)); ++ ++ ++/* ++ * The list of usermode accessible registers. ++ */ ++enum hfi1_ureg { ++ /* (RO) DMA RcvHdr to be used next. */ ++ ur_rcvhdrtail = 0, ++ /* (RW) RcvHdr entry to be processed next by host. */ ++ ur_rcvhdrhead = 1, ++ /* (RO) Index of next Eager index to use. */ ++ ur_rcvegrindextail = 2, ++ /* (RW) Eager TID to be processed next */ ++ ur_rcvegrindexhead = 3, ++ /* (RO) Receive Eager Offset Tail */ ++ ur_rcvegroffsettail = 4, ++ /* For internal use only; max register number. */ ++ ur_maxreg, ++ /* (RW) Receive TID flow table */ ++ ur_rcvtidflowtable = 256 ++}; ++ ++#endif /* _LINIUX__HFI1_USER_H */ +diff -urN libpsm2-11.2.80.orig/include/rdma/ib_user_mad.h libpsm2-11.2.80/include/rdma/ib_user_mad.h +--- libpsm2-11.2.80.orig/include/rdma/ib_user_mad.h 1970-01-01 00:00:00.000000000 +0000 ++++ libpsm2-11.2.80/include/rdma/ib_user_mad.h 2019-02-01 15:04:28.000000000 +0000 +@@ -0,0 +1,233 @@ ++/* ++ * Copyright (c) 2004 Topspin Communications. All rights reserved. ++ * Copyright (c) 2005 Voltaire, Inc. All rights reserved. ++ * ++ * This software is available to you under a choice of one of two ++ * licenses. You may choose to be licensed under the terms of the GNU ++ * General Public License (GPL) Version 2, available from the file ++ * COPYING in the main directory of this source tree, or the ++ * OpenIB.org BSD license below: ++ * ++ * Redistribution and use in source and binary forms, with or ++ * without modification, are permitted provided that the following ++ * conditions are met: ++ * ++ * - Redistributions of source code must retain the above ++ * copyright notice, this list of conditions and the following ++ * disclaimer. ++ * ++ * - Redistributions in binary form must reproduce the above ++ * copyright notice, this list of conditions and the following ++ * disclaimer in the documentation and/or other materials ++ * provided with the distribution. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS ++ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ++ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN ++ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ++ * SOFTWARE. ++ */ ++ ++#ifndef IB_USER_MAD_H ++#define IB_USER_MAD_H ++ ++#include ++#include ++ ++/* ++ * Increment this value if any changes that break userspace ABI ++ * compatibility are made. ++ */ ++#define IB_USER_MAD_ABI_VERSION 5 ++ ++/* ++ * Make sure that all structs defined in this file remain laid out so ++ * that they pack the same way on 32-bit and 64-bit architectures (to ++ * avoid incompatibility between 32-bit userspace and 64-bit kernels). ++ */ ++ ++/** ++ * ib_user_mad_hdr_old - Old version of MAD packet header without pkey_index ++ * @id - ID of agent MAD received with/to be sent with ++ * @status - 0 on successful receive, ETIMEDOUT if no response ++ * received (transaction ID in data[] will be set to TID of original ++ * request) (ignored on send) ++ * @timeout_ms - Milliseconds to wait for response (unset on receive) ++ * @retries - Number of automatic retries to attempt ++ * @qpn - Remote QP number received from/to be sent to ++ * @qkey - Remote Q_Key to be sent with (unset on receive) ++ * @lid - Remote lid received from/to be sent to ++ * @sl - Service level received with/to be sent with ++ * @path_bits - Local path bits received with/to be sent with ++ * @grh_present - If set, GRH was received/should be sent ++ * @gid_index - Local GID index to send with (unset on receive) ++ * @hop_limit - Hop limit in GRH ++ * @traffic_class - Traffic class in GRH ++ * @gid - Remote GID in GRH ++ * @flow_label - Flow label in GRH ++ */ ++struct ib_user_mad_hdr_old { ++ __u32 id; ++ __u32 status; ++ __u32 timeout_ms; ++ __u32 retries; ++ __u32 length; ++ __be32 qpn; ++ __be32 qkey; ++ __be16 lid; ++ __u8 sl; ++ __u8 path_bits; ++ __u8 grh_present; ++ __u8 gid_index; ++ __u8 hop_limit; ++ __u8 traffic_class; ++ __u8 gid[16]; ++ __be32 flow_label; ++}; ++ ++/** ++ * ib_user_mad_hdr - MAD packet header ++ * This layout allows specifying/receiving the P_Key index. To use ++ * this capability, an application must call the ++ * IB_USER_MAD_ENABLE_PKEY ioctl on the user MAD file handle before ++ * any other actions with the file handle. ++ * @id - ID of agent MAD received with/to be sent with ++ * @status - 0 on successful receive, ETIMEDOUT if no response ++ * received (transaction ID in data[] will be set to TID of original ++ * request) (ignored on send) ++ * @timeout_ms - Milliseconds to wait for response (unset on receive) ++ * @retries - Number of automatic retries to attempt ++ * @qpn - Remote QP number received from/to be sent to ++ * @qkey - Remote Q_Key to be sent with (unset on receive) ++ * @lid - Remote lid received from/to be sent to ++ * @sl - Service level received with/to be sent with ++ * @path_bits - Local path bits received with/to be sent with ++ * @grh_present - If set, GRH was received/should be sent ++ * @gid_index - Local GID index to send with (unset on receive) ++ * @hop_limit - Hop limit in GRH ++ * @traffic_class - Traffic class in GRH ++ * @gid - Remote GID in GRH ++ * @flow_label - Flow label in GRH ++ * @pkey_index - P_Key index ++ */ ++struct ib_user_mad_hdr { ++ __u32 id; ++ __u32 status; ++ __u32 timeout_ms; ++ __u32 retries; ++ __u32 length; ++ __be32 qpn; ++ __be32 qkey; ++ __be16 lid; ++ __u8 sl; ++ __u8 path_bits; ++ __u8 grh_present; ++ __u8 gid_index; ++ __u8 hop_limit; ++ __u8 traffic_class; ++ __u8 gid[16]; ++ __be32 flow_label; ++ __u16 pkey_index; ++ __u8 reserved[6]; ++}; ++ ++/** ++ * ib_user_mad - MAD packet ++ * @hdr - MAD packet header ++ * @data - Contents of MAD ++ * ++ */ ++struct ib_user_mad { ++ struct ib_user_mad_hdr hdr; ++ __aligned_u64 data[0]; ++}; ++ ++/* ++ * Earlier versions of this interface definition declared the ++ * method_mask[] member as an array of __u32 but treated it as a ++ * bitmap made up of longs in the kernel. This ambiguity meant that ++ * 32-bit big-endian applications that can run on both 32-bit and ++ * 64-bit kernels had no consistent ABI to rely on, and 64-bit ++ * big-endian applications that treated method_mask as being made up ++ * of 32-bit words would have their bitmap misinterpreted. ++ * ++ * To clear up this confusion, we change the declaration of ++ * method_mask[] to use unsigned long and handle the conversion from ++ * 32-bit userspace to 64-bit kernel for big-endian systems in the ++ * compat_ioctl method. Unfortunately, to keep the structure layout ++ * the same, we need the method_mask[] array to be aligned only to 4 ++ * bytes even when long is 64 bits, which forces us into this ugly ++ * typedef. ++ */ ++typedef unsigned long __attribute__((aligned(4))) packed_ulong; ++#define IB_USER_MAD_LONGS_PER_METHOD_MASK (128 / (8 * sizeof (long))) ++ ++/** ++ * ib_user_mad_reg_req - MAD registration request ++ * @id - Set by the kernel; used to identify agent in future requests. ++ * @qpn - Queue pair number; must be 0 or 1. ++ * @method_mask - The caller will receive unsolicited MADs for any method ++ * where @method_mask = 1. ++ * @mgmt_class - Indicates which management class of MADs should be receive ++ * by the caller. This field is only required if the user wishes to ++ * receive unsolicited MADs, otherwise it should be 0. ++ * @mgmt_class_version - Indicates which version of MADs for the given ++ * management class to receive. ++ * @oui: Indicates IEEE OUI when mgmt_class is a vendor class ++ * in the range from 0x30 to 0x4f. Otherwise not used. ++ * @rmpp_version: If set, indicates the RMPP version used. ++ * ++ */ ++struct ib_user_mad_reg_req { ++ __u32 id; ++ packed_ulong method_mask[IB_USER_MAD_LONGS_PER_METHOD_MASK]; ++ __u8 qpn; ++ __u8 mgmt_class; ++ __u8 mgmt_class_version; ++ __u8 oui[3]; ++ __u8 rmpp_version; ++}; ++ ++/** ++ * ib_user_mad_reg_req2 - MAD registration request ++ * ++ * @id - Set by the _kernel_; used by userspace to identify the ++ * registered agent in future requests. ++ * @qpn - Queue pair number; must be 0 or 1. ++ * @mgmt_class - Indicates which management class of MADs should be ++ * receive by the caller. This field is only required if ++ * the user wishes to receive unsolicited MADs, otherwise ++ * it should be 0. ++ * @mgmt_class_version - Indicates which version of MADs for the given ++ * management class to receive. ++ * @res - Ignored. ++ * @flags - additional registration flags; Must be in the set of ++ * flags defined in IB_USER_MAD_REG_FLAGS_CAP ++ * @method_mask - The caller wishes to receive unsolicited MADs for the ++ * methods whose bit(s) is(are) set. ++ * @oui - Indicates IEEE OUI to use when mgmt_class is a vendor ++ * class in the range from 0x30 to 0x4f. Otherwise not ++ * used. ++ * @rmpp_version - If set, indicates the RMPP version to use. ++ */ ++enum { ++ IB_USER_MAD_USER_RMPP = (1 << 0), ++}; ++#define IB_USER_MAD_REG_FLAGS_CAP (IB_USER_MAD_USER_RMPP) ++struct ib_user_mad_reg_req2 { ++ __u32 id; ++ __u32 qpn; ++ __u8 mgmt_class; ++ __u8 mgmt_class_version; ++ __u16 res; ++ __u32 flags; ++ __aligned_u64 method_mask[2]; ++ __u32 oui; ++ __u8 rmpp_version; ++ __u8 reserved[3]; ++}; ++ ++#endif /* IB_USER_MAD_H */ +diff -urN libpsm2-11.2.80.orig/include/rdma/rdma_user_ioctl.h libpsm2-11.2.80/include/rdma/rdma_user_ioctl.h +--- libpsm2-11.2.80.orig/include/rdma/rdma_user_ioctl.h 1970-01-01 00:00:00.000000000 +0000 ++++ libpsm2-11.2.80/include/rdma/rdma_user_ioctl.h 2018-08-23 03:06:42.000000000 +0000 +@@ -0,0 +1,162 @@ ++/* ++ * Copyright (c) 2016 Mellanox Technologies, LTD. All rights reserved. ++ * ++ * This software is available to you under a choice of one of two ++ * licenses. You may choose to be licensed under the terms of the GNU ++ * General Public License (GPL) Version 2, available from the file ++ * COPYING in the main directory of this source tree, or the ++ * OpenIB.org BSD license below: ++ * ++ * Redistribution and use in source and binary forms, with or ++ * without modification, are permitted provided that the following ++ * conditions are met: ++ * ++ * - Redistributions of source code must retain the above ++ * copyright notice, this list of conditions and the following ++ * disclaimer. ++ * ++ * - Redistributions in binary form must reproduce the above ++ * copyright notice, this list of conditions and the following ++ * disclaimer in the documentation and/or other materials ++ * provided with the distribution. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS ++ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ++ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN ++ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ++ * SOFTWARE. ++ */ ++ ++#ifndef RDMA_USER_IOCTL_H ++#define RDMA_USER_IOCTL_H ++ ++#include ++#include ++#include ++#include ++ ++/* Documentation/ioctl/ioctl-number.txt */ ++#define RDMA_IOCTL_MAGIC 0x1b ++/* Legacy name, for user space application which already use it */ ++#ifndef IB_IOCTL_MAGIC ++#define IB_IOCTL_MAGIC RDMA_IOCTL_MAGIC ++#endif ++ ++#define RDMA_VERBS_IOCTL \ ++ _IOWR(RDMA_IOCTL_MAGIC, 1, struct ib_uverbs_ioctl_hdr) ++ ++#define UVERBS_ID_NS_MASK 0xF000 ++#define UVERBS_ID_NS_SHIFT 12 ++ ++enum { ++ /* User input */ ++ UVERBS_ATTR_F_MANDATORY = 1U << 0, ++ /* ++ * Valid output bit should be ignored and considered set in ++ * mandatory fields. This bit is kernel output. ++ */ ++ UVERBS_ATTR_F_VALID_OUTPUT = 1U << 1, ++}; ++ ++struct ib_uverbs_attr { ++ __u16 attr_id; /* command specific type attribute */ ++ __u16 len; /* only for pointers */ ++ __u16 flags; /* combination of UVERBS_ATTR_F_XXXX */ ++ __u16 reserved; ++ __u64 data; /* ptr to command, inline data or idr/fd */ ++}; ++ ++struct ib_uverbs_ioctl_hdr { ++ __u16 length; ++ __u16 object_id; ++ __u16 method_id; ++ __u16 num_attrs; ++ __u64 reserved; ++ struct ib_uverbs_attr attrs[0]; ++}; ++ ++/* ++ * General blocks assignments ++ * It is closed on purpose do not expose it it user space ++ * #define MAD_CMD_BASE 0x00 ++ * #define HFI1_CMD_BAS 0xE0 ++ */ ++ ++/* MAD specific section */ ++#ifndef IB_USER_MAD_REGISTER_AGENT ++#define IB_USER_MAD_REGISTER_AGENT _IOWR(RDMA_IOCTL_MAGIC, 0x01, struct ib_user_mad_reg_req) ++#endif ++#ifndef IB_USER_MAD_UNREGISTER_AGENT ++#define IB_USER_MAD_UNREGISTER_AGENT _IOW(RDMA_IOCTL_MAGIC, 0x02, __u32) ++#endif ++#ifndef IB_USER_MAD_ENABLE_PKEY ++#define IB_USER_MAD_ENABLE_PKEY _IO(RDMA_IOCTL_MAGIC, 0x03) ++#endif ++#ifndef IB_USER_MAD_REGISTER_AGENT2 ++#define IB_USER_MAD_REGISTER_AGENT2 _IOWR(RDMA_IOCTL_MAGIC, 0x04, struct ib_user_mad_reg_req2) ++#endif ++ ++/* HFI specific section */ ++/* allocate HFI and context */ ++#define HFI1_IOCTL_ASSIGN_CTXT _IOWR(RDMA_IOCTL_MAGIC, 0xE1, struct hfi1_user_info) ++/* find out what resources we got */ ++#define HFI1_IOCTL_CTXT_INFO _IOW(RDMA_IOCTL_MAGIC, 0xE2, struct hfi1_ctxt_info) ++/* set up userspace */ ++#define HFI1_IOCTL_USER_INFO _IOW(RDMA_IOCTL_MAGIC, 0xE3, struct hfi1_base_info) ++/* update expected TID entries */ ++#define HFI1_IOCTL_TID_UPDATE _IOWR(RDMA_IOCTL_MAGIC, 0xE4, struct hfi1_tid_info) ++/* free expected TID entries */ ++#define HFI1_IOCTL_TID_FREE _IOWR(RDMA_IOCTL_MAGIC, 0xE5, struct hfi1_tid_info) ++/* force an update of PIO credit */ ++#define HFI1_IOCTL_CREDIT_UPD _IO(RDMA_IOCTL_MAGIC, 0xE6) ++/* control receipt of packets */ ++#define HFI1_IOCTL_RECV_CTRL _IOW(RDMA_IOCTL_MAGIC, 0xE8, int) ++/* set the kind of polling we want */ ++#define HFI1_IOCTL_POLL_TYPE _IOW(RDMA_IOCTL_MAGIC, 0xE9, int) ++/* ack & clear user status bits */ ++#define HFI1_IOCTL_ACK_EVENT _IOW(RDMA_IOCTL_MAGIC, 0xEA, unsigned long) ++/* set context's pkey */ ++#define HFI1_IOCTL_SET_PKEY _IOW(RDMA_IOCTL_MAGIC, 0xEB, __u16) ++/* reset context's HW send context */ ++#define HFI1_IOCTL_CTXT_RESET _IO(RDMA_IOCTL_MAGIC, 0xEC) ++/* read TID cache invalidations */ ++#define HFI1_IOCTL_TID_INVAL_READ _IOWR(RDMA_IOCTL_MAGIC, 0xED, struct hfi1_tid_info) ++/* get the version of the user cdev */ ++#define HFI1_IOCTL_GET_VERS _IOR(RDMA_IOCTL_MAGIC, 0xEE, int) ++ ++#ifdef NVIDIA_GPU_DIRECT ++#define HFI1_IOCTL_SDMA_CACHE_EVICT _IOWR(RDMA_IOCTL_MAGIC, 0xFD, struct hfi1_sdma_gpu_cache_evict_params) ++ ++#define HFI1_IOCTL_TID_UPDATE_V2 _IOWR(RDMA_IOCTL_MAGIC, 0xFE, struct hfi1_tid_info_v2) ++ ++/* ++ * gdr_ops driver ioctl related declarations ++ * HFI1_IOCTL_GDR_GPU_PIN_MMAP ++ * return the host address of a gpu buffer that has been pinned ++ * and mmaped. ++ * ++ * HFI1_IOCTL_GDR_GPU_MUNMAP_UNPIN ++ * unpin a gpu buffer and unmap it from the user address space. ++ * ++ * HFI1_IOCTL_GDR_GPU_CACHE_EVICT ++ * Try to evict a number of pages from the GDR cache. ++ * Return the number of pages evicted, and the ++ * number of pages in that cache. ++ */ ++#define GDR_IOCTL_MAGIC 0xDA /* See Documentation/ioctl/ioctl-number.txt */ ++ ++#define HFI1_IOCTL_GDR_GPU_PIN_MMAP \ ++ _IOWR(GDR_IOCTL_MAGIC, 1, struct hfi1_gdr_query_params) ++ ++#define HFI1_IOCTL_GDR_GPU_MUNMAP_UNPIN \ ++ _IOWR(GDR_IOCTL_MAGIC, 2, struct hfi1_gdr_query_params) ++ ++#define HFI1_IOCTL_GDR_GPU_CACHE_EVICT \ ++ _IOWR(GDR_IOCTL_MAGIC, 3, struct hfi1_gdr_cache_evict_params) ++ ++#endif /* NVIDIA_GPU_DIRECT */ ++ ++#endif /* RDMA_USER_IOCTL_H */ diff --git a/easybuild/easyconfigs/p/PSM2/PSM2-12.0.1-GCCcore-10.3.0.eb b/easybuild/easyconfigs/p/PSM2/PSM2-12.0.1-GCCcore-10.3.0.eb new file mode 100644 index 00000000000..a7f0ee5d469 --- /dev/null +++ b/easybuild/easyconfigs/p/PSM2/PSM2-12.0.1-GCCcore-10.3.0.eb @@ -0,0 +1,44 @@ +easyblock = 'ConfigureMake' + +name = 'PSM2' +version = '12.0.1' + +homepage = 'https://github.com/cornelisnetworks/opa-psm2/' +description = """ +Low-level user-space communications interface for the Intel(R) OPA family of products. +""" + +toolchain = {'name': 'GCCcore', 'version': '10.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/cornelisnetworks/opa-psm2/archive/refs/tags'] +sources = ['%(name)s_%(version)s.tar.gz'] +patches = [ + ('PSM2-11.2.80_hfi-user.patch', 1), +] +checksums = [ + {'PSM2_12.0.1.tar.gz': 'e41af2d7d36a6ab67639ecbd5c1012aa20b2b464bf5cfbdac60e7eb37bfe58de'}, + {'PSM2-11.2.80_hfi-user.patch': 'e43138859387213506050af9b76e193c3cd0a162d148998c39e551f220392abb'}, +] + +builddependencies = [ + ('binutils', '2.36.1'), + ('CUDA', '11.3.1', '', SYSTEM), +] + +dependencies = [ + ('numactl', '2.0.14'), +] + +skipsteps = ['configure'] + +prebuildopts = "sed -i 's|fprintf(stderr,|_HFI_DBG(|' psm_context.c && sed -i 's|/usr|/|' Makefile && " +buildopts = "arch=%s USE_PSM_UUID=1 PSM_CUDA=1 WERROR=" % ARCH +installopts = "arch=%s UDEVDIR=/lib/udev DESTDIR=%%(installdir)s" % ARCH + +sanity_check_paths = { + 'files': ['lib/lib%%(namelower)s.%s' % SHLIB_EXT, 'include/%(namelower)s.h'], + 'dirs': [] +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/p/PSM2/PSM2-12.0.1-GCCcore-11.2.0.eb b/easybuild/easyconfigs/p/PSM2/PSM2-12.0.1-GCCcore-11.2.0.eb new file mode 100644 index 00000000000..779d6bcdd0a --- /dev/null +++ b/easybuild/easyconfigs/p/PSM2/PSM2-12.0.1-GCCcore-11.2.0.eb @@ -0,0 +1,44 @@ +easyblock = 'ConfigureMake' + +name = 'PSM2' +version = '12.0.1' + +homepage = 'https://github.com/cornelisnetworks/opa-psm2/' +description = """ +Low-level user-space communications interface for the Intel(R) OPA family of products. +""" + +toolchain = {'name': 'GCCcore', 'version': '11.2.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/cornelisnetworks/opa-psm2/archive/refs/tags'] +sources = ['%(name)s_%(version)s.tar.gz'] +patches = [ + ('PSM2-11.2.80_hfi-user.patch', 1), +] +checksums = [ + {'PSM2_12.0.1.tar.gz': 'e41af2d7d36a6ab67639ecbd5c1012aa20b2b464bf5cfbdac60e7eb37bfe58de'}, + {'PSM2-11.2.80_hfi-user.patch': 'e43138859387213506050af9b76e193c3cd0a162d148998c39e551f220392abb'}, +] + +builddependencies = [ + ('binutils', '2.37'), + ('CUDA', '11.5.2', '', SYSTEM), +] + +dependencies = [ + ('numactl', '2.0.14'), +] + +skipsteps = ['configure'] + +prebuildopts = "sed -i 's|fprintf(stderr,|_HFI_DBG(|' psm_context.c && sed -i 's|/usr|/|' Makefile && " +buildopts = "arch=%s USE_PSM_UUID=1 PSM_CUDA=1 WERROR=" % ARCH +installopts = "arch=%s UDEVDIR=/lib/udev DESTDIR=%%(installdir)s" % ARCH + +sanity_check_paths = { + 'files': ['lib/lib%%(namelower)s.%s' % SHLIB_EXT, 'include/%(namelower)s.h'], + 'dirs': [] +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/p/PSM2/PSM2-12.0.1-GCCcore-11.3.0.eb b/easybuild/easyconfigs/p/PSM2/PSM2-12.0.1-GCCcore-11.3.0.eb new file mode 100644 index 00000000000..7fa4c192e3b --- /dev/null +++ b/easybuild/easyconfigs/p/PSM2/PSM2-12.0.1-GCCcore-11.3.0.eb @@ -0,0 +1,44 @@ +easyblock = 'ConfigureMake' + +name = 'PSM2' +version = '12.0.1' + +homepage = 'https://github.com/cornelisnetworks/opa-psm2/' +description = """ +Low-level user-space communications interface for the Intel(R) OPA family of products. +""" + +toolchain = {'name': 'GCCcore', 'version': '11.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/cornelisnetworks/opa-psm2/archive/refs/tags'] +sources = ['%(name)s_%(version)s.tar.gz'] +patches = [ + ('PSM2-11.2.80_hfi-user.patch', 1), +] +checksums = [ + {'PSM2_12.0.1.tar.gz': 'e41af2d7d36a6ab67639ecbd5c1012aa20b2b464bf5cfbdac60e7eb37bfe58de'}, + {'PSM2-11.2.80_hfi-user.patch': 'e43138859387213506050af9b76e193c3cd0a162d148998c39e551f220392abb'}, +] + +builddependencies = [ + ('binutils', '2.38'), + ('CUDA', '11.7.0', '', SYSTEM), +] + +dependencies = [ + ('numactl', '2.0.14'), +] + +skipsteps = ['configure'] + +prebuildopts = "sed -i 's|fprintf(stderr,|_HFI_DBG(|' psm_context.c && sed -i 's|/usr|/|' Makefile && " +buildopts = "arch=%s USE_PSM_UUID=1 PSM_CUDA=1 WERROR=" % ARCH +installopts = "arch=%s UDEVDIR=/lib/udev DESTDIR=%%(installdir)s" % ARCH + +sanity_check_paths = { + 'files': ['lib/lib%%(namelower)s.%s' % SHLIB_EXT, 'include/%(namelower)s.h'], + 'dirs': [] +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/p/PSM2/PSM2-12.0.1-GCCcore-12.2.0.eb b/easybuild/easyconfigs/p/PSM2/PSM2-12.0.1-GCCcore-12.2.0.eb new file mode 100644 index 00000000000..fbf417d2bc8 --- /dev/null +++ b/easybuild/easyconfigs/p/PSM2/PSM2-12.0.1-GCCcore-12.2.0.eb @@ -0,0 +1,44 @@ +easyblock = 'ConfigureMake' + +name = 'PSM2' +version = '12.0.1' + +homepage = 'https://github.com/cornelisnetworks/opa-psm2/' +description = """ +Low-level user-space communications interface for the Intel(R) OPA family of products. +""" + +toolchain = {'name': 'GCCcore', 'version': '12.2.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/cornelisnetworks/opa-psm2/archive/refs/tags'] +sources = ['%(name)s_%(version)s.tar.gz'] +patches = [ + ('PSM2-11.2.80_hfi-user.patch', 1), +] +checksums = [ + {'PSM2_12.0.1.tar.gz': 'e41af2d7d36a6ab67639ecbd5c1012aa20b2b464bf5cfbdac60e7eb37bfe58de'}, + {'PSM2-11.2.80_hfi-user.patch': 'e43138859387213506050af9b76e193c3cd0a162d148998c39e551f220392abb'}, +] + +builddependencies = [ + ('binutils', '2.39'), + ('CUDA', '12.0.0', '', SYSTEM), +] + +dependencies = [ + ('numactl', '2.0.16'), +] + +skipsteps = ['configure'] + +prebuildopts = "sed -i 's|fprintf(stderr,|_HFI_DBG(|' psm_context.c && sed -i 's|/usr|/|' Makefile && " +buildopts = "arch=%s USE_PSM_UUID=1 PSM_CUDA=1 WERROR=" % ARCH +installopts = "arch=%s UDEVDIR=/lib/udev DESTDIR=%%(installdir)s" % ARCH + +sanity_check_paths = { + 'files': ['lib/lib%%(namelower)s.%s' % SHLIB_EXT, 'include/%(namelower)s.h'], + 'dirs': [] +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/p/PSM2/PSM2-12.0.1-GCCcore-12.3.0.eb b/easybuild/easyconfigs/p/PSM2/PSM2-12.0.1-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..0470fe64363 --- /dev/null +++ b/easybuild/easyconfigs/p/PSM2/PSM2-12.0.1-GCCcore-12.3.0.eb @@ -0,0 +1,44 @@ +easyblock = 'ConfigureMake' + +name = 'PSM2' +version = '12.0.1' + +homepage = 'https://github.com/cornelisnetworks/opa-psm2/' +description = """ +Low-level user-space communications interface for the Intel(R) OPA family of products. +""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/cornelisnetworks/opa-psm2/archive/refs/tags'] +sources = ['%(name)s_%(version)s.tar.gz'] +patches = [ + ('PSM2-11.2.80_hfi-user.patch', 1), +] +checksums = [ + {'PSM2_12.0.1.tar.gz': 'e41af2d7d36a6ab67639ecbd5c1012aa20b2b464bf5cfbdac60e7eb37bfe58de'}, + {'PSM2-11.2.80_hfi-user.patch': 'e43138859387213506050af9b76e193c3cd0a162d148998c39e551f220392abb'}, +] + +builddependencies = [ + ('binutils', '2.40'), + ('CUDA', '12.1.1', '', SYSTEM), +] + +dependencies = [ + ('numactl', '2.0.16'), +] + +skipsteps = ['configure'] + +prebuildopts = "sed -i 's|fprintf(stderr,|_HFI_DBG(|' psm_context.c && sed -i 's|/usr|/|' Makefile && " +buildopts = "arch=%s USE_PSM_UUID=1 PSM_CUDA=1 WERROR=" % ARCH +installopts = "arch=%s UDEVDIR=/lib/udev DESTDIR=%%(installdir)s" % ARCH + +sanity_check_paths = { + 'files': ['lib/lib%%(namelower)s.%s' % SHLIB_EXT, 'include/%(namelower)s.h'], + 'dirs': [] +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/p/PSM2/PSM2-12.0.1-GCCcore-13.2.0.eb b/easybuild/easyconfigs/p/PSM2/PSM2-12.0.1-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..cfe3fe9f1e4 --- /dev/null +++ b/easybuild/easyconfigs/p/PSM2/PSM2-12.0.1-GCCcore-13.2.0.eb @@ -0,0 +1,44 @@ +easyblock = 'ConfigureMake' + +name = 'PSM2' +version = '12.0.1' + +homepage = 'https://github.com/cornelisnetworks/opa-psm2/' +description = """ +Low-level user-space communications interface for the Intel(R) OPA family of products. +""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/cornelisnetworks/opa-psm2/archive/refs/tags'] +sources = ['%(name)s_%(version)s.tar.gz'] +patches = [ + ('PSM2-11.2.80_hfi-user.patch', 1), +] +checksums = [ + {'PSM2_12.0.1.tar.gz': 'e41af2d7d36a6ab67639ecbd5c1012aa20b2b464bf5cfbdac60e7eb37bfe58de'}, + {'PSM2-11.2.80_hfi-user.patch': 'e43138859387213506050af9b76e193c3cd0a162d148998c39e551f220392abb'}, +] + +builddependencies = [ + ('binutils', '2.40'), + ('CUDA', '12.4.0', '', SYSTEM), +] + +dependencies = [ + ('numactl', '2.0.16'), +] + +skipsteps = ['configure'] + +prebuildopts = "sed -i 's|fprintf(stderr,|_HFI_DBG(|' psm_context.c && sed -i 's|/usr|/|' Makefile && " +buildopts = "arch=%s USE_PSM_UUID=1 PSM_CUDA=1 WERROR=" % ARCH +installopts = "arch=%s UDEVDIR=/lib/udev DESTDIR=%%(installdir)s" % ARCH + +sanity_check_paths = { + 'files': ['lib/lib%%(namelower)s.%s' % SHLIB_EXT, 'include/%(namelower)s.h'], + 'dirs': [] +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/p/PSM2/PSM2-12.0.1-GCCcore-13.3.0.eb b/easybuild/easyconfigs/p/PSM2/PSM2-12.0.1-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..78d99d2efec --- /dev/null +++ b/easybuild/easyconfigs/p/PSM2/PSM2-12.0.1-GCCcore-13.3.0.eb @@ -0,0 +1,44 @@ +easyblock = 'ConfigureMake' + +name = 'PSM2' +version = '12.0.1' + +homepage = 'https://github.com/cornelisnetworks/opa-psm2/' +description = """ +Low-level user-space communications interface for the Intel(R) OPA family of products. +""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/cornelisnetworks/opa-psm2/archive/refs/tags'] +sources = ['%(name)s_%(version)s.tar.gz'] +patches = [ + ('PSM2-11.2.80_hfi-user.patch', 1), +] +checksums = [ + {'PSM2_12.0.1.tar.gz': 'e41af2d7d36a6ab67639ecbd5c1012aa20b2b464bf5cfbdac60e7eb37bfe58de'}, + {'PSM2-11.2.80_hfi-user.patch': 'e43138859387213506050af9b76e193c3cd0a162d148998c39e551f220392abb'}, +] + +builddependencies = [ + ('binutils', '2.42'), + ('CUDA', '12.4.0', '', SYSTEM), +] + +dependencies = [ + ('numactl', '2.0.18'), +] + +skipsteps = ['configure'] + +prebuildopts = "sed -i 's|fprintf(stderr,|_HFI_DBG(|' psm_context.c && sed -i 's|/usr|/|' Makefile && " +buildopts = "arch=%s USE_PSM_UUID=1 PSM_CUDA=1 WERROR=" % ARCH +installopts = "arch=%s UDEVDIR=/lib/udev DESTDIR=%%(installdir)s" % ARCH + +sanity_check_paths = { + 'files': ['lib/lib%%(namelower)s.%s' % SHLIB_EXT, 'include/%(namelower)s.h'], + 'dirs': [] +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/p/Perl-bundle-CPAN/PathTools-3.75_fix-cwd_enoent-test.patch b/easybuild/easyconfigs/p/Perl-bundle-CPAN/PathTools-3.75_fix-cwd_enoent-test.patch new file mode 100644 index 00000000000..0cba1221f98 --- /dev/null +++ b/easybuild/easyconfigs/p/Perl-bundle-CPAN/PathTools-3.75_fix-cwd_enoent-test.patch @@ -0,0 +1,50 @@ +From 8508806268d1abe6c533393333ad151e12adfc2d Mon Sep 17 00:00:00 2001 +From: Slaven Rezic +Date: Wed, 3 Oct 2018 10:07:32 -0400 +Subject: [PATCH] Accept also ESTALE (fix for RT #133534) + +ESTALE may occur in some environments when accessing a +now non-existing directory, e.g. when using NFS or in docker +containers. +--- + dist/PathTools/t/cwd_enoent.t | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +diff --git a/dist/PathTools/t/cwd_enoent.t b/dist/PathTools/t/cwd_enoent.t +index 8f3a1fb1fb3e..510c65ed0c9a 100644 +--- a/dist/PathTools/t/cwd_enoent.t ++++ b/dist/PathTools/t/cwd_enoent.t +@@ -2,7 +2,7 @@ use warnings; + use strict; + + use Config; +-use Errno qw(ENOENT); ++use Errno qw(); + use File::Temp qw(tempdir); + use Test::More; + +@@ -19,6 +19,7 @@ unless(mkdir("$tmp/testdir") && chdir("$tmp/testdir") && rmdir("$tmp/testdir")){ + plan tests => 8; + require Cwd; + ++my @acceptable_errnos = (&Errno::ENOENT, (defined &Errno::ESTALE ? &Errno::ESTALE : ())); + foreach my $type (qw(regular perl)) { + SKIP: { + skip "_perl_abs_path() not expected to work", 4 +@@ -36,12 +37,14 @@ foreach my $type (qw(regular perl)) { + $res = Cwd::getcwd(); + $eno = 0+$!; + is $res, undef, "$type getcwd result on non-existent directory"; +- is $eno, ENOENT, "$type getcwd errno on non-existent directory"; ++ ok((grep { $eno == $_ } @acceptable_errnos), "$type getcwd errno on non-existent directory") ++ or diag "Got errno code $eno, expected " . join(", ", @acceptable_errnos); + $! = 0; + $res = Cwd::abs_path("."); + $eno = 0+$!; + is $res, undef, "$type abs_path result on non-existent directory"; +- is $eno, ENOENT, "$type abs_path errno on non-existent directory"; ++ ok((grep { $eno == $_ } @acceptable_errnos), "$type abs_path errno on non-existent directory") ++ or diag "Got errno code $eno, expected " . join(", ", @acceptable_errnos); + } + } + diff --git a/easybuild/easyconfigs/p/Perl-bundle-CPAN/Perl-bundle-CPAN-5.36.1-GCCcore-12.3.0.eb b/easybuild/easyconfigs/p/Perl-bundle-CPAN/Perl-bundle-CPAN-5.36.1-GCCcore-12.3.0.eb index a3645c938f4..3921d7fefac 100644 --- a/easybuild/easyconfigs/p/Perl-bundle-CPAN/Perl-bundle-CPAN-5.36.1-GCCcore-12.3.0.eb +++ b/easybuild/easyconfigs/p/Perl-bundle-CPAN/Perl-bundle-CPAN-5.36.1-GCCcore-12.3.0.eb @@ -1923,7 +1923,12 @@ exts_list = [ ('Cwd', '3.75', { 'source_tmpl': 'PathTools-%(version)s.tar.gz', 'source_urls': ['https://cpan.metacpan.org/authors/id/X/XS/XSAWYERX'], - 'checksums': ['a558503aa6b1f8c727c0073339081a77888606aa701ada1ad62dd9d8c3f945a2'], + 'patches': ['PathTools-3.75_fix-cwd_enoent-test.patch'], + 'checksums': [ + 'a558503aa6b1f8c727c0073339081a77888606aa701ada1ad62dd9d8c3f945a2', + {'PathTools-3.75_fix-cwd_enoent-test.patch': + '7a456a99d9b04a36359f3623f0deef8fe7f472c742f99cdcf0215c50afbbe7b1'}, + ], }), ('MIME::Base64', '3.16', { 'source_tmpl': 'MIME-Base64-%(version)s.tar.gz', diff --git a/easybuild/easyconfigs/p/Perl-bundle-CPAN/Perl-bundle-CPAN-5.38.0-GCCcore-13.2.0.eb b/easybuild/easyconfigs/p/Perl-bundle-CPAN/Perl-bundle-CPAN-5.38.0-GCCcore-13.2.0.eb index 2ee75d5ffc3..9754ce8b0ae 100644 --- a/easybuild/easyconfigs/p/Perl-bundle-CPAN/Perl-bundle-CPAN-5.38.0-GCCcore-13.2.0.eb +++ b/easybuild/easyconfigs/p/Perl-bundle-CPAN/Perl-bundle-CPAN-5.38.0-GCCcore-13.2.0.eb @@ -1926,7 +1926,12 @@ exts_list = [ 'runtest': False, # Single failure about a tainted PATH 'source_tmpl': 'PathTools-%(version)s.tar.gz', 'source_urls': ['https://cpan.metacpan.org/authors/id/X/XS/XSAWYERX'], - 'checksums': ['a558503aa6b1f8c727c0073339081a77888606aa701ada1ad62dd9d8c3f945a2'], + 'patches': ['PathTools-3.75_fix-cwd_enoent-test.patch'], + 'checksums': [ + 'a558503aa6b1f8c727c0073339081a77888606aa701ada1ad62dd9d8c3f945a2', + {'PathTools-3.75_fix-cwd_enoent-test.patch': + '7a456a99d9b04a36359f3623f0deef8fe7f472c742f99cdcf0215c50afbbe7b1'}, + ], }), ('MIME::Base64', '3.16', { 'source_tmpl': 'MIME-Base64-%(version)s.tar.gz', diff --git a/easybuild/easyconfigs/p/Perl/PathTools-3.75_fix-cwd_enoent-test.patch b/easybuild/easyconfigs/p/Perl/PathTools-3.75_fix-cwd_enoent-test.patch new file mode 100644 index 00000000000..0cba1221f98 --- /dev/null +++ b/easybuild/easyconfigs/p/Perl/PathTools-3.75_fix-cwd_enoent-test.patch @@ -0,0 +1,50 @@ +From 8508806268d1abe6c533393333ad151e12adfc2d Mon Sep 17 00:00:00 2001 +From: Slaven Rezic +Date: Wed, 3 Oct 2018 10:07:32 -0400 +Subject: [PATCH] Accept also ESTALE (fix for RT #133534) + +ESTALE may occur in some environments when accessing a +now non-existing directory, e.g. when using NFS or in docker +containers. +--- + dist/PathTools/t/cwd_enoent.t | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +diff --git a/dist/PathTools/t/cwd_enoent.t b/dist/PathTools/t/cwd_enoent.t +index 8f3a1fb1fb3e..510c65ed0c9a 100644 +--- a/dist/PathTools/t/cwd_enoent.t ++++ b/dist/PathTools/t/cwd_enoent.t +@@ -2,7 +2,7 @@ use warnings; + use strict; + + use Config; +-use Errno qw(ENOENT); ++use Errno qw(); + use File::Temp qw(tempdir); + use Test::More; + +@@ -19,6 +19,7 @@ unless(mkdir("$tmp/testdir") && chdir("$tmp/testdir") && rmdir("$tmp/testdir")){ + plan tests => 8; + require Cwd; + ++my @acceptable_errnos = (&Errno::ENOENT, (defined &Errno::ESTALE ? &Errno::ESTALE : ())); + foreach my $type (qw(regular perl)) { + SKIP: { + skip "_perl_abs_path() not expected to work", 4 +@@ -36,12 +37,14 @@ foreach my $type (qw(regular perl)) { + $res = Cwd::getcwd(); + $eno = 0+$!; + is $res, undef, "$type getcwd result on non-existent directory"; +- is $eno, ENOENT, "$type getcwd errno on non-existent directory"; ++ ok((grep { $eno == $_ } @acceptable_errnos), "$type getcwd errno on non-existent directory") ++ or diag "Got errno code $eno, expected " . join(", ", @acceptable_errnos); + $! = 0; + $res = Cwd::abs_path("."); + $eno = 0+$!; + is $res, undef, "$type abs_path result on non-existent directory"; +- is $eno, ENOENT, "$type abs_path errno on non-existent directory"; ++ ok((grep { $eno == $_ } @acceptable_errnos), "$type abs_path errno on non-existent directory") ++ or diag "Got errno code $eno, expected " . join(", ", @acceptable_errnos); + } + } + diff --git a/easybuild/easyconfigs/p/Perl/Perl-5.32.1-FCC-4.5.0.eb b/easybuild/easyconfigs/p/Perl/Perl-5.32.1-FCC-4.5.0.eb index 7081ac17a66..d70fd1c84b2 100644 --- a/easybuild/easyconfigs/p/Perl/Perl-5.32.1-FCC-4.5.0.eb +++ b/easybuild/easyconfigs/p/Perl/Perl-5.32.1-FCC-4.5.0.eb @@ -236,7 +236,12 @@ exts_list = [ ('File::Spec', '3.75', { 'source_tmpl': 'PathTools-%(version)s.tar.gz', 'source_urls': ['https://cpan.metacpan.org/authors/id/X/XS/XSAWYERX'], - 'checksums': ['a558503aa6b1f8c727c0073339081a77888606aa701ada1ad62dd9d8c3f945a2'], + 'patches': ['PathTools-3.75_fix-cwd_enoent-test.patch'], + 'checksums': [ + 'a558503aa6b1f8c727c0073339081a77888606aa701ada1ad62dd9d8c3f945a2', + {'PathTools-3.75_fix-cwd_enoent-test.patch': + '7a456a99d9b04a36359f3623f0deef8fe7f472c742f99cdcf0215c50afbbe7b1'}, + ], }), ('Test::Simple', '1.302183', { 'source_tmpl': 'Test-Simple-%(version)s.tar.gz', @@ -1667,7 +1672,12 @@ exts_list = [ ('Cwd', '3.75', { 'source_tmpl': 'PathTools-%(version)s.tar.gz', 'source_urls': ['https://cpan.metacpan.org/authors/id/X/XS/XSAWYERX'], - 'checksums': ['a558503aa6b1f8c727c0073339081a77888606aa701ada1ad62dd9d8c3f945a2'], + 'patches': ['PathTools-3.75_fix-cwd_enoent-test.patch'], + 'checksums': [ + 'a558503aa6b1f8c727c0073339081a77888606aa701ada1ad62dd9d8c3f945a2', + {'PathTools-3.75_fix-cwd_enoent-test.patch': + '7a456a99d9b04a36359f3623f0deef8fe7f472c742f99cdcf0215c50afbbe7b1'}, + ], }), ('MIME::Base64', '3.16', { 'source_tmpl': 'MIME-Base64-%(version)s.tar.gz', diff --git a/easybuild/easyconfigs/p/Perl/Perl-5.32.1-GCCcore-10.3.0.eb b/easybuild/easyconfigs/p/Perl/Perl-5.32.1-GCCcore-10.3.0.eb index b4cb6226cf0..486e71ce429 100644 --- a/easybuild/easyconfigs/p/Perl/Perl-5.32.1-GCCcore-10.3.0.eb +++ b/easybuild/easyconfigs/p/Perl/Perl-5.32.1-GCCcore-10.3.0.eb @@ -234,7 +234,12 @@ exts_list = [ ('File::Spec', '3.75', { 'source_tmpl': 'PathTools-%(version)s.tar.gz', 'source_urls': ['https://cpan.metacpan.org/authors/id/X/XS/XSAWYERX'], - 'checksums': ['a558503aa6b1f8c727c0073339081a77888606aa701ada1ad62dd9d8c3f945a2'], + 'patches': ['PathTools-3.75_fix-cwd_enoent-test.patch'], + 'checksums': [ + 'a558503aa6b1f8c727c0073339081a77888606aa701ada1ad62dd9d8c3f945a2', + {'PathTools-3.75_fix-cwd_enoent-test.patch': + '7a456a99d9b04a36359f3623f0deef8fe7f472c742f99cdcf0215c50afbbe7b1'}, + ], }), ('Test::Simple', '1.302183', { 'source_tmpl': 'Test-Simple-%(version)s.tar.gz', @@ -1673,7 +1678,12 @@ exts_list = [ ('Cwd', '3.75', { 'source_tmpl': 'PathTools-%(version)s.tar.gz', 'source_urls': ['https://cpan.metacpan.org/authors/id/X/XS/XSAWYERX'], - 'checksums': ['a558503aa6b1f8c727c0073339081a77888606aa701ada1ad62dd9d8c3f945a2'], + 'patches': ['PathTools-3.75_fix-cwd_enoent-test.patch'], + 'checksums': [ + 'a558503aa6b1f8c727c0073339081a77888606aa701ada1ad62dd9d8c3f945a2', + {'PathTools-3.75_fix-cwd_enoent-test.patch': + '7a456a99d9b04a36359f3623f0deef8fe7f472c742f99cdcf0215c50afbbe7b1'}, + ], }), ('MIME::Base64', '3.16', { 'source_tmpl': 'MIME-Base64-%(version)s.tar.gz', diff --git a/easybuild/easyconfigs/p/Perl/Perl-5.34.0-GCCcore-11.2.0.eb b/easybuild/easyconfigs/p/Perl/Perl-5.34.0-GCCcore-11.2.0.eb index c0b5956c8b3..87d1215a591 100644 --- a/easybuild/easyconfigs/p/Perl/Perl-5.34.0-GCCcore-11.2.0.eb +++ b/easybuild/easyconfigs/p/Perl/Perl-5.34.0-GCCcore-11.2.0.eb @@ -231,7 +231,12 @@ exts_list = [ ('File::Spec', '3.75', { 'source_tmpl': 'PathTools-%(version)s.tar.gz', 'source_urls': ['https://cpan.metacpan.org/authors/id/X/XS/XSAWYERX'], - 'checksums': ['a558503aa6b1f8c727c0073339081a77888606aa701ada1ad62dd9d8c3f945a2'], + 'patches': ['PathTools-3.75_fix-cwd_enoent-test.patch'], + 'checksums': [ + 'a558503aa6b1f8c727c0073339081a77888606aa701ada1ad62dd9d8c3f945a2', + {'PathTools-3.75_fix-cwd_enoent-test.patch': + '7a456a99d9b04a36359f3623f0deef8fe7f472c742f99cdcf0215c50afbbe7b1'}, + ], }), ('Test::Simple', '1.302186', { 'source_tmpl': 'Test-Simple-%(version)s.tar.gz', @@ -1670,7 +1675,12 @@ exts_list = [ ('Cwd', '3.75', { 'source_tmpl': 'PathTools-%(version)s.tar.gz', 'source_urls': ['https://cpan.metacpan.org/authors/id/X/XS/XSAWYERX'], - 'checksums': ['a558503aa6b1f8c727c0073339081a77888606aa701ada1ad62dd9d8c3f945a2'], + 'patches': ['PathTools-3.75_fix-cwd_enoent-test.patch'], + 'checksums': [ + 'a558503aa6b1f8c727c0073339081a77888606aa701ada1ad62dd9d8c3f945a2', + {'PathTools-3.75_fix-cwd_enoent-test.patch': + '7a456a99d9b04a36359f3623f0deef8fe7f472c742f99cdcf0215c50afbbe7b1'}, + ], }), ('MIME::Base64', '3.16', { 'source_tmpl': 'MIME-Base64-%(version)s.tar.gz', diff --git a/easybuild/easyconfigs/p/Perl/Perl-5.34.1-GCCcore-11.3.0.eb b/easybuild/easyconfigs/p/Perl/Perl-5.34.1-GCCcore-11.3.0.eb index f30c0c81715..ec2e80d1840 100644 --- a/easybuild/easyconfigs/p/Perl/Perl-5.34.1-GCCcore-11.3.0.eb +++ b/easybuild/easyconfigs/p/Perl/Perl-5.34.1-GCCcore-11.3.0.eb @@ -286,7 +286,12 @@ exts_list = [ ('File::Spec', '3.75', { 'source_tmpl': 'PathTools-%(version)s.tar.gz', 'source_urls': ['https://cpan.metacpan.org/authors/id/X/XS/XSAWYERX'], - 'checksums': ['a558503aa6b1f8c727c0073339081a77888606aa701ada1ad62dd9d8c3f945a2'], + 'patches': ['PathTools-3.75_fix-cwd_enoent-test.patch'], + 'checksums': [ + 'a558503aa6b1f8c727c0073339081a77888606aa701ada1ad62dd9d8c3f945a2', + {'PathTools-3.75_fix-cwd_enoent-test.patch': + '7a456a99d9b04a36359f3623f0deef8fe7f472c742f99cdcf0215c50afbbe7b1'}, + ], }), ('Test::Simple', '1.302190', { 'source_tmpl': 'Test-Simple-%(version)s.tar.gz', @@ -1775,7 +1780,12 @@ exts_list = [ ('Cwd', '3.75', { 'source_tmpl': 'PathTools-%(version)s.tar.gz', 'source_urls': ['https://cpan.metacpan.org/authors/id/X/XS/XSAWYERX'], - 'checksums': ['a558503aa6b1f8c727c0073339081a77888606aa701ada1ad62dd9d8c3f945a2'], + 'patches': ['PathTools-3.75_fix-cwd_enoent-test.patch'], + 'checksums': [ + 'a558503aa6b1f8c727c0073339081a77888606aa701ada1ad62dd9d8c3f945a2', + {'PathTools-3.75_fix-cwd_enoent-test.patch': + '7a456a99d9b04a36359f3623f0deef8fe7f472c742f99cdcf0215c50afbbe7b1'}, + ], }), ('MIME::Base64', '3.16', { 'source_tmpl': 'MIME-Base64-%(version)s.tar.gz', diff --git a/easybuild/easyconfigs/p/Perl/Perl-5.36.0-GCCcore-12.1.0.eb b/easybuild/easyconfigs/p/Perl/Perl-5.36.0-GCCcore-12.1.0.eb index c865a27e6aa..11d6a08c241 100644 --- a/easybuild/easyconfigs/p/Perl/Perl-5.36.0-GCCcore-12.1.0.eb +++ b/easybuild/easyconfigs/p/Perl/Perl-5.36.0-GCCcore-12.1.0.eb @@ -286,7 +286,12 @@ exts_list = [ ('File::Spec', '3.75', { 'source_tmpl': 'PathTools-%(version)s.tar.gz', 'source_urls': ['https://cpan.metacpan.org/authors/id/X/XS/XSAWYERX'], - 'checksums': ['a558503aa6b1f8c727c0073339081a77888606aa701ada1ad62dd9d8c3f945a2'], + 'patches': ['PathTools-3.75_fix-cwd_enoent-test.patch'], + 'checksums': [ + 'a558503aa6b1f8c727c0073339081a77888606aa701ada1ad62dd9d8c3f945a2', + {'PathTools-3.75_fix-cwd_enoent-test.patch': + '7a456a99d9b04a36359f3623f0deef8fe7f472c742f99cdcf0215c50afbbe7b1'}, + ], }), ('Test::Simple', '1.302191', { 'source_tmpl': 'Test-Simple-%(version)s.tar.gz', @@ -1767,7 +1772,12 @@ exts_list = [ ('Cwd', '3.75', { 'source_tmpl': 'PathTools-%(version)s.tar.gz', 'source_urls': ['https://cpan.metacpan.org/authors/id/X/XS/XSAWYERX'], - 'checksums': ['a558503aa6b1f8c727c0073339081a77888606aa701ada1ad62dd9d8c3f945a2'], + 'patches': ['PathTools-3.75_fix-cwd_enoent-test.patch'], + 'checksums': [ + 'a558503aa6b1f8c727c0073339081a77888606aa701ada1ad62dd9d8c3f945a2', + {'PathTools-3.75_fix-cwd_enoent-test.patch': + '7a456a99d9b04a36359f3623f0deef8fe7f472c742f99cdcf0215c50afbbe7b1'}, + ], }), ('MIME::Base64', '3.16', { 'source_tmpl': 'MIME-Base64-%(version)s.tar.gz', diff --git a/easybuild/easyconfigs/p/Perl/Perl-5.36.0-GCCcore-12.2.0.eb b/easybuild/easyconfigs/p/Perl/Perl-5.36.0-GCCcore-12.2.0.eb index cd326152ab6..2b37316b16c 100644 --- a/easybuild/easyconfigs/p/Perl/Perl-5.36.0-GCCcore-12.2.0.eb +++ b/easybuild/easyconfigs/p/Perl/Perl-5.36.0-GCCcore-12.2.0.eb @@ -286,7 +286,12 @@ exts_list = [ ('File::Spec', '3.75', { 'source_tmpl': 'PathTools-%(version)s.tar.gz', 'source_urls': ['https://cpan.metacpan.org/authors/id/X/XS/XSAWYERX'], - 'checksums': ['a558503aa6b1f8c727c0073339081a77888606aa701ada1ad62dd9d8c3f945a2'], + 'patches': ['PathTools-3.75_fix-cwd_enoent-test.patch'], + 'checksums': [ + 'a558503aa6b1f8c727c0073339081a77888606aa701ada1ad62dd9d8c3f945a2', + {'PathTools-3.75_fix-cwd_enoent-test.patch': + '7a456a99d9b04a36359f3623f0deef8fe7f472c742f99cdcf0215c50afbbe7b1'}, + ], }), ('Test::Simple', '1.302191', { 'source_tmpl': 'Test-Simple-%(version)s.tar.gz', @@ -1775,7 +1780,12 @@ exts_list = [ ('Cwd', '3.75', { 'source_tmpl': 'PathTools-%(version)s.tar.gz', 'source_urls': ['https://cpan.metacpan.org/authors/id/X/XS/XSAWYERX'], - 'checksums': ['a558503aa6b1f8c727c0073339081a77888606aa701ada1ad62dd9d8c3f945a2'], + 'patches': ['PathTools-3.75_fix-cwd_enoent-test.patch'], + 'checksums': [ + 'a558503aa6b1f8c727c0073339081a77888606aa701ada1ad62dd9d8c3f945a2', + {'PathTools-3.75_fix-cwd_enoent-test.patch': + '7a456a99d9b04a36359f3623f0deef8fe7f472c742f99cdcf0215c50afbbe7b1'}, + ], }), ('MIME::Base64', '3.16', { 'source_tmpl': 'MIME-Base64-%(version)s.tar.gz', diff --git a/easybuild/easyconfigs/p/Perl/Perl-5.36.1-GCCcore-12.3.0.eb b/easybuild/easyconfigs/p/Perl/Perl-5.36.1-GCCcore-12.3.0.eb index 6233aaee505..6c8805fbbb9 100644 --- a/easybuild/easyconfigs/p/Perl/Perl-5.36.1-GCCcore-12.3.0.eb +++ b/easybuild/easyconfigs/p/Perl/Perl-5.36.1-GCCcore-12.3.0.eb @@ -54,7 +54,12 @@ exts_list = [ ('File::Spec', '3.75', { 'source_tmpl': 'PathTools-%(version)s.tar.gz', 'source_urls': ['https://cpan.metacpan.org/authors/id/X/XS/XSAWYERX'], - 'checksums': ['a558503aa6b1f8c727c0073339081a77888606aa701ada1ad62dd9d8c3f945a2'], + 'patches': ['PathTools-3.75_fix-cwd_enoent-test.patch'], + 'checksums': [ + 'a558503aa6b1f8c727c0073339081a77888606aa701ada1ad62dd9d8c3f945a2', + {'PathTools-3.75_fix-cwd_enoent-test.patch': + '7a456a99d9b04a36359f3623f0deef8fe7f472c742f99cdcf0215c50afbbe7b1'}, + ], }), ('IO::File', '1.51', { 'source_tmpl': 'IO-%(version)s.tar.gz', diff --git a/easybuild/easyconfigs/p/Perl/Perl-5.36.1-GCCcore-13.1.0.eb b/easybuild/easyconfigs/p/Perl/Perl-5.36.1-GCCcore-13.1.0.eb index 9666a1b1a4d..3ecf2a9c4ee 100644 --- a/easybuild/easyconfigs/p/Perl/Perl-5.36.1-GCCcore-13.1.0.eb +++ b/easybuild/easyconfigs/p/Perl/Perl-5.36.1-GCCcore-13.1.0.eb @@ -54,7 +54,12 @@ exts_list = [ ('File::Spec', '3.75', { 'source_tmpl': 'PathTools-%(version)s.tar.gz', 'source_urls': ['https://cpan.metacpan.org/authors/id/X/XS/XSAWYERX'], - 'checksums': ['a558503aa6b1f8c727c0073339081a77888606aa701ada1ad62dd9d8c3f945a2'], + 'patches': ['PathTools-3.75_fix-cwd_enoent-test.patch'], + 'checksums': [ + 'a558503aa6b1f8c727c0073339081a77888606aa701ada1ad62dd9d8c3f945a2', + {'PathTools-3.75_fix-cwd_enoent-test.patch': + '7a456a99d9b04a36359f3623f0deef8fe7f472c742f99cdcf0215c50afbbe7b1'}, + ], }), ('IO::File', '1.51', { 'source_tmpl': 'IO-%(version)s.tar.gz', diff --git a/easybuild/easyconfigs/p/Perl/Perl-5.38.0-GCCcore-13.2.0.eb b/easybuild/easyconfigs/p/Perl/Perl-5.38.0-GCCcore-13.2.0.eb index 1620e4f9dfa..95b8a2f7556 100644 --- a/easybuild/easyconfigs/p/Perl/Perl-5.38.0-GCCcore-13.2.0.eb +++ b/easybuild/easyconfigs/p/Perl/Perl-5.38.0-GCCcore-13.2.0.eb @@ -49,7 +49,12 @@ exts_list = [ ('File::Spec', '3.75', { 'source_tmpl': 'PathTools-%(version)s.tar.gz', 'source_urls': ['https://cpan.metacpan.org/authors/id/X/XS/XSAWYERX'], - 'checksums': ['a558503aa6b1f8c727c0073339081a77888606aa701ada1ad62dd9d8c3f945a2'], + 'patches': ['PathTools-3.75_fix-cwd_enoent-test.patch'], + 'checksums': [ + 'a558503aa6b1f8c727c0073339081a77888606aa701ada1ad62dd9d8c3f945a2', + {'PathTools-3.75_fix-cwd_enoent-test.patch': + '7a456a99d9b04a36359f3623f0deef8fe7f472c742f99cdcf0215c50afbbe7b1'}, + ], }), ('IO::File', '1.51', { 'source_tmpl': 'IO-%(version)s.tar.gz', diff --git a/easybuild/easyconfigs/p/Perl/Perl-5.38.0.eb b/easybuild/easyconfigs/p/Perl/Perl-5.38.0.eb index 059a04bfd90..c70f7d59df9 100644 --- a/easybuild/easyconfigs/p/Perl/Perl-5.38.0.eb +++ b/easybuild/easyconfigs/p/Perl/Perl-5.38.0.eb @@ -54,7 +54,12 @@ exts_list = [ ('File::Spec', '3.75', { 'source_tmpl': 'PathTools-%(version)s.tar.gz', 'source_urls': ['https://cpan.metacpan.org/authors/id/X/XS/XSAWYERX'], - 'checksums': ['a558503aa6b1f8c727c0073339081a77888606aa701ada1ad62dd9d8c3f945a2'], + 'patches': ['PathTools-3.75_fix-cwd_enoent-test.patch'], + 'checksums': [ + 'a558503aa6b1f8c727c0073339081a77888606aa701ada1ad62dd9d8c3f945a2', + {'PathTools-3.75_fix-cwd_enoent-test.patch': + '7a456a99d9b04a36359f3623f0deef8fe7f472c742f99cdcf0215c50afbbe7b1'}, + ], }), ('IO::File', '1.51', { 'source_tmpl': 'IO-%(version)s.tar.gz', diff --git a/easybuild/easyconfigs/p/Perl/Perl-5.38.2-GCCcore-13.3.0.eb b/easybuild/easyconfigs/p/Perl/Perl-5.38.2-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..f704ad30bdd --- /dev/null +++ b/easybuild/easyconfigs/p/Perl/Perl-5.38.2-GCCcore-13.3.0.eb @@ -0,0 +1,86 @@ +name = 'Perl' +version = '5.38.2' + +homepage = 'https://www.perl.org/' +description = """Larry Wall's Practical Extraction and Report Language + +Includes a small selection of extra CPAN packages for core functionality. +""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://www.cpan.org/src/%(version_major)s.0'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['a0a31534451eb7b83c7d6594a497543a54d488bc90ca00f5e34762577f40655e'] + +builddependencies = [ + ('binutils', '2.42'), +] + +dependencies = [ + ('zlib', '1.3.1'), +] + +# !! order of extensions is important !! +# extensions updated on 2023-09-03 +# includes all dependencies for Autotools +exts_list = [ + ('threads', '2.21', { + 'source_tmpl': 'threads-%(version)s.tar.gz', + 'source_urls': ['https://cpan.metacpan.org/authors/id/J/JD/JDHEDDEN'], + 'checksums': ['28394c98a2bcae6f20ffb8a3d965a1c194b764c650169e2050ee38dbaa10f110'], + }), + ('constant', '1.33', { + 'source_tmpl': 'constant-%(version)s.tar.gz', + 'source_urls': ['https://cpan.metacpan.org/authors/id/R/RJ/RJBS'], + 'checksums': ['79965d4130eb576670e27ca0ae6899ef0060c76da48b02b97682166882f1b504'], + }), + ('Getopt::Long', '2.57', { + 'source_tmpl': 'Getopt-Long-%(version)s.tar.gz', + 'source_urls': ['https://cpan.metacpan.org/authors/id/J/JV/JV'], + 'checksums': ['d3791e6bf167708364ea5ad3be578dc9173a0076167160a4341c05a1e979795e'], + }), + ('File::Path', '2.18', { + 'source_tmpl': 'File-Path-%(version)s.tar.gz', + 'source_urls': ['https://cpan.metacpan.org/authors/id/J/JK/JKEENAN/'], + 'checksums': ['980f0a17edb353df46e9cd7b357f9f5929cde0f80c45fd7a06cf7e0e8bd6addd'], + }), + ('File::Spec', '3.75', { + 'source_tmpl': 'PathTools-%(version)s.tar.gz', + 'source_urls': ['https://cpan.metacpan.org/authors/id/X/XS/XSAWYERX'], + 'checksums': ['a558503aa6b1f8c727c0073339081a77888606aa701ada1ad62dd9d8c3f945a2'], + }), + ('IO::File', '1.55', { + 'source_tmpl': 'IO-%(version)s.tar.gz', + 'source_urls': ['https://cpan.metacpan.org/authors/id/T/TO/TODDR/'], + 'checksums': ['0443afebb9a48f29611e9b17a017f430b51167a498fa4646c07f8dce03b6b95f'], + }), + ('Thread::Queue', '3.13', { + 'source_tmpl': 'Thread-Queue-%(version)s.tar.gz', + 'source_urls': ['https://cpan.metacpan.org/authors/id/J/JD/JDHEDDEN'], + 'checksums': ['6ba3dacddd2fbb66822b4aa1d11a0a5273cd04c825cb3ff31c20d7037cbfdce8'], + }), + ('Carp', '1.50', { + 'source_tmpl': 'Carp-%(version)s.tar.gz', + 'source_urls': ['https://cpan.metacpan.org/authors/id/X/XS/XSAWYERX'], + 'checksums': ['f5273b4e1a6d51b22996c48cb3a3cbc72fd456c4038f5c20b127e2d4bcbcebd9'], + }), + ('Exporter', '5.78', { + 'source_tmpl': 'Exporter-%(version)s.tar.gz', + 'source_urls': ['https://cpan.metacpan.org/authors/id/T/TO/TODDR'], + 'checksums': ['bd17e99219aa2fb6a8acb3d11deffcb588708c70fc29f346e20ea7f71d3a48f0'], + }), + ('Text::ParseWords', '3.31', { + 'source_tmpl': 'Text-ParseWords-%(version)s.tar.gz', + 'source_urls': ['https://cpan.metacpan.org/authors/id/N/NE/NEILB/'], + 'checksums': ['2ae555ba084d75b2b8feeeb8d1a00911276815ada86bccb1452236964d5a2fc7'], + }), + ('Data::Dumper', '2.183', { + 'source_tmpl': 'Data-Dumper-%(version)s.tar.gz', + 'source_urls': ['https://cpan.metacpan.org/authors/id/N/NW/NWCLARK/'], + 'checksums': ['e42736890b7dae1b37818d9c5efa1f1fdc52dec04f446a33a4819bf1d4ab5ad3'], + }), +] + +moduleclass = 'lang' diff --git a/easybuild/easyconfigs/p/PhyML/PhyML-3.3.20220408-foss-2023a.eb b/easybuild/easyconfigs/p/PhyML/PhyML-3.3.20220408-foss-2023a.eb new file mode 100644 index 00000000000..54e42cdedb9 --- /dev/null +++ b/easybuild/easyconfigs/p/PhyML/PhyML-3.3.20220408-foss-2023a.eb @@ -0,0 +1,42 @@ +# This file is an EasyBuild reciPY as per https://easybuilders.github.io/easybuild/ +# Author: Pablo Escobar Lopez +# sciCORE - University of Basel +# SIB Swiss Institute of Bioinformatics +# Updated to version 3.3.20200621 by J. Sassmannshausen (GSTT/NHS) +# Updated to v3.3.20220408 by Pavel Tománek (INUITS) + +easyblock = 'ConfigureMake' + +name = 'PhyML' +version = '3.3.20220408' + +homepage = 'https://github.com/stephaneguindon/phyml' +description = """PhyML is a software package that uses modern statistical approaches to +analyse alignments of nucleotide or amino acid sequences in a phylogenetic framework.""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +source_urls = ['https://github.com/stephaneguindon/phyml/archive/'] +sources = ['v%(version)s.tar.gz'] +patches = ['PhyML-3.3.20220408_mcmc.c-fix.patch'] +checksums = [ + {'v3.3.20220408.tar.gz': '9cef375c0186e8a8d4db72ac02148707624c97174ffac244167a138ceb9f65bd'}, + {'PhyML-3.3.20220408_mcmc.c-fix.patch': 'ac484858ce69d04af8e2d0a19eee18b735b34ac8d9f13467fa630541720bfe6f'}, +] + +builddependencies = [ + ('Autoconf', '2.71'), + ('Automake', '1.16.5'), + ('pkgconf', '1.9.5'), +] + +preconfigopts = 'sh autogen.sh && ' + +configopts = ['--enable-phyml', '--enable-phytime', '--enable-phyrex', '--enable-phyml-mpi'] + +sanity_check_paths = { + 'files': ['bin/phyml', 'bin/phyml-mpi', 'bin/phyrex', 'bin/phytime'], + 'dirs': [] +} + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/p/PhyML/PhyML-3.3.20220408_mcmc.c-fix.patch b/easybuild/easyconfigs/p/PhyML/PhyML-3.3.20220408_mcmc.c-fix.patch new file mode 100644 index 00000000000..010668cc382 --- /dev/null +++ b/easybuild/easyconfigs/p/PhyML/PhyML-3.3.20220408_mcmc.c-fix.patch @@ -0,0 +1,28 @@ +Author: Pavel Tománek (INUITS) +https://github.com/stephaneguindon/phyml/issues/166 +--- src/mcmc.c.orig 2022-05-18 13:29:35.000000000 -0800 ++++ src/mcmc.c 2022-05-18 13:42:37.000000000 -0800 +@@ -1469,7 +1469,7 @@ + /* if(tree->aux_tree != NULL) */ + { + PhyML_Printf("\n."); +- PhyML_Printf("\n. %c [%4d] \n. t: %1f->%1f t1:%f t2: %f \n. r1: %10f->%10f r2: %10f->%10f \n. R: %12f alnL:%10f->%10f[%d] \n. tlnL: %10f->%10f[%d] \n. glnL: %10f->%10f[%d] \n. rlnL: %10f->%10f[%d] \n. tune: %10f hr: %f [%f,%f] [%f,%f,%f] ratio: %10f K: %10f failed: %d", ++ PhyML_Printf("\n. %c [%4d] \n. t: %1f->%1f t1:%f t2: %f \n. r1: %10f->%10f r2: %10f->%10f \n. R: %12f alnL:%10f->%10f[%d] \n. tlnL: %10f->%10f[%d] ", + (tree->aux_tree != NULL) ? '*' : 'X', + tree->mcmc->run, + t0_cur,t0_new, +@@ -1478,8 +1478,12 @@ + r2_cur,r2_new, + tree->rates->norm_fact, + cur_lnL_seq,new_lnL_seq,tree->eval_alnL, +- cur_lnL_time,new_lnL_time,tree->eval_glnL, +- cur_lnL_loc,new_lnL_loc,tree->eval_glnL, ++ cur_lnL_time,new_lnL_time,tree->eval_glnL); ++#ifdef PHYREX ++ PhyML_Printf("\n. glnL: %10f->%10f[%d] ", ++ cur_lnL_loc,new_lnL_loc,tree->eval_glnL); ++#endif ++ PhyML_Printf("\n. rlnL: %10f->%10f[%d] \n. tune: %10f hr: %f [%f,%f] [%f,%f,%f] ratio: %10f K: %10f failed: %d", + cur_lnL_rate,new_lnL_rate,tree->eval_rlnL, + tune, + hr, \ No newline at end of file diff --git a/easybuild/easyconfigs/p/PnetCDF/PnetCDF-1.13.0-iimpi-2023a.eb b/easybuild/easyconfigs/p/PnetCDF/PnetCDF-1.13.0-iimpi-2023a.eb new file mode 100644 index 00000000000..a2c3ec8e672 --- /dev/null +++ b/easybuild/easyconfigs/p/PnetCDF/PnetCDF-1.13.0-iimpi-2023a.eb @@ -0,0 +1,35 @@ +easyblock = 'ConfigureMake' + +name = 'PnetCDF' +version = '1.13.0' + +homepage = 'https://parallel-netcdf.github.io/' +description = "Parallel netCDF: A Parallel I/O Library for NetCDF File Access" + +toolchain = {'name': 'iimpi', 'version': '2023a'} + +source_urls = ['https://parallel-netcdf.github.io/Release'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['aba0f1c77a51990ba359d0f6388569ff77e530ee574e40592a1e206ed9b2c491'] + +builddependencies = [ + ('Autotools', '20220317'), + ('Perl', '5.36.1'), +] + +preconfigopts = "autoreconf -f -i && " + +configopts = ['', '--enable-shared'] + +sanity_check_paths = { + 'files': ['bin/%s' % x for x in ['ncmpidiff', 'ncmpidump', 'ncmpigen', 'ncoffsets', + 'ncvalidator', 'pnetcdf-config', 'pnetcdf_version']] + + ['lib/lib%(namelower)s.a', 'lib/lib%%(namelower)s.%s' % SHLIB_EXT], + 'dirs': ['include'], +} + +modextrapaths = { + 'PNETCDF': '', +} + +moduleclass = 'data' diff --git a/easybuild/easyconfigs/p/PortAudio/PortAudio-19.7.0-foss-2022a.eb b/easybuild/easyconfigs/p/PortAudio/PortAudio-19.7.0-foss-2022a.eb new file mode 100644 index 00000000000..ad0b2f74a9d --- /dev/null +++ b/easybuild/easyconfigs/p/PortAudio/PortAudio-19.7.0-foss-2022a.eb @@ -0,0 +1,52 @@ +easyblock = 'ConfigureMake' + +name = 'PortAudio' +version = "19.7.0" + +homepage = 'https://www.portaudio.com/' +description = """PortAudio is a free, cross-platform, open-source, audio I/O library. + It lets you write simple audio programs in 'C' or C++ that will compile and run on many platforms including Windows, + Macintosh OS X, and Unix (OSS/ALSA). It is intended to promote the exchange of audio software between + developers on different platforms. Many applications use PortAudio for Audio I/O.""" + +toolchain = {'name': 'foss', 'version': '2022a'} + +source_urls = ["https://github.com/PortAudio/portaudio/archive"] +sources = ["v%(version)s.tar.gz"] +checksums = ['5af29ba58bbdbb7bbcefaaecc77ec8fc413f0db6f4c4e286c40c3e1b83174fa0'] + +dependencies = [ + ('Python', '3.10.4'), + ('alsa-lib', '1.2.8'), + ('jax', '0.3.25'), +] + +exts_defaultclass = 'PythonPackage' +exts_default_options = { + 'source_urls': [PYPI_SOURCE], + 'download_dep_fail': True, + 'use_pip': True, + 'sanity_pip_check': True, + 'installopts': '', +} + +exts_list = [ + ('PyAudio', '0.2.14', { + 'checksums': ['78dfff3879b4994d1f4fc6485646a57755c6ee3c19647a491f790a0895bd2f87'], + }), +] + +parallel = 1 + +sanity_check_paths = { + 'files': ["include/portaudio.h", "lib/libportaudio.a", "lib/libportaudio.so"], + 'dirs': ['include', 'lib', 'lib/python%(pyshortver)s/site-packages'], +} + +sanity_check_commands = [ + 'python -c "import pyaudio; pyaudio.get_portaudio_version_text(); pyaudio.__version__"' +] + +modextrapaths = {'PYTHONPATH': 'lib/python%(pyshortver)s/site-packages'} + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/p/PortMidi/PortMidi-2.0.4-GCCcore-12.3.0.eb b/easybuild/easyconfigs/p/PortMidi/PortMidi-2.0.4-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..ef55cdf9844 --- /dev/null +++ b/easybuild/easyconfigs/p/PortMidi/PortMidi-2.0.4-GCCcore-12.3.0.eb @@ -0,0 +1,35 @@ +easyblock = 'CMakeMake' + +name = 'PortMidi' +version = '2.0.4' + +homepage = 'https://github.com/PortMidi/portmidi' +description = """ +PortMidi is a library for software developers. It supports real-time input and +output of MIDI data using a system-independent interface. PortMidi runs on +Windows (using MME), Macintosh (using CoreMIDI), and Linux (using ALSA). +""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/PortMidi/portmidi/archive/refs/tags/'] +sources = ['v%(version)s.tar.gz'] +checksums = ['64893e823ae146cabd3ad7f9a9a9c5332746abe7847c557b99b2577afa8a607c'] + +builddependencies = [ + ('pkgconf', '1.9.5'), + ('binutils', '2.40'), + ('CMake', '3.26.3'), +] + +dependencies = [ + ('alsa-lib', '1.2.9'), +] + +sanity_check_paths = { + 'files': ['lib/libportmidi.%s' % SHLIB_EXT, 'include/portmidi.h', 'include/porttime.h'], + 'dirs': [], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/p/ProteinMPNN/ProteinMPNN-1.0.1-20230627-foss-2022a-CUDA-11.7.0.eb b/easybuild/easyconfigs/p/ProteinMPNN/ProteinMPNN-1.0.1-20230627-foss-2022a-CUDA-11.7.0.eb new file mode 100644 index 00000000000..258c21fef24 --- /dev/null +++ b/easybuild/easyconfigs/p/ProteinMPNN/ProteinMPNN-1.0.1-20230627-foss-2022a-CUDA-11.7.0.eb @@ -0,0 +1,43 @@ +# Author: Lara Peeters (UGent) + +easyblock = 'Tarball' + +name = 'ProteinMPNN' +version = '1.0.1-20230627' +local_commit = '8907e6671bfbfc92303b5f79c4b5e6ce47cdef57' +versionsuffix = '-CUDA-%(cudaver)s' + +homepage = 'https://github.com/dauparas/ProteinMPNN' +description = """A deep learning based protein sequence design method is +described that is widely applicable to current design challenges and shows +outstanding performance in both in silico and experimental tests. +""" + +toolchain = {'name': 'foss', 'version': '2022a'} + +github_account = 'dauparas' +source_urls = [GITHUB_SOURCE] +sources = [{'download_filename': '%s.tar.gz' % local_commit, 'filename': SOURCE_TAR_GZ}] +checksums = ['2e11f385074facb06e12496acde80756b34504f0f70bf78714fb07fe9244f398'] + +dependencies = [ + ('CUDA', '11.7.0', '', SYSTEM), + ('PyTorch', '1.12.0', versionsuffix), + ('torchvision', '0.13.1', versionsuffix), + ('torchaudio', '0.12.0', '-PyTorch-1.12.0' + versionsuffix), +] + +postinstallcmds = ['chmod a+x %(installdir)s/protein_mpnn_run.py'] + +sanity_check_paths = { + 'files': ['protein_mpnn_run.py'], + 'dirs': ['examples'], +} + +fix_python_shebang_for = ['protein_mpnn_run.py'] + +sanity_check_commands = ['protein_mpnn_run.py --help'] + +modextrapaths = {'PATH': ''} + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/p/PyAEDT/PyAEDT-0.8.7-GCCcore-12.3.0.eb b/easybuild/easyconfigs/p/PyAEDT/PyAEDT-0.8.7-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..aee9ba9ea19 --- /dev/null +++ b/easybuild/easyconfigs/p/PyAEDT/PyAEDT-0.8.7-GCCcore-12.3.0.eb @@ -0,0 +1,73 @@ +easyblock = 'PythonBundle' + +name = 'PyAEDT' +version = '0.8.7' + +homepage = 'https://aedt.docs.pyansys.com/version/stable' +description = """PyAEDT is a Python library that interacts directly with the +Ansys Electronics Desktop (AEDT) API, enabling straightforward and efficient +automation in your workflow.""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +builddependencies = [ + ('binutils', '2.40'), + ('hatchling', '1.18.0'), +] + +dependencies = [ + ('dotNET-Core', '8.0', '', SYSTEM), + ('Python', '3.11.3'), + ('Python-bundle-PyPI', '2023.06'), + ('Pillow', '10.0.0'), +] + +use_pip = True +sanity_pip_check = True + +exts_list = [ + ('dotnetcore2', '3.1.23', { + 'sources': ['dotnetcore2-3.1.23-py3-none-manylinux1_x86_64.whl'], + 'checksums': ['5f076ddc39da0c685e7de20ecb91ee81185928918ec86fbeb3bffc55dd867ab5'], + }), + ('clr_loader', '0.2.6', { + 'checksums': ['019348ae6b6a83c7a406d14537c277cecf7a3a53b263ec342c81ded5845a67ee'], + }), + ('defusedxml', '0.7.1', { + 'checksums': ['1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69'], + }), + ('fonttools', '4.51.0', { + 'checksums': ['dc0673361331566d7a663d7ce0f6fdcbfbdc1f59c6e3ed1165ad7202ca183c68'], + 'modulename': 'fontTools', + }), + ('ansys-pythonnet', '3.1.0rc3', { + 'checksums': ['369a0a5a838a0991f755b6d63c319ab6997f9dc464d016187227be5cd860a9cb'], + 'modulename': 'pythonnet', + }), + ('pytomlpp', '1.0.13', { + 'checksums': ['a0bd639a8f624d1bdf5b3ea94363ca23dbfef38ab7b5b9348881a84afab434ad'], + }), + ('fpdf2', '2.7.8', { + 'checksums': ['21733fe27cc75021e5a4d7d69de95e185adf9717b1f9b1e14aa27d277d5c10fd'], + 'modulename': 'fpdf', + }), + ('plumbum', '1.8.2', { + 'checksums': ['9e6dc032f4af952665f32f3206567bc23b7858b1413611afe603a3f8ad9bfd75'], + }), + ('rpyc', '6.0.0', { + 'checksums': ['a7e12b31f40978cbd6b74e0b713da389d4b2565cef612adcb0f4b41aeb188230'], + }), + ('cffi', '1.16.0', { + 'checksums': ['bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0'], + }), + ('pyedb', '0.7.0', { + 'checksums': ['0ac5b1a7399bd8e8ed7fa6ce124bec80e31c775e670b278ae6c9f51ed7f15f25'], + }), + ('pyaedt', version, { + 'checksums': ['17143f2f3b22cf64af23ebf7ecf828f11ca2c902ba17e42e7c5dc71fbad774c9'], + }), +] + +modloadmsg = "NOTE: You also need load a AEDT module before you start using PyAEDT." + +moduleclass = "phys" diff --git a/easybuild/easyconfigs/p/PyAMG/PyAMG-5.1.0-foss-2023a.eb b/easybuild/easyconfigs/p/PyAMG/PyAMG-5.1.0-foss-2023a.eb new file mode 100644 index 00000000000..1f2a605396f --- /dev/null +++ b/easybuild/easyconfigs/p/PyAMG/PyAMG-5.1.0-foss-2023a.eb @@ -0,0 +1,25 @@ +easyblock = "PythonPackage" + +name = 'PyAMG' +version = '5.1.0' + +homepage = 'https://pyamg.github.io' +description = """PyAMG is a library of Algebraic Multigrid (AMG) solvers with a convenient Python interface.""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +sources = [SOURCELOWER_TAR_GZ] +checksums = ['f90f9de795b4e29589edd2eb446d11ddb466678ebe823ed329fcf35759ea390c'] + +dependencies = [ + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), +] + +options = {'modulename': 'pyamg'} + +use_pip = True +download_dep_fail = True +sanity_pip_check = True + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/p/PyEXR/OpenEXR-1.3.9_fix-openexr-inc-lib-searching.patch b/easybuild/easyconfigs/p/PyEXR/OpenEXR-1.3.9_fix-openexr-inc-lib-searching.patch new file mode 100644 index 00000000000..47702d55e38 --- /dev/null +++ b/easybuild/easyconfigs/p/PyEXR/OpenEXR-1.3.9_fix-openexr-inc-lib-searching.patch @@ -0,0 +1,51 @@ +Author: Jasper Grimm +Ensure that OpenEXR (python) can find the OpenEXR include and library files +diff -Nru OpenEXR-1.3.9.orig/setup.py OpenEXR-1.3.9/setup.py +--- OpenEXR-1.3.9.orig/setup.py 2024-02-27 14:20:58.796514598 +0000 ++++ OpenEXR-1.3.9/setup.py 2024-02-27 14:29:13.274992396 +0000 +@@ -2,7 +2,7 @@ + from distutils.extension import Extension + from distutils.command.build_py import build_py as _build_py + +-from os import system ++from os import path, environ + import platform + + from distutils.core import setup, Extension +@@ -21,12 +21,7 @@ + """ + + +-print("Looking for libOpenEXR...") +-if platform.system() == "Linux" and system("ldconfig -p | grep libOpenEXR"): +- # There is no libOpenEXR, probably an old version of OpenEXR +- libraries=['Iex', 'Half', 'Imath', 'IlmImf', 'z'] +-else: +- libraries=['Iex', 'OpenEXR', 'z'] ++libraries=['Iex', 'OpenEXR', 'z'] + + extra_compile_args = ['-g', '-DVERSION="%s"' % VERSION] + if platform.system() == 'Darwin': +@@ -41,18 +36,12 @@ + description = "Python bindings for ILM's OpenEXR image file format", + long_description = DESC, + version=VERSION, +- ext_modules=[ ++ ext_modules=[ + Extension('OpenEXR', + ['OpenEXR.cpp'], +- include_dirs=['/usr/include/OpenEXR', +- '/usr/local/include/OpenEXR', +- '/opt/local/include/OpenEXR', +- '/usr/include/Imath', +- '/usr/local/include/Imath', +- '/opt/local/include/Imath'], +- library_dirs=['/usr/lib', +- '/usr/local/lib', +- '/opt/local/lib'], ++ include_dirs=[path.join(environ['EBROOTOPENEXR'], 'include', 'OpenEXR'), ++ path.join(environ['EBROOTIMATH'], 'include', 'Imath')], ++ library_dirs=[path.join(environ['EBROOTOPENEXR'], 'lib')], + libraries=libraries, + extra_compile_args=extra_compile_args) + ], diff --git a/easybuild/easyconfigs/p/PyEXR/PyEXR-0.3.10-gfbf-2023a.eb b/easybuild/easyconfigs/p/PyEXR/PyEXR-0.3.10-gfbf-2023a.eb new file mode 100644 index 00000000000..7a70497b4df --- /dev/null +++ b/easybuild/easyconfigs/p/PyEXR/PyEXR-0.3.10-gfbf-2023a.eb @@ -0,0 +1,40 @@ +# Author: Jasper Grimm (UoY) + +easyblock = 'PythonBundle' + +name = 'PyEXR' +version = '0.3.10' + +homepage = 'https://github.com/tvogels/pyexr' +description = "A simple EXR IO-library for Python that simplifies the use of OpenEXR." + +toolchain = {'name': 'gfbf', 'version': '2023a'} + +dependencies = [ + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), + ('OpenEXR', '3.1.7'), +] + +use_pip = True + +# note: for future versions, look at building the python bindings in the `OpenEXR` module directly instead: +# see https://github.com/AcademySoftwareFoundation/openexr/pull/1629 +exts_list = [ + ('OpenEXR', '1.3.9', { + 'patches': ['OpenEXR-1.3.9_fix-openexr-inc-lib-searching.patch'], + 'checksums': [ + {'OpenEXR-1.3.9.tar.gz': 'cffcd13906291ef1a81b369c1c0e907648ecd24363668873691f44866704ab21'}, + {'OpenEXR-1.3.9_fix-openexr-inc-lib-searching.patch': + '12a6abe5d0ef6911471f87078cd8d18ea9a47b584e75ea559f3f787c5fc9f268'}, + ], + 'modulename': False, + }), + (name, version, { + 'checksums': ['fe41fb791f58744053e7d665fbacaa904b22d957a6efb4f5d77f82aebb1ece21'], + }), +] + +sanity_pip_check = True + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/p/PyGEOS/PyGEOS-0.14-gfbf-2023a.eb b/easybuild/easyconfigs/p/PyGEOS/PyGEOS-0.14-gfbf-2023a.eb new file mode 100644 index 00000000000..aff7709e6de --- /dev/null +++ b/easybuild/easyconfigs/p/PyGEOS/PyGEOS-0.14-gfbf-2023a.eb @@ -0,0 +1,26 @@ +easyblock = 'PythonPackage' + +name = 'PyGEOS' +version = '0.14' + +homepage = "https://pygeos.readthedocs.io" +description = """PyGEOS is a C/Python library with vectorized geometry functions. The geometry operations are done in + the open-source geometry library GEOS. PyGEOS wraps these operations in NumPy ufuncs providing a performance + improvement when operating on arrays of geometries.""" + +toolchain = {'name': 'gfbf', 'version': '2023a'} + +sources = [SOURCELOWER_TAR_GZ] +checksums = ['30fbc17f64844200b85133b885fcfb65541b8779531f6ef4f8fe467d3fba7623'] + +dependencies = [ + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), + ('GEOS', '3.12.0'), +] + +use_pip = True +sanity_pip_check = True +download_dep_fail = True + +moduleclass = 'geo' diff --git a/easybuild/easyconfigs/p/PyHMMER/PyHMMER-0.10.6-gompi-2023a.eb b/easybuild/easyconfigs/p/PyHMMER/PyHMMER-0.10.6-gompi-2023a.eb new file mode 100644 index 00000000000..a9a329832ba --- /dev/null +++ b/easybuild/easyconfigs/p/PyHMMER/PyHMMER-0.10.6-gompi-2023a.eb @@ -0,0 +1,43 @@ +# Thomas Hoffmann, EMBL Heidelberg, structures-it@embl.de, 2024/02 +easyblock = 'PythonBundle' + +name = 'PyHMMER' +version = '0.10.6' + +homepage = 'https://github.com/althonos/pyhmmer' +description = """ +HMMER is a biological sequence analysis tool that uses profile hidden Markov +models to search for sequence homologs. HMMER3 is developed and maintained by +the Eddy/Rivas Laboratory at Harvard University. + +pyhmmer is a Python package, implemented using the Cython language, that +provides bindings to HMMER3. It directly interacts with the HMMER internals, +which has the following advantages over CLI wrappers (like hmmer-py)""" + +toolchain = {'name': 'gompi', 'version': '2023a'} + +builddependencies = [ + ('Cython', '3.0.7'), +] +dependencies = [ + ('Python', '3.11.3'), + ('HMMER', '3.4'), + ('psutil', '5.9.8') +] + +use_pip = True + +exts_list = [ + ('pyhmmer', version, { + 'checksums': ['47e017ccc523046400312afc937d4d68306f6ca0ed82e313deb3697d4fd8ccff'], + }), +] + +sanity_check_paths = { + 'files': [], + 'dirs': ['lib/python%(pyshortver)s/site-packages/%(namelower)s'], +} + +sanity_pip_check = True + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/p/PyMC/PyMC-2.3.8-foss-2021b.eb b/easybuild/easyconfigs/p/PyMC/PyMC-2.3.8-foss-2021b.eb new file mode 100644 index 00000000000..0476f993de5 --- /dev/null +++ b/easybuild/easyconfigs/p/PyMC/PyMC-2.3.8-foss-2021b.eb @@ -0,0 +1,27 @@ +easyblock = 'PythonBundle' + +name = 'PyMC' +version = '2.3.8' + +homepage = 'https://www.pymc.io' +description = """PyMC is a probabilistic programming library for Python that allows users to build Bayesian models + with a simple Python API and fit them using Markov chain Monte Carlo (MCMC) methods.""" + +toolchain = {'name': 'foss', 'version': '2021b'} +toolchainopts = {'extra_fflags': '-fallow-argument-mismatch'} + +dependencies = [ + ('Python', '3.9.6'), + ('SciPy-bundle', '2021.10'), +] + +use_pip = True +sanity_pip_check = True + +exts_list = [ + ('pymc', version, { + 'checksums': ['1dfef8e06d9773f2b0fd44b38d5187d6f4b3393726bb2a5723ca2d3bce1934ab'], + }), +] + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/p/PyMC/PyMC-2.3.8-intel-2021b.eb b/easybuild/easyconfigs/p/PyMC/PyMC-2.3.8-intel-2021b.eb new file mode 100644 index 00000000000..d14c9d22325 --- /dev/null +++ b/easybuild/easyconfigs/p/PyMC/PyMC-2.3.8-intel-2021b.eb @@ -0,0 +1,27 @@ +easyblock = 'PythonBundle' + +name = 'PyMC' +version = '2.3.8' + +homepage = 'https://www.pymc.io' +description = """PyMC is a probabilistic programming library for Python that allows users to build Bayesian models + with a simple Python API and fit them using Markov chain Monte Carlo (MCMC) methods.""" + +toolchain = {'name': 'intel', 'version': '2021b'} +toolchainopts = {'pic': True} + +dependencies = [ + ('Python', '3.9.6'), + ('SciPy-bundle', '2021.10'), +] + +use_pip = True +sanity_pip_check = True + +exts_list = [ + ('pymc', version, { + 'checksums': ['1dfef8e06d9773f2b0fd44b38d5187d6f4b3393726bb2a5723ca2d3bce1934ab'], + }), +] + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/p/PyQtGraph/PyQtGraph-0.13.7-foss-2023a.eb b/easybuild/easyconfigs/p/PyQtGraph/PyQtGraph-0.13.7-foss-2023a.eb new file mode 100644 index 00000000000..ff061fd9577 --- /dev/null +++ b/easybuild/easyconfigs/p/PyQtGraph/PyQtGraph-0.13.7-foss-2023a.eb @@ -0,0 +1,31 @@ +# updated: Denis Kristak +easyblock = 'PythonPackage' +# TH77EMBL adapted from PyQtGraph-0.11.0-foss-2019b-Python-3.7.4.eb +# update: Petr Král (INUITS) +name = 'PyQtGraph' +version = '0.13.7' + +homepage = 'http://www.pyqtgraph.org/' +description = """PyQtGraph is a pure-python graphics and GUI library built on PyQt5/PySide2 and numpy.""" + +toolchain = {'name': 'foss', 'version': '2023a'} +toolchainopts = {'pic': True} + +github_account = 'pyqtgraph' +source_urls = [GITHUB_SOURCE] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['28c5fb6eaf60ff3ea7b7b6e0f8935cf85f34e7b5c554f154eeb10649c6b21573'] + +dependencies = [ + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), + ('PyQt5', '5.15.10'), + ('PyOpenGL', '3.1.7'), +] + +use_pip = True +download_dep_fail = True + +sanity_pip_check = True + +moduleclass = 'vis' diff --git a/easybuild/easyconfigs/p/PyTables/PyTables-3.8.0-foss-2023a.eb b/easybuild/easyconfigs/p/PyTables/PyTables-3.8.0-foss-2023a.eb new file mode 100644 index 00000000000..71c5a28ec59 --- /dev/null +++ b/easybuild/easyconfigs/p/PyTables/PyTables-3.8.0-foss-2023a.eb @@ -0,0 +1,74 @@ +# http://www.pytables.org/usersguide/installation.html +# updated: Denis Kristak (INUITS) + +easyblock = 'PythonBundle' + +name = 'PyTables' +version = '3.8.0' + +homepage = 'https://www.pytables.org' +description = """PyTables is a package for managing hierarchical datasets and designed to efficiently and easily cope + with extremely large amounts of data. PyTables is built on top of the HDF5 library, using the Python language and the + NumPy package. It features an object-oriented interface that, combined with C extensions for the performance-critical + parts of the code (generated using Cython), makes it a fast, yet extremely easy to use tool for interactively browsing, + processing and searching very large amounts of data. One important feature of PyTables is that it optimizes memory and + disk resources so that data takes much less space (specially if on-flight compression is used) than other solutions + such as relational or object oriented databases.""" + +toolchain = {'name': 'foss', 'version': '2023a'} +toolchainopts = {'usempi': True} + +builddependencies = [ + ('pkgconf', '1.9.5'), + ('CMake', '3.26.3'), + ('Ninja', '1.11.1'), + ('scikit-build', '0.17.6'), +] + +dependencies = [ + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), # provides numexpr + ('HDF5', '1.14.0'), + ('LZO', '2.10'), + ('Blosc', '1.21.5'), + ('Blosc2', '2.8.0'), + ('py-cpuinfo', '9.0.0'), +] + +use_pip = True + +exts_list = [ + ('blosc2', '2.0.0', { + 'patches': ['blosc2-2.0.0_use-Blosc2-dep.patch'], + 'checksums': [ + {'blosc2-2.0.0.tar.gz': 'f19b0b3674f6c825b490f00d8264b0c540c2cdc11ec7e81178d38b83c57790a1'}, + {'blosc2-2.0.0_use-Blosc2-dep.patch': '6a9443f378472ada3c8fe8a8a346fe16f22b01bab7d9e60c23b64b546178054b'}, + ], + }), + ('tables', version, { + 'patches': [ + 'PyTables-%(version)s_fix-libs.patch', + 'PyTables-3.8.0_fix-find-blosc2-library-path.patch', + ], + 'checksums': [ + {'tables-3.8.0.tar.gz': '34f3fa2366ce20b18f1df573a77c1d27306ce1f2a41d9f9eff621b5192ea8788'}, + {'PyTables-3.8.0_fix-libs.patch': '7a1e6fa1f9169e52293e2b433a4302fa13c5d31e7709cd4fe0e087199b9e3f8a'}, + {'PyTables-3.8.0_fix-find-blosc2-library-path.patch': + 'dcf6c3a16a138454296161e99cf6470620755d4c26303186a744f09a11e6013b'}, + ], + }), +] + +local_bins = ['pt2to3', 'ptdump', 'ptrepack', 'pttree'] +sanity_check_paths = { + 'files': ['bin/%s' % x for x in local_bins], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +options = {'modulename': 'tables'} + +sanity_check_commands = ["%s --help" % x for x in local_bins] + +sanity_pip_check = True + +moduleclass = 'data' diff --git a/easybuild/easyconfigs/p/PyTorch-Geometric/PyTorch-Geometric-2.5.0-foss-2023a-PyTorch-2.1.2-CUDA-12.1.1.eb b/easybuild/easyconfigs/p/PyTorch-Geometric/PyTorch-Geometric-2.5.0-foss-2023a-PyTorch-2.1.2-CUDA-12.1.1.eb new file mode 100644 index 00000000000..0a2a7b1fd60 --- /dev/null +++ b/easybuild/easyconfigs/p/PyTorch-Geometric/PyTorch-Geometric-2.5.0-foss-2023a-PyTorch-2.1.2-CUDA-12.1.1.eb @@ -0,0 +1,101 @@ +easyblock = 'PythonBundle' + +name = 'PyTorch-Geometric' +version = '2.5.0' +local_pytorchver = '2.1.2' +versionsuffix = '-PyTorch-%s-CUDA-%%(cudaver)s' % local_pytorchver + +homepage = 'https://github.com/rusty1s/pytorch_geometric' +description = "PyTorch Geometric (PyG) is a geometric deep learning extension library for PyTorch." + +toolchain = {'name': 'foss', 'version': '2023a'} + +builddependencies = [ + ('PDM', '2.12.4'), + ('Parallel-Hashmap', '1.3.12'), # header only +] + +dependencies = [ + ('Python', '3.11.3'), + ('CUDA', '12.1.1', '', SYSTEM), + ('PyTorch', local_pytorchver, '-CUDA-%(cudaver)s'), + ('scikit-learn', '1.3.1'), + ('scikit-image', '0.22.0'), + ('numba', '0.58.1'), + ('h5py', '3.9.0'), + ('tqdm', '4.66.1'), + ('RDFlib', '7.0.0'), + ('ASE', '3.22.1'), + ('YACS', '0.1.8'), + ('aiohttp', '3.8.5'), +] + +use_pip = True + +exts_list = [ + ('googledrivedownloader', '0.4', { + 'modulename': 'google_drive_downloader', + 'checksums': ['4b34c1337b2ff3bf2bd7581818efbdcaea7d50ffd484ccf80809688f5ca0e204'], + }), + ('plyfile', '1.0.3', { + 'patches': ['plyfile-1.0.3_use_pdm_backend.patch'], + 'checksums': [ + {'plyfile-1.0.3.tar.gz': '0ecbe8e7ce55a7bbc6c9dea24242fffa0ab7d9bed33fbd5ad567ca013bcc5222'}, + {'plyfile-1.0.3_use_pdm_backend.patch': '815611863f16e785ef03a7992a0b99e433150212ff03559c7f6fce4e86d9e0a7'}, + ], + }), + ('torch_scatter', '2.1.2', { + 'source_urls': ['https://github.com/rusty1s/pytorch_scatter/archive/refs/tags/'], + 'sources': [{'download_filename': '%(version)s.tar.gz', 'filename': '%(name)s-%(version)s.tar.gz'}], + 'checksums': ['6f375dbc9cfe03f330aa29ea553e9c7432e9b040d039b041f08bf05df1a8bf37'], + 'runtest': 'pytest', + 'testinstall': True, + }), + ('torch_sparse', '0.6.18', { + 'source_urls': ['https://github.com/rusty1s/pytorch_sparse/archive/refs/tags/'], + 'sources': [{'download_filename': '%(version)s.tar.gz', 'filename': '%(name)s-%(version)s.tar.gz'}], + 'checksums': ['a9e194cddc17481001ac4592a058450493ce13780e8ce3eb54d4f79706e69c91'], + 'runtest': 'pytest -k "not test_spmm[dtype10-device10-sum] and not test_spmm[dtype16-device16-add]"', # flaky + 'testinstall': True, + }), + ('torch_cluster', '1.6.3', { + 'source_urls': ['https://github.com/rusty1s/pytorch_cluster/archive/refs/tags/'], + 'sources': [{'download_filename': '%(version)s.tar.gz', 'filename': '%(name)s-%(version)s.tar.gz'}], + 'checksums': ['0e2b08095e03cf87ce9b23b7a7352236a25d3ed92d92351dc020fd927ea8dbfe'], + 'runtest': 'pytest', + 'testinstall': True, + }), + ('torch_spline_conv', '1.2.2', { + 'source_urls': ['https://github.com/rusty1s/pytorch_spline_conv/archive/refs/tags/'], + 'sources': [{'download_filename': '%(version)s.tar.gz', 'filename': '%(name)s-%(version)s.tar.gz'}], + 'checksums': ['258947394514ba487b2617268ae7102e9a06fd15d79f5d8239a96211a85adc3d'], + 'runtest': 'pytest', + 'testinstall': True, + }), + ('python-louvain', '0.16', { + 'modulename': 'community.community_louvain', + 'checksums': ['b7ba2df5002fd28d3ee789a49532baad11fe648e4f2117cf0798e7520a1da56b'], + }), + ('torch_geometric', version, { + 'source_urls': ['https://github.com/pyg-team/pytorch_geometric/archive/refs/tags/'], + 'sources': [{'download_filename': '%(version)s.tar.gz', 'filename': '%(name)s-%(version)s.tar.gz'}], + 'checksums': ['f9abf00dc7fd1039ef1d9734a0fbd8c52196e39ca9fc4816afd98a8f311265be'], + 'runtest': ( + 'pytest' + ' --ignore=test/test_edge_index.py' # many tests require PyTorch with MKL + ' --ignore=test/nn/models/test_graph_unet.py' # requires PyTorch with MKL + ' --ignore=test/nn/pool/test_asap.py' # requires PyTorch with MKL + ' --ignore=test/transforms/test_add_metapaths.py' # requires PyTorch with MKL + ' --ignore=test/transforms/test_two_hop.py' # requires PyTorch with MKL + ' --ignore=test/test_inspector.py' # test failing due to typing change + ' --ignore=test/nn/conv/test_hetero_conv.py' # unknown jit compilation issue + ' --ignore=test/nn/conv/test_sage_conv.py' # unknown jit compilation issue + ' -k "not test_multithreading_neighbor_loader" ' # picky about number of cores in the environment + ), + 'testinstall': True, + }), +] + +sanity_pip_check = True + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/p/PyTorch-Geometric/plyfile-1.0.3_use_pdm_backend.patch b/easybuild/easyconfigs/p/PyTorch-Geometric/plyfile-1.0.3_use_pdm_backend.patch new file mode 100644 index 00000000000..9028258f195 --- /dev/null +++ b/easybuild/easyconfigs/p/PyTorch-Geometric/plyfile-1.0.3_use_pdm_backend.patch @@ -0,0 +1,15 @@ +pdm-pep517 changed name to pdm-backend with minor changes. +author: micketeer@gmail.com + +--- pyproject.toml.orig 2024-03-01 19:33:52.181523013 +0100 ++++ pyproject.toml 2024-03-01 19:45:38.960430755 +0100 +@@ -60,6 +60,6 @@ + + [build-system] + requires = [ +- "pdm-pep517>=1.0.0", ++ "pdm-backend", + ] +-build-backend = "pdm.pep517.api" ++build-backend = "pdm.backend" + diff --git a/easybuild/easyconfigs/p/PyTorch-bundle/PyTorch-bundle-2.1.2-foss-2023a-CUDA-12.1.1.eb b/easybuild/easyconfigs/p/PyTorch-bundle/PyTorch-bundle-2.1.2-foss-2023a-CUDA-12.1.1.eb new file mode 100644 index 00000000000..d7e1c6cc2e0 --- /dev/null +++ b/easybuild/easyconfigs/p/PyTorch-bundle/PyTorch-bundle-2.1.2-foss-2023a-CUDA-12.1.1.eb @@ -0,0 +1,186 @@ +easyblock = 'PythonBundle' + +name = 'PyTorch-bundle' +version = '2.1.2' +versionsuffix = '-CUDA-%(cudaver)s' + +homepage = 'https://pytorch.org/' +description = """PyTorch with compatible versions of official Torch extensions.""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +builddependencies = [ + ('CMake', '3.26.3'), + ('RE2', '2023-08-01'), # for torchtext + ('parameterized', '0.9.0'), # for torchtext and torchaudio tests + ('scikit-learn', '1.3.1'), # for torchaudio and pytorch-ignite tests + ('scikit-image', '0.22.0'), # for pytorch-ignite tests + ('dill', '0.3.7'), # for pytorch-ignite tests + ('matplotlib', '3.7.2'), # for pytorch-ignite tests + ('librosa', '0.10.1'), # for torchaudio tests + ('NLTK', '3.8.1'), # for torchtext tests + ('Scalene', '1.5.26'), # for pynvml in ignite tests +] + +dependencies = [ + ('CUDA', '12.1.1', '', SYSTEM), + ('Python', '3.11.3'), + ('PyTorch', version, versionsuffix), + ('Pillow-SIMD', '9.5.0'), # for torchvision + ('libjpeg-turbo', '2.1.5.1'), # for torchvision + ('SentencePiece', '0.2.0'), # for torchtext + ('tqdm', '4.66.1'), # for torchtext + ('double-conversion', '3.3.0'), # for torchtext + ('utf8proc', '2.8.0'), # for torchtext + ('tensorboard', '2.15.1'), # for torch-tb-profiler + ('FFmpeg', '6.0'), # for torchvision and torchaudio + ('SoX', '14.4.2'), # for torchaudio +] + +use_pip = True + +# Check with https://pytorch.org/audio/stable/installation.html#compatibility-matrix +exts_list = [ + ('portalocker', '2.8.2', { + 'checksums': ['2b035aa7828e46c58e9b31390ee1f169b98e1066ab10b9a6a861fe7e25ee4f33'], + }), + ('torchdata', '0.7.1', { + 'preinstallopts': "USE_SYSTEM_LIBS=1 ", + 'source_urls': ['https://github.com/pytorch/data/archive'], + 'sources': [{'download_filename': 'v%(version)s.tar.gz', 'filename': '%(name)s-%(version)s.tar.gz'}], + 'checksums': ['ef9bbdcee759b53c3c9d99e76eb0a66da33d36bfb7f859a25a9b5e737a51fa23'], + 'runtest': False, # circular test requirements + }), + ('torchtext', '0.16.2', { + 'patches': [ + 'torchtext-0.14.1_use-system-libs.patch', + 'torchtext-0.16.2_download-to-project-root.patch', + ], + 'source_urls': ['https://github.com/pytorch/text/archive'], + 'sources': [{'download_filename': 'v%(version)s.tar.gz', 'filename': '%(name)s-%(version)s.tar.gz'}], + 'checksums': [ + {'torchtext-0.16.2.tar.gz': '6574b012804f65220329a2ad34a95c18e4df0d4cff2f862fb7862d57b374b013'}, + {'torchtext-0.14.1_use-system-libs.patch': + '1366d10c4755b6003194f7313ca11d165a80a13d325bee9d669ea2b333d82536'}, + {'torchtext-0.16.2_download-to-project-root.patch': + '9d5599a9983729cf1fc7ab2a2f65d1887f223f528e15662ba1b4a5e359c9686d'}, + ], + 'runtest': ( + 'pytest test/torchtext_unittest' + ' -k "not test_vocab_from_raw_text_file"' # segfaults + '" and not test_get_tokenizer_moses"' # requires sacremoses + '" and not test_get_tokenizer_spacy"' # requires spaCy + '" and not test_download_charngram_vectors"' # requires internet access and required host may fail + '" and not test_download_glove_vectors"' # requires internet access and required host may fail + '" and not test_vectors_get_vecs"' # requires internet access and required host may fail + ), + 'testinstall': True, + }), + ('pytest-mock', '3.11.1', { # for torchvision tests + 'checksums': ['7f6b125602ac6d743e523ae0bfa71e1a697a2f5534064528c6ff84c2f7c2fc7f'], + }), + ('torchvision', '0.16.2', { + 'installopts': '-v', + 'patches': [ + 'torchvision-0.16.2_ffmpeg-6.0-fix.patch', + 'torchvision-0.16.2_quantized_tol.patch', + ], + 'source_urls': ['https://github.com/pytorch/vision/archive'], + 'sources': [{'download_filename': 'v%(version)s.tar.gz', 'filename': '%(name)s-%(version)s.tar.gz'}], + 'checksums': [ + {'torchvision-0.16.2.tar.gz': '8c1f2951e98d8ada6e5a468f179af4be9f56d2ebc3ab057af873da61669806d7'}, + {'torchvision-0.16.2_ffmpeg-6.0-fix.patch': + 'a49336e7bfa1c950e886852bff37a3ea2146ac7bda87241e3ffb31c5cb869cce'}, + {'torchvision-0.16.2_quantized_tol.patch': + '457cdf8ad6653838c552890bce95dbe30b7573b1643334284f5f4a58f74f6e40'}, + ], + 'runtest': ( + 'pytest' + ' -m "not xfail"' # don't run tests that are expected that they might fail + ' -k "not test_frame_reading_mem_vs_file"' # this one hangs + ), + 'testinstall': True, + }), + ('torchaudio', version, { + 'installopts': "--no-use-pep517 -v", + 'patches': [ + 'torchaudio-2.1.2_use-external-sox.patch', + 'torchaudio-2.1.2_transform_test_tol.patch', + ], + 'preinstallopts': ('rm -r third_party/{sox,ffmpeg/multi};' # runs twice when testinstall + ' USE_CUDA=1 USE_OPENMP=1 USE_FFMPEG=1 FFMPEG_ROOT="$EBROOTFFMPEG"'), + 'source_urls': ['https://github.com/pytorch/audio/archive'], + 'sources': [{'download_filename': 'v%(version)s.tar.gz', 'filename': '%(name)s-%(version)s.tar.gz'}], + 'checksums': [ + {'torchaudio-2.1.2.tar.gz': '82c2745a73172b495327ec36c6970ad5ad9d5d2ac44feeaea2617152f9393bf7'}, + {'torchaudio-2.1.2_use-external-sox.patch': + 'a93ebe0b4e7b10b0a264a09d5c49375674e24666258820738ede07e5b457010c'}, + {'torchaudio-2.1.2_transform_test_tol.patch': + '57f315c60db70ed2bd9711bcf6f7c7c24dac8c2f04e00488996eb2dc507bdfd2'}, + ], + 'runtest': ( + 'pytest test/torchaudio_unittest/' + ' -k "not TestProcessPoolExecutor"' # hang maybe related https://github.com/pytorch/audio/issues/1021 + '" and not FilterGraphWithCudaAccel"' # requires FFmpeg with CUDA support + '" and not kaldi_io_test"' # requires kaldi_io + '" and not test_dup_hw_acel"' # requires special render device permissions + '" and not test_h264_cuvid"' # requires special render device permissions + '" and not test_hevc_cuvid"' # requires special render device permissions + ), + 'testinstall': True, + }), + ('pytorch-ignite', '0.4.13', { + 'modulename': 'ignite', + 'source_urls': ['https://github.com/pytorch/ignite/archive'], + 'sources': [{'download_filename': 'v%(version)s.tar.gz', 'filename': '%(name)s-%(version)s.tar.gz'}], + 'patches': ['torch-ignite-0.4.13_dont_destroy_python_path_in_test_launcher.patch'], + 'checksums': [ + {'pytorch-ignite-0.4.13.tar.gz': 'bfe4b6f1cd96e78c021a65a0c51350cdb89d6ef5a8b9609638666ca95bae51d7'}, + {'torch-ignite-0.4.13_dont_destroy_python_path_in_test_launcher.patch': + 'fd5dfe99f4c8804d6c57e4d9140d9e556e0724b379f9eaae8aeaf1b7bd058686'}, + ], + 'runtest': ( + 'pytest' + ' -m "not distributed"' + ' --ignore=tests/ignite/contrib/handlers/test_clearml_logger.py' # requires clearml + ' --ignore=tests/ignite/contrib/handlers/test_mlflow_logger.py' # requires mlflow + ' --ignore=tests/ignite/contrib/handlers/test_neptune_logger.py' # requires neptune + ' --ignore=tests/ignite/contrib/handlers/test_polyaxon_logger.py' # requires polyaxon + ' --ignore=tests/ignite/contrib/handlers/test_tensorboard_logger.py' # requires tensorboardX + ' --ignore=tests/ignite/contrib/handlers/test_visdom_logger.py' # requires visdom + ' --ignore=tests/ignite/contrib/handlers/test_wandb_logger.py' # requires wandb + ' --ignore=tests/ignite/metrics/gan/test_fid.py' # requires pytorch_fid + ' --ignore=tests/ignite/metrics/nlp/test_rouge.py' # requires rouge + ' --ignore=tests/ignite/handlers/test_checkpoint.py' # fails by comparing tensors on different devices + ' --ignore=tests/ignite/contrib/handlers/test_tqdm_logger.py' # fragile tests on some platforms + ' -k "not test_setup_visdom_logging"' # requires visdom + '" and not test_setup_plx_logging"' # requires polyaxon + '" and not test_setup_mlflow_logging"' # requires mlflow + '" and not test_setup_clearml_logging"' # requires clearml + '" and not test_setup_neptune_logging"' # requires neptune + '" and not test__setup_ddp_vars_from_slurm_env_bad_configs"' # fails sometimes + '" and not test__native_dist_model_create_from_backend_bad_config"' # fails sometimes + '" and not test_inception_score"' # fails sometimes due to connection problem with download.pytorch.org + ), + 'testinstall': True, + }), + ('torch-tb-profiler', '0.4.3', { + 'modulename': 'torch.profiler', + 'sources': ['torch_tb_profiler-%(version)s.tar.gz'], + 'checksums': ['8b8d29b2de960b3c4423087b23cec29beaf9ac3a8c7b046c18fd25b218f726b1'], + 'runtest': ( + 'pytest' + ' --ignore=test/test_tensorboard_end2end.py' # timeouts + ' -k "not test_dump_gpu_metrics"' # missing file + '" and not test_profiler_api_with_record_shapes_memory_stack"' # fails + '" and not test_profiler_api_without_record_shapes_memory_stack"' # fails + '" and not test_profiler_api_without_step"' # fails + '" and not test_autograd_api"' # fails + ), + 'testinstall': True, + }), +] + +sanity_pip_check = True + +moduleclass = 'ai' diff --git a/easybuild/easyconfigs/p/PyTorch-bundle/PyTorch-bundle-2.1.2-foss-2023a.eb b/easybuild/easyconfigs/p/PyTorch-bundle/PyTorch-bundle-2.1.2-foss-2023a.eb new file mode 100644 index 00000000000..4c8d8ef847a --- /dev/null +++ b/easybuild/easyconfigs/p/PyTorch-bundle/PyTorch-bundle-2.1.2-foss-2023a.eb @@ -0,0 +1,183 @@ +easyblock = 'PythonBundle' + +name = 'PyTorch-bundle' +version = '2.1.2' + +homepage = 'https://pytorch.org/' +description = """PyTorch with compatible versions of official Torch extensions.""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +builddependencies = [ + ('CMake', '3.26.3'), + ('RE2', '2023-08-01'), # for torchtext + ('parameterized', '0.9.0'), # for torchtext and torchaudio tests + ('scikit-learn', '1.3.1'), # for torchaudio and pytorch-ignite tests + ('scikit-image', '0.22.0'), # for pytorch-ignite tests + ('dill', '0.3.7'), # for pytorch-ignite tests + ('matplotlib', '3.7.2'), # for pytorch-ignite tests + ('librosa', '0.10.1'), # for torchaudio tests + ('NLTK', '3.8.1'), # for torchtext tests + ('Scalene', '1.5.26'), # for pynvml in ignite tests +] + +dependencies = [ + ('Python', '3.11.3'), + ('PyTorch', version), + ('Pillow-SIMD', '9.5.0'), # for torchvision + ('libjpeg-turbo', '2.1.5.1'), # for torchvision + ('SentencePiece', '0.2.0'), # for torchtext + ('tqdm', '4.66.1'), # for torchtext + ('double-conversion', '3.3.0'), # for torchtext + ('utf8proc', '2.8.0'), # for torchtext + ('tensorboard', '2.15.1'), # for torch-tb-profiler + ('FFmpeg', '6.0'), # for torchvision and torchaudio + ('SoX', '14.4.2'), # for torchaudio +] + +use_pip = True + +# Check with https://pytorch.org/audio/stable/installation.html#compatibility-matrix +exts_list = [ + ('portalocker', '2.8.2', { + 'checksums': ['2b035aa7828e46c58e9b31390ee1f169b98e1066ab10b9a6a861fe7e25ee4f33'], + }), + ('torchdata', '0.7.1', { + 'preinstallopts': "USE_SYSTEM_LIBS=1 ", + 'source_urls': ['https://github.com/pytorch/data/archive'], + 'sources': [{'download_filename': 'v%(version)s.tar.gz', 'filename': '%(name)s-%(version)s.tar.gz'}], + 'checksums': ['ef9bbdcee759b53c3c9d99e76eb0a66da33d36bfb7f859a25a9b5e737a51fa23'], + 'runtest': False, # circular test requirements + }), + ('torchtext', '0.16.2', { + 'patches': [ + 'torchtext-0.14.1_use-system-libs.patch', + 'torchtext-0.16.2_download-to-project-root.patch', + ], + 'source_urls': ['https://github.com/pytorch/text/archive'], + 'sources': [{'download_filename': 'v%(version)s.tar.gz', 'filename': '%(name)s-%(version)s.tar.gz'}], + 'checksums': [ + {'torchtext-0.16.2.tar.gz': '6574b012804f65220329a2ad34a95c18e4df0d4cff2f862fb7862d57b374b013'}, + {'torchtext-0.14.1_use-system-libs.patch': + '1366d10c4755b6003194f7313ca11d165a80a13d325bee9d669ea2b333d82536'}, + {'torchtext-0.16.2_download-to-project-root.patch': + '9d5599a9983729cf1fc7ab2a2f65d1887f223f528e15662ba1b4a5e359c9686d'}, + ], + 'runtest': ( + 'pytest test/torchtext_unittest' + ' -k "not test_vocab_from_raw_text_file"' # segfaults + '" and not test_get_tokenizer_moses"' # requires sacremoses + '" and not test_get_tokenizer_spacy"' # requires spaCy + '" and not test_download_charngram_vectors"' # requires internet access and required host may fail + ), + 'testinstall': True, + }), + ('pytest-mock', '3.11.1', { # for torchvision tests + 'checksums': ['7f6b125602ac6d743e523ae0bfa71e1a697a2f5534064528c6ff84c2f7c2fc7f'], + }), + ('torchvision', '0.16.2', { + 'installopts': '-v', + 'patches': [ + 'torchvision-0.16.2_ffmpeg-6.0-fix.patch', + 'torchvision-0.16.2_quantized_tol.patch', + ], + 'source_urls': ['https://github.com/pytorch/vision/archive'], + 'sources': [{'download_filename': 'v%(version)s.tar.gz', 'filename': '%(name)s-%(version)s.tar.gz'}], + 'checksums': [ + {'torchvision-0.16.2.tar.gz': '8c1f2951e98d8ada6e5a468f179af4be9f56d2ebc3ab057af873da61669806d7'}, + {'torchvision-0.16.2_ffmpeg-6.0-fix.patch': + 'a49336e7bfa1c950e886852bff37a3ea2146ac7bda87241e3ffb31c5cb869cce'}, + {'torchvision-0.16.2_quantized_tol.patch': + '457cdf8ad6653838c552890bce95dbe30b7573b1643334284f5f4a58f74f6e40'}, + ], + 'runtest': ( + 'pytest' + ' -m "not xfail"' # don't run tests that are expected that they might fail + ' -k "not test_frame_reading_mem_vs_file"' # this one hangs + '" and not test_antialias_default_warning"' # flaky test which is removed in later versions + ), + 'testinstall': True, + }), + ('torchaudio', version, { + 'installopts': "--no-use-pep517 -v", + 'patches': [ + 'torchaudio-2.1.2_use-external-sox.patch', + 'torchaudio-2.1.2_transform_test_tol.patch', + ], + 'preinstallopts': ('rm -r third_party/{sox,ffmpeg/multi};' # runs twice when testinstall + ' USE_CUDA=0 USE_OPENMP=1 USE_FFMPEG=1 FFMPEG_ROOT="$EBROOTFFMPEG"'), + 'source_urls': ['https://github.com/pytorch/audio/archive'], + 'sources': [{'download_filename': 'v%(version)s.tar.gz', 'filename': '%(name)s-%(version)s.tar.gz'}], + 'checksums': [ + {'torchaudio-2.1.2.tar.gz': '82c2745a73172b495327ec36c6970ad5ad9d5d2ac44feeaea2617152f9393bf7'}, + {'torchaudio-2.1.2_use-external-sox.patch': + 'a93ebe0b4e7b10b0a264a09d5c49375674e24666258820738ede07e5b457010c'}, + {'torchaudio-2.1.2_transform_test_tol.patch': + '57f315c60db70ed2bd9711bcf6f7c7c24dac8c2f04e00488996eb2dc507bdfd2'}, + ], + 'runtest': ( + 'pytest test/torchaudio_unittest/' + ' -k "not TestProcessPoolExecutor"' # hang maybe related https://github.com/pytorch/audio/issues/1021 + '" and not FilterGraphWithCudaAccel"' # requires FFmpeg with CUDA support + '" and not kaldi_io_test"' # requires kaldi_io + '" and not test_dup_hw_acel"' # requires special render device permissions + '" and not test_h264_cuvid"' # requires special render device permissions + '" and not test_hevc_cuvid"' # requires special render device permissions + ), + 'testinstall': True, + }), + ('pytorch-ignite', '0.4.13', { + 'modulename': 'ignite', + 'source_urls': ['https://github.com/pytorch/ignite/archive'], + 'sources': [{'download_filename': 'v%(version)s.tar.gz', 'filename': '%(name)s-%(version)s.tar.gz'}], + 'patches': ['torch-ignite-0.4.13_dont_destroy_python_path_in_test_launcher.patch'], + 'checksums': [ + {'pytorch-ignite-0.4.13.tar.gz': 'bfe4b6f1cd96e78c021a65a0c51350cdb89d6ef5a8b9609638666ca95bae51d7'}, + {'torch-ignite-0.4.13_dont_destroy_python_path_in_test_launcher.patch': + 'fd5dfe99f4c8804d6c57e4d9140d9e556e0724b379f9eaae8aeaf1b7bd058686'}, + ], + 'runtest': ( + 'pytest' + ' -m "not distributed"' + ' --ignore=tests/ignite/contrib/handlers/test_clearml_logger.py' # requires clearml + ' --ignore=tests/ignite/contrib/handlers/test_mlflow_logger.py' # requires mlflow + ' --ignore=tests/ignite/contrib/handlers/test_neptune_logger.py' # requires neptune + ' --ignore=tests/ignite/contrib/handlers/test_polyaxon_logger.py' # requires polyaxon + ' --ignore=tests/ignite/contrib/handlers/test_tensorboard_logger.py' # requires tensorboardX + ' --ignore=tests/ignite/contrib/handlers/test_visdom_logger.py' # requires visdom + ' --ignore=tests/ignite/contrib/handlers/test_wandb_logger.py' # requires wandb + ' --ignore=tests/ignite/metrics/gan/test_fid.py' # requires pytorch_fid + ' --ignore=tests/ignite/metrics/nlp/test_rouge.py' # requires rouge + ' --ignore=tests/ignite/handlers/test_checkpoint.py' # fails by comparing tensors on different devices + ' --ignore=tests/ignite/contrib/handlers/test_tqdm_logger.py' # fragile tests on some platforms + ' -k "not test_setup_visdom_logging"' # requires visdom + '" and not test_setup_plx_logging"' # requires polyaxon + '" and not test_setup_mlflow_logging"' # requires mlflow + '" and not test_setup_clearml_logging"' # requires clearml + '" and not test_setup_neptune_logging"' # requires neptune + '" and not test__setup_ddp_vars_from_slurm_env_bad_configs"' # fails sometimes + '" and not test__native_dist_model_create_from_backend_bad_config"' # fails sometimes + '" and not test_inception_score"' # fails sometimes due to connection problem with download.pytorch.org + ), + 'testinstall': True, + }), + ('torch-tb-profiler', '0.4.3', { + 'modulename': 'torch.profiler', + 'sources': ['torch_tb_profiler-%(version)s.tar.gz'], + 'checksums': ['8b8d29b2de960b3c4423087b23cec29beaf9ac3a8c7b046c18fd25b218f726b1'], + 'runtest': ( + 'pytest' + ' --ignore=test/test_tensorboard_end2end.py' # timeouts + ' -k "not test_dump_gpu_metrics"' # missing file + '" and not test_profiler_api_with_record_shapes_memory_stack"' # fails + '" and not test_profiler_api_without_record_shapes_memory_stack"' # fails + '" and not test_profiler_api_without_step"' # fails + '" and not test_autograd_api"' # fails + ), + 'testinstall': True, + }), +] + +sanity_pip_check = True + +moduleclass = 'ai' diff --git a/easybuild/easyconfigs/p/PyTorch-bundle/torch-ignite-0.4.13_dont_destroy_python_path_in_test_launcher.patch b/easybuild/easyconfigs/p/PyTorch-bundle/torch-ignite-0.4.13_dont_destroy_python_path_in_test_launcher.patch new file mode 100644 index 00000000000..e00f242d24c --- /dev/null +++ b/easybuild/easyconfigs/p/PyTorch-bundle/torch-ignite-0.4.13_dont_destroy_python_path_in_test_launcher.patch @@ -0,0 +1,15 @@ +Don't destroy PYTHONPATH when launching subprocesses + +Åke Sandgren, 2024-04-09 +diff -ru ignite-0.4.13.orig/tests/ignite/distributed/test_launcher.py ignite-0.4.13/tests/ignite/distributed/test_launcher.py +--- ignite-0.4.13.orig/tests/ignite/distributed/test_launcher.py 2023-10-18 09:31:33.000000000 +0200 ++++ ignite-0.4.13/tests/ignite/distributed/test_launcher.py 2024-04-09 14:24:37.233741947 +0200 +@@ -45,7 +45,7 @@ + import ignite + + env = dict(os.environ) if env is None else env +- env["PYTHONPATH"] = f"{os.path.dirname(ignite.__path__[0])}" ++ #env["PYTHONPATH"] = f"{os.path.dirname(ignite.__path__[0])}" + process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=env) + process.wait() + if process.returncode != 0: diff --git a/easybuild/easyconfigs/p/PyTorch-bundle/torchaudio-2.1.2_transform_test_tol.patch b/easybuild/easyconfigs/p/PyTorch-bundle/torchaudio-2.1.2_transform_test_tol.patch new file mode 100644 index 00000000000..230a7e6ccd0 --- /dev/null +++ b/easybuild/easyconfigs/p/PyTorch-bundle/torchaudio-2.1.2_transform_test_tol.patch @@ -0,0 +1,32 @@ +Increase the atol and rtol for tests that fail with some elements exceeding +the default tolerances. +author: micketeer@gmail.com +--- test/torchaudio_unittest/transforms/batch_consistency_test.py.orig 2024-04-10 14:25:17.918305411 +0000 ++++ test/torchaudio_unittest/transforms/batch_consistency_test.py 2024-04-10 14:25:17.146306690 +0000 +@@ -91,7 +91,7 @@ + waveform = waveform.reshape(3, 2, -1) + transform = T.Spectrogram() + +- self.assert_batch_consistency(transform, waveform) ++ self.assert_batch_consistency(transform, waveform, atol=1e-7, rtol=1e-4) + + def test_batch_inverse_spectrogram(self): + waveform = common_utils.get_whitenoise(sample_rate=8000, duration=1, n_channels=6) +@@ -99,7 +99,7 @@ + specgram = specgram.reshape(3, 2, specgram.shape[-2], specgram.shape[-1]) + transform = T.InverseSpectrogram(n_fft=400) + +- self.assert_batch_consistency(transform, specgram) ++ self.assert_batch_consistency(transform, specgram, atol=1e-7, rtol=1e-3) + + def test_batch_melspectrogram(self): + waveform = common_utils.get_whitenoise(sample_rate=8000, duration=1, n_channels=6) +@@ -164,7 +164,7 @@ + waveform = waveform.reshape(3, 2, -1) + transform = T.PitchShift(sample_rate, n_steps, n_fft=400) + +- self.assert_batch_consistency(transform, waveform) ++ self.assert_batch_consistency(transform, waveform, atol=1e-5, rtol=1e-3) + + def test_batch_PSD(self): + waveform = common_utils.get_whitenoise(sample_rate=8000, duration=1, n_channels=6) diff --git a/easybuild/easyconfigs/p/PyTorch-bundle/torchaudio-2.1.2_use-external-sox.patch b/easybuild/easyconfigs/p/PyTorch-bundle/torchaudio-2.1.2_use-external-sox.patch new file mode 100644 index 00000000000..3b7e88f6e86 --- /dev/null +++ b/easybuild/easyconfigs/p/PyTorch-bundle/torchaudio-2.1.2_use-external-sox.patch @@ -0,0 +1,13 @@ +Author: Jasper Grimm +use external Sox library instead of fetching and building at build time +--- CMakeLists.txt.orig 2024-04-10 22:50:03.376931244 +0000 ++++ CMakeLists.txt 2024-04-10 22:51:00.861834095 +0000 +@@ -167,7 +167,7 @@ + + add_subdirectory(torchaudio/csrc) + if (BUILD_SOX) +- add_subdirectory(third_party/sox) ++ # add_subdirectory(third_party/sox) + add_subdirectory(torchaudio/csrc/sox) + endif() + if (USE_FFMPEG) diff --git a/easybuild/easyconfigs/p/PyTorch-bundle/torchtext-0.16.2_download-to-project-root.patch b/easybuild/easyconfigs/p/PyTorch-bundle/torchtext-0.16.2_download-to-project-root.patch new file mode 100644 index 00000000000..93652c3235c --- /dev/null +++ b/easybuild/easyconfigs/p/PyTorch-bundle/torchtext-0.16.2_download-to-project-root.patch @@ -0,0 +1,35 @@ +TorchtextTestCase sets project root to test dir instead of project root. This +patch makes sure the download ends up in the right place. + +Author: Viktor Rehnberg, vikren@chalmers.se (Chalmers University of Technology) + + +--- text-0.16.2.old/test/torchtext_unittest/prototype/test_with_asset.py 2024-03-19 13:26:46.094164142 +0000 ++++ text-0.16.2/test/torchtext_unittest/prototype/test_with_asset.py 2024-03-19 13:22:25.481657690 +0000 +@@ -201,7 +201,7 @@ + self.assertEqual(dict(v2.get_stoi()), expected_stoi) + + def test_builtin_pretrained_sentencepiece_processor(self) -> None: +- sp_model_path = download_from_url(PRETRAINED_SP_MODEL["text_unigram_25000"]) ++ sp_model_path = download_from_url(PRETRAINED_SP_MODEL["text_unigram_25000"], root=os.path.join(self.project_root, ".data")) + spm_tokenizer = sentencepiece_tokenizer(sp_model_path) + _path = os.path.join(self.project_root, ".data", "text_unigram_25000.model") + os.remove(_path) +@@ -209,7 +209,7 @@ + ref_results = ["\u2581the", "\u2581pre", "trained", "\u2581sp", "m", "\u2581model", "\u2581names"] + self.assertEqual(spm_tokenizer(test_sample), ref_results) + +- sp_model_path = download_from_url(PRETRAINED_SP_MODEL["text_bpe_25000"]) ++ sp_model_path = download_from_url(PRETRAINED_SP_MODEL["text_bpe_25000"], root=os.path.join(self.project_root, ".data")) + spm_transform = sentencepiece_processor(sp_model_path) + _path = os.path.join(self.project_root, ".data", "text_bpe_25000.model") + os.remove(_path) +@@ -223,7 +223,7 @@ + example_strings = ["the pretrained spm model names"] * 64 + ref_results = torch.tensor([[13, 1465, 12824, 304, 24935, 5771, 3776]] * 16, dtype=torch.long) + +- sp_model_path = download_from_url(PRETRAINED_SP_MODEL["text_bpe_25000"]) ++ sp_model_path = download_from_url(PRETRAINED_SP_MODEL["text_bpe_25000"], root=os.path.join(self.project_root, ".data")) + spm_processor = sentencepiece_processor(sp_model_path) + batch_fn = partial(_batch_func, spm_processor) + diff --git a/easybuild/easyconfigs/p/PyTorch-bundle/torchvision-0.16.2_ffmpeg-6.0-fix.patch b/easybuild/easyconfigs/p/PyTorch-bundle/torchvision-0.16.2_ffmpeg-6.0-fix.patch new file mode 100644 index 00000000000..7a3637f3adc --- /dev/null +++ b/easybuild/easyconfigs/p/PyTorch-bundle/torchvision-0.16.2_ffmpeg-6.0-fix.patch @@ -0,0 +1,36 @@ +From 86620bd84b872b76db0acafec167949dca03a29e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zolt=C3=A1n=20B=C3=B6sz=C3=B6rm=C3=A9nyi?= + +Date: Tue, 7 Nov 2023 10:43:11 +0100 +Subject: [PATCH] Fix build with ffmpeg 6.0 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Zoltán Böszörményi +--- + torchvision/csrc/io/decoder/stream.cpp | 11 ++--------- + 1 file changed, 2 insertions(+), 9 deletions(-) + +diff --git a/torchvision/csrc/io/decoder/stream.cpp b/torchvision/csrc/io/decoder/stream.cpp +index 0d625ef211c..8c914050587 100644 +--- a/torchvision/csrc/io/decoder/stream.cpp ++++ b/torchvision/csrc/io/decoder/stream.cpp +@@ -63,15 +63,8 @@ int Stream::openCodec(std::vector* metadata, int num_threads) { + codecCtx_->thread_count = num_threads; + } else { + // otherwise set sensible defaults +- // with the special case for the different MPEG4 codecs +- // that don't have threading context functions +- if (codecCtx_->codec->capabilities & AV_CODEC_CAP_INTRA_ONLY) { +- codecCtx_->thread_type = FF_THREAD_FRAME; +- codecCtx_->thread_count = 2; +- } else { +- codecCtx_->thread_count = 8; +- codecCtx_->thread_type = FF_THREAD_SLICE; +- } ++ codecCtx_->thread_count = 8; ++ codecCtx_->thread_type = FF_THREAD_SLICE; + } + + int ret; diff --git a/easybuild/easyconfigs/p/PyTorch-bundle/torchvision-0.16.2_quantized_tol.patch b/easybuild/easyconfigs/p/PyTorch-bundle/torchvision-0.16.2_quantized_tol.patch new file mode 100644 index 00000000000..844a0b29da8 --- /dev/null +++ b/easybuild/easyconfigs/p/PyTorch-bundle/torchvision-0.16.2_quantized_tol.patch @@ -0,0 +1,15 @@ +Increase the toleances for quantized model that failed tests +The absolute error just barely exceed the default 0.02, but given the small numbers +the relative tolerance is high, thus the relative high tolerance of 0.5 +author: micketeer@gmail.com +--- test/test_models.py.orig 2024-03-21 10:54:03.467723691 +0000 ++++ test/test_models.py 2024-03-21 10:53:49.857749169 +0000 +@@ -987,7 +987,7 @@ + out = model(x) + + if model_name not in quantized_flaky_models: +- _assert_expected(out.cpu(), model_name + "_quantized", prec=2e-2) ++ _assert_expected(out.cpu(), model_name + "_quantized", prec=5e-1) + assert out.shape[-1] == 5 + _check_jit_scriptable(model, (x,), unwrapper=script_model_unwrapper.get(model_name, None), eager_out=out) + _check_fx_compatible(model, x, eager_out=out) 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/PyVista/PyVista-0.43.8-foss-2023a.eb b/easybuild/easyconfigs/p/PyVista/PyVista-0.43.8-foss-2023a.eb new file mode 100644 index 00000000000..b89bae3b057 --- /dev/null +++ b/easybuild/easyconfigs/p/PyVista/PyVista-0.43.8-foss-2023a.eb @@ -0,0 +1,45 @@ +easyblock = 'PythonBundle' + +name = 'PyVista' +version = '0.43.8' + +homepage = 'https://docs.pyvista.org/' +description = """ +3D plotting and mesh analysis through a streamlined interface for the +Visualization Toolkit (VTK)""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +dependencies = [ + ('Python', '3.11.3'), + ('Python-bundle-PyPI', '2023.06'), + ('VTK', '9.3.0'), + ('imageio', '2.33.1'), + ('matplotlib', '3.7.2'), + ('Pillow', '10.0.0'), +] + +use_pip = True + +exts_list = [ + ('scooby', '0.10.0', { + 'checksums': ['7ea33c262c0cc6a33c6eeeb5648df787be4f22660e53c114e5fff1b811a8854f'], + }), + ('cmocean', '4.0.3', { + 'checksums': ['37868399fb5f41b4eac596e69803f9bfaea49946514dfb2e7f48886854250d7c'], + }), + ('colorcet', '3.1.0', { + 'checksums': ['2921b3cd81a2288aaf2d63dbc0ce3c26dcd882e8c389cc505d6886bf7aa9a4eb'], + }), + ('meshio', '5.3.5', { + 'checksums': ['f21f01abd9f29ba06ea119304b3d39e610421cfe93b9dd23362834919f87586d'], + }), + ('pyvista', version, { + 'use_pip_extras': 'colormaps,io', + 'checksums': ['b9220753ae94fb8ca3047d291a706a4046b06659016c0000c184b5f24504f8d0'], + }), +] + +sanity_pip_check = True + +moduleclass = 'vis' diff --git a/easybuild/easyconfigs/p/PycURL/PycURL-7.45.3-GCCcore-13.2.0.eb b/easybuild/easyconfigs/p/PycURL/PycURL-7.45.3-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..8c337a0cb79 --- /dev/null +++ b/easybuild/easyconfigs/p/PycURL/PycURL-7.45.3-GCCcore-13.2.0.eb @@ -0,0 +1,29 @@ +# This easyconfig was created by Simon Branford of the BEAR Software team at the University of Birmingham. +easyblock = 'PythonPackage' + +name = 'PycURL' +version = '7.45.3' + +homepage = 'http://pycurl.io/' +description = """PycURL is a Python interface to libcurl. PycURL can be used to fetch objects identified by a URL + from a Python program, similar to the urllib Python module. PycURL is mature, very fast, and supports a lot of + features.""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +sources = [SOURCELOWER_TAR_GZ] +checksums = ['8c2471af9079ad798e1645ec0b0d3d4223db687379d17dd36a70637449f81d6b'] + +builddependencies = [ + ('binutils', '2.40'), +] +dependencies = [ + ('Python', '3.11.5'), + ('cURL', '8.3.0'), +] + +download_dep_fail = True +sanity_pip_check = True +use_pip = True + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/p/Pysam/Pysam-0.22.0-GCC-13.2.0.eb b/easybuild/easyconfigs/p/Pysam/Pysam-0.22.0-GCC-13.2.0.eb new file mode 100644 index 00000000000..41ccf5a3458 --- /dev/null +++ b/easybuild/easyconfigs/p/Pysam/Pysam-0.22.0-GCC-13.2.0.eb @@ -0,0 +1,29 @@ +easyblock = 'PythonPackage' + +name = 'Pysam' +version = '0.22.0' + +homepage = 'https://github.com/pysam-developers/pysam' +description = """Pysam is a python module for reading and manipulating Samfiles. + It's a lightweight wrapper of the samtools C-API. Pysam also includes an interface for tabix.""" + +toolchain = {'name': 'GCC', 'version': '13.2.0'} + +source_urls = ['https://github.com/pysam-developers/pysam/archive/'] +sources = ['v%(version)s.tar.gz'] +checksums = ['61b3377c5f889ddc6f6979912c3bb960d7e08407dada9cb38f13955564ea036f'] + +dependencies = [ + ('Python', '3.11.5'), + ('Python-bundle-PyPI', '2023.10'), + ('ncurses', '6.4'), + ('cURL', '8.3.0'), + ('XZ', '5.4.4'), +] + +download_dep_fail = True +use_pip = True + +sanity_pip_check = True + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/p/Python/Python-3.12.3-GCCcore-13.3.0.eb b/easybuild/easyconfigs/p/Python/Python-3.12.3-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..af5f4d13235 --- /dev/null +++ b/easybuild/easyconfigs/p/Python/Python-3.12.3-GCCcore-13.3.0.eb @@ -0,0 +1,72 @@ +name = 'Python' +version = '3.12.3' + +homepage = 'https://python.org/' +description = """Python is a programming language that lets you work more quickly and integrate your systems + more effectively.""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://www.python.org/ftp/%(namelower)s/%(version)s/'] +sources = [SOURCE_TGZ] +patches = ['Python-3.12.3_avoid-tkinter-build.patch'] +checksums = [ + {'Python-3.12.3.tgz': 'a6b9459f45a6ebbbc1af44f5762623fa355a0c87208ed417628b379d762dddb0'}, + {'Python-3.12.3_avoid-tkinter-build.patch': '34fa44ca67fc08d41c58db2e289317f12f32777a352a982dca2e63459fc089e3'}, +] + +builddependencies = [ + ('UnZip', '6.0'), + ('pkgconf', '2.2.0'), +] + +dependencies = [ + ('binutils', '2.42'), + ('bzip2', '1.0.8'), # required for bz2 package in Python stdlib + ('zlib', '1.3.1'), + ('libreadline', '8.2'), + ('ncurses', '6.5'), + ('SQLite', '3.45.3'), + ('XZ', '5.4.5'), + ('libffi', '3.4.5'), + ('OpenSSL', '3', '', SYSTEM), +] + +install_pip = True + +exts_default_options = { + 'source_urls': [PYPI_SOURCE], + 'use_pip': True, +} + +# order is important! +# package versions updated 2024-05-21 +exts_list = [ + ('flit_core', '3.9.0', { + 'checksums': ['72ad266176c4a3fcfab5f2930d76896059851240570ce9a98733b658cb786eba'], + }), + ('wheel', '0.43.0', { + 'checksums': ['465ef92c69fa5c5da2d1cf8ac40559a8c940886afcef87dcf14b9470862f1d85'], + }), + ('tomli', '2.0.1', { + 'checksums': ['de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f'], + }), + ('packaging', '24.0', { + 'checksums': ['eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9'], + }), + ('typing_extensions', '4.11.0', { + 'checksums': ['83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0'], + }), + ('setuptools', '70.0.0', { + 'checksums': ['f211a66637b8fa059bb28183da127d4e86396c991a942b028c6650d4319c3fd0'], + }), + ('setuptools_scm', '8.1.0', { + 'checksums': ['42dea1b65771cba93b7a515d65a65d8246e560768a66b9106a592c8e7f26c8a7'], + }), + ('pip', '24.0', { + 'checksums': ['ea9bd1a847e8c5774a5777bb398c19e80bcd4e2aa16a4b301b718fe6f593aba2'], + }), +] + +moduleclass = 'lang' diff --git a/easybuild/easyconfigs/p/Python/Python-3.12.3_avoid-tkinter-build.patch b/easybuild/easyconfigs/p/Python/Python-3.12.3_avoid-tkinter-build.patch new file mode 100644 index 00000000000..cd6261321c0 --- /dev/null +++ b/easybuild/easyconfigs/p/Python/Python-3.12.3_avoid-tkinter-build.patch @@ -0,0 +1,17 @@ +Explicitly disable building of _tkinter module +Simon Branford (University of Birmingham) +--- configure.orig 2024-05-24 11:09:00.888859445 +0100 ++++ configure 2024-05-24 11:52:11.840124559 +0100 +@@ -30585,11 +30585,11 @@ + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _tkinter" >&5 + printf %s "checking for stdlib extension module _tkinter... " >&6; } + if test "$py_cv_module__tkinter" != "n/a" + then : + +- if true ++ if false + then : + if test "$have_tcltk" = "yes" + then : + py_cv_module__tkinter=yes + else $as_nop diff --git a/easybuild/easyconfigs/p/p11-kit/p11-kit-0.25.3-GCCcore-12.3.0.eb b/easybuild/easyconfigs/p/p11-kit/p11-kit-0.25.3-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..64d64977241 --- /dev/null +++ b/easybuild/easyconfigs/p/p11-kit/p11-kit-0.25.3-GCCcore-12.3.0.eb @@ -0,0 +1,41 @@ +easyblock = 'ConfigureMake' + +name = 'p11-kit' +version = '0.25.3' + +homepage = 'https://p11-glue.freedesktop.org/p11-kit.html' +description = """Provides a way to load and enumerate PKCS#11 modules. + Provides a standard configuration setup for installing + PKCS#11 modules in such a way that they're discoverable. + Also solves problems with coordinating the use of PKCS#11 + by different components or libraries living in the same process.""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +source_urls = ['https://github.com/p11-glue/p11-kit/releases/download/%(version)s/'] +sources = [SOURCE_TAR_XZ] +checksums = ['d8ddce1bb7e898986f9d250ccae7c09ce14d82f1009046d202a0eb1b428b2adc'] + +builddependencies = [ + ('binutils', '2.40'), + ('pkgconf', '1.9.5'), +] + +dependencies = [ + ('libtasn1', '4.19.0'), + ('libffi', '3.4.4'), +] + +preconfigopts = "bashcompdir=%(installdir)s/share/bash-completions " + +configopts = "--without-systemd" + +sanity_check_paths = { + 'files': ['bin/p11-kit', 'bin/trust'] + + ['lib/libp11-kit.%s' % SHLIB_EXT], + 'dirs': ['include/p11-kit-1/p11-kit'], +} + +sanity_check_commands = ["p11-kit --help"] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/p/p4est/p4est-2.8.6-foss-2023a.eb b/easybuild/easyconfigs/p/p4est/p4est-2.8.6-foss-2023a.eb new file mode 100644 index 00000000000..afc3d3fb705 --- /dev/null +++ b/easybuild/easyconfigs/p/p4est/p4est-2.8.6-foss-2023a.eb @@ -0,0 +1,35 @@ +easyblock = 'ConfigureMake' + +name = 'p4est' +version = '2.8.6' + +homepage = 'https://www.p4est.org' +description = """p4est is a C library to manage a collection (a forest) of multiple +connected adaptive quadtrees or octrees in parallel.""" + +toolchain = {'name': 'foss', 'version': '2023a'} +toolchainopts = {'openmp': True, 'usempi': True, 'pic': True} + +source_urls = ['https://p4est.github.io/release/'] +sources = [SOURCE_TAR_GZ] +checksums = ['46ee0c6e5a24f45be97fba743f5ef3d9618c075b023e9421ded9fc8cf7811300'] + +builddependencies = [ + ('Autotools', '20220317') +] + +dependencies = [ + ('zlib', '1.2.13'), + ('METIS', '5.1.0') +] + +configopts = "--enable-openmp --enable-mpi --with-metis " +configopts += '--with-blas="$LIBBLAS" --with-lapack="$LIBLAPACK" ' + +sanity_check_paths = { + 'files': ['bin/p4est_simple', 'bin/p4est_step1', 'bin/p4est_step2', 'bin/p4est_step3', 'bin/p4est_step4', + 'lib/libp4est.a', 'lib/libp4est.la'], + 'dirs': [], +} + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/p/parallel/parallel-20240322-GCCcore-13.2.0.eb b/easybuild/easyconfigs/p/parallel/parallel-20240322-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..53acb414c76 --- /dev/null +++ b/easybuild/easyconfigs/p/parallel/parallel-20240322-GCCcore-13.2.0.eb @@ -0,0 +1,26 @@ +easyblock = 'ConfigureMake' + +name = 'parallel' +version = '20240322' + +homepage = 'https://savannah.gnu.org/projects/parallel/' +description = """parallel: Build and execute shell commands in parallel""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +source_urls = [GNU_SOURCE] +sources = [SOURCELOWER_TAR_BZ2] +checksums = ['0b17029a203dabf7ba6ca7e52c2d3910fff46b2979476e12a9110920b79e6a95'] + +builddependencies = [('binutils', '2.40')] + +dependencies = [('Perl', '5.38.0')] + +sanity_check_paths = { + 'files': ['bin/parallel'], + 'dirs': [] +} + +sanity_check_commands = ["parallel --help"] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/p/patchelf/patchelf-0.18.0-GCCcore-13.3.0.eb b/easybuild/easyconfigs/p/patchelf/patchelf-0.18.0-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..9bf25222d44 --- /dev/null +++ b/easybuild/easyconfigs/p/patchelf/patchelf-0.18.0-GCCcore-13.3.0.eb @@ -0,0 +1,29 @@ +easyblock = 'ConfigureMake' + +name = 'patchelf' +version = '0.18.0' + +homepage = 'https://github.com/NixOS/patchelf' +description = """PatchELF is a small utility to modify the dynamic linker and RPATH of ELF executables.""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = ['https://github.com/NixOS/patchelf/archive/'] +sources = ['%(version)s.tar.gz'] +checksums = ['1451d01ee3a21100340aed867d0b799f46f0b1749680028d38c3f5d0128fb8a7'] + +builddependencies = [ + ('binutils', '2.42'), + ('Autotools', '20231222'), +] + +preconfigopts = "sh bootstrap.sh && " + +sanity_check_paths = { + 'files': ['bin/patchelf'], + 'dirs': ['share'], +} + +sanity_check_commands = ["patchelf --help"] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/p/pauvre/pauvre-0.2.3-foss-2022a.eb b/easybuild/easyconfigs/p/pauvre/pauvre-0.2.3-foss-2022a.eb new file mode 100644 index 00000000000..309b061d0c7 --- /dev/null +++ b/easybuild/easyconfigs/p/pauvre/pauvre-0.2.3-foss-2022a.eb @@ -0,0 +1,40 @@ +# Author: Pavel Grochal (INUITS) +# License: GPLv2 + +easyblock = 'PythonPackage' + +name = 'pauvre' +version = '0.2.3' + +homepage = 'https://github.com/conchoecia/pauvre' +description = "Tools for plotting Oxford Nanopore and other long-read data" + +toolchain = {'name': 'foss', 'version': '2022a'} + +sources = [SOURCE_TAR_GZ] +checksums = ['ba756bc9025ae7edafd91092d12a57864f018958fd46b548e9eeda7167ee197d'] + +dependencies = [ + ('Python', '3.10.4'), + ('SciPy-bundle', '2022.05'), + ('Biopython', '1.79'), + ('scikit-learn', '1.1.2'), + ('matplotlib', '3.5.2'), +] + +download_dep_fail = True +use_pip = True + +# fix incorrect requirement, correct name is 'scikit-learn' +preinstallopts = "sed -i 's/sklearn/scikit-learn/g' setup.py && " + +sanity_check_paths = { + 'files': ['bin/pauvre'], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +sanity_check_commands = ["pauvre --help"] + +sanity_pip_check = True + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/p/pauvre/pauvre-0.2.3-foss-2022b.eb b/easybuild/easyconfigs/p/pauvre/pauvre-0.2.3-foss-2022b.eb new file mode 100644 index 00000000000..672fd7dc282 --- /dev/null +++ b/easybuild/easyconfigs/p/pauvre/pauvre-0.2.3-foss-2022b.eb @@ -0,0 +1,40 @@ +# Author: Pavel Grochal (INUITS) +# License: GPLv2 + +easyblock = 'PythonPackage' + +name = 'pauvre' +version = '0.2.3' + +homepage = 'https://github.com/conchoecia/pauvre' +description = "Tools for plotting Oxford Nanopore and other long-read data" + +toolchain = {'name': 'foss', 'version': '2022b'} + +sources = [SOURCE_TAR_GZ] +checksums = ['ba756bc9025ae7edafd91092d12a57864f018958fd46b548e9eeda7167ee197d'] + +dependencies = [ + ('Python', '3.10.8'), + ('SciPy-bundle', '2023.02'), + ('Biopython', '1.81'), + ('scikit-learn', '1.2.1'), + ('matplotlib', '3.7.0'), +] + +download_dep_fail = True +use_pip = True + +# fix incorrect requirement, correct name is 'scikit-learn' +preinstallopts = "sed -i 's/sklearn/scikit-learn/g' setup.py && " + +sanity_check_paths = { + 'files': ['bin/pauvre'], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +sanity_check_commands = ["pauvre --help"] + +sanity_pip_check = True + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/p/pauvre/pauvre-0.2.3-foss-2023a.eb b/easybuild/easyconfigs/p/pauvre/pauvre-0.2.3-foss-2023a.eb new file mode 100644 index 00000000000..b1b09a6411d --- /dev/null +++ b/easybuild/easyconfigs/p/pauvre/pauvre-0.2.3-foss-2023a.eb @@ -0,0 +1,40 @@ +# Author: Pavel Grochal (INUITS) +# License: GPLv2 + +easyblock = 'PythonPackage' + +name = 'pauvre' +version = '0.2.3' + +homepage = 'https://github.com/conchoecia/pauvre' +description = "Tools for plotting Oxford Nanopore and other long-read data" + +toolchain = {'name': 'foss', 'version': '2023a'} + +sources = [SOURCE_TAR_GZ] +checksums = ['ba756bc9025ae7edafd91092d12a57864f018958fd46b548e9eeda7167ee197d'] + +dependencies = [ + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), + ('Biopython', '1.83'), + ('scikit-learn', '1.3.1'), + ('matplotlib', '3.7.2'), +] + +download_dep_fail = True +use_pip = True + +# fix incorrect requirement, correct name is 'scikit-learn' +preinstallopts = "sed -i 's/sklearn/scikit-learn/g' setup.py && " + +sanity_check_paths = { + 'files': ['bin/pauvre'], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +sanity_check_commands = ["pauvre --help"] + +sanity_pip_check = True + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/p/pdf2docx/pdf2docx-0.5.8-foss-2023a.eb b/easybuild/easyconfigs/p/pdf2docx/pdf2docx-0.5.8-foss-2023a.eb new file mode 100644 index 00000000000..6033270a677 --- /dev/null +++ b/easybuild/easyconfigs/p/pdf2docx/pdf2docx-0.5.8-foss-2023a.eb @@ -0,0 +1,52 @@ +easyblock = "PythonBundle" + +name = 'pdf2docx' +version = '0.5.8' + +homepage = 'https://github.com/ArtifexSoftware/pdf2docx' +description = """Open source Python library converting pdf to docx.""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +builddependencies = [ + ('hatchling', '1.18.0'), + ('SWIG', '4.1.1'), +] + +dependencies = [ + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), + ('Python-bundle-PyPI', '2023.06'), + ('OpenCV', '4.8.1', '-contrib'), + ('lxml', '4.9.2'), # for python-docx +] + +use_pip = True +sanity_pip_check = True + +exts_list = [ + ('PyMuPDF', '1.20.2', { + 'modulename': 'fitz', + 'checksums': ['02eedf01f57c6bafb5e8667cea0088a2d2522643c47100f1908bec3a68a84888'], + }), + ('python-docx', '1.1.0', { + 'modulename': 'docx', + 'checksums': ['5829b722141cf1ab79aedf0c34d9fe9924b29764584c0f2164eb2b02dcdf17c9'], + }), + ('termcolor', '2.3.0', { + 'checksums': ['b5b08f68937f138fe92f6c089b99f1e2da0ae56c52b78bf7075fd95420fd9a5a'], + }), + ('fire', '0.5.0', { + 'checksums': ['a6b0d49e98c8963910021f92bba66f65ab440da2982b78eb1bbf95a0a34aacc6'], + }), + ('fonttools', '4.47.2', { + 'modulename': 'fontTools', + 'checksums': ['7df26dd3650e98ca45f1e29883c96a0b9f5bb6af8d632a6a108bc744fa0bd9b3'], + }), + (name, version, { + 'preinstallopts': "sed -i 's/opencv-python-headless/opencv-contrib-python/g' requirements.txt && ", + 'checksums': ['e723f639728193468602b69eade2fe62df5f5d339d2630228e325f4cc61c1918'], + }), +] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/p/pdsh/pdsh-2.34-GCCcore-11.3.0.eb b/easybuild/easyconfigs/p/pdsh/pdsh-2.34-GCCcore-11.3.0.eb index 2ad121fa5b7..514caad6711 100644 --- a/easybuild/easyconfigs/p/pdsh/pdsh-2.34-GCCcore-11.3.0.eb +++ b/easybuild/easyconfigs/p/pdsh/pdsh-2.34-GCCcore-11.3.0.eb @@ -10,7 +10,11 @@ toolchain = {'name': 'GCCcore', 'version': '11.3.0'} source_urls = ['https://github.com/chaos/pdsh/releases/download/pdsh-%(version)s/'] sources = [SOURCE_TAR_GZ] -checksums = ['b47b3e4662736ef44b6fe86e3d380f95e591863e69163aa0592e9f9f618521e9'] +patches = ['pdsh-2.34_fix-slurm-23.x.patch'] +checksums = [ + {'pdsh-2.34.tar.gz': 'b47b3e4662736ef44b6fe86e3d380f95e591863e69163aa0592e9f9f618521e9'}, + {'pdsh-2.34_fix-slurm-23.x.patch': 'cba3a60f5cbc2ca6dc32cda16998c43818f740c0998aba201dfbe334349e60b9'}, +] builddependencies = [ ('binutils', '2.38'), diff --git a/easybuild/easyconfigs/p/pdsh/pdsh-2.34-GCCcore-12.2.0.eb b/easybuild/easyconfigs/p/pdsh/pdsh-2.34-GCCcore-12.2.0.eb index 1b8e1f8ed55..eb35068da2a 100644 --- a/easybuild/easyconfigs/p/pdsh/pdsh-2.34-GCCcore-12.2.0.eb +++ b/easybuild/easyconfigs/p/pdsh/pdsh-2.34-GCCcore-12.2.0.eb @@ -10,7 +10,11 @@ toolchain = {'name': 'GCCcore', 'version': '12.2.0'} source_urls = ['https://github.com/chaos/pdsh/releases/download/pdsh-%(version)s/'] sources = [SOURCE_TAR_GZ] -checksums = ['b47b3e4662736ef44b6fe86e3d380f95e591863e69163aa0592e9f9f618521e9'] +patches = ['pdsh-2.34_fix-slurm-23.x.patch'] +checksums = [ + {'pdsh-2.34.tar.gz': 'b47b3e4662736ef44b6fe86e3d380f95e591863e69163aa0592e9f9f618521e9'}, + {'pdsh-2.34_fix-slurm-23.x.patch': 'cba3a60f5cbc2ca6dc32cda16998c43818f740c0998aba201dfbe334349e60b9'}, +] builddependencies = [ ('binutils', '2.39'), diff --git a/easybuild/easyconfigs/p/pdsh/pdsh-2.34-GCCcore-12.3.0.eb b/easybuild/easyconfigs/p/pdsh/pdsh-2.34-GCCcore-12.3.0.eb index 75dde8cd89c..90ebe848ded 100644 --- a/easybuild/easyconfigs/p/pdsh/pdsh-2.34-GCCcore-12.3.0.eb +++ b/easybuild/easyconfigs/p/pdsh/pdsh-2.34-GCCcore-12.3.0.eb @@ -10,7 +10,11 @@ toolchain = {'name': 'GCCcore', 'version': '12.3.0'} source_urls = ['https://github.com/chaos/pdsh/releases/download/pdsh-%(version)s/'] sources = [SOURCE_TAR_GZ] -checksums = ['b47b3e4662736ef44b6fe86e3d380f95e591863e69163aa0592e9f9f618521e9'] +patches = ['pdsh-2.34_fix-slurm-23.x.patch'] +checksums = [ + {'pdsh-2.34.tar.gz': 'b47b3e4662736ef44b6fe86e3d380f95e591863e69163aa0592e9f9f618521e9'}, + {'pdsh-2.34_fix-slurm-23.x.patch': 'cba3a60f5cbc2ca6dc32cda16998c43818f740c0998aba201dfbe334349e60b9'}, +] builddependencies = [ ('binutils', '2.40'), diff --git a/easybuild/easyconfigs/p/pdsh/pdsh-2.34_fix-slurm-23.x.patch b/easybuild/easyconfigs/p/pdsh/pdsh-2.34_fix-slurm-23.x.patch new file mode 100644 index 00000000000..1889f83a15b --- /dev/null +++ b/easybuild/easyconfigs/p/pdsh/pdsh-2.34_fix-slurm-23.x.patch @@ -0,0 +1,22 @@ +see https://github.com/chaos/pdsh/issues/152 + https://github.com/chaos/pdsh/pull/153 +diff --git a/src/modules/slurm.c b/src/modules/slurm.c +index 5594c4f..c227337 100644 +--- a/src/modules/slurm.c ++++ b/src/modules/slurm.c +@@ -50,6 +50,16 @@ + * with our internal List datatype. + */ + #define __list_datatypes_defined 1 ++/* ++ * Also, Slurm>=23.x requires that `struct xlist` be typedef'd to list_t: ++ */ ++typedef struct xlist list_t; ++typedef struct listIterator list_itr_t; ++/* ++ * Also, Slurm exports the hostlist_t interface as well: ++ */ ++#define __hostlist_t_defined 1 ++ + #include + #include + diff --git a/easybuild/easyconfigs/p/petsc4py/petsc4py-3.20.3-foss-2023a.eb b/easybuild/easyconfigs/p/petsc4py/petsc4py-3.20.3-foss-2023a.eb new file mode 100644 index 00000000000..da89786496b --- /dev/null +++ b/easybuild/easyconfigs/p/petsc4py/petsc4py-3.20.3-foss-2023a.eb @@ -0,0 +1,27 @@ +easyblock = 'PythonPackage' + +name = 'petsc4py' +version = '3.20.3' + +homepage = 'https://gitlab.com/petsc/petsc' +description = """petsc4py are Python bindings for PETSc, the Portable, +Extensible Toolchain for Scientific Computation.""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +sources = [SOURCE_TAR_GZ] +checksums = ['8e10884df5ca38191b71294dc7e89f7479b18cca83fedfe27f89105e57c40785'] + +dependencies = [ + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), + ('PETSc', version), +] + +download_dep_fail = True +use_pip = True +sanity_pip_check = True + +sanity_check_commands = ["python -c 'from petsc4py import PETSc'"] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/p/pigz/pigz-2.8-GCCcore-13.2.0.eb b/easybuild/easyconfigs/p/pigz/pigz-2.8-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..1639902aa17 --- /dev/null +++ b/easybuild/easyconfigs/p/pigz/pigz-2.8-GCCcore-13.2.0.eb @@ -0,0 +1,47 @@ +easyblock = 'MakeCp' + +name = 'pigz' +version = '2.8' + +homepage = 'https://zlib.net/pigz/' + +description = """ + pigz, which stands for parallel implementation of gzip, is a fully + functional replacement for gzip that exploits multiple processors and multiple + cores to the hilt when compressing data. pigz was written by Mark Adler, and + uses the zlib and pthread libraries. +""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +source_urls = [ + 'https://zlib.net/pigz/', + 'https://zlib.net/pigz/fossils/', +] +sources = [SOURCE_TAR_GZ] +patches = ['%(name)s-2.6_makefile.patch'] +checksums = [ + {'pigz-2.8.tar.gz': 'eb872b4f0e1f0ebe59c9f7bd8c506c4204893ba6a8492de31df416f0d5170fd0'}, + {'pigz-2.6_makefile.patch': '7e37175714d43c946373d07c522ec98a77c0f8572a9d448f759c41f6f060275d'}, +] + +builddependencies = [ + ('binutils', '2.40'), +] + +dependencies = [ + ('zlib', '1.2.13'), +] + +buildopts = 'CC="$CC" CFLAGS="$CFLAGS" LDFLAGS="-L$EBROOTZLIB/lib"' + +files_to_copy = [(["pigz", "unpigz"], "bin")] + +sanity_check_paths = { + 'files': ['bin/pigz', 'bin/unpigz'], + 'dirs': [], +} + +sanity_check_commands = ['pigz -V'] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/p/pkgconf/pkgconf-2.2.0-GCCcore-13.3.0.eb b/easybuild/easyconfigs/p/pkgconf/pkgconf-2.2.0-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..aaaecf30a9a --- /dev/null +++ b/easybuild/easyconfigs/p/pkgconf/pkgconf-2.2.0-GCCcore-13.3.0.eb @@ -0,0 +1,31 @@ +easyblock = 'ConfigureMake' + +name = 'pkgconf' +version = '2.2.0' + +homepage = 'https://github.com/pkgconf/pkgconf' + +description = """pkgconf is a program which helps to configure compiler and linker flags for development libraries. + It is similar to pkg-config from freedesktop.org.""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = ['https://distfiles.ariadne.space/pkgconf/'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['28f8dfc279a10ef66148befa3f6eb266e5f3570316600208ed50e9781c7269d8'] + +builddependencies = [('binutils', '2.42')] + +postinstallcmds = ["cd %(installdir)s/bin && ln -s pkgconf pkg-config"] + +sanity_check_paths = { + 'files': ['bin/pkg-config', 'bin/pkgconf'], + 'dirs': [], +} + +sanity_check_commands = [ + "pkg-config --help", + "pkgconf --help", +] + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/p/pkgconf/pkgconf-2.2.0.eb b/easybuild/easyconfigs/p/pkgconf/pkgconf-2.2.0.eb new file mode 100644 index 00000000000..3440e388cc3 --- /dev/null +++ b/easybuild/easyconfigs/p/pkgconf/pkgconf-2.2.0.eb @@ -0,0 +1,33 @@ +easyblock = 'ConfigureMake' + +name = 'pkgconf' +version = '2.2.0' + +homepage = 'https://github.com/pkgconf/pkgconf' + +description = """pkgconf is a program which helps to configure compiler and linker flags for development libraries. + It is similar to pkg-config from freedesktop.org.""" + +toolchain = SYSTEM + +source_urls = ['https://distfiles.ariadne.space/pkgconf/'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['28f8dfc279a10ef66148befa3f6eb266e5f3570316600208ed50e9781c7269d8'] + +# add pkgconfig directories in the system to list of default search paths +preconfigopts = 'EB_SYS_PC_PATH=":$(find /usr -xdev -type d -name "pkgconfig" -printf %p: 2>/dev/null)";' +configopts = '--with-pkg-config-dir="%(installdir)s/lib/pkgconfig:%(installdir)s/share/pkgconfig${EB_SYS_PC_PATH%:}"' + +postinstallcmds = ["cd %(installdir)s/bin && ln -s pkgconf pkg-config"] + +sanity_check_paths = { + 'files': ['bin/pkg-config', 'bin/pkgconf'], + 'dirs': [], +} + +sanity_check_commands = [ + "pkg-config --help", + "pkgconf --help", +] + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/p/planarity/planarity-3.0.2.0-GCC-13.2.0.eb b/easybuild/easyconfigs/p/planarity/planarity-3.0.2.0-GCC-13.2.0.eb new file mode 100644 index 00000000000..5578e11ec0e --- /dev/null +++ b/easybuild/easyconfigs/p/planarity/planarity-3.0.2.0-GCC-13.2.0.eb @@ -0,0 +1,37 @@ +easyblock = 'ConfigureMake' + +name = 'planarity' +version = '3.0.2.0' + +homepage = "https://github.com/graph-algorithms/edge-addition-planarity-suite" +description = """A library for implementing graph algorithms""" + +source_urls = ['https://github.com/graph-algorithms/edge-addition-planarity-suite/archive'] +checksums = ['40f4ee7bbd5d8535460c60fc0fc1f806b10909a1419618fd9235746a420a04c6'] +sources = ['Version_%(version)s.tar.gz'] + +toolchain = {'name': 'GCC', 'version': '13.2.0'} + +builddependencies = [ + ('Autotools', '20220317'), +] + +start_dir = 'edge-addition-planarity-suite-Version_%(version)s' +preconfigopts = './autogen.sh && ' + +sanity_check_paths = { + 'files': [ + 'bin/planarity', + 'lib/libplanarity.a', + 'lib/libplanarity.%s' % SHLIB_EXT, + ], + 'dirs': [ + 'include/planarity', + 'share/doc', + 'share/man', + ] +} + +sanity_check_commands = ['%(name)s -h'] + +moduleclass = "lib" diff --git a/easybuild/easyconfigs/p/plantri/plantri-5.4-GCCcore-13.2.0.eb b/easybuild/easyconfigs/p/plantri/plantri-5.4-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..96423f3f80b --- /dev/null +++ b/easybuild/easyconfigs/p/plantri/plantri-5.4-GCCcore-13.2.0.eb @@ -0,0 +1,38 @@ +easyblock = 'MakeCp' + +name = 'plantri' +version = '5.4' + +homepage = 'https://doc.sagemath.org/html/en/reference/spkg/plantri.html' +description = """Plantri is a program that generates certain types of graphs that are imbedded on the sphere. +Exactly one member of each isomorphism class is output, +using an amount of memory almost independent of the number of graphs produced. +This, together with the exceptionally fast operation and careful validation, +makes the program suitable for processing very large numbers of graphs. +Isomorphisms are defined with respect to the embeddings, +so in some cases outputs may be isomorphic as abstract graphs.""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +source_urls = ['https://users.cecs.anu.edu.au/~bdm/plantri'] +sources = ['plantri%s.tar.gz' % version.replace('.', '')] +checksums = ['10625820bd1eae7376a9cbe8af8ffaba71a25fcb6a76c36fe89be83ce6c28bdd'] + +builddependencies = [('binutils', '2.40')] + +buildopts = 'CC="$CC" CFLAGS="$CFLAGS"' + +local_bins = ['plantri', 'fullgen'] + +files_to_copy = [ + (local_bins, 'bin'), +] + +sanity_check_paths = { + 'files': ['bin/%s' % x for x in local_bins], + 'dirs': [], +} + +sanity_check_commands = ['%(name)s --help'] + +moduleclass = 'vis' diff --git a/easybuild/easyconfigs/p/plc/plc-3.10-intel-2022a.eb b/easybuild/easyconfigs/p/plc/plc-3.10-intel-2022a.eb new file mode 100644 index 00000000000..feef3c53fc4 --- /dev/null +++ b/easybuild/easyconfigs/p/plc/plc-3.10-intel-2022a.eb @@ -0,0 +1,64 @@ +easyblock = 'Waf' + +name = 'plc' +version = '3.10' + +homepage = 'https://pla.esac.esa.int/pla/#home' + +description = """ + plc is the public Planck Likelihood Code. + It provides C and Fortran libraries that allow + users to compute the log likelihoods of the temperature, + polarization, and lensing maps. Optionally, it also provides a python version of this library, + as well as tools to modify the predetermined options for some likelihoods + (e.g. changing the high-ell and low-ell lmin and lmax values of the temperature). +""" + +toolchain = {'name': 'intel', 'version': '2022a'} + +source_urls = ['https://pla.esac.esa.int/pla/aio'] +sources = ['product-action?COSMOLOGY.FILE_ID=COM_Likelihood_Code-v3.0_R3.10.tar.gz'] +checksums = ['0538eaae1a04528ee355264b77dc6c18c0c1904c28fa18cab8e34baddf581696'] + +dependencies = [ + ('Python', '3.10.4'), + ('CFITSIO', '4.2.0'), + ('cURL', '7.83.0'), + ('astropy', '5.1.1'), +] + +configopts = "--icc " # Do not test for gcc and only use icc +configopts += "--ifort " # Do not test for gfortran and only use ifort +configopts += "--lapack_mkl=${MKLROOT} " # location of the EB mkl install +configopts += "--cfitsio_prefix=${EBROOTCFITSIO} " # location of the EB cfitsio install +configopts += "--extra_lib=curl " # not having curl in extra lib will fail to build the examples +configopts += "--extra_lib=m " # not having -lm will fail the build.. +configopts += "--extra_libpath=${EBROOTCURL}/lib " # -''- + +unpack_options = '--strip 3' +buildininstalldir = 'true' + +modextravars = { + 'CLIK_PATH': '%(installdir)s', + 'CLIK_DATA': 'share/clik', + 'CLIK_PLUGIN': 'rel2015', +} + +modextrapaths = { + 'PYTHONPATH': 'lib/python/site-packages' +} + +sanity_check_paths = { + 'files': [ + 'lib/libclik_f90.%s' % SHLIB_EXT, + 'lib/libclik.%s' % SHLIB_EXT, + 'lib/python/site-packages/clik/__init__.py', + 'include/clik.h', + ], + 'dirs': [ + 'bin', + 'share', + ], +} + +moduleclass = 'astro' diff --git a/easybuild/easyconfigs/p/plmc/plmc-20230121-GCCcore-12.3.0-32bit.eb b/easybuild/easyconfigs/p/plmc/plmc-20230121-GCCcore-12.3.0-32bit.eb new file mode 100644 index 00000000000..d32ed87425b --- /dev/null +++ b/easybuild/easyconfigs/p/plmc/plmc-20230121-GCCcore-12.3.0-32bit.eb @@ -0,0 +1,37 @@ +easyblock = 'MakeCp' + +name = 'plmc' +version = '20230121' +versionsuffix = '-32bit' +local_commit = '18c9e55' + +homepage = 'https://github.com/debbiemarkslab/plmc' +description = """ +Inference of couplings in proteins and RNAs from sequence variation. +""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +github_account = 'debbiemarkslab' +source_urls = [GITHUB_SOURCE] +sources = [{'download_filename': '%s.tar.gz' % local_commit, 'filename': SOURCE_TAR_GZ}] +checksums = ['780b657246749adeb8c5ec01746b7283d1b94598c547abd61b87f1efd996d619'] + +builddependencies = [ + ('binutils', '2.40'), +] + +buildopts = 'all-openmp32' + +files_to_copy = ['*'] + +sanity_check_paths = { + 'files': [], + 'dirs': ['bin'], +} + +sanity_check_commands = [ + "plmc -h 2>&1| grep Usage:", +] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/p/polars/polars-0.20.2-gfbf-2023a.eb b/easybuild/easyconfigs/p/polars/polars-0.20.2-gfbf-2023a.eb new file mode 100644 index 00000000000..a3d7ab5fd0d --- /dev/null +++ b/easybuild/easyconfigs/p/polars/polars-0.20.2-gfbf-2023a.eb @@ -0,0 +1,908 @@ +easyblock = 'CargoPythonPackage' + +name = 'polars' +version = '0.20.2' + +homepage = 'https://pola.rs/' +description = """Polars is a blazingly fast DataFrame library for manipulating +structured data. The core is written in Rust and this module provides its +interface for Python.""" + +toolchain = {'name': 'gfbf', 'version': '2023a'} + +sources = [SOURCELOWER_TAR_GZ] +checksums = [ + {'polars-0.20.2.tar.gz': '483562f157e6aef6cb4343bf13d11295c8bff55ee62fef8010975a5fc22ff4e0'}, + {'addr2line-0.21.0.tar.gz': '8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb'}, + {'adler-1.0.2.tar.gz': 'f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe'}, + {'adler32-1.2.0.tar.gz': 'aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234'}, + {'ahash-0.8.6.tar.gz': '91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a'}, + {'aho-corasick-1.1.2.tar.gz': 'b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0'}, + {'alloc-no-stdlib-2.0.4.tar.gz': 'cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3'}, + {'alloc-stdlib-0.2.2.tar.gz': '94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece'}, + {'allocator-api2-0.2.16.tar.gz': '0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5'}, + {'android-tzdata-0.1.1.tar.gz': 'e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0'}, + {'android_system_properties-0.1.5.tar.gz': '819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311'}, + {'anes-0.1.6.tar.gz': '4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299'}, + {'anstyle-1.0.4.tar.gz': '7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87'}, + {'anyhow-1.0.75.tar.gz': 'a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6'}, + {'apache-avro-0.16.0.tar.gz': 'ceb7c683b2f8f40970b70e39ff8be514c95b96fcb9c4af87e1ed2cb2e10801a0'}, + {'argminmax-0.6.1.tar.gz': '202108b46429b765ef483f8a24d5c46f48c14acfdacc086dd4ab6dddf6bcdbd2'}, + {'array-init-cursor-0.2.0.tar.gz': 'bf7d0a018de4f6aa429b9d33d69edf69072b1c5b1cb8d3e4a5f7ef898fc3eb76'}, + {'arrow-array-49.0.0.tar.gz': '6bda9acea48b25123c08340f3a8ac361aa0f74469bb36f5ee9acf923fce23e9d'}, + {'arrow-buffer-49.0.0.tar.gz': '01a0fc21915b00fc6c2667b069c1b64bdd920982f426079bc4a7cab86822886c'}, + {'arrow-data-49.0.0.tar.gz': '907fafe280a3874474678c1858b9ca4cb7fd83fb8034ff5b6d6376205a08c634'}, + {'arrow-format-0.8.1.tar.gz': '07884ea216994cdc32a2d5f8274a8bee979cfe90274b83f86f440866ee3132c7'}, + {'arrow-schema-49.0.0.tar.gz': '09e28a5e781bf1b0f981333684ad13f5901f4cd2f20589eab7cf1797da8fc167'}, + {'arrow2-0.17.4.tar.gz': '59c468daea140b747d781a1da9f7db5f0a8e6636d4af20cc539e43d05b0604fa'}, + {'async-stream-0.3.5.tar.gz': 'cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51'}, + {'async-stream-impl-0.3.5.tar.gz': '16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193'}, + {'async-trait-0.1.74.tar.gz': 'a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9'}, + {'atoi-2.0.0.tar.gz': 'f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528'}, + {'atoi_simd-0.15.5.tar.gz': 'ccfc14f5c3e34de57539a7ba9c18ecde3d9bbde48d232ea1da3e468adb307fd0'}, + {'autocfg-1.1.0.tar.gz': 'd468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa'}, + {'avro-schema-0.3.0.tar.gz': 'b5281855b39aba9684d2f47bf96983fbfd8f1725f12fabb0513a8ab879647bbd'}, + {'aws-config-1.0.3.tar.gz': '004dc45f6b869e6a70725df448004a720b7f52f6607d55d8815cbd5448f86def'}, + {'aws-credential-types-1.0.3.tar.gz': 'cfa51c87f10211f37cd78e6d01d6f18b3f96a086906ed361d11e04ac53e29508'}, + {'aws-http-0.60.0.tar.gz': '361c4310fdce94328cc2d1ca0c8a48c13f43009c61d3367585685a50ca8c66b6'}, + {'aws-runtime-1.0.3.tar.gz': 'ce0953f7fc1c4428511345e28ea3e98c8b59c9e91eafae30bf76d71d70642693'}, + {'aws-sdk-s3-1.7.0.tar.gz': 'c1c12ff4dee4cbcfb0f7b7c19b1f72d5603ff8cd1183db7678a10ecf378ba534'}, + {'aws-sdk-sso-1.6.0.tar.gz': '86575c7604dcdb583aba3390200e5333d8e4fe597bad54f57b190aaf4fac9771'}, + {'aws-sdk-ssooidc-1.6.0.tar.gz': 'bef0d7c1d0730adb5e85407174483a579e39576e0f4350ecd0fac69ec1217b1b'}, + {'aws-sdk-sts-1.6.0.tar.gz': 'f45778089751d5aa8645a02dd60865fa0eea39f00be5db2c7779bc50b83db19a'}, + {'aws-sigv4-1.0.3.tar.gz': 'b6bcbad6e0f130232b22e4b4e28834348ce5b79c23b5059b387c08fd0dc8f876'}, + {'aws-smithy-async-1.1.1.tar.gz': '1e9f65000917e3aa94c259d67fe01fa9e4cd456187d026067d642436e6311a81'}, + {'aws-smithy-checksums-0.60.1.tar.gz': '4c2a63681f82fb85ca58d566534b7dc619c782fee0c61c1aa51e2b560c21cb4f'}, + {'aws-smithy-eventstream-0.60.1.tar.gz': 'a85e16fa903c70c49ab3785e5f4ac2ad2171b36e0616f321011fa57962404bb6'}, + {'aws-smithy-http-0.60.1.tar.gz': 'e4e816425a6b9caea4929ac97d0cb33674849bd5f0086418abc0d02c63f7a1bf'}, + {'aws-smithy-json-0.60.1.tar.gz': '8ab3f6d49e08df2f8d05e1bb5b68998e1e67b76054d3c43e7b954becb9a5e9ac'}, + {'aws-smithy-query-0.60.1.tar.gz': '0f94a7a3aa509ff9e8b8d80749851d04e5eee0954c43f2e7d6396c4740028737'}, + {'aws-smithy-runtime-1.1.1.tar.gz': '8da5b0a3617390e769576321816112f711c13d7e1114685e022505cf51fe5e48'}, + {'aws-smithy-runtime-api-1.1.1.tar.gz': '2404c9eb08bfe9af255945254d9afc69a367b7ee008b8db75c05e3bca485fc65'}, + {'aws-smithy-types-1.1.1.tar.gz': '2aba8136605d14ac88f57dc3a693a9f8a4eab4a3f52bc03ff13746f0cd704e97'}, + {'aws-smithy-xml-0.60.1.tar.gz': '2e8f03926587fc881b12b102048bb04305bf7fb8c83e776f0ccc51eaa2378263'}, + {'aws-types-1.0.3.tar.gz': 'faa59f6f26a3472ca2ce7e7802d037a0a9a7ac23de5761eadd9b68f31ac4fd21'}, + {'backtrace-0.3.69.tar.gz': '2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837'}, + {'base16ct-0.1.1.tar.gz': '349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce'}, + {'base64-0.21.5.tar.gz': '35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9'}, + {'base64-simd-0.8.0.tar.gz': '339abbe78e73178762e23bea9dfd08e697eb3f3301cd4be981c0f78ba5859195'}, + {'base64ct-1.6.0.tar.gz': '8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b'}, + {'bincode-1.3.3.tar.gz': 'b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad'}, + {'bitflags-1.3.2.tar.gz': 'bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a'}, + {'bitflags-2.4.1.tar.gz': '327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07'}, + {'block-buffer-0.10.4.tar.gz': '3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71'}, + {'brotli-3.4.0.tar.gz': '516074a47ef4bce09577a3b379392300159ce5b1ba2e501ff1c819950066100f'}, + {'brotli-decompressor-2.5.1.tar.gz': '4e2e4afe60d7dd600fdd3de8d0f08c2b7ec039712e3b6137ff98b7004e82de4f'}, + {'built-0.7.1.tar.gz': '38d17f4d6e4dc36d1a02fbedc2753a096848e7c1b0772f7654eab8e2c927dd53'}, + {'bumpalo-3.14.0.tar.gz': '7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec'}, + {'bytemuck-1.14.0.tar.gz': '374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6'}, + {'bytemuck_derive-1.5.0.tar.gz': '965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1'}, + {'bytes-1.5.0.tar.gz': 'a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223'}, + {'bytes-utils-0.1.4.tar.gz': '7dafe3a8757b027e2be6e4e5601ed563c55989fcf1546e933c66c8eb3a058d35'}, + {'cargo-lock-9.0.0.tar.gz': 'e11c675378efb449ed3ce8de78d75d0d80542fc98487c26aba28eb3b82feac72'}, + {'casey-0.4.0.tar.gz': '614586263949597dcc18675da12ef9b429135e13628d92eb8b8c6fa50ca5656b'}, + {'cast-0.3.0.tar.gz': '37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5'}, + {'cc-1.0.83.tar.gz': 'f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0'}, + {'cfg-if-1.0.0.tar.gz': 'baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd'}, + {'chrono-0.4.31.tar.gz': '7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38'}, + {'chrono-tz-0.8.4.tar.gz': 'e23185c0e21df6ed832a12e2bda87c7d1def6842881fb634a8511ced741b0d76'}, + {'chrono-tz-build-0.2.1.tar.gz': '433e39f13c9a060046954e0592a8d0a4bcb1040125cbf91cb8ee58964cfb350f'}, + {'ciborium-0.2.1.tar.gz': 'effd91f6c78e5a4ace8a5d3c0b6bfaec9e2baaef55f3efc00e45fb2e477ee926'}, + {'ciborium-io-0.2.1.tar.gz': 'cdf919175532b369853f5d5e20b26b43112613fd6fe7aee757e35f7a44642656'}, + {'ciborium-ll-0.2.1.tar.gz': 'defaa24ecc093c77630e6c15e17c51f5e187bf35ee514f4e2d67baaa96dae22b'}, + {'clap-4.4.11.tar.gz': 'bfaff671f6b22ca62406885ece523383b9b64022e341e53e009a62ebc47a45f2'}, + {'clap_builder-4.4.11.tar.gz': 'a216b506622bb1d316cd51328dce24e07bdff4a6128a47c7e7fad11878d5adbb'}, + {'clap_lex-0.6.0.tar.gz': '702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1'}, + {'cmake-0.1.50.tar.gz': 'a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130'}, + {'comfy-table-7.1.0.tar.gz': '7c64043d6c7b7a4c58e39e7efccfdea7b93d885a795d0c054a69dbbf4dd52686'}, + {'const-oid-0.9.5.tar.gz': '28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f'}, + {'const-random-0.1.17.tar.gz': '5aaf16c9c2c612020bcfd042e170f6e32de9b9d75adb5277cdbbd2e2c8c8299a'}, + {'const-random-macro-0.1.16.tar.gz': 'f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e'}, + {'core-foundation-0.9.4.tar.gz': '91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f'}, + {'core-foundation-sys-0.8.6.tar.gz': '06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f'}, + {'core2-0.4.0.tar.gz': 'b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505'}, + {'cpufeatures-0.2.11.tar.gz': 'ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0'}, + {'crc-2.1.0.tar.gz': '49fc9a695bca7f35f5f4c15cddc84415f66a74ea78eef08e90c5024f2b540e23'}, + {'crc-catalog-1.1.1.tar.gz': 'ccaeedb56da03b09f598226e25e80088cb4cd25f316e6e4df7d695f0feeb1403'}, + {'crc32c-0.6.4.tar.gz': 'd8f48d60e5b4d2c53d5c2b1d8a58c849a70ae5e5509b08a48d047e3b65714a74'}, + {'crc32fast-1.3.2.tar.gz': 'b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d'}, + {'criterion-0.5.1.tar.gz': 'f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f'}, + {'criterion-plot-0.5.0.tar.gz': '6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1'}, + {'crossbeam-channel-0.5.9.tar.gz': '14c3242926edf34aec4ac3a77108ad4854bffaa2e4ddc1824124ce59231302d5'}, + {'crossbeam-deque-0.8.4.tar.gz': 'fca89a0e215bab21874660c67903c5f143333cab1da83d041c7ded6053774751'}, + {'crossbeam-epoch-0.9.16.tar.gz': '2d2fe95351b870527a5d09bf563ed3c97c0cffb87cf1c78a591bf48bb218d9aa'}, + {'crossbeam-queue-0.3.9.tar.gz': 'b9bcf5bdbfdd6030fb4a1c497b5d5fc5921aa2f60d359a17e249c0e6df3de153'}, + {'crossbeam-utils-0.8.17.tar.gz': 'c06d96137f14f244c37f989d9fff8f95e6c18b918e71f36638f8c49112e4c78f'}, + {'crossterm-0.27.0.tar.gz': 'f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df'}, + {'crossterm_winapi-0.9.1.tar.gz': 'acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b'}, + {'crunchy-0.2.2.tar.gz': '7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7'}, + {'crypto-bigint-0.4.9.tar.gz': 'ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef'}, + {'crypto-bigint-0.5.5.tar.gz': '0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76'}, + {'crypto-common-0.1.6.tar.gz': '1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3'}, + {'dary_heap-0.3.6.tar.gz': '7762d17f1241643615821a8455a0b2c3e803784b058693d990b11f2dce25a0ca'}, + {'der-0.6.1.tar.gz': 'f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de'}, + {'deranged-0.3.10.tar.gz': '8eb30d70a07a3b04884d2677f06bec33509dc67ca60d92949e5535352d3191dc'}, + {'digest-0.10.7.tar.gz': '9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292'}, + {'doc-comment-0.3.3.tar.gz': 'fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10'}, + {'dyn-clone-1.0.16.tar.gz': '545b22097d44f8a9581187cdf93de7a71e4722bf51200cfaba810865b49a495d'}, + {'ecdsa-0.14.8.tar.gz': '413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c'}, + {'either-1.9.0.tar.gz': 'a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07'}, + {'elliptic-curve-0.12.3.tar.gz': 'e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3'}, + {'encoding_rs-0.8.33.tar.gz': '7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1'}, + {'enum_dispatch-0.3.12.tar.gz': '8f33313078bb8d4d05a2733a94ac4c2d8a0df9a2b84424ebf4f33bfc224a890e'}, + {'env_logger-0.8.4.tar.gz': 'a19187fea3ac7e84da7dacf48de0c45d63c6a76f9490dae389aead16c243fce3'}, + {'equivalent-1.0.1.tar.gz': '5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5'}, + {'errno-0.3.8.tar.gz': 'a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245'}, + {'ethnum-1.5.0.tar.gz': 'b90ca2580b73ab6a1f724b76ca11ab632df820fd6040c336200d2c1df7b3c82c'}, + {'fallible-streaming-iterator-0.1.9.tar.gz': '7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a'}, + {'fast-float-0.2.0.tar.gz': '95765f67b4b18863968b4a1bd5bb576f732b29a4a28c7cd84c09fa3e2875f33c'}, + {'fastrand-2.0.1.tar.gz': '25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5'}, + {'ff-0.12.1.tar.gz': 'd013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160'}, + {'flate2-1.0.28.tar.gz': '46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e'}, + {'float-cmp-0.9.0.tar.gz': '98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4'}, + {'fnv-1.0.7.tar.gz': '3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1'}, + {'foreign_vec-0.1.0.tar.gz': 'ee1b05cbd864bcaecbd3455d6d967862d446e4ebfc3c2e5e5b9841e53cba6673'}, + {'form_urlencoded-1.2.1.tar.gz': 'e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456'}, + {'futures-0.3.29.tar.gz': 'da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335'}, + {'futures-channel-0.3.29.tar.gz': 'ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb'}, + {'futures-core-0.3.29.tar.gz': 'eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c'}, + {'futures-executor-0.3.29.tar.gz': '0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc'}, + {'futures-io-0.3.29.tar.gz': '8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa'}, + {'futures-macro-0.3.29.tar.gz': '53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb'}, + {'futures-sink-0.3.29.tar.gz': 'e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817'}, + {'futures-task-0.3.29.tar.gz': 'efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2'}, + {'futures-util-0.3.29.tar.gz': 'a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104'}, + {'generic-array-0.14.7.tar.gz': '85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a'}, + {'getrandom-0.2.11.tar.gz': 'fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f'}, + {'gimli-0.28.1.tar.gz': '4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253'}, + {'git2-0.18.1.tar.gz': 'fbf97ba92db08df386e10c8ede66a2a0369bd277090afd8710e19e38de9ec0cd'}, + {'glob-0.3.1.tar.gz': 'd2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b'}, + {'group-0.12.1.tar.gz': '5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7'}, + {'h2-0.3.22.tar.gz': '4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178'}, + {'half-1.8.2.tar.gz': 'eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7'}, + {'half-2.3.1.tar.gz': 'bc52e53916c08643f1b56ec082790d1e86a32e58dc5268f897f313fbae7b4872'}, + {'halfbrown-0.2.4.tar.gz': '5681137554ddff44396e5f149892c769d45301dd9aa19c51602a89ee214cb0ec'}, + {'hash_hasher-2.0.3.tar.gz': '74721d007512d0cb3338cd20f0654ac913920061a4c4d0d8708edb3f2a698c0c'}, + {'hashbrown-0.13.2.tar.gz': '43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e'}, + {'hashbrown-0.14.3.tar.gz': '290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604'}, + {'heck-0.4.1.tar.gz': '95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8'}, + {'hermit-abi-0.3.3.tar.gz': 'd77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7'}, + {'hex-0.4.3.tar.gz': '7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70'}, + {'hmac-0.12.1.tar.gz': '6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e'}, + {'home-0.5.5.tar.gz': '5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb'}, + {'http-0.2.11.tar.gz': '8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb'}, + {'http-body-0.4.6.tar.gz': '7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2'}, + {'httparse-1.8.0.tar.gz': 'd897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904'}, + {'httpdate-1.0.3.tar.gz': 'df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9'}, + {'humantime-2.1.0.tar.gz': '9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4'}, + {'hyper-0.14.27.tar.gz': 'ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468'}, + {'hyper-rustls-0.24.2.tar.gz': 'ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590'}, + {'iana-time-zone-0.1.58.tar.gz': '8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20'}, + {'iana-time-zone-haiku-0.1.2.tar.gz': 'f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f'}, + {'idna-0.5.0.tar.gz': '634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6'}, + {'indexmap-2.1.0.tar.gz': 'd530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f'}, + {'indoc-2.0.4.tar.gz': '1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8'}, + {'inventory-0.3.13.tar.gz': '0508c56cfe9bfd5dfeb0c22ab9a6abfda2f27bdca422132e494266351ed8d83c'}, + {'ipnet-2.9.0.tar.gz': '8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3'}, + {'is-terminal-0.4.9.tar.gz': 'cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b'}, + {'itertools-0.10.5.tar.gz': 'b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473'}, + {'itertools-0.11.0.tar.gz': 'b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57'}, + {'itoa-1.0.10.tar.gz': 'b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c'}, + {'itoap-1.0.1.tar.gz': '9028f49264629065d057f340a86acb84867925865f73bbf8d47b4d149a7e88b8'}, + {'jemalloc-sys-0.5.4+5.3.0-patched.tar.gz': 'ac6c1946e1cea1788cbfde01c993b52a10e2da07f4bac608228d1bed20bfebf2'}, + {'jemallocator-0.5.4.tar.gz': 'a0de374a9f8e63150e6f5e8a60cc14c668226d7a347d8aee1a45766e3c4dd3bc'}, + {'jobserver-0.1.27.tar.gz': '8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d'}, + {'js-sys-0.3.66.tar.gz': 'cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca'}, + {'jsonpath_lib-0.3.0.tar.gz': 'dfb5eb7f47b5b5a7b35262f7b41787a785958001a23ff039cdae926396c6af96'}, + {'lazy_static-1.4.0.tar.gz': 'e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646'}, + {'lexical-core-0.8.5.tar.gz': '2cde5de06e8d4c2faabc400238f9ae1c74d5412d03a7bd067645ccbc47070e46'}, + {'lexical-parse-float-0.8.5.tar.gz': '683b3a5ebd0130b8fb52ba0bdc718cc56815b6a097e28ae5a6997d0ad17dc05f'}, + {'lexical-parse-integer-0.8.6.tar.gz': '6d0994485ed0c312f6d965766754ea177d07f9c00c9b82a5ee62ed5b47945ee9'}, + {'lexical-util-0.8.5.tar.gz': '5255b9ff16ff898710eb9eb63cb39248ea8a5bb036bea8085b1a767ff6c4e3fc'}, + {'lexical-write-float-0.8.5.tar.gz': 'accabaa1c4581f05a3923d1b4cfd124c329352288b7b9da09e766b0668116862'}, + {'lexical-write-integer-0.8.5.tar.gz': 'e1b6f3d1f4422866b68192d62f77bc5c700bee84f3069f2469d7bc8c77852446'}, + {'libc-0.2.151.tar.gz': '302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4'}, + {'libflate-1.4.0.tar.gz': '5ff4ae71b685bbad2f2f391fe74f6b7659a34871c08b210fdc039e43bee07d18'}, + {'libflate-2.0.0.tar.gz': '9f7d5654ae1795afc7ff76f4365c2c8791b0feb18e8996a96adad8ffd7c3b2bf'}, + {'libflate_lz77-1.2.0.tar.gz': 'a52d3a8bfc85f250440e4424db7d857e241a3aebbbe301f3eb606ab15c39acbf'}, + {'libflate_lz77-2.0.0.tar.gz': 'be5f52fb8c451576ec6b79d3f4deb327398bc05bbdbd99021a6e77a4c855d524'}, + {'libgit2-sys-0.16.1+1.7.1.tar.gz': 'f2a2bb3680b094add03bb3732ec520ece34da31a8cd2d633d1389d0f0fb60d0c'}, + {'libloading-0.8.1.tar.gz': 'c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161'}, + {'libm-0.2.8.tar.gz': '4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058'}, + {'libmimalloc-sys-0.1.35.tar.gz': '3979b5c37ece694f1f5e51e7ecc871fdb0f517ed04ee45f88d15d6d553cb9664'}, + {'libz-ng-sys-1.1.12.tar.gz': '3dd9f43e75536a46ee0f92b758f6b63846e594e86638c61a9251338a65baea63'}, + {'libz-sys-1.1.12.tar.gz': 'd97137b25e321a73eef1418d1d5d2eda4d77e12813f8e6dead84bc52c5870a7b'}, + {'linux-raw-sys-0.4.12.tar.gz': 'c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456'}, + {'lock_api-0.4.11.tar.gz': '3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45'}, + {'log-0.4.20.tar.gz': 'b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f'}, + {'lz4-1.24.0.tar.gz': '7e9e2dd86df36ce760a60f6ff6ad526f7ba1f14ba0356f8254fb6905e6494df1'}, + {'lz4-sys-1.9.4.tar.gz': '57d27b317e207b10f69f5e75494119e391a96f48861ae870d1da6edac98ca900'}, + {'matrixmultiply-0.3.8.tar.gz': '7574c1cf36da4798ab73da5b215bbf444f50718207754cb522201d78d1cd0ff2'}, + {'md-5-0.10.6.tar.gz': 'd89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf'}, + {'memchr-2.6.4.tar.gz': 'f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167'}, + {'memmap2-0.7.1.tar.gz': 'f49388d20533534cd19360ad3d6a7dadc885944aa802ba3995040c5ec11288c6'}, + {'memoffset-0.9.0.tar.gz': '5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c'}, + {'mimalloc-0.1.39.tar.gz': 'fa01922b5ea280a911e323e4d2fd24b7fe5cc4042e0d2cda3c40775cdc4bdc9c'}, + {'mime-0.3.17.tar.gz': '6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a'}, + {'miniz_oxide-0.7.1.tar.gz': 'e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7'}, + {'mio-0.8.10.tar.gz': '8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09'}, + {'multiversion-0.7.3.tar.gz': 'b2c7b9d7fe61760ce5ea19532ead98541f6b4c495d87247aff9826445cf6872a'}, + {'multiversion-macros-0.7.3.tar.gz': '26a83d8500ed06d68877e9de1dde76c1dbb83885dcdbda4ef44ccbc3fbda2ac8'}, + {'ndarray-0.15.6.tar.gz': 'adb12d4e967ec485a5f71c6311fe28158e9d6f4bc4a447b474184d0f91a8fa32'}, + {'now-0.1.3.tar.gz': '6d89e9874397a1f0a52fc1f197a8effd9735223cb2390e9dcc83ac6cd02923d0'}, + {'ntapi-0.4.1.tar.gz': 'e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4'}, + {'num-0.4.1.tar.gz': 'b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af'}, + {'num-bigint-0.4.4.tar.gz': '608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0'}, + {'num-complex-0.4.4.tar.gz': '1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214'}, + {'num-integer-0.1.45.tar.gz': '225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9'}, + {'num-iter-0.1.43.tar.gz': '7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252'}, + {'num-rational-0.4.1.tar.gz': '0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0'}, + {'num-traits-0.2.17.tar.gz': '39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c'}, + {'num_cpus-1.16.0.tar.gz': '4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43'}, + {'numpy-0.20.0.tar.gz': 'bef41cbb417ea83b30525259e30ccef6af39b31c240bda578889494c5392d331'}, + {'object-0.32.1.tar.gz': '9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0'}, + {'object_store-0.8.0.tar.gz': '2524735495ea1268be33d200e1ee97455096a0846295a21548cd2f3541de7050'}, + {'once_cell-1.19.0.tar.gz': '3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92'}, + {'oorandom-11.1.3.tar.gz': '0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575'}, + {'openssl-probe-0.1.5.tar.gz': 'ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf'}, + {'outref-0.5.1.tar.gz': '4030760ffd992bef45b0ae3f10ce1aba99e33464c90d14dd7c039884963ddc7a'}, + {'p256-0.11.1.tar.gz': '51f44edd08f51e2ade572f141051021c5af22677e42b7dd28a88155151c33594'}, + {'parking_lot-0.12.1.tar.gz': '3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f'}, + {'parking_lot_core-0.9.9.tar.gz': '4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e'}, + {'parquet-format-safe-0.2.4.tar.gz': '1131c54b167dd4e4799ce762e1ab01549ebb94d5bdd13e6ec1b467491c378e1f'}, + {'parse-zoneinfo-0.3.0.tar.gz': 'c705f256449c60da65e11ff6626e0c16a0a0b96aaa348de61376b249bc340f41'}, + {'percent-encoding-2.3.1.tar.gz': 'e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e'}, + {'phf-0.11.2.tar.gz': 'ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc'}, + {'phf_codegen-0.11.2.tar.gz': 'e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a'}, + {'phf_generator-0.11.2.tar.gz': '48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0'}, + {'phf_shared-0.11.2.tar.gz': '90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b'}, + {'pin-project-lite-0.2.13.tar.gz': '8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58'}, + {'pin-utils-0.1.0.tar.gz': '8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184'}, + {'pkcs8-0.9.0.tar.gz': '9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba'}, + {'pkg-config-0.3.27.tar.gz': '26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964'}, + {'planus-0.3.1.tar.gz': 'fc1691dd09e82f428ce8d6310bd6d5da2557c82ff17694d2a32cad7242aea89f'}, + {'plotters-0.3.5.tar.gz': 'd2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45'}, + {'plotters-backend-0.3.5.tar.gz': '9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609'}, + {'plotters-svg-0.3.5.tar.gz': '38f6d39893cca0701371e3c27294f09797214b86f1fb951b89ade8ec04e2abab'}, + {'powerfmt-0.2.0.tar.gz': '439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391'}, + {'ppv-lite86-0.2.17.tar.gz': '5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de'}, + {'proc-macro2-1.0.70.tar.gz': '39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b'}, + {'proptest-1.4.0.tar.gz': '31b476131c3c86cb68032fdc5cb6d5a1045e3e42d96b69fa599fd77701e1f5bf'}, + {'prost-0.11.9.tar.gz': '0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd'}, + {'prost-derive-0.11.9.tar.gz': 'e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4'}, + {'pyo3-0.20.0.tar.gz': '04e8453b658fe480c3e70c8ed4e3d3ec33eb74988bd186561b0cc66b85c3bc4b'}, + {'pyo3-build-config-0.20.0.tar.gz': 'a96fe70b176a89cff78f2fa7b3c930081e163d5379b4dcdf993e3ae29ca662e5'}, + {'pyo3-built-0.4.7.tar.gz': 'be6d574e0f8cab2cdd1eeeb640cbf845c974519fa9e9b62fa9c08ecece0ca5de'}, + {'pyo3-ffi-0.20.0.tar.gz': '214929900fd25e6604661ed9cf349727c8920d47deff196c4e28165a6ef2a96b'}, + {'pyo3-macros-0.20.0.tar.gz': 'dac53072f717aa1bfa4db832b39de8c875b7c7af4f4a6fe93cdbf9264cf8383b'}, + {'pyo3-macros-backend-0.20.0.tar.gz': '7774b5a8282bd4f25f803b1f0d945120be959a36c72e08e7cd031c792fdfd424'}, + {'quad-rand-0.2.1.tar.gz': '658fa1faf7a4cc5f057c9ee5ef560f717ad9d8dc66d975267f709624d6e1ab88'}, + {'quick-xml-0.31.0.tar.gz': '1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33'}, + {'quickcheck-1.0.3.tar.gz': '588f6378e4dd99458b60ec275b4477add41ce4fa9f64dcba6f15adccb19b50d6'}, + {'quote-1.0.33.tar.gz': '5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae'}, + {'rand-0.8.5.tar.gz': '34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404'}, + {'rand_chacha-0.3.1.tar.gz': 'e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88'}, + {'rand_core-0.6.4.tar.gz': 'ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c'}, + {'rand_distr-0.4.3.tar.gz': '32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31'}, + {'rand_regex-0.15.1.tar.gz': '8b2a9fe2d7d9eeaf3279d1780452a5bbd26b31b27938787ef1c3e930d1e9cfbd'}, + {'rand_xorshift-0.3.0.tar.gz': 'd25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f'}, + {'rawpointer-0.2.1.tar.gz': '60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3'}, + {'rayon-1.8.0.tar.gz': '9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1'}, + {'rayon-core-1.12.0.tar.gz': '5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed'}, + {'redox_syscall-0.4.1.tar.gz': '4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa'}, + {'ref-cast-1.0.21.tar.gz': '53313ec9f12686aeeffb43462c3ac77aa25f590a5f630eb2cde0de59417b29c7'}, + {'ref-cast-impl-1.0.21.tar.gz': '2566c4bf6845f2c2e83b27043c3f5dfcd5ba8f2937d6c00dc009bfb51a079dc4'}, + {'regex-1.10.2.tar.gz': '380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343'}, + {'regex-automata-0.4.3.tar.gz': '5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f'}, + {'regex-lite-0.1.5.tar.gz': '30b661b2f27137bdbc16f00eda72866a92bb28af1753ffbd56744fb6e2e9cd8e'}, + {'regex-syntax-0.6.29.tar.gz': 'f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1'}, + {'regex-syntax-0.8.2.tar.gz': 'c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f'}, + {'reqwest-0.11.22.tar.gz': '046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b'}, + {'rfc6979-0.3.1.tar.gz': '7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb'}, + {'ring-0.17.7.tar.gz': '688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74'}, + {'rle-decode-fast-1.0.3.tar.gz': '3582f63211428f83597b51b2ddb88e2a91a9d52d12831f9d08f5e624e8977422'}, + {'rustc-demangle-0.1.23.tar.gz': 'd626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76'}, + {'rustc-hash-1.1.0.tar.gz': '08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2'}, + {'rustc_version-0.4.0.tar.gz': 'bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366'}, + {'rustix-0.38.28.tar.gz': '72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316'}, + {'rustls-0.21.10.tar.gz': 'f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba'}, + {'rustls-native-certs-0.6.3.tar.gz': 'a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00'}, + {'rustls-pemfile-1.0.4.tar.gz': '1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c'}, + {'rustls-webpki-0.101.7.tar.gz': '8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765'}, + {'rustversion-1.0.14.tar.gz': '7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4'}, + {'ryu-1.0.16.tar.gz': 'f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c'}, + {'same-file-1.0.6.tar.gz': '93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502'}, + {'sample-arrow2-0.17.1.tar.gz': '722050f91586506195398fd22d834eb8768716084f6ebf9f32b917ed422b6afb'}, + {'sample-std-0.1.1.tar.gz': '567a153dc3302ce838920fb095c025a6d0529fff0290d25deeec2136e41a57c8'}, + {'sample-test-0.1.1.tar.gz': '713e500947ff19fc1ae2805afa33ef45f3bb2ec656c77d92252d24cf9e3091b2'}, + {'sample-test-macros-0.1.1.tar.gz': 'df1a2c832a259aae95b6ed1da3aa377111ffde38d4282fa734faa3fff356534e'}, + {'schannel-0.1.22.tar.gz': '0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88'}, + {'scopeguard-1.2.0.tar.gz': '94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49'}, + {'sct-0.7.1.tar.gz': 'da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414'}, + {'sec1-0.3.0.tar.gz': '3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928'}, + {'security-framework-2.9.2.tar.gz': '05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de'}, + {'security-framework-sys-2.9.1.tar.gz': 'e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a'}, + {'semver-1.0.20.tar.gz': '836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090'}, + {'seq-macro-0.3.5.tar.gz': 'a3f0bf26fd526d2a95683cd0f87bf103b8539e2ca1ef48ce002d67aad59aa0b4'}, + {'serde-1.0.193.tar.gz': '25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89'}, + {'serde_derive-1.0.193.tar.gz': '43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3'}, + {'serde_json-1.0.108.tar.gz': '3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b'}, + {'serde_spanned-0.6.4.tar.gz': '12022b835073e5b11e90a14f86838ceb1c8fb0325b72416845c487ac0fa95e80'}, + {'serde_urlencoded-0.7.1.tar.gz': 'd3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd'}, + {'sha1-0.10.6.tar.gz': 'e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba'}, + {'sha2-0.10.8.tar.gz': '793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8'}, + {'signal-hook-registry-1.4.1.tar.gz': 'd8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1'}, + {'signature-1.6.4.tar.gz': '74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c'}, + {'simd-json-0.13.4.tar.gz': 'e5a3720326b20bf5b95b72dbbd133caae7e0dcf71eae8f6e6656e71a7e5c9aaa'}, + {'simdutf8-0.1.4.tar.gz': 'f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a'}, + {'siphasher-0.3.11.tar.gz': '38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d'}, + {'slab-0.4.9.tar.gz': '8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67'}, + {'smallvec-1.11.2.tar.gz': '4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970'}, + {'smartstring-1.0.1.tar.gz': '3fb72c633efbaa2dd666986505016c32c3044395ceaf881518399d2f4127ee29'}, + {'snafu-0.7.5.tar.gz': 'e4de37ad025c587a29e8f3f5605c00f70b98715ef90b9061a815b9e59e9042d6'}, + {'snafu-derive-0.7.5.tar.gz': '990079665f075b699031e9c08fd3ab99be5029b96f3b78dc0709e8f77e4efebf'}, + {'snap-1.1.1.tar.gz': '1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b'}, + {'socket2-0.4.10.tar.gz': '9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d'}, + {'socket2-0.5.5.tar.gz': '7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9'}, + {'spin-0.9.8.tar.gz': '6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67'}, + {'spki-0.6.0.tar.gz': '67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b'}, + {'sqlparser-0.39.0.tar.gz': '743b4dc2cbde11890ccb254a8fc9d537fa41b36da00de2a1c5e9848c9bc42bd7'}, + {'static_assertions-1.1.0.tar.gz': 'a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f'}, + {'streaming-decompression-0.1.2.tar.gz': 'bf6cc3b19bfb128a8ad11026086e31d3ce9ad23f8ea37354b31383a187c44cf3'}, + {'streaming-iterator-0.1.9.tar.gz': '2b2231b7c3057d5e4ad0156fb3dc807d900806020c5ffa3ee6ff2c8c76fb8520'}, + {'strength_reduce-0.2.4.tar.gz': 'fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82'}, + {'strum-0.25.0.tar.gz': '290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125'}, + {'strum_macros-0.25.3.tar.gz': '23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0'}, + {'subtle-2.5.0.tar.gz': '81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc'}, + {'syn-1.0.109.tar.gz': '72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237'}, + {'syn-2.0.41.tar.gz': '44c8b28c477cc3bf0e7966561e3460130e1255f7a1cf71931075f1c5e7a7e269'}, + {'sysinfo-0.29.11.tar.gz': 'cd727fc423c2060f6c92d9534cef765c65a6ed3f428a03d7def74a8c4348e666'}, + {'system-configuration-0.5.1.tar.gz': 'ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7'}, + {'system-configuration-sys-0.5.0.tar.gz': 'a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9'}, + {'target-features-0.1.5.tar.gz': 'cfb5fa503293557c5158bd215fdc225695e567a77e453f5d4452a50a193969bd'}, + {'target-lexicon-0.12.12.tar.gz': '14c39fd04924ca3a864207c66fc2cd7d22d7c016007f9ce846cbb9326331930a'}, + {'tempfile-3.8.1.tar.gz': '7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5'}, + {'thiserror-1.0.50.tar.gz': 'f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2'}, + {'thiserror-impl-1.0.50.tar.gz': '266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8'}, + {'time-0.3.30.tar.gz': 'c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5'}, + {'time-core-0.1.2.tar.gz': 'ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3'}, + {'time-macros-0.2.15.tar.gz': '4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20'}, + {'tiny-keccak-2.0.2.tar.gz': '2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237'}, + {'tinytemplate-1.2.1.tar.gz': 'be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc'}, + {'tinyvec-1.6.0.tar.gz': '87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50'}, + {'tinyvec_macros-0.1.1.tar.gz': '1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20'}, + {'tokio-1.35.0.tar.gz': '841d45b238a16291a4e1584e61820b8ae57d696cc5015c459c229ccc6990cc1c'}, + {'tokio-macros-2.2.0.tar.gz': '5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b'}, + {'tokio-rustls-0.24.1.tar.gz': 'c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081'}, + {'tokio-util-0.7.10.tar.gz': '5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15'}, + {'toml-0.7.8.tar.gz': 'dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257'}, + {'toml_datetime-0.6.5.tar.gz': '3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1'}, + {'toml_edit-0.19.15.tar.gz': '1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421'}, + {'tower-service-0.3.2.tar.gz': 'b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52'}, + {'tracing-0.1.40.tar.gz': 'c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef'}, + {'tracing-attributes-0.1.27.tar.gz': '34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7'}, + {'tracing-core-0.1.32.tar.gz': 'c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54'}, + {'try-lock-0.2.5.tar.gz': 'e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b'}, + {'typed-builder-0.16.2.tar.gz': '34085c17941e36627a879208083e25d357243812c30e7d7387c3b954f30ade16'}, + {'typed-builder-macro-0.16.2.tar.gz': 'f03ca4cb38206e2bef0700092660bb74d696f808514dae47fa1467cbfe26e96e'}, + {'typenum-1.17.0.tar.gz': '42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825'}, + {'unarray-0.1.4.tar.gz': 'eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94'}, + {'unicode-bidi-0.3.14.tar.gz': '6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416'}, + {'unicode-ident-1.0.12.tar.gz': '3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b'}, + {'unicode-normalization-0.1.22.tar.gz': '5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921'}, + {'unicode-reverse-1.0.8.tar.gz': '0bea5dacebb0d2d0a69a6700a05b59b3908bf801bf563a49bd27a1b60122962c'}, + {'unicode-segmentation-1.10.1.tar.gz': '1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36'}, + {'unicode-width-0.1.11.tar.gz': 'e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85'}, + {'unindent-0.2.3.tar.gz': 'c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce'}, + {'untrusted-0.9.0.tar.gz': '8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1'}, + {'url-2.5.0.tar.gz': '31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633'}, + {'urlencoding-2.1.3.tar.gz': 'daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da'}, + {'uuid-1.6.1.tar.gz': '5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560'}, + {'value-trait-0.8.0.tar.gz': 'ea87257cfcbedcb9444eda79c59fdfea71217e6305afee8ee33f500375c2ac97'}, + {'vcpkg-0.2.15.tar.gz': 'accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426'}, + {'version_check-0.9.4.tar.gz': '49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f'}, + {'vsimd-0.8.0.tar.gz': '5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64'}, + {'walkdir-2.4.0.tar.gz': 'd71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee'}, + {'want-0.3.1.tar.gz': 'bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e'}, + {'wasi-0.11.0+wasi-snapshot-preview1.tar.gz': '9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423'}, + {'wasm-bindgen-0.2.89.tar.gz': '0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e'}, + {'wasm-bindgen-backend-0.2.89.tar.gz': '1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826'}, + {'wasm-bindgen-futures-0.4.39.tar.gz': 'ac36a15a220124ac510204aec1c3e5db8a22ab06fd6706d881dc6149f8ed9a12'}, + {'wasm-bindgen-macro-0.2.89.tar.gz': '0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2'}, + {'wasm-bindgen-macro-support-0.2.89.tar.gz': 'f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283'}, + {'wasm-bindgen-shared-0.2.89.tar.gz': '7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f'}, + {'wasm-streams-0.3.0.tar.gz': 'b4609d447824375f43e1ffbc051b50ad8f4b3ae8219680c94452ea05eb240ac7'}, + {'web-sys-0.3.66.tar.gz': '50c24a44ec86bb68fbecd1b3efed7e85ea5621b39b35ef2766b66cd984f8010f'}, + {'webpki-roots-0.25.3.tar.gz': '1778a42e8b3b90bff8d0f5032bf22250792889a5cdc752aa0020c84abe3aaf10'}, + {'winapi-0.3.9.tar.gz': '5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419'}, + {'winapi-i686-pc-windows-gnu-0.4.0.tar.gz': 'ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6'}, + {'winapi-util-0.1.6.tar.gz': 'f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596'}, + {'winapi-x86_64-pc-windows-gnu-0.4.0.tar.gz': '712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f'}, + {'windows-core-0.51.1.tar.gz': 'f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64'}, + {'windows-sys-0.48.0.tar.gz': '677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9'}, + {'windows-sys-0.52.0.tar.gz': '282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d'}, + {'windows-targets-0.48.5.tar.gz': '9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c'}, + {'windows-targets-0.52.0.tar.gz': '8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd'}, + {'windows_aarch64_gnullvm-0.48.5.tar.gz': '2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8'}, + {'windows_aarch64_gnullvm-0.52.0.tar.gz': 'cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea'}, + {'windows_aarch64_msvc-0.48.5.tar.gz': 'dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc'}, + {'windows_aarch64_msvc-0.52.0.tar.gz': 'bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef'}, + {'windows_i686_gnu-0.48.5.tar.gz': 'a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e'}, + {'windows_i686_gnu-0.52.0.tar.gz': 'a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313'}, + {'windows_i686_msvc-0.48.5.tar.gz': '8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406'}, + {'windows_i686_msvc-0.52.0.tar.gz': 'ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a'}, + {'windows_x86_64_gnu-0.48.5.tar.gz': '53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e'}, + {'windows_x86_64_gnu-0.52.0.tar.gz': '3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd'}, + {'windows_x86_64_gnullvm-0.48.5.tar.gz': '0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc'}, + {'windows_x86_64_gnullvm-0.52.0.tar.gz': '1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e'}, + {'windows_x86_64_msvc-0.48.5.tar.gz': 'ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538'}, + {'windows_x86_64_msvc-0.52.0.tar.gz': 'dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04'}, + {'winnow-0.5.28.tar.gz': '6c830786f7720c2fd27a1a0e27a709dbd3c4d009b56d098fc742d4f4eab91fe2'}, + {'winreg-0.50.0.tar.gz': '524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1'}, + {'xmlparser-0.13.6.tar.gz': '66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4'}, + {'xxhash-rust-0.8.7.tar.gz': '9828b178da53440fa9c766a3d2f73f7cf5d0ac1fe3980c1e5018d899fd19e07b'}, + {'zerocopy-0.7.31.tar.gz': '1c4061bedbb353041c12f413700357bec76df2c7e2ca8e4df8bac24c6bf68e3d'}, + {'zerocopy-derive-0.7.31.tar.gz': 'b3c129550b3e6de3fd0ba67ba5c81818f9805e58b8d7fee80a3a59d2c9fc601a'}, + {'zeroize-1.7.0.tar.gz': '525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d'}, + {'zstd-0.13.0.tar.gz': 'bffb3309596d527cfcba7dfc6ed6052f1d39dfbd7c867aa2e865e4a449c10110'}, + {'zstd-safe-7.0.0.tar.gz': '43747c7422e2924c11144d5229878b98180ef8b06cca4ab5af37afc8a8d8ea3e'}, + {'zstd-sys-2.0.9+zstd.1.5.5.tar.gz': '9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656'}, +] + +crates = [ + ('addr2line', '0.21.0'), + ('adler', '1.0.2'), + ('adler32', '1.2.0'), + ('ahash', '0.8.6'), + ('aho-corasick', '1.1.2'), + ('alloc-no-stdlib', '2.0.4'), + ('alloc-stdlib', '0.2.2'), + ('allocator-api2', '0.2.16'), + ('android-tzdata', '0.1.1'), + ('android_system_properties', '0.1.5'), + ('anes', '0.1.6'), + ('anstyle', '1.0.4'), + ('anyhow', '1.0.75'), + ('apache-avro', '0.16.0'), + ('argminmax', '0.6.1'), + ('array-init-cursor', '0.2.0'), + ('arrow-array', '49.0.0'), + ('arrow-buffer', '49.0.0'), + ('arrow-data', '49.0.0'), + ('arrow-format', '0.8.1'), + ('arrow-schema', '49.0.0'), + ('arrow2', '0.17.4'), + ('async-stream', '0.3.5'), + ('async-stream-impl', '0.3.5'), + ('async-trait', '0.1.74'), + ('atoi', '2.0.0'), + ('atoi_simd', '0.15.5'), + ('autocfg', '1.1.0'), + ('avro-schema', '0.3.0'), + ('aws-config', '1.0.3'), + ('aws-credential-types', '1.0.3'), + ('aws-http', '0.60.0'), + ('aws-runtime', '1.0.3'), + ('aws-sdk-s3', '1.7.0'), + ('aws-sdk-sso', '1.6.0'), + ('aws-sdk-ssooidc', '1.6.0'), + ('aws-sdk-sts', '1.6.0'), + ('aws-sigv4', '1.0.3'), + ('aws-smithy-async', '1.1.1'), + ('aws-smithy-checksums', '0.60.1'), + ('aws-smithy-eventstream', '0.60.1'), + ('aws-smithy-http', '0.60.1'), + ('aws-smithy-json', '0.60.1'), + ('aws-smithy-query', '0.60.1'), + ('aws-smithy-runtime', '1.1.1'), + ('aws-smithy-runtime-api', '1.1.1'), + ('aws-smithy-types', '1.1.1'), + ('aws-smithy-xml', '0.60.1'), + ('aws-types', '1.0.3'), + ('backtrace', '0.3.69'), + ('base16ct', '0.1.1'), + ('base64', '0.21.5'), + ('base64-simd', '0.8.0'), + ('base64ct', '1.6.0'), + ('bincode', '1.3.3'), + ('bitflags', '1.3.2'), + ('bitflags', '2.4.1'), + ('block-buffer', '0.10.4'), + ('brotli', '3.4.0'), + ('brotli-decompressor', '2.5.1'), + ('built', '0.7.1'), + ('bumpalo', '3.14.0'), + ('bytemuck', '1.14.0'), + ('bytemuck_derive', '1.5.0'), + ('bytes', '1.5.0'), + ('bytes-utils', '0.1.4'), + ('cargo-lock', '9.0.0'), + ('casey', '0.4.0'), + ('cast', '0.3.0'), + ('cc', '1.0.83'), + ('cfg-if', '1.0.0'), + ('chrono', '0.4.31'), + ('chrono-tz', '0.8.4'), + ('chrono-tz-build', '0.2.1'), + ('ciborium', '0.2.1'), + ('ciborium-io', '0.2.1'), + ('ciborium-ll', '0.2.1'), + ('clap', '4.4.11'), + ('clap_builder', '4.4.11'), + ('clap_lex', '0.6.0'), + ('cmake', '0.1.50'), + ('comfy-table', '7.1.0'), + ('const-oid', '0.9.5'), + ('const-random', '0.1.17'), + ('const-random-macro', '0.1.16'), + ('core-foundation', '0.9.4'), + ('core-foundation-sys', '0.8.6'), + ('core2', '0.4.0'), + ('cpufeatures', '0.2.11'), + ('crc', '2.1.0'), + ('crc-catalog', '1.1.1'), + ('crc32c', '0.6.4'), + ('crc32fast', '1.3.2'), + ('criterion', '0.5.1'), + ('criterion-plot', '0.5.0'), + ('crossbeam-channel', '0.5.9'), + ('crossbeam-deque', '0.8.4'), + ('crossbeam-epoch', '0.9.16'), + ('crossbeam-queue', '0.3.9'), + ('crossbeam-utils', '0.8.17'), + ('crossterm', '0.27.0'), + ('crossterm_winapi', '0.9.1'), + ('crunchy', '0.2.2'), + ('crypto-bigint', '0.4.9'), + ('crypto-bigint', '0.5.5'), + ('crypto-common', '0.1.6'), + ('dary_heap', '0.3.6'), + ('der', '0.6.1'), + ('deranged', '0.3.10'), + ('digest', '0.10.7'), + ('doc-comment', '0.3.3'), + ('dyn-clone', '1.0.16'), + ('ecdsa', '0.14.8'), + ('either', '1.9.0'), + ('elliptic-curve', '0.12.3'), + ('encoding_rs', '0.8.33'), + ('enum_dispatch', '0.3.12'), + ('env_logger', '0.8.4'), + ('equivalent', '1.0.1'), + ('errno', '0.3.8'), + ('ethnum', '1.5.0'), + ('fallible-streaming-iterator', '0.1.9'), + ('fast-float', '0.2.0'), + ('fastrand', '2.0.1'), + ('ff', '0.12.1'), + ('flate2', '1.0.28'), + ('float-cmp', '0.9.0'), + ('fnv', '1.0.7'), + ('foreign_vec', '0.1.0'), + ('form_urlencoded', '1.2.1'), + ('futures', '0.3.29'), + ('futures-channel', '0.3.29'), + ('futures-core', '0.3.29'), + ('futures-executor', '0.3.29'), + ('futures-io', '0.3.29'), + ('futures-macro', '0.3.29'), + ('futures-sink', '0.3.29'), + ('futures-task', '0.3.29'), + ('futures-util', '0.3.29'), + ('generic-array', '0.14.7'), + ('getrandom', '0.2.11'), + ('gimli', '0.28.1'), + ('git2', '0.18.1'), + ('glob', '0.3.1'), + ('group', '0.12.1'), + ('h2', '0.3.22'), + ('half', '1.8.2'), + ('half', '2.3.1'), + ('halfbrown', '0.2.4'), + ('hash_hasher', '2.0.3'), + ('hashbrown', '0.13.2'), + ('hashbrown', '0.14.3'), + ('heck', '0.4.1'), + ('hermit-abi', '0.3.3'), + ('hex', '0.4.3'), + ('hmac', '0.12.1'), + ('home', '0.5.5'), + ('http', '0.2.11'), + ('http-body', '0.4.6'), + ('httparse', '1.8.0'), + ('httpdate', '1.0.3'), + ('humantime', '2.1.0'), + ('hyper', '0.14.27'), + ('hyper-rustls', '0.24.2'), + ('iana-time-zone', '0.1.58'), + ('iana-time-zone-haiku', '0.1.2'), + ('idna', '0.5.0'), + ('indexmap', '2.1.0'), + ('indoc', '2.0.4'), + ('inventory', '0.3.13'), + ('ipnet', '2.9.0'), + ('is-terminal', '0.4.9'), + ('itertools', '0.10.5'), + ('itertools', '0.11.0'), + ('itoa', '1.0.10'), + ('itoap', '1.0.1'), + ('jemalloc-sys', '0.5.4+5.3.0-patched'), + ('jemallocator', '0.5.4'), + ('jobserver', '0.1.27'), + ('js-sys', '0.3.66'), + ('jsonpath_lib', '0.3.0', 'https://github.com/ritchie46/jsonpath', '24eaf0b4416edff38a4d1b6b17bc4b9f3f047b4b'), + ('lazy_static', '1.4.0'), + ('lexical-core', '0.8.5'), + ('lexical-parse-float', '0.8.5'), + ('lexical-parse-integer', '0.8.6'), + ('lexical-util', '0.8.5'), + ('lexical-write-float', '0.8.5'), + ('lexical-write-integer', '0.8.5'), + ('libc', '0.2.151'), + ('libflate', '1.4.0'), + ('libflate', '2.0.0'), + ('libflate_lz77', '1.2.0'), + ('libflate_lz77', '2.0.0'), + ('libgit2-sys', '0.16.1+1.7.1'), + ('libloading', '0.8.1'), + ('libm', '0.2.8'), + ('libmimalloc-sys', '0.1.35'), + ('libz-ng-sys', '1.1.12'), + ('libz-sys', '1.1.12'), + ('linux-raw-sys', '0.4.12'), + ('lock_api', '0.4.11'), + ('log', '0.4.20'), + ('lz4', '1.24.0'), + ('lz4-sys', '1.9.4'), + ('matrixmultiply', '0.3.8'), + ('md-5', '0.10.6'), + ('memchr', '2.6.4'), + ('memmap2', '0.7.1'), + ('memoffset', '0.9.0'), + ('mimalloc', '0.1.39'), + ('mime', '0.3.17'), + ('miniz_oxide', '0.7.1'), + ('mio', '0.8.10'), + ('multiversion', '0.7.3'), + ('multiversion-macros', '0.7.3'), + ('ndarray', '0.15.6'), + ('now', '0.1.3'), + ('ntapi', '0.4.1'), + ('num', '0.4.1'), + ('num-bigint', '0.4.4'), + ('num-complex', '0.4.4'), + ('num-integer', '0.1.45'), + ('num-iter', '0.1.43'), + ('num-rational', '0.4.1'), + ('num-traits', '0.2.17'), + ('num_cpus', '1.16.0'), + ('numpy', '0.20.0'), + ('object', '0.32.1'), + ('object_store', '0.8.0'), + ('once_cell', '1.19.0'), + ('oorandom', '11.1.3'), + ('openssl-probe', '0.1.5'), + ('outref', '0.5.1'), + ('p256', '0.11.1'), + ('parking_lot', '0.12.1'), + ('parking_lot_core', '0.9.9'), + ('parquet-format-safe', '0.2.4'), + ('parse-zoneinfo', '0.3.0'), + ('percent-encoding', '2.3.1'), + ('phf', '0.11.2'), + ('phf_codegen', '0.11.2'), + ('phf_generator', '0.11.2'), + ('phf_shared', '0.11.2'), + ('pin-project-lite', '0.2.13'), + ('pin-utils', '0.1.0'), + ('pkcs8', '0.9.0'), + ('pkg-config', '0.3.27'), + ('planus', '0.3.1'), + ('plotters', '0.3.5'), + ('plotters-backend', '0.3.5'), + ('plotters-svg', '0.3.5'), + ('powerfmt', '0.2.0'), + ('ppv-lite86', '0.2.17'), + ('proc-macro2', '1.0.70'), + ('proptest', '1.4.0'), + ('prost', '0.11.9'), + ('prost-derive', '0.11.9'), + ('pyo3', '0.20.0'), + ('pyo3-build-config', '0.20.0'), + ('pyo3-built', '0.4.7'), + ('pyo3-ffi', '0.20.0'), + ('pyo3-macros', '0.20.0'), + ('pyo3-macros-backend', '0.20.0'), + ('quad-rand', '0.2.1'), + ('quick-xml', '0.31.0'), + ('quickcheck', '1.0.3'), + ('quote', '1.0.33'), + ('rand', '0.8.5'), + ('rand_chacha', '0.3.1'), + ('rand_core', '0.6.4'), + ('rand_distr', '0.4.3'), + ('rand_regex', '0.15.1'), + ('rand_xorshift', '0.3.0'), + ('rawpointer', '0.2.1'), + ('rayon', '1.8.0'), + ('rayon-core', '1.12.0'), + ('redox_syscall', '0.4.1'), + ('ref-cast', '1.0.21'), + ('ref-cast-impl', '1.0.21'), + ('regex', '1.10.2'), + ('regex-automata', '0.4.3'), + ('regex-lite', '0.1.5'), + ('regex-syntax', '0.6.29'), + ('regex-syntax', '0.8.2'), + ('reqwest', '0.11.22'), + ('rfc6979', '0.3.1'), + ('ring', '0.17.7'), + ('rle-decode-fast', '1.0.3'), + ('rustc-demangle', '0.1.23'), + ('rustc-hash', '1.1.0'), + ('rustc_version', '0.4.0'), + ('rustix', '0.38.28'), + ('rustls', '0.21.10'), + ('rustls-native-certs', '0.6.3'), + ('rustls-pemfile', '1.0.4'), + ('rustls-webpki', '0.101.7'), + ('rustversion', '1.0.14'), + ('ryu', '1.0.16'), + ('same-file', '1.0.6'), + ('sample-arrow2', '0.17.1'), + ('sample-std', '0.1.1'), + ('sample-test', '0.1.1'), + ('sample-test-macros', '0.1.1'), + ('schannel', '0.1.22'), + ('scopeguard', '1.2.0'), + ('sct', '0.7.1'), + ('sec1', '0.3.0'), + ('security-framework', '2.9.2'), + ('security-framework-sys', '2.9.1'), + ('semver', '1.0.20'), + ('seq-macro', '0.3.5'), + ('serde', '1.0.193'), + ('serde_derive', '1.0.193'), + ('serde_json', '1.0.108'), + ('serde_spanned', '0.6.4'), + ('serde_urlencoded', '0.7.1'), + ('sha1', '0.10.6'), + ('sha2', '0.10.8'), + ('signal-hook-registry', '1.4.1'), + ('signature', '1.6.4'), + ('simd-json', '0.13.4'), + ('simdutf8', '0.1.4'), + ('siphasher', '0.3.11'), + ('slab', '0.4.9'), + ('smallvec', '1.11.2'), + ('smartstring', '1.0.1'), + ('snafu', '0.7.5'), + ('snafu-derive', '0.7.5'), + ('snap', '1.1.1'), + ('socket2', '0.4.10'), + ('socket2', '0.5.5'), + ('spin', '0.9.8'), + ('spki', '0.6.0'), + ('sqlparser', '0.39.0'), + ('static_assertions', '1.1.0'), + ('streaming-decompression', '0.1.2'), + ('streaming-iterator', '0.1.9'), + ('strength_reduce', '0.2.4'), + ('strum', '0.25.0'), + ('strum_macros', '0.25.3'), + ('subtle', '2.5.0'), + ('syn', '1.0.109'), + ('syn', '2.0.41'), + ('sysinfo', '0.29.11'), + ('system-configuration', '0.5.1'), + ('system-configuration-sys', '0.5.0'), + ('target-features', '0.1.5'), + ('target-lexicon', '0.12.12'), + ('tempfile', '3.8.1'), + ('thiserror', '1.0.50'), + ('thiserror-impl', '1.0.50'), + ('time', '0.3.30'), + ('time-core', '0.1.2'), + ('time-macros', '0.2.15'), + ('tiny-keccak', '2.0.2'), + ('tinytemplate', '1.2.1'), + ('tinyvec', '1.6.0'), + ('tinyvec_macros', '0.1.1'), + ('tokio', '1.35.0'), + ('tokio-macros', '2.2.0'), + ('tokio-rustls', '0.24.1'), + ('tokio-util', '0.7.10'), + ('toml', '0.7.8'), + ('toml_datetime', '0.6.5'), + ('toml_edit', '0.19.15'), + ('tower-service', '0.3.2'), + ('tracing', '0.1.40'), + ('tracing-attributes', '0.1.27'), + ('tracing-core', '0.1.32'), + ('try-lock', '0.2.5'), + ('typed-builder', '0.16.2'), + ('typed-builder-macro', '0.16.2'), + ('typenum', '1.17.0'), + ('unarray', '0.1.4'), + ('unicode-bidi', '0.3.14'), + ('unicode-ident', '1.0.12'), + ('unicode-normalization', '0.1.22'), + ('unicode-reverse', '1.0.8'), + ('unicode-segmentation', '1.10.1'), + ('unicode-width', '0.1.11'), + ('unindent', '0.2.3'), + ('untrusted', '0.9.0'), + ('url', '2.5.0'), + ('urlencoding', '2.1.3'), + ('uuid', '1.6.1'), + ('value-trait', '0.8.0'), + ('vcpkg', '0.2.15'), + ('version_check', '0.9.4'), + ('vsimd', '0.8.0'), + ('walkdir', '2.4.0'), + ('want', '0.3.1'), + ('wasi', '0.11.0+wasi-snapshot-preview1'), + ('wasm-bindgen', '0.2.89'), + ('wasm-bindgen-backend', '0.2.89'), + ('wasm-bindgen-futures', '0.4.39'), + ('wasm-bindgen-macro', '0.2.89'), + ('wasm-bindgen-macro-support', '0.2.89'), + ('wasm-bindgen-shared', '0.2.89'), + ('wasm-streams', '0.3.0'), + ('web-sys', '0.3.66'), + ('webpki-roots', '0.25.3'), + ('winapi', '0.3.9'), + ('winapi-i686-pc-windows-gnu', '0.4.0'), + ('winapi-util', '0.1.6'), + ('winapi-x86_64-pc-windows-gnu', '0.4.0'), + ('windows-core', '0.51.1'), + ('windows-sys', '0.48.0'), + ('windows-sys', '0.52.0'), + ('windows-targets', '0.48.5'), + ('windows-targets', '0.52.0'), + ('windows_aarch64_gnullvm', '0.48.5'), + ('windows_aarch64_gnullvm', '0.52.0'), + ('windows_aarch64_msvc', '0.48.5'), + ('windows_aarch64_msvc', '0.52.0'), + ('windows_i686_gnu', '0.48.5'), + ('windows_i686_gnu', '0.52.0'), + ('windows_i686_msvc', '0.48.5'), + ('windows_i686_msvc', '0.52.0'), + ('windows_x86_64_gnu', '0.48.5'), + ('windows_x86_64_gnu', '0.52.0'), + ('windows_x86_64_gnullvm', '0.48.5'), + ('windows_x86_64_gnullvm', '0.52.0'), + ('windows_x86_64_msvc', '0.48.5'), + ('windows_x86_64_msvc', '0.52.0'), + ('winnow', '0.5.28'), + ('winreg', '0.50.0'), + ('xmlparser', '0.13.6'), + ('xxhash-rust', '0.8.7'), + ('zerocopy', '0.7.31'), + ('zerocopy-derive', '0.7.31'), + ('zeroize', '1.7.0'), + ('zstd', '0.13.0'), + ('zstd-safe', '7.0.0'), + ('zstd-sys', '2.0.9+zstd.1.5.5'), +] + +builddependencies = [ + ('maturin', '1.4.0', '-Rust-1.75.0'), + ('CMake', '3.26.3'), # needed by crate libz-ng-sys +] + +dependencies = [ + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), + ('matplotlib', '3.7.2'), + ('Arrow', '14.0.1'), + ('DeltaLake', '0.15.1'), + ('openpyxl', '3.1.2'), +] + +use_pip = True +use_pip_extras = "deltalake,matplotlib,numpy,openpyxl,pandas,pyarrow" +sanity_pip_check = True +download_dep_fail = True + +moduleclass = 'data' diff --git a/easybuild/easyconfigs/p/poppler/poppler-24.04.0-GCC-13.2.0.eb b/easybuild/easyconfigs/p/poppler/poppler-24.04.0-GCC-13.2.0.eb new file mode 100644 index 00000000000..b87358a52ff --- /dev/null +++ b/easybuild/easyconfigs/p/poppler/poppler-24.04.0-GCC-13.2.0.eb @@ -0,0 +1,60 @@ +easyblock = 'Bundle' + +name = 'poppler' +version = '24.04.0' + +homepage = 'https://poppler.freedesktop.org' +description = "Poppler is a PDF rendering library" + +toolchain = {'name': 'GCC', 'version': '13.2.0'} + +builddependencies = [ + ('CMake', '3.27.6'), + ('pkgconf', '2.0.3'), + ('Python', '3.11.5'), +] + +dependencies = [ + ('freetype', '2.13.2'), + ('fontconfig', '2.14.2'), + ('libjpeg-turbo', '3.0.1'), + ('libpng', '1.6.40'), + ('NSS', '3.94'), + ('LibTIFF', '4.6.0'), + ('Qt6', '6.6.3'), + ('Boost', '1.83.0'), + ('cairo', '1.18.0'), + ('OpenJPEG', '2.5.0'), + ('zlib', '1.2.13'), + ('gnupg-bundle', '20240306'), +] + +default_easyblock = 'CMakeMake' + +default_component_specs = { + 'start_dir': '%(name)s-%(version)s', +} + +components = [ + (name, version, { + 'source_urls': ['https://poppler.freedesktop.org/'], + 'sources': [SOURCE_TAR_XZ], + 'checksums': ['1e804ec565acf7126eb2e9bb3b56422ab2039f7e05863a5dfabdd1ffd1bb77a7'], + 'configopts': "-DENABLE_BOOST=ON -DENABLE_QT5=OFF -DENABLE_LCMS=OFF", + }), + ('poppler-data', '0.4.12', { + 'source_urls': ['https://poppler.freedesktop.org/'], + 'sources': [SOURCE_TAR_GZ], + 'checksums': ['c835b640a40ce357e1b83666aabd95edffa24ddddd49b8daff63adb851cdab74'], + }), +] + +sanity_check_paths = { + 'files': ['bin/pdfinfo', 'lib/libpoppler.%s' % SHLIB_EXT, 'lib/libpoppler-cpp.%s' % SHLIB_EXT, + 'lib/libpoppler-glib.%s' % SHLIB_EXT, 'lib/libpoppler-qt6.%s' % SHLIB_EXT], + 'dirs': ['include/poppler', 'lib/pkgconfig', 'share'], +} + +sanity_check_commands = ["pdfinfo --help"] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/p/premailer/premailer-3.10.0-GCCcore-12.3.0.eb b/easybuild/easyconfigs/p/premailer/premailer-3.10.0-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..4f8fb886b0e --- /dev/null +++ b/easybuild/easyconfigs/p/premailer/premailer-3.10.0-GCCcore-12.3.0.eb @@ -0,0 +1,39 @@ +easyblock = 'PythonBundle' + +name = 'premailer' +version = '3.10.0' + +homepage = "https://premailer.io/" +description = """ +CSS blocks into inline style attributes for HTML emails +""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +builddependencies = [('binutils', '2.40')] + +dependencies = [ + ('Python', '3.11.3'), + ('Python-bundle-PyPI', '2023.06'), + ('lxml', '4.9.2'), +] + +use_pip = True +sanity_pip_check = True + +exts_list = [ + ('cachetools', '5.3.2', { + 'checksums': ['086ee420196f7b2ab9ca2db2520aca326318b68fe5ba8bc4d49cca91add450f2'], + }), + ('cssselect', '1.2.0', { + 'checksums': ['666b19839cfaddb9ce9d36bfe4c969132c647b92fc9088c4e23f786b30f1b3dc'], + }), + ('cssutils', '2.9.0', { + 'checksums': ['89477b3d17d790e97b9fb4def708767061055795aae6f7c82ae32e967c9be4cd'], + }), + (name, version, { + 'checksums': ['d1875a8411f5dc92b53ef9f193db6c0f879dc378d618e0ad292723e388bfe4c2'], + }), +] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/p/preseq/preseq-3.2.0-GCC-12.2.0.eb b/easybuild/easyconfigs/p/preseq/preseq-3.2.0-GCC-12.2.0.eb new file mode 100644 index 00000000000..e97deba5b85 --- /dev/null +++ b/easybuild/easyconfigs/p/preseq/preseq-3.2.0-GCC-12.2.0.eb @@ -0,0 +1,31 @@ +easyblock = 'ConfigureMake' + +name = 'preseq' +version = '3.2.0' + +homepage = 'https://smithlabresearch.org/software/preseq' +description = "Software for predicting library complexity and genome coverage in high-throughput sequencing." + +toolchain = {'name': 'GCC', 'version': '12.2.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/smithlabcode/preseq/releases/download/v%(version)s'] +sources = [SOURCE_TAR_GZ] +checksums = ['95b81c9054e0d651de398585c7e96b807ad98f0bdc541b3e46665febbe2134d9'] + +dependencies = [ + ('GSL', '2.7'), + ('HTSlib', '1.17'), + ('zlib', '1.2.12'), +] + +configopts = '--enable-hts CPPFLAGS="-I$EBROOTHTSLIB/include" LDFLAGS="-L$EBROOTHTSLIB/lib"' + +sanity_check_paths = { + 'files': ['bin/%s' % x for x in ['preseq', 'to-mr']], + 'dirs': [], +} + +sanity_check_commands = ['preseq'] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/p/presto/presto-1.0.0-20230501-foss-2022b-R-4.2.2.eb b/easybuild/easyconfigs/p/presto/presto-1.0.0-20230501-foss-2022b-R-4.2.2.eb new file mode 100644 index 00000000000..fa760d42006 --- /dev/null +++ b/easybuild/easyconfigs/p/presto/presto-1.0.0-20230501-foss-2022b-R-4.2.2.eb @@ -0,0 +1,29 @@ +easyblock = 'RPackage' + +name = 'presto' +local_commit = '31dc97f' +# see DESCRIPTION to determine version, +# but also take date of last commit into account (since version isn't always bumped) +version = '1.0.0-20230501' +versionsuffix = '-R-%(rver)s' + +homepage = 'https://github.com/immunogenomics/presto' +description = "Presto performs a fast Wilcoxon rank sum test and auROC analysis." + +toolchain = {'name': 'foss', 'version': '2022b'} + +source_urls = ['https://github.com/immunogenomics/presto/archive/'] +sources = [{'download_filename': '%s.tar.gz' % local_commit, 'filename': SOURCE_TAR_GZ}] +checksums = ['720ef58aba219af03344e0ae0408fc48feda50e6b7f7f4af2251eb24ce1bfb88'] + +dependencies = [ + ('R', '4.2.2'), + ('R-bundle-Bioconductor', '3.16', versionsuffix), +] + +sanity_check_paths = { + 'files': [], + 'dirs': [name], +} + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/p/psutil/psutil-5.9.8-GCCcore-12.3.0.eb b/easybuild/easyconfigs/p/psutil/psutil-5.9.8-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..554ec684e83 --- /dev/null +++ b/easybuild/easyconfigs/p/psutil/psutil-5.9.8-GCCcore-12.3.0.eb @@ -0,0 +1,26 @@ +easyblock = 'PythonBundle' + +name = 'psutil' +version = '5.9.8' + +homepage = 'https://github.com/giampaolo/psutil' +description = """A cross-platform process and system utilities module for Python""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +builddependencies = [('binutils', '2.40')] + +dependencies = [('Python', '3.11.3')] + +use_pip = True +sanity_pip_check = True + +exts_list = [ + (name, version, { + 'source_urls': ['https://github.com/giampaolo/psutil/archive'], + 'sources': ['%(name)s-%(version)s.tar.gz'], + 'checksums': ['6be126e3225486dff286a8fb9a06246a5253f4c7c53b475ea5f5ac934e64194c'], + }), +] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/p/py3Dmol/py3Dmol-2.1.0-GCCcore-12.3.0.eb b/easybuild/easyconfigs/p/py3Dmol/py3Dmol-2.1.0-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..0ff64a7f07a --- /dev/null +++ b/easybuild/easyconfigs/p/py3Dmol/py3Dmol-2.1.0-GCCcore-12.3.0.eb @@ -0,0 +1,31 @@ +easyblock = 'PythonBundle' + +name = 'py3Dmol' +version = '2.1.0' + +homepage = 'https://github.com/3dmol/3Dmol.js/tree/master/py3Dmol' +description = "A simple IPython/Jupyter widget to embed an interactive 3Dmol.js viewer in a notebook." + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +builddependencies = [ + ('binutils', '2.40'), +] + +dependencies = [ + ('Python', '3.11.3'), + ('IPython', '8.14.0'), +] + +use_pip = True + +exts_list = [ + (name, version, { + 'modulename': "%(name)s", + 'checksums': ['83d2f25a9107b4cef125c0c1f5caa4dce9b7577f1346fc0a3f7d12972e11c0e8'], + }), +] + +sanity_pip_check = True + +moduleclass = 'vis' diff --git a/easybuild/easyconfigs/p/pyBigWig/pyBigWig-0.3.22-foss-2023a.eb b/easybuild/easyconfigs/p/pyBigWig/pyBigWig-0.3.22-foss-2023a.eb new file mode 100644 index 00000000000..fc2cc3e8efc --- /dev/null +++ b/easybuild/easyconfigs/p/pyBigWig/pyBigWig-0.3.22-foss-2023a.eb @@ -0,0 +1,36 @@ +easyblock = 'PythonPackage' + +name = 'pyBigWig' +version = '0.3.22' + +github_account = 'deeptools' +homepage = 'https://github.com/%(github_account)s/%(name)s' +description = """A python extension, written in C, for quick access to bigBed + files and access to and creation of bigWig files.""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +source_urls = [GITHUB_SOURCE] +sources = ['%(version)s.tar.gz'] +checksums = ['3b8d62b2bedcee0545a586884466c97a64b64283a309b211300b670f41dd2046'] + +dependencies = [ + ('Python', '3.11.3'), + ('cURL', '8.0.1'), + ('NSS', '3.89.1'), # provides libfreebl3 + ('SciPy-bundle', '2023.07'), # optional, for numpy support +] + +# fix version of '0.0.0' issue +preinstallopts = """sed -i 's/setup(/setup(version="%(version)s",/g' setup.py && """ +# do not use setuptools-scm to detect version +preinstallopts += """sed -i 's/[tool.setuptools_scm]//' pyproject.toml && """ + +use_pip = True +download_dep_fail = True + +options = {'modulename': name} + +sanity_pip_check = True + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/p/pyGAM/pyGAM-0.9.1-gfbf-2023a.eb b/easybuild/easyconfigs/p/pyGAM/pyGAM-0.9.1-gfbf-2023a.eb new file mode 100644 index 00000000000..fd2765c622e --- /dev/null +++ b/easybuild/easyconfigs/p/pyGAM/pyGAM-0.9.1-gfbf-2023a.eb @@ -0,0 +1,46 @@ +easyblock = 'PythonBundle' + +name = 'pyGAM' +version = '0.9.1' + +homepage = 'https://pygam.readthedocs.io' +description = """ +pyGAM is a package for building Generalized Additive Models in Python, with an emphasis on +modularity and performance. The API will be immediately familiar to anyone with experience of +scikit-learn or scipy. +""" + +toolchain = {'name': 'gfbf', 'version': '2023a'} + +builddependencies = [('poetry', '1.5.1'), ] + +dependencies = [ + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), +] + +use_pip = True + +exts_list = [ + ('python-utils', '3.8.2', { + 'checksums': ['c5d161e4ca58ce3f8c540f035e018850b261a41e7cb98f6ccf8e1deb7174a1f1'], + }), + ('progressbar2', '4.4.2', { + 'modulename': 'progressbar', + 'checksums': ['3fda2e0c60693600a6585a784c9d3bc4e1dac57e99e133f8c0f5c8cf3df374a2'], + }), + ('poetry-dynamic-versioning', '1.2.0', { + 'source_tmpl': 'poetry_dynamic_versioning-%(version)s.tar.gz', + 'checksums': ['1a7bbdba2530499e73dfc6ac0af19de29020ab4aaa3e507573877114e6b71ed6'], + }), + ('dunamai', '1.19.2', { + 'checksums': ['3be4049890763e19b8df1d52960dbea60b3e263eb0c96144a677ae0633734d2e'], + }), + ('pygam', version, { + 'checksums': ['a321a017bf485ed93fc6233e02621f8e7eab3d4f8971371c9ae9e079c55be01d'], + }), +] + +sanity_pip_check = True + +moduleclass = 'data' diff --git a/easybuild/easyconfigs/p/pybedtools/pybedtools-0.9.1-foss-2023a.eb b/easybuild/easyconfigs/p/pybedtools/pybedtools-0.9.1-foss-2023a.eb new file mode 100644 index 00000000000..ac4c03a4f64 --- /dev/null +++ b/easybuild/easyconfigs/p/pybedtools/pybedtools-0.9.1-foss-2023a.eb @@ -0,0 +1,27 @@ +easyblock = 'PythonBundle' + +name = 'pybedtools' +version = '0.9.1' + +homepage = 'https://daler.github.io/pybedtools' +description = "pybedtools wraps and extends BEDTools and offers feature-level manipulations from within Python." + +toolchain = {'name': 'foss', 'version': '2023a'} + +dependencies = [ + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), + ('BEDTools', '2.31.0'), + ('Pysam', '0.22.0'), +] + +use_pip = True +sanity_pip_check = True + +exts_list = [ + (name, version, { + 'checksums': ['586a626895b1b7215aef877e985c03fd8a908fd6c636e5b9ff8a1a1d09a1d514'], + }), +] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/p/pybind11-stubgen/pybind11-stubgen-2.5.1-GCCcore-12.3.0.eb b/easybuild/easyconfigs/p/pybind11-stubgen/pybind11-stubgen-2.5.1-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..14e409a2101 --- /dev/null +++ b/easybuild/easyconfigs/p/pybind11-stubgen/pybind11-stubgen-2.5.1-GCCcore-12.3.0.eb @@ -0,0 +1,35 @@ +# Thomas Hoffmann, EMBL Heidelberg, structures-it@embl.de, 2024/04 +easyblock = 'PythonBundle' + +name = 'pybind11-stubgen' +version = '2.5.1' + +homepage = 'https://github.com/sizmailov/pybind11-stubgen' +description = """ +Static analysis tools and IDE usually struggle to understand python binary +extensions. pybind11-stubgen generates stubs for python extensions to make them +less opaque. + +While the CLI tool includes tweaks to target modules compiled specifically with +pybind11 but it should work well with modules built with other libraries. +""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +builddependencies = [ + ('binutils', '2.40'), +] +dependencies = [ + ('Python', '3.11.3'), +] + +use_pip = True +sanity_pip_check = True + +exts_list = [ + (name, version, { + 'checksums': ['4427a67038a00c5ac1637ffa6c65728c67c5b1251ecc23c7704152be0b14cc0b'], + }), +] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/p/pycodestyle/pycodestyle-2.11.1-foss-2023a.eb b/easybuild/easyconfigs/p/pycodestyle/pycodestyle-2.11.1-foss-2023a.eb new file mode 100644 index 00000000000..66965820b1d --- /dev/null +++ b/easybuild/easyconfigs/p/pycodestyle/pycodestyle-2.11.1-foss-2023a.eb @@ -0,0 +1,22 @@ +easyblock = 'PythonPackage' + +name = 'pycodestyle' +version = '2.11.1' + +homepage = "https://pycodestyle.readthedocs.io" +description = """pycodestyle is a tool to check your Python code against some of the style conventions in PEP 8.""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +sources = [SOURCE_TAR_GZ] +checksums = ['41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f'] + +dependencies = [ + ('Python', '3.11.3'), +] + +download_dep_fail = True +use_pip = True +sanity_pip_check = True + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/p/pygame/pygame-2.5.2-GCCcore-12.3.0.eb b/easybuild/easyconfigs/p/pygame/pygame-2.5.2-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..d6cedcabd90 --- /dev/null +++ b/easybuild/easyconfigs/p/pygame/pygame-2.5.2-GCCcore-12.3.0.eb @@ -0,0 +1,48 @@ +easyblock = 'PythonBundle' + +name = 'pygame' +version = '2.5.2' + +homepage = 'https://www.pygame.org' +description = """ +Pygame is a set of Python modules designed for writing video games. Pygame adds +functionality on top of the excellent SDL library. This allows you to create +fully featured games and multimedia programs in the python language. +""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +builddependencies = [ + ('binutils', '2.40'), +] + +dependencies = [ + ('Python', '3.11.3'), + ('SDL2_image', '2.8.2'), + ('SDL2_mixer', '2.8.0'), + ('SDL2_ttf', '2.22.0'), + ('PortMidi', '2.0.4'), + ('libpng', '1.6.39'), +] + +use_pip = True + +_pygame_extra_base = ':'.join([ + '$EBROOTSDL2_IMAGE', + '$EBROOTSDL2_MIXER', + '$EBROOTSDL2_TTF', + '$EBROOTLIBJPEGMINTURBO', + '$EBROOTLIBPNG', + '$EBROOTPORTMIDI', +]) + +exts_list = [ + (name, version, { + 'preinstallopts': 'PORTMIDI_INC_PORTTIME=1 PYGAME_EXTRA_BASE="%s"' % _pygame_extra_base, + 'checksums': ['c1b89eb5d539e7ac5cf75513125fb5f2f0a2d918b1fd6e981f23bf0ac1b1c24a'], + }), +] + +sanity_pip_check = True + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/p/pyiron/pyiron-0.5.1-foss-2023a.eb b/easybuild/easyconfigs/p/pyiron/pyiron-0.5.1-foss-2023a.eb new file mode 100644 index 00000000000..79469b4b140 --- /dev/null +++ b/easybuild/easyconfigs/p/pyiron/pyiron-0.5.1-foss-2023a.eb @@ -0,0 +1,114 @@ +easyblock = 'PythonBundle' + +name = 'pyiron' +version = '0.5.1' + +homepage = 'https://github.com/pyiron/pyiron' +description = "An integrated development environment (IDE) for computational materials science." + + +toolchain = {'name': 'foss', 'version': '2023a'} + +builddependencies = [('poetry', '1.5.1')] +dependencies = [ + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), + ('Python-bundle-PyPI', '2023.06'), + ('matplotlib', '3.7.2'), + ('h5py', '3.9.0'), + ('PyYAML', '6.0'), + ('phonopy', '2.20.0'), + ('ASE', '3.22.1'), + ('PyTables', '3.8.0'), + ('nglview', '3.1.2'), + ('tqdm', '4.66.1'), + ('molmod', '1.4.8'), + ('scikit-learn', '1.3.1'), + ('yaff', '1.6.0'), + ('TAMkin', '1.2.6'), + ('QuickFF', '2.2.7'), + ('plotly.py', '5.16.0'), + ('GitPython', '3.1.40'), + ('dill', '0.3.7'), + ('sympy', '1.12'), + ('pymatgen', '2023.12.18'), + ('Pint', '0.23'), + ('SQLAlchemy', '2.0.25'), +] + +check_ldshared = True +use_pip = True + +exts_list = [ + ('h5io', '0.1.2', { + 'checksums': ['6400543224c489f1cf487be551f892310fa7060fcd4935b84e515efdc1e1fa43'], + }), + ('defusedxml', '0.6.0', { + 'checksums': ['f684034d135af4c6cbb949b8a4d2ed61634515257a67299e5f940fbaa34377f5'], + }), + ('pysqa', '0.1.7', { + 'checksums': ['fdc37e0178649750e7386b4e9b8287693ee2d47559723c11b9ad42afcfc55900'], + }), + ('pyfiglet', '0.8.post1', { + 'checksums': ['c6c2321755d09267b438ec7b936825a4910fec696292139e664ca8670e103639'], + }), + ('mendeleev', '0.14.0', { + 'checksums': ['1a89ccf05c708aebe627c5eb19ff5c6379585a2f9e588e1dcf9b03182fe61f3c'], + }), + ('pyfileindex', '0.0.18', { + 'checksums': ['6d5acf2500f568667aa5273ae57692c2b62facbcaae7c0bbbf21ba3bdd904961'], + }), + ('seekpath', '2.1.0', { + 'checksums': ['31cec579628262e6d4a4c3693fefa70d6ccae1ceeef7c9d10ea3cd48988452c4'], + }), + (name, version, { + 'modulename': False, + 'checksums': ['2e5e3f892b7e49a15443569870aa4ea049951b71fe2ad1ad7f4ac7551d475788'], + }), + ('pyiron_base', '0.6.12', { + 'patches': ['pyiron-0.5.1_fix-pyiron-base-version.patch'], + 'source_urls': ['https://github.com/pyiron/pyiron_base/archive/refs/tags/'], + 'checksums': [ + {'pyiron_base-0.6.12.tar.gz': '7ef8fa8b21724776c1ced3ee1efb8484984234150a7f3da296577f90c63751cb'}, + {'pyiron-0.5.1_fix-pyiron-base-version.patch': + 'a6390dcd366e17361fb71f26c6d3b75835526bdf773d9ef535c02836fe551b31'}, + ], + }), + ('atomistics', '0.1.15', { + 'patches': ['pyiron-0.5.1_fix-atomistics-requirements.patch'], + 'source_urls': ['https://github.com/pyiron/atomistics/archive/refs/tags/'], + 'checksums': [ + {'atomistics-0.1.15.tar.gz': 'e9c505cace0cbeb9ea5ed33799f332f5cc95230a05ba14b646475cff1bdecaee'}, + {'pyiron-0.5.1_fix-atomistics-requirements.patch': + 'deaa57c27be147efc7e4926f6795bfa421280a299fc96de8c0bae342e4770d6c'}, + ], + }), + ('pyiron_atomistics', '0.3.11', { + 'patches': ['pyiron-0.5.1_fix-pyiron-atomistics-version.patch'], + 'source_urls': ['https://github.com/pyiron/pyiron_atomistics/archive/refs/tags/'], + 'checksums': [ + {'pyiron_atomistics-0.3.11.tar.gz': '8c73c452fe60cb808961d22361f9b749488e3d50a8bda7f5c0132aea2f69e00f'}, + {'pyiron-0.5.1_fix-pyiron-atomistics-version.patch': + '5c9b987cb63508f482bff696e252987e10df9b8ee8e860491583c8e547d4568c'}, + ], + }), + ('pylammpsmpi', '0.2.10', { + 'patches': ['pyiron-0.5.1_fix-pylammpsmpi.patch'], + 'source_urls': ['https://github.com/pyiron/pylammpsmpi/archive/refs/tags/'], + 'checksums': [ + {'%(name)s-%(version)s.tar.gz': 'bd5af29a935dacbee743c3cc0bcc799e24e7c2483801f56cb9092a79f016f2ed'}, + {'pyiron-0.5.1_fix-pylammpsmpi.patch': + 'd7cacf8eb73cb43e47526bfa3f98157073c01cd88918f191f87d7e75ab4c7c30'}, + ], + }), + ('pympipool', '0.7.9', { + 'checksums': ['5698181bc5dc9a69595fd00ff6a8ba651b77734ccf00df79ae3aea8aaf32790a'], + }), + ('structuretoolkit', '0.0.15', { + 'checksums': ['1a258a072055d0c20e9d56156afd4481cfc94c2612c1b908de4b274b423cc6e6'], + }), +] + +sanity_pip_check = True + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/p/pyiron/pyiron-0.5.1_fix-atomistics-requirements.patch b/easybuild/easyconfigs/p/pyiron/pyiron-0.5.1_fix-atomistics-requirements.patch new file mode 100644 index 00000000000..5b47f86d759 --- /dev/null +++ b/easybuild/easyconfigs/p/pyiron/pyiron-0.5.1_fix-atomistics-requirements.patch @@ -0,0 +1,17 @@ +Relax requirements of `atomistics`. + +--- 0.5.1/foss-2023a/atomistics/atomistics-atomistics-0.1.15/pyproject.toml.orig 2024-01-09 12:42:59.508409527 +0000 ++++ 0.5.1/foss-2023a/atomistics/atomistics-atomistics-0.1.15/pyproject.toml 2024-01-09 12:43:44.589293464 +0000 +@@ -26,9 +26,9 @@ + ] + dependencies = [ + "ase==3.22.1", +- "numpy==1.26.2", +- "scipy==1.11.4", +- "spglib==2.2.0", ++ "numpy>=1.25.1", ++ "scipy>=1.11.1", ++ "spglib>=2.1.0", + ] + dynamic = ["version"] + diff --git a/easybuild/easyconfigs/p/pyiron/pyiron-0.5.1_fix-pyiron-atomistics-version.patch b/easybuild/easyconfigs/p/pyiron/pyiron-0.5.1_fix-pyiron-atomistics-version.patch new file mode 100644 index 00000000000..46ab8c36467 --- /dev/null +++ b/easybuild/easyconfigs/p/pyiron/pyiron-0.5.1_fix-pyiron-atomistics-version.patch @@ -0,0 +1,73 @@ +Fixes use of dynamic versioning in pyproject.toml and puts in a specific version instead. + +--- 0.5.1/foss-2023a/pyiron_atomistics/pyiron_atomistics-pyiron_atomistics-0.3.11/pyproject.toml.orig 2024-01-22 10:12:31.768251943 +0000 ++++ 0.5.1/foss-2023a/pyiron_atomistics/pyiron_atomistics-pyiron_atomistics-0.3.11/pyproject.toml 2024-01-22 10:26:21.997455595 +0000 +@@ -26,24 +26,24 @@ + dependencies = [ + "ase==3.22.1", +- "atomistics==0.1.12", +- "defusedxml==0.7.1", +- "h5py==3.10.0", +- "matplotlib==3.8.2", +- "mendeleev==0.14.0", +- "mp-api==0.39.1", +- "numpy==1.26.2", +- "pandas==2.1.3", +- "phonopy==2.21.0", ++ "atomistics>=0.1.12", ++ "defusedxml>=0.6.0", ++ "h5py>=3.9.0", ++ "matplotlib>=3.7.2", ++ "mendeleev>=0.14.0", ++ "mp-api>=0.39.1", ++ "numpy>=1.25.1", ++ "pandas>=2.0.3", ++ "phonopy>=2.20.0", +- "pint==0.22", ++ "pint>=0.22", + "pyiron_base==0.6.12", +- "pylammpsmpi==0.2.9", ++ "pylammpsmpi>=0.2.9", +- "scipy==1.11.4", +- "scikit-learn==1.3.2", +- "seekpath==2.1.0", +- "spglib==2.1.0", ++ "scipy>=1.11.1", ++ "scikit-learn>=1.3.1", ++ "seekpath>=2.1.0", ++ "spglib>=2.1.0", + "structuretoolkit==0.0.15", + ] +-dynamic = ["version"] ++version = '0.3.11' + + [project.urls] + Homepage = "https://pyiron.org" +@@ -55,13 +55,3 @@ + + [tool.setuptools.package-data] + "*" = ["data/*.csv"] +- +-[tool.setuptools.dynamic] +-version = {attr = "pyiron_atomistics.__version__"} +- +-[tool.versioneer] +-VCS = "git" +-style = "pep440-pre" +-versionfile_source = "pyiron_atomistics/_version.py" +-parentdir_prefix = "pyiron_atomistics" +-tag_prefix = "pyiron_atomistics-" + +--- 0.5.1/foss-2023a-Python-3.11.3/pyiron_atomistics/pyiron_atomistics-pyiron_atomistics-0.3.11/setup.py.orig 2023-12-13 17:16:26.902513343 +0000 ++++ 0.5.1/foss-2023a-Python-3.11.3/pyiron_atomistics/pyiron_atomistics-pyiron_atomistics-0.3.111/setup.py 2023-12-13 17:18:56.504736380 +0000 +@@ -3,6 +3,6 @@ + import versioneer + + setup( +- version=versioneer.get_version(), +- cmdclass=versioneer.get_cmdclass(), +-) +\ No newline at end ++ version="0.3.11", ++) ++ diff --git a/easybuild/easyconfigs/p/pyiron/pyiron-0.5.1_fix-pyiron-base-version.patch b/easybuild/easyconfigs/p/pyiron/pyiron-0.5.1_fix-pyiron-base-version.patch new file mode 100644 index 00000000000..9efc42afbb9 --- /dev/null +++ b/easybuild/easyconfigs/p/pyiron/pyiron-0.5.1_fix-pyiron-base-version.patch @@ -0,0 +1,72 @@ +Fixes use of dynamic versioning in pyproject.toml and puts in a specific version instead. + +--- 0.5.1/foss-2023a-Python-3.11.3/pyiron_base/pyiron_base-pyiron_base-0.6.12/pyproject.toml.orig 2023-12-13 15:51:48.895090935 +0000 ++++ 0.5.1/foss-2023a-Python-3.11.3/pyiron_base/pyiron_base-pyiron_base-0.6.12/pyproject.toml 2023-12-13 15:53:26.626579151 +0000 +@@ -24,23 +24,23 @@ + "Programming Language :: Python :: 3.11", + ] + dependencies = [ +- "dill==0.3.7", +- "gitpython==3.1.40", +- "h5io==0.1.9", +- "h5py==3.10.0", +- "jinja2==3.1.2", +- "numpy==1.26.2", +- "pandas==2.1.3", +- "pint==0.22", +- "psutil==5.9.5", +- "pyfileindex==0.0.18", +- "pysqa==0.1.7", +- "sqlalchemy==2.0.23", +- "tables==3.9.2", +- "tqdm==4.66.1", +- "traitlets==5.14.0", ++ "dill>=0.3.2", ++ "gitpython>=3.1.8", ++ "h5io>=0.1.2", ++ "h5py>=3.9.0", ++ "jinja2>=3.1.2", ++ "numpy>=1.25.1", ++ "pandas>=2.0.3", ++ "pint>=0.22", ++ "psutil>=5.9.5", ++ "pyfileindex>=0.0.18", ++ "pysqa>=0.1.7", ++ "sqlalchemy>=2.0.23", ++ "tables>=3.8.0", ++ "tqdm>=4.66.1", ++ "traitlets>=5.9.0", + ] +-dynamic = ["version"] ++version = "0.6.12" + + [project.urls] + Homepage = "https://github.com/pyiron/pyiron_base" +@@ -53,12 +53,3 @@ + [tool.setuptools.packages.find] + include = ["pyiron_base*"] + +-[tool.setuptools.dynamic] +-version = {attr = "pyiron_base.__version__"} +- +-[tool.versioneer] +-VCS = "git" +-style = "pep440-pre" +-versionfile_source = "pyiron_base/_version.py" +-parentdir_prefix = "pyiron_base" +-tag_prefix = "pyiron_base-" + +--- 0.5.1/foss-2023a-Python-3.11.3/pyiron_base/pyiron_base-pyiron_base-0.6.12/setup.py.orig 2023-12-13 17:16:26.902513343 +0000 ++++ 0.5.1/foss-2023a-Python-3.11.3/pyiron_base/pyiron_base-pyiron_base-0.6.12/setup.py 2023-12-13 17:18:56.504736380 +0000 +@@ -3,6 +3,6 @@ + import versioneer + + setup( +- version=versioneer.get_version(), +- cmdclass=versioneer.get_cmdclass(), +-) +\ No newline at end ++ version="0.6.12", ++) ++ + diff --git a/easybuild/easyconfigs/p/pyiron/pyiron-0.5.1_fix-pylammpsmpi.patch b/easybuild/easyconfigs/p/pyiron/pyiron-0.5.1_fix-pylammpsmpi.patch new file mode 100644 index 00000000000..c306bf08da9 --- /dev/null +++ b/easybuild/easyconfigs/p/pyiron/pyiron-0.5.1_fix-pylammpsmpi.patch @@ -0,0 +1,47 @@ +Fix versioning issue and relax requirements. + +--- 0.5.1/foss-2023a/pylammpsmpi/pylammpsmpi-pylammpsmpi-0.2.10/setup.py.orig 2023-12-21 17:27:54.405181324 +0000 ++++ 0.5.1/foss-2023a/pylammpsmpi/pylammpsmpi-pylammpsmpi-0.2.10/setup.py 2023-12-21 17:31:38.136048756 +0000 +@@ -1,8 +1,4 @@ + from setuptools import setup + +-import versioneer ++setup(version='0.2.10') + +-setup( +- version=versioneer.get_version(), +- cmdclass=versioneer.get_cmdclass(), +-) +\ Ingen nyrad vid filslut + +--- 0.5.1/foss-2023a/pylammpsmpi/pylammpsmpi-pylammpsmpi-0.2.10/pyproject.toml.orig 2023-12-21 17:57:36.066162000 +0000 ++++ 0.5.1/foss-2023a/pylammpsmpi/pylammpsmpi-pylammpsmpi-0.2.10/pyproject.toml 2023-12-21 17:58:37.373851635 +0000 +@@ -24,11 +24,11 @@ + "Programming Language :: Python :: 3.11", + ] + dependencies = [ +- "mpi4py==3.1.5", ++ "mpi4py>=3.1.4", + "pympipool==0.7.9", +- "numpy==1.26.2", ++ "numpy>=1.25.1", + ] +-dynamic = ["version"] ++version = '0.2.10' + + [project.urls] + Homepage = "https://github.com/pyiron/pylammpsmpi" +@@ -43,13 +43,3 @@ + + [tool.setuptools.packages.find] + include = ["pylammpsmpi*"] +- +-[tool.setuptools.dynamic] +-version = {attr = "pylammpsmpi.__version__"} +- +-[tool.versioneer] +-VCS = "git" +-style = "pep440-pre" +-versionfile_source = "pylammpsmpi/_version.py" +-parentdir_prefix = "pylammpsmpi" +-tag_prefix = "pylammpsmpi-" diff --git a/easybuild/easyconfigs/p/pyro-ppl/pyro-ppl-1.9.0-foss-2023a-CUDA-12.1.1.eb b/easybuild/easyconfigs/p/pyro-ppl/pyro-ppl-1.9.0-foss-2023a-CUDA-12.1.1.eb new file mode 100644 index 00000000000..4add431b9a3 --- /dev/null +++ b/easybuild/easyconfigs/p/pyro-ppl/pyro-ppl-1.9.0-foss-2023a-CUDA-12.1.1.eb @@ -0,0 +1,47 @@ +# Author: Denis Krišťák (INUITS) + +easyblock = 'PythonBundle' + +name = 'pyro-ppl' +version = '1.9.0' +versionsuffix = '-CUDA-%(cudaver)s' + +homepage = 'https://github.com/pyro-ppl/pyro' +description = "Pyro is a flexible, scalable deep probabilistic programming library built on PyTorch." + +toolchain = {'name': 'foss', 'version': '2023a'} + +dependencies = [ + ('CUDA', '12.1.1', '', SYSTEM), + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), + ('PyTorch', '2.1.2', versionsuffix), + ('tqdm', '4.66.1'), +] + +use_pip = True + +exts_list = [ + ('opt-einsum', '3.3.0', { + 'source_tmpl': 'opt_einsum-%(version)s.tar.gz', + 'checksums': ['59f6475f77bbc37dcf7cd748519c0ec60722e91e63ca114e68821c0c54a46549'], + }), + ('pyro-api', '0.1.2', { + 'modulename': 'pyroapi', + 'checksums': ['a1b900d9580aa1c2fab3b123ab7ff33413744da7c5f440bd4aadc4d40d14d920'], + }), + (name, version, { + 'modulename': 'pyro', + 'checksums': ['41f4c005159568280fbc511648960a98a2b1a410027d8bd0a43220ac9b102cdf'], + }), +] + +sanity_pip_check = True + +sanity_check_commands = [ + "python -c 'from pyroapi import distributions as dist'", + "python -c 'from pyroapi import infer, ops, optim, pyro, pyro_backend'", + "python -c 'from pyro import infer, nn, distributions'", +] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/p/pyro-ppl/pyro-ppl-1.9.0-foss-2023a.eb b/easybuild/easyconfigs/p/pyro-ppl/pyro-ppl-1.9.0-foss-2023a.eb new file mode 100644 index 00000000000..28ed959d3b2 --- /dev/null +++ b/easybuild/easyconfigs/p/pyro-ppl/pyro-ppl-1.9.0-foss-2023a.eb @@ -0,0 +1,45 @@ +# Author: Denis Krišťák (INUITS) + +easyblock = 'PythonBundle' + +name = 'pyro-ppl' +version = '1.9.0' + +homepage = 'https://github.com/pyro-ppl/pyro' +description = "Pyro is a flexible, scalable deep probabilistic programming library built on PyTorch." + +toolchain = {'name': 'foss', 'version': '2023a'} + +dependencies = [ + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), + ('PyTorch', '2.1.2'), + ('tqdm', '4.66.1'), +] + +use_pip = True + +exts_list = [ + ('opt-einsum', '3.3.0', { + 'source_tmpl': 'opt_einsum-%(version)s.tar.gz', + 'checksums': ['59f6475f77bbc37dcf7cd748519c0ec60722e91e63ca114e68821c0c54a46549'], + }), + ('pyro-api', '0.1.2', { + 'modulename': 'pyroapi', + 'checksums': ['a1b900d9580aa1c2fab3b123ab7ff33413744da7c5f440bd4aadc4d40d14d920'], + }), + (name, version, { + 'modulename': 'pyro', + 'checksums': ['41f4c005159568280fbc511648960a98a2b1a410027d8bd0a43220ac9b102cdf'], + }), +] + +sanity_pip_check = True + +sanity_check_commands = [ + "python -c 'from pyroapi import distributions as dist'", + "python -c 'from pyroapi import infer, ops, optim, pyro, pyro_backend'", + "python -c 'from pyro import infer, nn, distributions'", +] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/p/pyseer/pyseer-1.3.11-foss-2022b.eb b/easybuild/easyconfigs/p/pyseer/pyseer-1.3.11-foss-2022b.eb new file mode 100644 index 00000000000..4e728d27fe7 --- /dev/null +++ b/easybuild/easyconfigs/p/pyseer/pyseer-1.3.11-foss-2022b.eb @@ -0,0 +1,55 @@ +# Borrowed from the BEAR RSG team, University of Birmingham +easyblock = 'PythonBundle' + +name = 'pyseer' +version = '1.3.11' + +homepage = 'https://github.com/mgalardini/pyseer' +description = """pyseer was first written a python reimplementation of seer, which was written in C++. pyseer uses + linear models with fixed or mixed effects to estimate the effect of genetic variation in a bacterial population + on a phenotype of interest, while accounting for potentially very strong confounding population structure. + This allows for genome-wide association studies (GWAS) to be performed in clonal organisms + such as bacteria and viruses.""" + +toolchain = {'name': 'foss', 'version': '2022b'} + +dependencies = [ + ('Python', '3.10.8'), + ('SciPy-bundle', '2023.02'), + ('pybedtools', '0.9.0'), + ('statsmodels', '0.14.0'), + ('scikit-learn', '1.2.1'), + ('Pysam', '0.21.0'), + ('DendroPy', '4.5.2'), + ('matplotlib', '3.7.0'), + ('tqdm', '4.64.1'), +] + +use_pip = True + +exts_list = [ + ('glmnet-python', '1.0.2', { + 'source_urls': ['https://github.com/johnlees/glmnet_python/archive'], + 'sources': ['v%(version)s.tar.gz'], + 'checksums': ['7a5550514140dabbd27ad4eb1c04db64199d9bb89541e088d9bb162570205e76'], + }), + (name, version, { + 'source_urls': ['https://github.com/mgalardini/pyseer/archive'], + 'sources': ['%(version)s.tar.gz'], + 'checksums': ['06ea2987509f9c1952bbb90e4b59c6f5a4f2ca9e88e7dac5f5cb7f43aa693a1b'], + }), +] + +sanity_check_paths = { + 'files': ['bin/pyseer', 'bin/square_mash'], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +sanity_check_commands = [ + '%(namelower)s --help', + 'square_mash --help', +] + +sanity_pip_check = True + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/p/python-libsbml/python-libsbml-5.20.2-foss-2021b.eb b/easybuild/easyconfigs/p/python-libsbml/python-libsbml-5.20.2-foss-2021b.eb new file mode 100644 index 00000000000..f0bd3d688c2 --- /dev/null +++ b/easybuild/easyconfigs/p/python-libsbml/python-libsbml-5.20.2-foss-2021b.eb @@ -0,0 +1,44 @@ +# This is a contribution from SIB Swiss Institute of Bioinformatics +# Homepage: https://www.sib.swiss/research-infrastructure/competence-centers/vital-it +# Authors: Sebastien Moretti +# Update: Pavel Tománek (INUITS) + +easyblock = 'PythonBundle' + +name = 'python-libsbml' +version = '5.20.2' + +homepage = 'https://sbml.org/' +description = """LibSBML Python API.""" + +toolchain = {'name': 'foss', 'version': '2021b'} + +builddependencies = [ + ('binutils', '2.37'), + ('CMake', '3.21.1'), + ('make', '4.3'), + ('Check', '0.15.2'), + ('SWIG', '4.0.2'), + ('expat', '2.4.1'), + ('bzip2', '1.0.8'), + ('zlib', '1.2.11'), +] + +dependencies = [ + ('Python', '3.9.6'), + ('libxml2', '2.9.10'), + ('libxslt', '1.1.34'), +] + +use_pip = True + +exts_list = [ + (name, version, { + 'modulename': 'libsbml', + 'checksums': ['0af5cbff68c9b52bac4bd7bb261f93a60832dc8cb31dafc90d3aff51467935b7'], + }), +] + +sanity_pip_check = True + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/p/python-louvain/python-louvain-0.16-foss-2023a.eb b/easybuild/easyconfigs/p/python-louvain/python-louvain-0.16-foss-2023a.eb new file mode 100644 index 00000000000..6f730914bc2 --- /dev/null +++ b/easybuild/easyconfigs/p/python-louvain/python-louvain-0.16-foss-2023a.eb @@ -0,0 +1,25 @@ +easyblock = 'PythonPackage' + +name = 'python-louvain' +version = '0.16' + +homepage = 'https://pypi.org/project/python-louvain' +description = "Louvain algorithm for community detection" + +toolchain = {'name': 'foss', 'version': '2023a'} + +sources = [SOURCE_TAR_GZ] +checksums = ['b7ba2df5002fd28d3ee789a49532baad11fe648e4f2117cf0798e7520a1da56b'] + +dependencies = [ + ('Python', '3.11.3'), + ('networkx', '3.1'), +] + +download_dep_fail = True +use_pip = True +sanity_pip_check = True + +options = {'modulename': 'community'} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/p/python-mujoco/python-mujoco-3.1.4-foss-2023a.eb b/easybuild/easyconfigs/p/python-mujoco/python-mujoco-3.1.4-foss-2023a.eb new file mode 100644 index 00000000000..ea4591a1783 --- /dev/null +++ b/easybuild/easyconfigs/p/python-mujoco/python-mujoco-3.1.4-foss-2023a.eb @@ -0,0 +1,57 @@ +easyblock = 'PythonBundle' + +name = 'python-mujoco' +version = '3.1.4' + +homepage = 'https://www.mujoco.org' +description = """ +This package is the canonical Python bindings for the MuJoCo physics engine. +The mujoco package provides direct access to raw MuJoCo C API functions, structs, +constants, and enumerations. Structs are provided as Python classes, with +Pythonic initialization and deletion semantics. +""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +builddependencies = [ + ('CMake', '3.26.3'), + ('Eigen', '3.4.0'), + ('pybind11', '2.11.1'), +] + +dependencies = [ + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), + ('Abseil', '20230125.3'), + ('MuJoCo', '3.1.4'), + ('GLFW', '3.4'), + ('PyOpenGL', '3.1.7'), +] + +use_pip = True + +exts_list = [ + ('absl-py', '2.1.0', { + 'modulename': 'absl', + 'checksums': ['7820790efbb316739cde8b4e19357243fc3608a152024288513dd968d7d959ff'], + }), + ('glfw', '2.7.0', { + 'checksums': ['0e209ad38fa8c5be67ca590d7b17533d95ad1eb57d0a3f07b98131db69b79000'], + }), + ('etils', '1.8.0', { + 'checksums': ['fb478f57fec202e260e54c9192b317692fd63db2d11d993e70bcdffa29cccd58'], + }), + ('mujoco', version, { + 'patches': ['python-mujoco-3.1.4_use_eb_deps.patch'], + 'preinstallopts': 'MUJOCO_PATH="$EBROOTMUJOCO" MUJOCO_PLUGIN_PATH="$EBROOTMUJOCO/bin/mujoco_plugin"', + 'checksums': [ + {'mujoco-3.1.4.tar.gz': '19d78bd7332b8bf02b8d7ca35d381a9f8f1654f4c70c0d7f499c6d4d807c4059'}, + {'python-mujoco-3.1.4_use_eb_deps.patch': + '2160f00996011ff31faaf566d1cb0c0ae4fe49b3c36c29e860b34a61fa732b55'}, + ], + }), +] + +sanity_pip_check = True + +moduleclass = 'phys' diff --git a/easybuild/easyconfigs/p/python-mujoco/python-mujoco-3.1.4_use_eb_deps.patch b/easybuild/easyconfigs/p/python-mujoco/python-mujoco-3.1.4_use_eb_deps.patch new file mode 100644 index 00000000000..2a57ac16ec8 --- /dev/null +++ b/easybuild/easyconfigs/p/python-mujoco/python-mujoco-3.1.4_use_eb_deps.patch @@ -0,0 +1,30 @@ +Use EasyBuild provided dependencies +Author: Cintia Willemyns (Vrije Universiteit Brussel) +--- mujoco-3.1.4.orig/mujoco/CMakeLists.txt 2024-04-17 15:42:21.449694000 +0200 ++++ mujoco-3.1.4/mujoco/CMakeLists.txt 2024-04-17 15:43:56.347482395 +0200 +@@ -132,7 +132,7 @@ + set(MUJOCO_PYTHON_ABSL_TARGETS absl::core_headers absl::flat_hash_map absl::span) + findorfetch( + USE_SYSTEM_PACKAGE +- OFF ++ ON + PACKAGE_NAME + absl + LIBRARY_NAME +@@ -165,7 +165,7 @@ + add_compile_definitions(EIGEN_MPL2_ONLY) + findorfetch( + USE_SYSTEM_PACKAGE +- OFF ++ ON + PACKAGE_NAME + Eigen3 + LIBRARY_NAME +@@ -183,6 +183,7 @@ + option(MUJOCO_PYTHON_USE_SYSTEM_PYBIND11 "Use installed pybind11 version." OFF) + findorfetch( + USE_SYSTEM_PACKAGE ++ ON + MUJOCO_PYTHON_USE_SYSTEM_PYBIND11 + PACKAGE_NAME + pybind11 diff --git a/easybuild/easyconfigs/p/python-xxhash/python-xxhash-3.4.1-GCCcore-13.2.0.eb b/easybuild/easyconfigs/p/python-xxhash/python-xxhash-3.4.1-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..9f43a8f2759 --- /dev/null +++ b/easybuild/easyconfigs/p/python-xxhash/python-xxhash-3.4.1-GCCcore-13.2.0.eb @@ -0,0 +1,30 @@ +easyblock = 'PythonBundle' + +name = 'python-xxhash' +version = '3.4.1' + +homepage = 'https://github.com/ifduyue/python-xxhash' +description = 'xxhash is a Python binding for the xxHash library by Yann Collet.' + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +builddependencies = [ + ('binutils', '2.40'), +] + +dependencies = [ + ('Python', '3.11.5'), + ('xxHash', '0.8.2'), +] + +use_pip = True +sanity_pip_check = True + +exts_list = [ + ('xxhash', version, { + 'preinstallopts': 'XXHASH_LINK_SO=1', + 'checksums': ['0379d6cf1ff987cd421609a264ce025e74f346e3e145dd106c0cc2e3ec3f99a9'], + }), +] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/q/QuickFF/QuickFF-2.2.7-foss-2023a.eb b/easybuild/easyconfigs/q/QuickFF/QuickFF-2.2.7-foss-2023a.eb new file mode 100644 index 00000000000..5bf05e90cf8 --- /dev/null +++ b/easybuild/easyconfigs/q/QuickFF/QuickFF-2.2.7-foss-2023a.eb @@ -0,0 +1,34 @@ +easyblock = 'PythonPackage' + +name = 'QuickFF' +version = '2.2.7' + +homepage = 'https://molmod.github.io/QuickFF/' +description = """QuickFF is a Python package developed at the Center for +Molecular Modeling (CMM) to quickly derive accurate force fields from ab initio +calculations.""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +source_urls = ['https://github.com/molmod/QuickFF/archive/'] +sources = ['v%(version)s.tar.gz'] +checksums = ['a71922dd39869770b03809355f13bcabdbb8d50429f4d3574cf427ea762f4023'] + +dependencies = [ + ('Python', '3.11.3'), + ('matplotlib', '3.7.2'), + ('molmod', '1.4.8'), + ('yaff', '1.6.0'), +] + +download_dep_fail = True +use_pip = True + +sanity_check_paths = { + 'files': [], + 'dirs': ['lib/python%(pyshortver)s/site-packages/%(namelower)s'], +} + +sanity_pip_check = True + +moduleclass = 'chem' diff --git a/easybuild/easyconfigs/q/qmflows/qmflows-1.0.0-foss-2022a.eb b/easybuild/easyconfigs/q/qmflows/qmflows-1.0.0-foss-2022a.eb new file mode 100644 index 00000000000..f3cf15b36c7 --- /dev/null +++ b/easybuild/easyconfigs/q/qmflows/qmflows-1.0.0-foss-2022a.eb @@ -0,0 +1,62 @@ +easyblock = 'PythonBundle' + +name = 'qmflows' +version = '1.0.0' + +homepage = 'https://github.com/SCM-NV/qmflows' +description = """This library tackles the construction and efficient execution +of computational chemistry workflows. This allows computational chemists to use +the emerging massively parallel compute environments in an easy manner and focus +on interpretation of scientific data rather than on tedious job submission +procedures and manual data processing. +""" + +toolchain = {'name': 'foss', 'version': '2022a'} + +dependencies = { + ('Python', '3.10.4'), + ('RDKit', '2022.09.4'), + ('HDF5', '1.12.2'), + ('SciPy-bundle', '2022.05'), + ('h5py', '3.7.0'), + ('PyYAML', '6.0') +} + +use_pip = True + +exts_list = [ + ('more-itertools', '9.0.0', { + 'checksums': ['5a6257e40878ef0520b1803990e3e22303a41b5714006c32a3fd8304b26ea1ab'], + }), + ('dill', '0.3.6', { + 'checksums': ['e5db55f3687856d8fbdab002ed78544e1c4559a130302693d839dfe8f93f2373'], + }), + ('plams', '1.5.1', { + 'modulename': 'scm.plams', + 'checksums': ['5e77632be84a8c12172eb426589cb80187b5b31325d917bdbeb0798f9c5aed46'], + }), + ('pyparsing', '3.0.9', { + 'checksums': ['2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb'], + }), + ('filelock', '3.8.0', { + 'checksums': ['55447caa666f2198c5b6b13a26d2084d26fa5b115c00d065664b2124680c4edc'], + }), + ('graphviz', '0.19.2', { + 'checksums': ['7c90cebc147c18bcdffcd3c76db58cbface5d45fe0247a2f3bfb144d32a8c77c'], + 'sources': {'filename': '%(name)s-%(version)s.zip'} + }), + ('Noodles', '0.3.3', { + 'checksums': ['b57979b08a44c61a962d2003b31313925ac974d39721c9ef3cd46526d18d25ef'], + }), + (name, version, { + 'sources': ['%(namelower)s-%(version)s.tar.gz'], + 'patches': ['qmflows-1.0.0_version.patch'], + 'checksums': [ + 'c4b3ba80345d7cb921b582d27c2597caa27d4890067be74de103dec15f9ed5a5', + '8f85e7fd3cd7f1b816dfec8c44e8ac27a91e1bb6c91c7fd8f65d42ccf20a653f'], + }), +] + +sanity_pip_check = True + +moduleclass = 'chem' diff --git a/easybuild/easyconfigs/q/qmflows/qmflows-1.0.0_version.patch b/easybuild/easyconfigs/q/qmflows/qmflows-1.0.0_version.patch new file mode 100644 index 00000000000..ac145848f54 --- /dev/null +++ b/easybuild/easyconfigs/q/qmflows/qmflows-1.0.0_version.patch @@ -0,0 +1,26 @@ +During EasyBuild, tool.setuptools_scm appears to rewrite '__version__' in _version.py +into 'version', leading to import issues. +Author: Guillaume Acke (UGent) +--- pyproject-orig.toml 2024-04-16 22:11:46.485575321 +0200 ++++ pyproject.toml 2024-04-17 12:40:38.118879192 +0200 +@@ -8,8 +8,8 @@ + + [project] + name = "qmflows" ++version = "1.0.0" + dynamic = [ +- "version", + "readme", + ] + description = "Automation of computations in quantum chemistry." +@@ -101,8 +101,8 @@ + [tool.setuptools.dynamic] + readme = { file = ["README.rst"], content-type = "text/x-rst" } + +-[tool.setuptools_scm] +-write_to = "src/qmflows/_version.py" ++#[tool.setuptools_scm] ++#write_to = "src/qmflows/_version.py" + + [tool.mypy] + plugins = "numpy.typing.mypy_plugin" diff --git a/easybuild/easyconfigs/q/qnorm/qnorm-0.8.1-foss-2023a.eb b/easybuild/easyconfigs/q/qnorm/qnorm-0.8.1-foss-2023a.eb new file mode 100644 index 00000000000..fe306fc5314 --- /dev/null +++ b/easybuild/easyconfigs/q/qnorm/qnorm-0.8.1-foss-2023a.eb @@ -0,0 +1,36 @@ +easyblock = 'PythonPackage' + +name = 'qnorm' +version = '0.8.1' + +homepage = 'https://github.com/Maarten-vd-Sande/qnorm' +description = "Fast-ish (and correct!) quantile normalization in Python" + +toolchain = {'name': 'foss', 'version': '2023a'} + +dependencies = [ + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), + ('numba', '0.58.1'), +] + +sources = [SOURCE_TAR_GZ] +checksums = ['61b2f3ef09a9c552a4f3b83dc438cb13f191fa190164361a3a508c4777eed3c7'] + +download_dep_fail = True +use_pip = True + +# pyproject.toml included in qnorm source tarball does not include standard fields, +# it's only there to be read for setup.py +preinstallopts = "sed -i 's/pyproject.toml/pyproject.toml_/g' setup.py && mv pyproject.toml pyproject.toml_ && " + +sanity_check_paths = { + 'files': ['bin/qnorm'], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +sanity_check_commands = ["qnorm --help"] + +sanity_pip_check = True + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/r/R-bundle-Bioconductor/R-bundle-Bioconductor-3.13-foss-2021a-R-4.1.0.eb b/easybuild/easyconfigs/r/R-bundle-Bioconductor/R-bundle-Bioconductor-3.13-foss-2021a-R-4.1.0.eb index 542cb7906c0..fd091166b36 100644 --- a/easybuild/easyconfigs/r/R-bundle-Bioconductor/R-bundle-Bioconductor-3.13-foss-2021a-R-4.1.0.eb +++ b/easybuild/easyconfigs/r/R-bundle-Bioconductor/R-bundle-Bioconductor-3.13-foss-2021a-R-4.1.0.eb @@ -16,7 +16,6 @@ dependencies = [ ('R', '4.1.0'), ('Boost', '1.76.0'), # for mzR ('GSL', '2.7'), # for flowClust - ('HDF5', '1.10.7'), # for rhdf5 ('ncdf4', '1.17', versionsuffix), # for mzR ('arrow-R', '6.0.0.2', versionsuffix), # required by RcisTarget ] diff --git a/easybuild/easyconfigs/r/R-bundle-Bioconductor/R-bundle-Bioconductor-3.14-foss-2021b-R-4.1.2.eb b/easybuild/easyconfigs/r/R-bundle-Bioconductor/R-bundle-Bioconductor-3.14-foss-2021b-R-4.1.2.eb index 761944fd152..e6a7f8828df 100644 --- a/easybuild/easyconfigs/r/R-bundle-Bioconductor/R-bundle-Bioconductor-3.14-foss-2021b-R-4.1.2.eb +++ b/easybuild/easyconfigs/r/R-bundle-Bioconductor/R-bundle-Bioconductor-3.14-foss-2021b-R-4.1.2.eb @@ -18,7 +18,6 @@ dependencies = [ ('R', '4.1.2'), ('Boost', '1.77.0'), # for mzR ###### ('GSL', '2.7'), # for flowClust - ('HDF5', '1.12.1'), # for rhdf5 ('arrow-R', '6.0.0.2', versionsuffix), # required by RcisTarget ] diff --git a/easybuild/easyconfigs/r/R-bundle-Bioconductor/R-bundle-Bioconductor-3.15-foss-2021b-R-4.2.0.eb b/easybuild/easyconfigs/r/R-bundle-Bioconductor/R-bundle-Bioconductor-3.15-foss-2021b-R-4.2.0.eb index 2cd7b030d51..ca9f54f0088 100644 --- a/easybuild/easyconfigs/r/R-bundle-Bioconductor/R-bundle-Bioconductor-3.15-foss-2021b-R-4.2.0.eb +++ b/easybuild/easyconfigs/r/R-bundle-Bioconductor/R-bundle-Bioconductor-3.15-foss-2021b-R-4.2.0.eb @@ -16,7 +16,6 @@ dependencies = [ ('R', '4.2.0'), ('Boost', '1.77.0'), # for mzR ('GSL', '2.7'), # for flowClust - ('HDF5', '1.12.1'), # for rhdf5 ('arrow-R', '6.0.0.2', versionsuffix), # required by RcisTarget ] diff --git a/easybuild/easyconfigs/r/R-bundle-Bioconductor/R-bundle-Bioconductor-3.15-foss-2022a-R-4.2.1.eb b/easybuild/easyconfigs/r/R-bundle-Bioconductor/R-bundle-Bioconductor-3.15-foss-2022a-R-4.2.1.eb index f6924e214d5..2f9800a49ad 100644 --- a/easybuild/easyconfigs/r/R-bundle-Bioconductor/R-bundle-Bioconductor-3.15-foss-2022a-R-4.2.1.eb +++ b/easybuild/easyconfigs/r/R-bundle-Bioconductor/R-bundle-Bioconductor-3.15-foss-2022a-R-4.2.1.eb @@ -18,7 +18,6 @@ dependencies = [ ('R', '4.2.1'), ('Boost', '1.79.0'), # for mzR ('GSL', '2.7'), # for flowClust - ('HDF5', '1.12.2'), # for rhdf5 ('arrow-R', '8.0.0', versionsuffix), # required by RcisTarget ] diff --git a/easybuild/easyconfigs/r/R-bundle-Bioconductor/R-bundle-Bioconductor-3.16-foss-2022b-R-4.2.2.eb b/easybuild/easyconfigs/r/R-bundle-Bioconductor/R-bundle-Bioconductor-3.16-foss-2022b-R-4.2.2.eb index ef1d97ba4c9..1728329d079 100644 --- a/easybuild/easyconfigs/r/R-bundle-Bioconductor/R-bundle-Bioconductor-3.16-foss-2022b-R-4.2.2.eb +++ b/easybuild/easyconfigs/r/R-bundle-Bioconductor/R-bundle-Bioconductor-3.16-foss-2022b-R-4.2.2.eb @@ -16,7 +16,6 @@ dependencies = [ ('R', '4.2.2'), ('Boost', '1.81.0'), # for mzR ('GSL', '2.7'), # for flowClust - ('HDF5', '1.14.0'), # for rhdf5 ('arrow-R', '11.0.0.3', versionsuffix), # required by RcisTarget ] @@ -322,7 +321,12 @@ exts_list = [ 'checksums': ['3dabec627b5e21da365979d6980565bd338e5a6ec8c3a016f3726ebb6184da70'], }), ('Rhdf5lib', '1.20.0', { - 'checksums': ['a73b462be309c9df11afc9b941282dcefb36b4a38d15c050fd98bb3c05bbaf7f'], + 'patches': ['Rhdf5lib-1.20.0_fix_hardcoded_path_to_mv.patch'], + 'checksums': [ + {'Rhdf5lib_1.20.0.tar.gz': 'a73b462be309c9df11afc9b941282dcefb36b4a38d15c050fd98bb3c05bbaf7f'}, + {'Rhdf5lib-1.20.0_fix_hardcoded_path_to_mv.patch': + 'fd35fd20166aa67cf5fbc194861d9196a2220fd40057b0524722ecc3de4774e8'}, + ], }), ('rhdf5filters', '1.10.0', { 'checksums': ['e1bf2ada5070b4b8d48b90db13ea750c812eaa2a82536571faa35621c250a29f'], diff --git a/easybuild/easyconfigs/r/R-bundle-Bioconductor/R-bundle-Bioconductor-3.18-foss-2023a-R-4.3.2.eb b/easybuild/easyconfigs/r/R-bundle-Bioconductor/R-bundle-Bioconductor-3.18-foss-2023a-R-4.3.2.eb index e07ffd64a9e..48c86d2ed02 100644 --- a/easybuild/easyconfigs/r/R-bundle-Bioconductor/R-bundle-Bioconductor-3.18-foss-2023a-R-4.3.2.eb +++ b/easybuild/easyconfigs/r/R-bundle-Bioconductor/R-bundle-Bioconductor-3.18-foss-2023a-R-4.3.2.eb @@ -16,8 +16,7 @@ dependencies = [ ('R', '4.3.2'), ('Boost', '1.82.0'), # for mzR ('GSL', '2.7'), # for flowClust - ('HDF5', '1.14.0'), # for rhdf5 - ('arrow-R', '14.0.0.2', versionsuffix), # required by RcisTarget + ('arrow-R', '14.0.1', versionsuffix), # required by RcisTarget ] exts_default_options = { @@ -328,7 +327,12 @@ exts_list = [ 'checksums': ['ec1ad9959f3c290fb3b4c37c1b9719f10bac0d5d59ef6b99a56b86607442d145'], }), ('Rhdf5lib', '1.24.1', { - 'checksums': ['90eb76a2f6b73e18c8fb560ab14e5e3a2c85ae747f278d66e67d3bebfe6c6551'], + 'patches': ['Rhdf5lib-1.20.0_fix_hardcoded_path_to_mv.patch'], + 'checksums': [ + {'Rhdf5lib_1.24.1.tar.gz': '90eb76a2f6b73e18c8fb560ab14e5e3a2c85ae747f278d66e67d3bebfe6c6551'}, + {'Rhdf5lib-1.20.0_fix_hardcoded_path_to_mv.patch': + 'fd35fd20166aa67cf5fbc194861d9196a2220fd40057b0524722ecc3de4774e8'}, + ], }), ('rhdf5filters', '1.14.1', { 'checksums': ['6636612d28ea6f2e658400cbd186066926fe3d4b8d07261ad7a49299c23c0e33'], diff --git a/easybuild/easyconfigs/r/R-bundle-Bioconductor/Rhdf5lib-1.20.0_fix_hardcoded_path_to_mv.patch b/easybuild/easyconfigs/r/R-bundle-Bioconductor/Rhdf5lib-1.20.0_fix_hardcoded_path_to_mv.patch new file mode 100644 index 00000000000..856ebae5891 --- /dev/null +++ b/easybuild/easyconfigs/r/R-bundle-Bioconductor/Rhdf5lib-1.20.0_fix_hardcoded_path_to_mv.patch @@ -0,0 +1,15 @@ +Replace the call to /bin/mv by mv in the configure file of the included HDF5 source tarball. +This prevents issues when building with a non-default sysroot. + +Author: Bob Dröge (University of Groningen) +diff -ru Rhdf5lib.orig/src/Makevars.in Rhdf5lib/src/Makevars.in +--- Rhdf5lib.orig/src/Makevars.in 2022-11-01 20:04:33.000000000 +0100 ++++ Rhdf5lib/src/Makevars.in 2024-04-16 20:32:22.028694313 +0200 +@@ -48,6 +48,7 @@ + + build-hdf5: @REQUIRE_SZIP@ @EXTRACT_SOURCE@ + cd hdf5; \ ++ sed -i "s|/bin/mv|mv|" ./configure; \ + ./configure --with-pic --enable-shared=no --enable-cxx --enable-hl \ + --enable-tests=no --enable-tools=no \ + --with-szlib=@SZIP_HOME@ --with-zlib=@ZLIB_HOME@ \ 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 82ab85aec92..bbc343accac 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 @@ -43,10 +43,6 @@ configopts = "--with-pic --enable-threads --enable-R-shlib" # we're installing them anyway below configopts += " --with-recommended-packages=no" -# specify that at least EasyBuild v3.5.0 is required, -# since we rely on the updated easyblock for R to configure correctly w.r.t. BLAS/LAPACK -easybuild_version = '3.5.0' - exts_defaultclass = 'RPackage' exts_default_options = { @@ -1601,7 +1597,10 @@ exts_list = [ 'checksums': ['49848bcb03dd3fc3605799893d39986b521921faaa5647815274eb204bb9bf56'], }), ('signal', '1.8-0', { - 'checksums': ['89cba854167a2b051a58cf3b73ccbf74eeb47c890ac39720611cd41f86b94684'], + 'checksums': [ + ('89cba854167a2b051a58cf3b73ccbf74eeb47c890ac39720611cd41f86b94684', + '0a604949bae91410a150a22cfa02d954f5b83166cc7a73e5409554d00e0417a7'), + ], }), ('tuneR', '1.4.6', { 'checksums': ['c5441fb56dc84cafb6aa6b47d83839da1e1a4e5b19eafbb63b268d1a660647d0'], @@ -3416,6 +3415,15 @@ exts_list = [ ('fixest', '0.11.2', { 'checksums': ['2dee113a0689e5c4dd842c451d35c9a94a5b37536f9484611a877c1ea10e2b65'], }), + ('cmna', '1.0.5', { + 'checksums': ['7cf99880cb70e8fd0b022184167888b1ad32dca503e0250c1d552a84f0613898'], + }), + ('XBRL', '0.99.19.1', { + 'checksums': ['ad9ebb5431bdfecc38b8bf3b2552f1a048878a9ac02f5a9d71279b3b099a9757'], + }), + ('rhandsontable', '0.3.8', { + 'checksums': ['901ed9c59936f7fa52ad8db3111c8904ab962f9c74f1b6cd40f81683af35d21d'], + }), ] modextrapaths = {'R_LIBS_SITE': ''} diff --git a/easybuild/easyconfigs/r/R/R-3.6.0-foss-2019a.eb b/easybuild/easyconfigs/r/R/R-3.6.0-foss-2019a.eb index 4e4d1c99a5f..424575fc5d8 100644 --- a/easybuild/easyconfigs/r/R/R-3.6.0-foss-2019a.eb +++ b/easybuild/easyconfigs/r/R/R-3.6.0-foss-2019a.eb @@ -9,7 +9,11 @@ toolchain = {'name': 'foss', 'version': '2019a'} source_urls = ['https://cloud.r-project.org/src/base/R-%(version_major)s'] sources = [SOURCE_TAR_GZ] -checksums = ['36fcac3e452666158e62459c6fc810adc247c7109ed71c5b6c3ad5fc2bf57509'] +patches = ['R-4.x_fix-CVE-2024-27322.patch'] +checksums = [ + {'R-3.6.0.tar.gz': '36fcac3e452666158e62459c6fc810adc247c7109ed71c5b6c3ad5fc2bf57509'}, + {'R-4.x_fix-CVE-2024-27322.patch': 'd8560e15c3c5716f99e852541901014d406f2a73136b0b74f11ba529f7a7b00d'}, +] builddependencies = [ ('pkg-config', '0.29.2'), diff --git a/easybuild/easyconfigs/r/R/R-3.6.0-fosscuda-2019a.eb b/easybuild/easyconfigs/r/R/R-3.6.0-fosscuda-2019a.eb index f20ae1ce680..1af773bd859 100644 --- a/easybuild/easyconfigs/r/R/R-3.6.0-fosscuda-2019a.eb +++ b/easybuild/easyconfigs/r/R/R-3.6.0-fosscuda-2019a.eb @@ -9,7 +9,11 @@ toolchain = {'name': 'fosscuda', 'version': '2019a'} source_urls = ['https://cloud.r-project.org/src/base/R-%(version_major)s'] sources = [SOURCE_TAR_GZ] -checksums = ['36fcac3e452666158e62459c6fc810adc247c7109ed71c5b6c3ad5fc2bf57509'] +patches = ['R-4.x_fix-CVE-2024-27322.patch'] +checksums = [ + {'R-3.6.0.tar.gz': '36fcac3e452666158e62459c6fc810adc247c7109ed71c5b6c3ad5fc2bf57509'}, + {'R-4.x_fix-CVE-2024-27322.patch': 'd8560e15c3c5716f99e852541901014d406f2a73136b0b74f11ba529f7a7b00d'}, +] builddependencies = [ ('pkg-config', '0.29.2'), diff --git a/easybuild/easyconfigs/r/R/R-3.6.0-intel-2019a.eb b/easybuild/easyconfigs/r/R/R-3.6.0-intel-2019a.eb index 385c219696e..1ba3ae79f23 100644 --- a/easybuild/easyconfigs/r/R/R-3.6.0-intel-2019a.eb +++ b/easybuild/easyconfigs/r/R/R-3.6.0-intel-2019a.eb @@ -9,7 +9,11 @@ toolchain = {'name': 'intel', 'version': '2019a'} source_urls = ['https://cloud.r-project.org/src/base/R-%(version_major)s'] sources = [SOURCE_TAR_GZ] -checksums = ['36fcac3e452666158e62459c6fc810adc247c7109ed71c5b6c3ad5fc2bf57509'] +patches = ['R-4.x_fix-CVE-2024-27322.patch'] +checksums = [ + {'R-3.6.0.tar.gz': '36fcac3e452666158e62459c6fc810adc247c7109ed71c5b6c3ad5fc2bf57509'}, + {'R-4.x_fix-CVE-2024-27322.patch': 'd8560e15c3c5716f99e852541901014d406f2a73136b0b74f11ba529f7a7b00d'}, +] builddependencies = [ ('pkg-config', '0.29.2'), diff --git a/easybuild/easyconfigs/r/R/R-3.6.2-foss-2019b.eb b/easybuild/easyconfigs/r/R/R-3.6.2-foss-2019b.eb index 70af7d3e9fd..5d9da19d990 100644 --- a/easybuild/easyconfigs/r/R/R-3.6.2-foss-2019b.eb +++ b/easybuild/easyconfigs/r/R/R-3.6.2-foss-2019b.eb @@ -10,11 +10,13 @@ toolchain = {'name': 'foss', 'version': '2019b'} source_urls = ['https://cloud.r-project.org/src/base/R-%(version_major)s'] sources = [SOURCE_TAR_GZ] patches = [ - '%(name)s-%(version)s_fix_long_dbl_on_ppc.patch', + 'R-%(version)s_fix_long_dbl_on_ppc.patch', + 'R-4.x_fix-CVE-2024-27322.patch', ] checksums = [ - 'bd65a45cddfb88f37370fbcee4ac8dd3f1aebeebe47c2f968fd9770ba2bbc954', # R-3.6.2.tar.gz - '833b80f9a62751eae9cfbad6116542acf932e9c6511235145be32264aacdce69', # R-3.6.2_fix_long_dbl_on_ppc.patch + {'R-3.6.2.tar.gz': 'bd65a45cddfb88f37370fbcee4ac8dd3f1aebeebe47c2f968fd9770ba2bbc954'}, + {'R-3.6.2_fix_long_dbl_on_ppc.patch': '833b80f9a62751eae9cfbad6116542acf932e9c6511235145be32264aacdce69'}, + {'R-4.x_fix-CVE-2024-27322.patch': 'd8560e15c3c5716f99e852541901014d406f2a73136b0b74f11ba529f7a7b00d'}, ] builddependencies = [ diff --git a/easybuild/easyconfigs/r/R/R-3.6.2-fosscuda-2019b.eb b/easybuild/easyconfigs/r/R/R-3.6.2-fosscuda-2019b.eb index 99a3664d030..a8534abd2a9 100644 --- a/easybuild/easyconfigs/r/R/R-3.6.2-fosscuda-2019b.eb +++ b/easybuild/easyconfigs/r/R/R-3.6.2-fosscuda-2019b.eb @@ -10,11 +10,13 @@ toolchain = {'name': 'fosscuda', 'version': '2019b'} source_urls = ['https://cloud.r-project.org/src/base/R-%(version_major)s'] sources = [SOURCE_TAR_GZ] patches = [ - '%(name)s-%(version)s_fix_long_dbl_on_ppc.patch', + 'R-%(version)s_fix_long_dbl_on_ppc.patch', + 'R-4.x_fix-CVE-2024-27322.patch', ] checksums = [ - 'bd65a45cddfb88f37370fbcee4ac8dd3f1aebeebe47c2f968fd9770ba2bbc954', # R-3.6.2.tar.gz - '833b80f9a62751eae9cfbad6116542acf932e9c6511235145be32264aacdce69', # R-3.6.2_fix_long_dbl_on_ppc.patch + {'R-3.6.2.tar.gz': 'bd65a45cddfb88f37370fbcee4ac8dd3f1aebeebe47c2f968fd9770ba2bbc954'}, + {'R-3.6.2_fix_long_dbl_on_ppc.patch': '833b80f9a62751eae9cfbad6116542acf932e9c6511235145be32264aacdce69'}, + {'R-4.x_fix-CVE-2024-27322.patch': 'd8560e15c3c5716f99e852541901014d406f2a73136b0b74f11ba529f7a7b00d'}, ] builddependencies = [ diff --git a/easybuild/easyconfigs/r/R/R-3.6.2-intel-2019b.eb b/easybuild/easyconfigs/r/R/R-3.6.2-intel-2019b.eb index a3abe2e37ee..3e94ecb9131 100644 --- a/easybuild/easyconfigs/r/R/R-3.6.2-intel-2019b.eb +++ b/easybuild/easyconfigs/r/R/R-3.6.2-intel-2019b.eb @@ -9,10 +9,14 @@ toolchain = {'name': 'intel', 'version': '2019b'} source_urls = ['https://cloud.r-project.org/src/base/R-%(version_major)s'] sources = [SOURCE_TAR_GZ] -patches = ['%(name)s-%(version)s_fix-intel-recent-glibc.patch'] +patches = [ + 'R-%(version)s_fix-intel-recent-glibc.patch', + 'R-4.x_fix-CVE-2024-27322.patch', +] checksums = [ - 'bd65a45cddfb88f37370fbcee4ac8dd3f1aebeebe47c2f968fd9770ba2bbc954', # R-3.6.2.tar.gz - '1052d223df58b6199edbac3721640f06b22a282c95dd0db982566dc36884a146', # R-3.6.2_fix-intel-recent-glibc.patch + {'R-3.6.2.tar.gz': 'bd65a45cddfb88f37370fbcee4ac8dd3f1aebeebe47c2f968fd9770ba2bbc954'}, + {'R-3.6.2_fix-intel-recent-glibc.patch': '1052d223df58b6199edbac3721640f06b22a282c95dd0db982566dc36884a146'}, + {'R-4.x_fix-CVE-2024-27322.patch': 'd8560e15c3c5716f99e852541901014d406f2a73136b0b74f11ba529f7a7b00d'}, ] builddependencies = [ diff --git a/easybuild/easyconfigs/r/R/R-3.6.3-foss-2020a.eb b/easybuild/easyconfigs/r/R/R-3.6.3-foss-2020a.eb index 802b28cc594..d1dc61629fc 100644 --- a/easybuild/easyconfigs/r/R/R-3.6.3-foss-2020a.eb +++ b/easybuild/easyconfigs/r/R/R-3.6.3-foss-2020a.eb @@ -9,7 +9,11 @@ toolchain = {'name': 'foss', 'version': '2020a'} source_urls = ['https://cloud.r-project.org/src/base/R-%(version_major)s'] sources = [SOURCE_TAR_GZ] -checksums = ['89302990d8e8add536e12125ec591d6951022cf8475861b3690bc8bf1cefaa8f'] +patches = ['R-4.x_fix-CVE-2024-27322.patch'] +checksums = [ + {'R-3.6.3.tar.gz': '89302990d8e8add536e12125ec591d6951022cf8475861b3690bc8bf1cefaa8f'}, + {'R-4.x_fix-CVE-2024-27322.patch': 'd8560e15c3c5716f99e852541901014d406f2a73136b0b74f11ba529f7a7b00d'}, +] builddependencies = [ ('pkg-config', '0.29.2'), diff --git a/easybuild/easyconfigs/r/R/R-4.0.0-foss-2020a.eb b/easybuild/easyconfigs/r/R/R-4.0.0-foss-2020a.eb index faa29bd2b3e..bd2f43f16b7 100644 --- a/easybuild/easyconfigs/r/R/R-4.0.0-foss-2020a.eb +++ b/easybuild/easyconfigs/r/R/R-4.0.0-foss-2020a.eb @@ -9,10 +9,14 @@ toolchain = {'name': 'foss', 'version': '2020a'} source_urls = ['https://cloud.r-project.org/src/base/R-%(version_major)s'] sources = [SOURCE_TAR_GZ] -patches = ['%(name)s-%(version)s_ppc64le-build-fix.patch'] +patches = [ + 'R-%(version)s_ppc64le-build-fix.patch', + 'R-4.x_fix-CVE-2024-27322.patch', +] checksums = [ - '06beb0291b569978484eb0dcb5d2339665ec745737bdfb4e873e7a5a75492940', # R-4.0.0.tar.gz - 'ae14b063be40ba2f2e73d95ae1ee0b8630ac7bbc8ec2d64830016c8d62f672ad', # R-4.0.0_ppc64le-build-fix.patch + {'R-4.0.0.tar.gz': '06beb0291b569978484eb0dcb5d2339665ec745737bdfb4e873e7a5a75492940'}, + {'R-4.0.0_ppc64le-build-fix.patch': 'ae14b063be40ba2f2e73d95ae1ee0b8630ac7bbc8ec2d64830016c8d62f672ad'}, + {'R-4.x_fix-CVE-2024-27322.patch': 'd8560e15c3c5716f99e852541901014d406f2a73136b0b74f11ba529f7a7b00d'}, ] builddependencies = [ diff --git a/easybuild/easyconfigs/r/R/R-4.0.3-foss-2020b.eb b/easybuild/easyconfigs/r/R/R-4.0.3-foss-2020b.eb index 782f039b492..d8b9d1c97fe 100644 --- a/easybuild/easyconfigs/r/R/R-4.0.3-foss-2020b.eb +++ b/easybuild/easyconfigs/r/R/R-4.0.3-foss-2020b.eb @@ -9,7 +9,11 @@ toolchain = {'name': 'foss', 'version': '2020b'} source_urls = ['https://cloud.r-project.org/src/base/R-%(version_major)s'] sources = [SOURCE_TAR_GZ] -checksums = ['09983a8a78d5fb6bc45d27b1c55f9ba5265f78fa54a55c13ae691f87c5bb9e0d'] +patches = ['R-4.x_fix-CVE-2024-27322.patch'] +checksums = [ + {'R-4.0.3.tar.gz': '09983a8a78d5fb6bc45d27b1c55f9ba5265f78fa54a55c13ae691f87c5bb9e0d'}, + {'R-4.x_fix-CVE-2024-27322.patch': 'd8560e15c3c5716f99e852541901014d406f2a73136b0b74f11ba529f7a7b00d'}, +] builddependencies = [ ('pkg-config', '0.29.2'), diff --git a/easybuild/easyconfigs/r/R/R-4.0.3-fosscuda-2020b.eb b/easybuild/easyconfigs/r/R/R-4.0.3-fosscuda-2020b.eb index db5d9c9e47c..3437fa7f9d0 100644 --- a/easybuild/easyconfigs/r/R/R-4.0.3-fosscuda-2020b.eb +++ b/easybuild/easyconfigs/r/R/R-4.0.3-fosscuda-2020b.eb @@ -9,7 +9,11 @@ toolchain = {'name': 'fosscuda', 'version': '2020b'} source_urls = ['https://cloud.r-project.org/src/base/R-%(version_major)s'] sources = [SOURCE_TAR_GZ] -checksums = ['09983a8a78d5fb6bc45d27b1c55f9ba5265f78fa54a55c13ae691f87c5bb9e0d'] +patches = ['R-4.x_fix-CVE-2024-27322.patch'] +checksums = [ + {'R-4.0.3.tar.gz': '09983a8a78d5fb6bc45d27b1c55f9ba5265f78fa54a55c13ae691f87c5bb9e0d'}, + {'R-4.x_fix-CVE-2024-27322.patch': 'd8560e15c3c5716f99e852541901014d406f2a73136b0b74f11ba529f7a7b00d'}, +] builddependencies = [ ('pkg-config', '0.29.2'), diff --git a/easybuild/easyconfigs/r/R/R-4.0.4-foss-2020b.eb b/easybuild/easyconfigs/r/R/R-4.0.4-foss-2020b.eb index c7d07e5f2ac..c5a53742396 100644 --- a/easybuild/easyconfigs/r/R/R-4.0.4-foss-2020b.eb +++ b/easybuild/easyconfigs/r/R/R-4.0.4-foss-2020b.eb @@ -15,7 +15,11 @@ toolchain = {'name': 'foss', 'version': '2020b'} source_urls = ['https://cloud.r-project.org/src/base/R-%(version_major)s'] sources = [SOURCE_TAR_GZ] -checksums = ['523f27d69744a08c8f0bd5e1e6c3d89a4db29ed983388ba70963a3cd3a4a802e'] +patches = ['R-4.x_fix-CVE-2024-27322.patch'] +checksums = [ + {'R-4.0.4.tar.gz': '523f27d69744a08c8f0bd5e1e6c3d89a4db29ed983388ba70963a3cd3a4a802e'}, + {'R-4.x_fix-CVE-2024-27322.patch': 'd8560e15c3c5716f99e852541901014d406f2a73136b0b74f11ba529f7a7b00d'}, +] builddependencies = [ ('pkg-config', '0.29.2'), diff --git a/easybuild/easyconfigs/r/R/R-4.0.4-fosscuda-2020b.eb b/easybuild/easyconfigs/r/R/R-4.0.4-fosscuda-2020b.eb index afc6216b0bf..5930c930423 100644 --- a/easybuild/easyconfigs/r/R/R-4.0.4-fosscuda-2020b.eb +++ b/easybuild/easyconfigs/r/R/R-4.0.4-fosscuda-2020b.eb @@ -9,7 +9,11 @@ toolchain = {'name': 'fosscuda', 'version': '2020b'} source_urls = ['https://cloud.r-project.org/src/base/R-%(version_major)s'] sources = [SOURCE_TAR_GZ] -checksums = ['523f27d69744a08c8f0bd5e1e6c3d89a4db29ed983388ba70963a3cd3a4a802e'] +patches = ['R-4.x_fix-CVE-2024-27322.patch'] +checksums = [ + {'R-4.0.4.tar.gz': '523f27d69744a08c8f0bd5e1e6c3d89a4db29ed983388ba70963a3cd3a4a802e'}, + {'R-4.x_fix-CVE-2024-27322.patch': 'd8560e15c3c5716f99e852541901014d406f2a73136b0b74f11ba529f7a7b00d'}, +] builddependencies = [ ('pkg-config', '0.29.2'), diff --git a/easybuild/easyconfigs/r/R/R-4.0.5-foss-2020b.eb b/easybuild/easyconfigs/r/R/R-4.0.5-foss-2020b.eb index bf2b31d78ee..a3d990d65b4 100644 --- a/easybuild/easyconfigs/r/R/R-4.0.5-foss-2020b.eb +++ b/easybuild/easyconfigs/r/R/R-4.0.5-foss-2020b.eb @@ -12,7 +12,11 @@ toolchain = {'name': 'foss', 'version': '2020b'} source_urls = ['https://cloud.r-project.org/src/base/R-%(version_major)s'] sources = [SOURCE_TAR_GZ] -checksums = ['0a3ee079aa772e131fe5435311ab627fcbccb5a50cabc54292e6f62046f1ffef'] +patches = ['R-4.x_fix-CVE-2024-27322.patch'] +checksums = [ + {'R-4.0.5.tar.gz': '0a3ee079aa772e131fe5435311ab627fcbccb5a50cabc54292e6f62046f1ffef'}, + {'R-4.x_fix-CVE-2024-27322.patch': 'd8560e15c3c5716f99e852541901014d406f2a73136b0b74f11ba529f7a7b00d'}, +] builddependencies = [ ('pkg-config', '0.29.2'), diff --git a/easybuild/easyconfigs/r/R/R-4.0.5-fosscuda-2020b.eb b/easybuild/easyconfigs/r/R/R-4.0.5-fosscuda-2020b.eb index be10c211dc4..9fbcf1785f5 100644 --- a/easybuild/easyconfigs/r/R/R-4.0.5-fosscuda-2020b.eb +++ b/easybuild/easyconfigs/r/R/R-4.0.5-fosscuda-2020b.eb @@ -12,7 +12,11 @@ toolchain = {'name': 'fosscuda', 'version': '2020b'} source_urls = ['https://cloud.r-project.org/src/base/R-%(version_major)s'] sources = [SOURCE_TAR_GZ] -checksums = ['0a3ee079aa772e131fe5435311ab627fcbccb5a50cabc54292e6f62046f1ffef'] +patches = ['R-4.x_fix-CVE-2024-27322.patch'] +checksums = [ + {'R-4.0.5.tar.gz': '0a3ee079aa772e131fe5435311ab627fcbccb5a50cabc54292e6f62046f1ffef'}, + {'R-4.x_fix-CVE-2024-27322.patch': 'd8560e15c3c5716f99e852541901014d406f2a73136b0b74f11ba529f7a7b00d'}, +] builddependencies = [ ('pkg-config', '0.29.2'), diff --git a/easybuild/easyconfigs/r/R/R-4.1.0-foss-2021a.eb b/easybuild/easyconfigs/r/R/R-4.1.0-foss-2021a.eb index 39597e9f6f9..0edc567f774 100644 --- a/easybuild/easyconfigs/r/R/R-4.1.0-foss-2021a.eb +++ b/easybuild/easyconfigs/r/R/R-4.1.0-foss-2021a.eb @@ -9,10 +9,15 @@ toolchain = {'name': 'foss', 'version': '2021a'} source_urls = ['https://cloud.r-project.org/src/base/R-%(version_major)s'] sources = [SOURCE_TAR_GZ] -patches = ['%(name)s-%(version)s_identify-flexiblas-in-configure.patch'] +patches = [ + 'R-4.1.0_identify-flexiblas-in-configure.patch', + 'R-4.x_fix-CVE-2024-27322.patch', +] checksums = [ - 'e8e68959d7282ca147360fc9644ada9bd161bab781bab14d33b8999a95182781', # R-4.1.0.tar.gz - '2c6720e2e144ae4fe00842daab0ebba72241080603e0ff1a6ca758738041b257', # R-4.1.0_identify-flexiblas-in-configure.patch + {'R-4.1.0.tar.gz': 'e8e68959d7282ca147360fc9644ada9bd161bab781bab14d33b8999a95182781'}, + {'R-4.1.0_identify-flexiblas-in-configure.patch': + '2c6720e2e144ae4fe00842daab0ebba72241080603e0ff1a6ca758738041b257'}, + {'R-4.x_fix-CVE-2024-27322.patch': 'd8560e15c3c5716f99e852541901014d406f2a73136b0b74f11ba529f7a7b00d'}, ] builddependencies = [ diff --git a/easybuild/easyconfigs/r/R/R-4.1.2-foss-2021b.eb b/easybuild/easyconfigs/r/R/R-4.1.2-foss-2021b.eb index 954de88b9cb..acc5de78f2b 100644 --- a/easybuild/easyconfigs/r/R/R-4.1.2-foss-2021b.eb +++ b/easybuild/easyconfigs/r/R/R-4.1.2-foss-2021b.eb @@ -9,10 +9,15 @@ toolchain = {'name': 'foss', 'version': '2021b'} source_urls = ['https://cloud.r-project.org/src/base/R-%(version_major)s'] sources = [SOURCE_TAR_GZ] -patches = ['%(name)s-4.1.0_identify-flexiblas-in-configure.patch'] +patches = [ + 'R-4.1.0_identify-flexiblas-in-configure.patch', + 'R-4.x_fix-CVE-2024-27322.patch', +] checksums = [ - '2036225e9f7207d4ce097e54972aecdaa8b40d7d9911cd26491fac5a0fab38af', # R-4.1.2.tar.gz - '2c6720e2e144ae4fe00842daab0ebba72241080603e0ff1a6ca758738041b257', # R-4.1.0_identify-flexiblas-in-configure.patch + {'R-4.1.2.tar.gz': '2036225e9f7207d4ce097e54972aecdaa8b40d7d9911cd26491fac5a0fab38af'}, + {'R-4.1.0_identify-flexiblas-in-configure.patch': + '2c6720e2e144ae4fe00842daab0ebba72241080603e0ff1a6ca758738041b257'}, + {'R-4.x_fix-CVE-2024-27322.patch': 'd8560e15c3c5716f99e852541901014d406f2a73136b0b74f11ba529f7a7b00d'}, ] builddependencies = [ 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 33973d12812..a8e0a1c8bf4 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 @@ -9,10 +9,15 @@ toolchain = {'name': 'foss', 'version': '2021b'} source_urls = ['https://cloud.r-project.org/src/base/R-%(version_major)s'] sources = [SOURCE_TAR_GZ] -patches = ['%(name)s-4.1.0_identify-flexiblas-in-configure.patch'] +patches = [ + 'R-4.1.0_identify-flexiblas-in-configure.patch', + 'R-4.x_fix-CVE-2024-27322.patch', +] checksums = [ - '38eab7719b7ad095388f06aa090c5a2b202791945de60d3e2bb0eab1f5097488', # R-4.2.0.tar.gz - '2c6720e2e144ae4fe00842daab0ebba72241080603e0ff1a6ca758738041b257', # R-4.1.0_identify-flexiblas-in-configure.patch + {'R-4.2.0.tar.gz': '38eab7719b7ad095388f06aa090c5a2b202791945de60d3e2bb0eab1f5097488'}, + {'R-4.1.0_identify-flexiblas-in-configure.patch': + '2c6720e2e144ae4fe00842daab0ebba72241080603e0ff1a6ca758738041b257'}, + {'R-4.x_fix-CVE-2024-27322.patch': 'd8560e15c3c5716f99e852541901014d406f2a73136b0b74f11ba529f7a7b00d'}, ] builddependencies = [ 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 d2734474d6c..7b4e813f60f 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 @@ -9,7 +9,11 @@ toolchain = {'name': 'foss', 'version': '2022a'} source_urls = ['https://cloud.r-project.org/src/base/R-%(version_major)s'] sources = [SOURCE_TAR_GZ] -checksums = ['4d52db486d27848e54613d4ee977ad952ec08ce17807e1b525b10cd4436c643f'] +patches = ['R-4.x_fix-CVE-2024-27322.patch'] +checksums = [ + {'R-4.2.1.tar.gz': '4d52db486d27848e54613d4ee977ad952ec08ce17807e1b525b10cd4436c643f'}, + {'R-4.x_fix-CVE-2024-27322.patch': 'd8560e15c3c5716f99e852541901014d406f2a73136b0b74f11ba529f7a7b00d'}, +] builddependencies = [ ('pkgconf', '1.8.0'), 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 ebc872e51a4..65a3ad6c54b 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 @@ -9,7 +9,11 @@ toolchain = {'name': 'foss', 'version': '2022b'} source_urls = ['https://cloud.r-project.org/src/base/R-%(version_major)s'] sources = [SOURCE_TAR_GZ] -checksums = ['0ff62b42ec51afa5713caee7c4fde7a0c45940ba39bef8c5c9487fef0c953df5'] +patches = ['R-4.x_fix-CVE-2024-27322.patch'] +checksums = [ + {'R-4.2.2.tar.gz': '0ff62b42ec51afa5713caee7c4fde7a0c45940ba39bef8c5c9487fef0c953df5'}, + {'R-4.x_fix-CVE-2024-27322.patch': 'd8560e15c3c5716f99e852541901014d406f2a73136b0b74f11ba529f7a7b00d'}, +] builddependencies = [ ('pkgconf', '1.9.3'), diff --git a/easybuild/easyconfigs/r/R/R-4.3.2-gfbf-2023a.eb b/easybuild/easyconfigs/r/R/R-4.3.2-gfbf-2023a.eb index ed664162bf5..806624dbe57 100644 --- a/easybuild/easyconfigs/r/R/R-4.3.2-gfbf-2023a.eb +++ b/easybuild/easyconfigs/r/R/R-4.3.2-gfbf-2023a.eb @@ -9,7 +9,11 @@ toolchain = {'name': 'gfbf', 'version': '2023a'} source_urls = ['https://cloud.r-project.org/src/base/R-%(version_major)s'] sources = [SOURCE_TAR_GZ] -checksums = ['b3f5760ac2eee8026a3f0eefcb25b47723d978038eee8e844762094c860c452a'] +patches = ['R-4.x_fix-CVE-2024-27322.patch'] +checksums = [ + {'R-4.3.2.tar.gz': 'b3f5760ac2eee8026a3f0eefcb25b47723d978038eee8e844762094c860c452a'}, + {'R-4.x_fix-CVE-2024-27322.patch': 'd8560e15c3c5716f99e852541901014d406f2a73136b0b74f11ba529f7a7b00d'}, +] builddependencies = [ ('pkgconf', '1.9.5'), diff --git a/easybuild/easyconfigs/r/R/R-4.3.3-gfbf-2023b.eb b/easybuild/easyconfigs/r/R/R-4.3.3-gfbf-2023b.eb index df95c0aaa55..5209a5ce4a2 100644 --- a/easybuild/easyconfigs/r/R/R-4.3.3-gfbf-2023b.eb +++ b/easybuild/easyconfigs/r/R/R-4.3.3-gfbf-2023b.eb @@ -9,7 +9,11 @@ toolchain = {'name': 'gfbf', 'version': '2023b'} source_urls = ['https://cloud.r-project.org/src/base/R-%(version_major)s'] sources = [SOURCE_TAR_GZ] -checksums = ['80851231393b85bf3877ee9e39b282e750ed864c5ec60cbd68e6e139f0520330'] +patches = ['R-4.x_fix-CVE-2024-27322.patch'] +checksums = [ + {'R-4.3.3.tar.gz': '80851231393b85bf3877ee9e39b282e750ed864c5ec60cbd68e6e139f0520330'}, + {'R-4.x_fix-CVE-2024-27322.patch': 'd8560e15c3c5716f99e852541901014d406f2a73136b0b74f11ba529f7a7b00d'}, +] builddependencies = [ ('pkgconf', '2.0.3'), diff --git a/easybuild/easyconfigs/r/R/R-4.x_fix-CVE-2024-27322.patch b/easybuild/easyconfigs/r/R/R-4.x_fix-CVE-2024-27322.patch new file mode 100644 index 00000000000..abf3c67864b --- /dev/null +++ b/easybuild/easyconfigs/r/R/R-4.x_fix-CVE-2024-27322.patch @@ -0,0 +1,39 @@ +see https://nvd.nist.gov/vuln/detail/CVE-2024-27322 + https://stat.ethz.ch/pipermail/r-devel/2024-April/083396.html + https://github.com/r-devel/r-svn/commit/f7c46500f455eb4edfc3656c3fa20af61b16abb7 +diff --git a/src/main/serialize.c b/src/main/serialize.c +index a389f71311..a190fbf8f3 100644 +--- a/src/main/serialize.c ++++ b/src/main/serialize.c +@@ -2650,6 +2650,13 @@ do_serializeToConn(SEXP call, SEXP op, SEXP args, SEXP env) + return R_NilValue; + } + ++static SEXP checkNotPromise(SEXP val) ++{ ++ if (TYPEOF(val) == PROMSXP) ++ error(_("cannot return a promise (PROMSXP) object")); ++ return val; ++} ++ + /* unserializeFromConn(conn, hook) used from readRDS(). + It became public in R 2.13.0, and that version added support for + connections internally */ +@@ -2699,7 +2706,7 @@ do_unserializeFromConn(SEXP call, SEXP op, SEXP args, SEXP env) + con->close(con); + UNPROTECT(1); + } +- return ans; ++ return checkNotPromise(ans); + } + + /* +@@ -3330,8 +3337,8 @@ attribute_hidden SEXP + do_serialize(SEXP call, SEXP op, SEXP args, SEXP env) + { + checkArity(op, args); +- if (PRIMVAL(op) == 2) return R_unserialize(CAR(args), CADR(args)); +- ++ if (PRIMVAL(op) == 2) //return R_unserialize(CAR(args), CADR(args)); ++ return checkNotPromise(R_unserialize(CAR(args), CADR(args))); + SEXP object, icon, type, ver, fun; + object = CAR(args); args = CDR(args); + icon = CAR(args); args = CDR(args); diff --git a/easybuild/easyconfigs/r/RAxML-NG/RAxML-NG-1.2.0-GCC-12.2.0.eb b/easybuild/easyconfigs/r/RAxML-NG/RAxML-NG-1.2.0-GCC-12.2.0.eb new file mode 100644 index 00000000000..1ca43f33fd7 --- /dev/null +++ b/easybuild/easyconfigs/r/RAxML-NG/RAxML-NG-1.2.0-GCC-12.2.0.eb @@ -0,0 +1,43 @@ +# EasyBuild easyconfig +# +# Contributed from Fred Hutchinson Cancer Research Center, Seattle WA, US +# John Dey jfdey@fredhutch.org +# +easyblock = 'CMakeMake' + +name = 'RAxML-NG' +version = '1.2.0' + +homepage = 'https://github.com/amkozlov/raxml-ng' +description = """RAxML-NG is a phylogenetic tree inference tool which uses maximum-likelihood (ML) + optimality criterion. Its search heuristic is based on iteratively performing a series of Subtree + Pruning and Regrafting (SPR) moves, which allows to quickly navigate to the best-known ML tree.""" + +toolchain = {'name': 'GCC', 'version': '12.2.0'} + +sources = [{ + 'filename': '%(name)s-%(version)s.tar.gz', + 'git_config': { + 'url': 'https://github.com/amkozlov', + 'repo_name': '%(namelower)s', + 'tag': '%(version)s', + 'recursive': True, + 'keep_git_dir': True, + } +}] +checksums = [None] + +builddependencies = [ + ('CMake', '3.24.3'), + ('Bison', '3.8.2'), + ('flex', '2.6.4'), +] + +sanity_check_paths = { + 'files': ['bin/raxml-ng'], + 'dirs': [], +} + +sanity_check_commands = ["raxml-ng --help"] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/r/RAxML/RAxML-8.2.12-gompi-2022b-avx2.eb b/easybuild/easyconfigs/r/RAxML/RAxML-8.2.12-gompi-2022b-avx2.eb new file mode 100644 index 00000000000..8b13f18b2d6 --- /dev/null +++ b/easybuild/easyconfigs/r/RAxML/RAxML-8.2.12-gompi-2022b-avx2.eb @@ -0,0 +1,35 @@ +easyblock = 'MakeCp' + +name = 'RAxML' +version = '8.2.12' +versionsuffix = '-avx2' + +homepage = 'https://github.com/stamatak/standard-RAxML' +description = "RAxML search algorithm for maximum likelihood based inference of phylogenetic trees." + +toolchain = {'name': 'gompi', 'version': '2022b'} +toolchainopts = {'usempi': True} + +source_urls = ['https://github.com/stamatak/standard-RAxML/archive/'] +sources = ['v%(version)s.zip'] +checksums = ['abe6978c6027e897ebed67066836e4eadd57ecd0d042045634424dd001e86105'] + +buildopts = '-f Makefile.AVX2.gcc CC="$CC" && rm *.o && ' +buildopts += 'make -j %(parallel)s -f Makefile.AVX2.PTHREADS.gcc CC="$CC" && rm *.o && ' +buildopts += 'make -j %(parallel)s -f Makefile.AVX2.HYBRID.gcc CC="$CC"' + +files_to_copy = [ + (["raxmlHPC-AVX2", "raxmlHPC-PTHREADS-AVX2", "raxmlHPC-HYBRID-AVX2"], "bin"), + "usefulScripts", "README", "manual" +] + +postinstallcmds = ["cd %(installdir)s/bin && ln -s raxmlHPC-AVX2 raxmlHPC"] + +sanity_check_paths = { + 'files': ['bin/raxmlHPC'], + 'dirs': [], +} + +sanity_check_commands = ["raxmlHPC -%s" % x for x in ['h', 'v']] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/r/ROOT/ROOT-6.30.06-foss-2023a.eb b/easybuild/easyconfigs/r/ROOT/ROOT-6.30.06-foss-2023a.eb new file mode 100644 index 00000000000..b11dbb20ea5 --- /dev/null +++ b/easybuild/easyconfigs/r/ROOT/ROOT-6.30.06-foss-2023a.eb @@ -0,0 +1,53 @@ +name = 'ROOT' +version = '6.30.06' + +homepage = 'https://root.cern.ch' +description = """The ROOT system provides a set of OO frameworks with all the functionality + needed to handle and analyze large amounts of data in a very efficient way.""" + +toolchain = {'name': 'foss', 'version': '2023a'} +toolchainopts = {'pic': True} + +source_urls = ['https://root.cern.ch/download/'] +sources = ['%(namelower)s_v%(version)s.source.tar.gz'] +checksums = ['300db7ed1b678ed2fb9635ca675921a1945c7c2103da840033b493091f55700c'] + +builddependencies = [ + ('CMake', '3.26.3'), + ('pkgconf', '1.9.5'), +] + +dependencies = [ + ('GSL', '2.7'), + ('libxml2', '2.11.4'), + ('PCRE', '8.45'), + ('CFITSIO', '4.3.0'), + ('freetype', '2.13.0'), + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), + ('zlib', '1.2.13'), + ('X11', '20230603'), + ('Mesa', '23.1.4'), + ('libGLU', '9.0.3'), + ('GL2PS', '1.4.2'), + ('FFTW', '3.3.10'), + ('SQLite', '3.42.0'), + ('XZ', '5.4.2'), + ('libpng', '1.6.39'), +] + +# NOTE: Ensure that each configopts string begins with a blank +# disable some components +configopts = " -Dxrootd=OFF -Dmysql=OFF -Dkrb5=OFF -Dodbc=OFF -Doracle=OFF -Dpgsql=OFF -Dqt=OFF" + +# make sure some components are enabled +configopts += " -Dpcre=ON -Dzlib=ON -Dpyroot=ON" +configopts += " -Dunuran=ON -Dexplicitlink=ON -Dminuit2=ON -Droofit=ON " + +# Add component-specific settings based on dependencies +configopts += ' -Dfftw3=ON -Dgsl=ON -DOpenGL_GL_PREFERENCE=GLVND' + +# Set C++ standard to C++17 for better stability +configopts += ' -DCMAKE_CXX_STANDARD=17' + +moduleclass = 'data' diff --git a/easybuild/easyconfigs/r/RPostgreSQL/RPostgreSQL-0.7-6-gfbf-2023a.eb b/easybuild/easyconfigs/r/RPostgreSQL/RPostgreSQL-0.7-6-gfbf-2023a.eb new file mode 100644 index 00000000000..b15c33a3c44 --- /dev/null +++ b/easybuild/easyconfigs/r/RPostgreSQL/RPostgreSQL-0.7-6-gfbf-2023a.eb @@ -0,0 +1,50 @@ +easyblock = 'Bundle' + +name = 'RPostgreSQL' +version = '0.7-6' + +homepage = "https://cran.r-project.org/package=RPostgreSQL" +description = """Database interface and 'PostgreSQL' driver for 'R'. This package provides a +Database Interface 'DBI' compliant driver for 'R' to access 'PostgreSQL' +database systems.""" + +toolchain = {'name': 'gfbf', 'version': '2023a'} + +builddependencies = [ + ('pkgconf', '1.9.5'), + ('Autotools', '20220317'), +] + +dependencies = [ + ('R', '4.3.2'), + ('PostgreSQL', '16.1'), +] + +exts_defaultclass = 'RPackage' + +exts_default_options = { + 'source_urls': [ + 'https://cran.r-project.org/src/contrib/Archive/%(name)s', # package archive + 'https://cran.r-project.org/src/contrib/', # current version of packages + 'https://cran.freestatistics.org/src/contrib', # mirror alternative for current packages + ], + 'source_tmpl': '%(name)s_%(version)s.tar.gz', +} + +exts_list = [ + ('DBI', '1.1.3', { + 'checksums': ['38bb33753da5bddb78893a5228a5d269dae3bf16f21dc5d9853ac9c24d31428d'], + }), + (name, version, { + 'checksums': ['385939708b6a3657663409f91e165ded0ff5268d1dc6225e0f9b34764baf2d2c'], + }), +] + +sanity_check_paths = { + 'files': ['RPostgreSQL/libs/RPostgreSQL.%s' % SHLIB_EXT, 'RPostgreSQL/R/RPostgreSQL'], + 'dirs': [], +} + +modextrapaths = {'R_LIBS_SITE': ''} + +moduleclass = 'data' diff --git a/easybuild/easyconfigs/r/RStudio-Server/RStudio-Server-2023.12.1+402-gfbf-2023b-Java-11-R-4.3.3.eb b/easybuild/easyconfigs/r/RStudio-Server/RStudio-Server-2023.12.1+402-gfbf-2023b-Java-11-R-4.3.3.eb new file mode 100644 index 00000000000..7821f9f4b06 --- /dev/null +++ b/easybuild/easyconfigs/r/RStudio-Server/RStudio-Server-2023.12.1+402-gfbf-2023b-Java-11-R-4.3.3.eb @@ -0,0 +1,98 @@ +easyblock = 'CMakeNinja' + +name = 'RStudio-Server' +version = "2023.12.1+402" +versionsuffix = '-Java-%(javaver)s-R-%(rver)s' +local_git_rev = '4da58325ffcff29d157d9264087d4b1ab27f7204' + +homepage = 'https://www.rstudio.com/' +description = """This is the RStudio Server version. +RStudio is a set of integrated tools designed to help you be more productive with R. + +The server can be started with: + rserver --server-daemonize=0 --www-port=8787 + +If you need a database config one can be created with: + MYTMP=`mktemp -d` && echo -e "provider=sqlite\\ndirectory=${MYTMP}/sqlite" > "${MYTMP}/db.conf" +and then used with: + rserver ... --database-config-file="${MYTMP}/db.conf" +""" + +toolchain = {'name': 'gfbf', 'version': '2023b'} + +source_urls = ['https://github.com/rstudio/rstudio/archive'] +sources = ['v%(version)s.tar.gz'] +checksums = ['196d31094d580a74737fbf689d2d0b302da5fec13694aa1d63f8875d3e45e4dd'] + +builddependencies = [ + ('ant', '1.10.14', '-Java-%(javaver)s', SYSTEM), + ('CMake', '3.27.6'), + ('Ninja', '1.11.1'), + ('pkgconf', '2.0.3'), + ('nodejs', '20.9.0'), +] + +dependencies = [ + ('Boost', '1.83.0'), + ('Java', '11', '', SYSTEM), + ('R', '4.3.3'), + ('SOCI', '4.0.3'), + ('yaml-cpp', '0.8.0'), +] + +osdependencies = [ + ('pam-devel', 'libpam0g-dev') +] + +preconfigopts = " && ".join([ + # Install dependencies via scripts. Done in subshell to preserve PWD + "(export RSTUDIO_TOOLS_ROOT='%(builddir)s'", + "cd '%(start_dir)s/dependencies/common'", + "./install-cef", + "./install-dictionaries", + "./install-mathjax", + "./install-pandoc", + "./install-packages", + "./install-panmirror", + "./install-npm-dependencies)", + "" +]) + +configopts = " ".join([ + "-DRSTUDIO_TOOLS_ROOT='%(builddir)s'", + "-DRSTUDIO_TARGET=Server", + "-DRSTUDIO_USE_SYSTEM_BOOST=ON", + "-DRSTUDIO_USE_SYSTEM_SOCI=ON", + "-DRSTUDIO_USE_SYSTEM_YAML_CPP=ON", + "-DQUARTO_ENABLED=OFF", # Not available on all archs, use pandoc fallback + "-DRSTUDIO_GIT_REVISION_HASH=" + local_git_rev +]) + +sanity_check_commands = [ + # RSession requires environment variables R_HOME and R_DOC_DIR + 'R_HOME="$EBROOTR/lib64/R" R_DOC_DIR="$R_HOME/doc" rsession --verify-installation=1', + # RServer requires a db conf (this may also be needed for live use) + # Also create and set a soem dirs so it doesn't try to use $HOME + ' '.join([ + 'MYTMP=`mktemp -d`', + '&& export RSTUDIO_CONFIG_DIR="$MYTMP"', + '&& export XDG_DATA_HOME="$MYTMP/.data"', + '&& export XDG_CACHE_HOME="$MYTMP/.cache"', + '&& mkdir "$XDG_DATA_HOME" "$XDG_CACHE_HOME"', + '&& export RS_LOG_DIR="$MYTMP/log"', + '&& echo -e "provider=sqlite\\ndirectory=$MYTMP/db" >> "$MYTMP/db.conf"', + '&& rserver', + '--verify-installation=1', + '--server-user="$USER"', + '--database-config-file="$MYTMP/db.conf"', + '--server-data-dir="$MYTMP/sdd"', + '--secure-cookie-key-file="$MYTMP/secure-cookie-key"', + ]), +] + +sanity_check_paths = { + 'files': ['bin/rstudio-server'], + 'dirs': ['bin', 'extras', 'resources', 'www', 'www-symbolmaps', 'R'], +} + +moduleclass = 'lang' diff --git a/easybuild/easyconfigs/r/Rtree/Rtree-1.2.0-GCCcore-12.3.0.eb b/easybuild/easyconfigs/r/Rtree/Rtree-1.2.0-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..e3bb2351383 --- /dev/null +++ b/easybuild/easyconfigs/r/Rtree/Rtree-1.2.0-GCCcore-12.3.0.eb @@ -0,0 +1,28 @@ +easyblock = 'PythonPackage' + +name = 'Rtree' +version = '1.2.0' + +homepage = 'https://toblerity.org/rtree/' +description = """Rtree is a ctypes Python wrapper of libspatialindex that provides a number of advanced spatial + indexing features for the spatially curious Python user.""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +sources = [SOURCE_TAR_GZ] +checksums = ['f5145f7852bf7f95c126fb16bf1a4c2ca9300ae151b07f8a0f7083ea47912675'] + +builddependencies = [ + ('binutils', '2.40'), +] + +dependencies = [ + ('Python', '3.11.3'), + ('libspatialindex', '1.9.3'), +] + +use_pip = True +sanity_pip_check = True +download_dep_fail = True + +moduleclass = 'data' diff --git a/easybuild/easyconfigs/r/Rust/Rust-1.78.0-GCCcore-13.3.0.eb b/easybuild/easyconfigs/r/Rust/Rust-1.78.0-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..ed5d13cb4a4 --- /dev/null +++ b/easybuild/easyconfigs/r/Rust/Rust-1.78.0-GCCcore-13.3.0.eb @@ -0,0 +1,31 @@ +name = 'Rust' +version = '1.78.0' + +homepage = 'https://www.rust-lang.org' +description = """Rust is a systems programming language that runs blazingly fast, prevents segfaults, + and guarantees thread safety.""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = ['https://static.rust-lang.org/dist/'] +sources = ['rustc-%(version)s-src.tar.gz'] +patches = ['Rust-1.70_sysroot-fix-interpreter.patch'] +checksums = [ + {'rustc-1.78.0-src.tar.gz': 'ff544823a5cb27f2738128577f1e7e00ee8f4c83f2a348781ae4fc355e91d5a9'}, + {'Rust-1.70_sysroot-fix-interpreter.patch': '220129db55e022a98d25028da5dcc9f26b252dd995c3ac92f6312dbb1e362cb1'}, +] + +builddependencies = [ + ('binutils', '2.42'), + ('CMake', '3.29.3'), + ('Python', '3.12.3'), + ('Ninja', '1.12.1'), + ('pkgconf', '2.2.0'), + ('patchelf', '0.18.0'), # only required when RPATH linking is enabled +] + +dependencies = [ + ('OpenSSL', '3', '', SYSTEM), +] + +moduleclass = 'lang' diff --git a/easybuild/easyconfigs/s/SAMtools/SAMtools-1.19.2-GCC-13.2.0.eb b/easybuild/easyconfigs/s/SAMtools/SAMtools-1.19.2-GCC-13.2.0.eb new file mode 100644 index 00000000000..d806a09f0ec --- /dev/null +++ b/easybuild/easyconfigs/s/SAMtools/SAMtools-1.19.2-GCC-13.2.0.eb @@ -0,0 +1,38 @@ +# # +# 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:: MIT +# +# Notes:: +# +# Updated to 1.14 and gcc-11.2.0 +# J. Sassmannshausen / GSTT + +name = 'SAMtools' +version = '1.19.2' + +homepage = 'https://www.htslib.org/' +description = """SAM Tools provide various utilities for manipulating alignments in the SAM format, + including sorting, merging, indexing and generating alignments in a per-position format.""" + +toolchain = {'name': 'GCC', 'version': '13.2.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/%(namelower)s/%(namelower)s/releases/download/%(version)s'] +sources = [SOURCELOWER_TAR_BZ2] +checksums = ['71f60499668e4c08e7d745fbff24c15cc8a0977abab1acd5d2bb419bdb065e96'] + +# The htslib component of SAMtools >= 1.4 uses zlib, bzip2 and lzma compression. +# The latter is currently provided by XZ. +dependencies = [ + ('ncurses', '6.4'), + ('zlib', '1.2.13'), + ('bzip2', '1.0.8'), + ('XZ', '5.4.4'), + ('cURL', '8.3.0'), +] + + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/s/SCOTCH/SCOTCH-7.0.4-gompi-2023b.eb b/easybuild/easyconfigs/s/SCOTCH/SCOTCH-7.0.4-gompi-2023b.eb new file mode 100644 index 00000000000..df359f078df --- /dev/null +++ b/easybuild/easyconfigs/s/SCOTCH/SCOTCH-7.0.4-gompi-2023b.eb @@ -0,0 +1,26 @@ +name = 'SCOTCH' +version = '7.0.4' + +homepage = 'https://www.labri.fr/perso/pelegrin/scotch/' +description = """Software package and libraries for sequential and parallel graph partitioning, +static mapping, and sparse matrix block ordering, and sequential mesh and hypergraph partitioning.""" + +toolchain = {'name': 'gompi', 'version': '2023b'} +toolchainopts = {'pic': True} + +source_urls = ['https://gitlab.inria.fr/scotch/scotch/-/archive/v%(version)s/'] +sources = ['%(namelower)s-v%(version)s.tar.gz'] +checksums = ['8ef4719d6a3356e9c4ca7fefd7e2ac40deb69779a5c116f44da75d13b3d2c2c3'] + +threadedmpi = False + +builddependencies = [ + ('Bison', '3.8.2'), + ('flex', '2.6.4'), +] + +dependencies = [ + ('zlib', '1.2.13'), +] + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/s/SCReadCounts/SCReadCounts-1.4.0-foss-2023b.eb b/easybuild/easyconfigs/s/SCReadCounts/SCReadCounts-1.4.0-foss-2023b.eb new file mode 100644 index 00000000000..cf50cd37f15 --- /dev/null +++ b/easybuild/easyconfigs/s/SCReadCounts/SCReadCounts-1.4.0-foss-2023b.eb @@ -0,0 +1,40 @@ +easyblock = 'Tarball' + +name = 'SCReadCounts' +version = '1.4.0' + +homepage = 'https://horvathlab.github.io/NGS/SCReadCounts/' +description = """SCReadCounts is a computational tool for a cell-level assessment of the read counts + bearing a particular nucleotide at genomic positions of interest from single cell RNA sequencing (scRNA-seq) data.""" + +toolchain = {'name': 'foss', 'version': '2023b'} + +source_urls = ['https://github.com/HorvathLab/NGS/releases/download/SCReadCounts-%(version)s'] +sources = ['%(name)s-%(version)s.Python-3.7.tgz'] + +checksums = ['61856534dc5c578e9d12bcb397dc696747685b33ef056c49d1ff766960676c30'] + +# There is also an optional dependency wxPython for GUI +# which is not included in this easyconfig. +dependencies = [ + ('Python', '3.11.5'), + ('SciPy-bundle', '2023.11'), + ('Pysam', '0.22.0'), +] + +modextrapaths = { + 'PATH': '', + 'PYTHONPATH': '', +} + +sanity_check_paths = { + 'files': ['bin/scReadCounts'], + 'dirs': [], +} + +sanity_check_commands = [ + "scReadCounts --help", + "cd %(installdir)s/data && ./singlecell.sh", +] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/s/SDL2_gfx/SDL2_gfx-1.0.4-GCCcore-11.3.0.eb b/easybuild/easyconfigs/s/SDL2_gfx/SDL2_gfx-1.0.4-GCCcore-11.3.0.eb new file mode 100644 index 00000000000..bffa40795e7 --- /dev/null +++ b/easybuild/easyconfigs/s/SDL2_gfx/SDL2_gfx-1.0.4-GCCcore-11.3.0.eb @@ -0,0 +1,32 @@ +easyblock = 'ConfigureMake' + +name = 'SDL2_gfx' +version = '1.0.4' + +homepage = 'https://www.ferzkopp.net/joomla/content/view/19/14/' +description = """ +Graphics drawing primitives library for SDL2 +""" + +toolchain = {'name': 'GCCcore', 'version': '11.3.0'} + +source_urls = ['https://www.ferzkopp.net/Software/%(name)s/'] +sources = [SOURCE_TAR_GZ] +checksums = ['63e0e01addedc9df2f85b93a248f06e8a04affa014a835c2ea34bfe34e576262'] + +builddependencies = [ + ('binutils', '2.38'), + ('pkgconf', '1.8.0'), +] + +dependencies = [ + ('SDL2', '2.0.22'), +] + +sanity_check_paths = { + 'files': ['include/SDL2/SDL2_gfxPrimitives.h', 'lib/libSDL2_gfx.%s' % SHLIB_EXT, + 'lib/pkgconfig/SDL2_gfx.pc'], + 'dirs': [], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/s/SDL2_image/SDL2_image-2.8.2-GCCcore-12.3.0.eb b/easybuild/easyconfigs/s/SDL2_image/SDL2_image-2.8.2-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..2ad3382018d --- /dev/null +++ b/easybuild/easyconfigs/s/SDL2_image/SDL2_image-2.8.2-GCCcore-12.3.0.eb @@ -0,0 +1,39 @@ +# Authors:: Jack Perdue - TAMU HPRC - http://hprc.tamu.edu + +easyblock = 'ConfigureMake' + +name = 'SDL2_image' +version = '2.8.2' + +homepage = 'https://github.com/libsdl-org/SDL_image' +description = """ +This is a simple library to load images of various formats as SDL surfaces. It +can load BMP, GIF, JPEG, LBM, PCX, PNG, PNM (PPM/PGM/PBM), QOI, TGA, XCF, XPM, +and simple SVG format images. It can also load AVIF, JPEG-XL, TIFF, and WebP +images, depending on build options (see the note below for details.) +""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +source_urls = ['https://github.com/libsdl-org/SDL_image/archive/refs/tags/'] +sources = ['release-%(version)s.tar.gz'] +checksums = ['8fd59b2c17772d7ac1192b11c645be8d7874f595c1714f4b200ee70b7cc38f3e'] + +builddependencies = [ + ('binutils', '2.40'), +] + +dependencies = [ + ('libjpeg-turbo', '2.1.5.1'), + ('libpng', '1.6.39'), + ('LibTIFF', '4.5.0'), + ('SDL2', '2.28.2'), +] + +sanity_check_paths = { + 'files': ['include/SDL2/SDL_image.h', 'lib/libSDL2_image.%s' % SHLIB_EXT, + 'lib/pkgconfig/SDL2_image.pc'], + 'dirs': [] +} + +moduleclass = 'vis' diff --git a/easybuild/easyconfigs/s/SDL2_mixer/SDL2_mixer-2.8.0-GCCcore-12.3.0.eb b/easybuild/easyconfigs/s/SDL2_mixer/SDL2_mixer-2.8.0-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..cde74228da6 --- /dev/null +++ b/easybuild/easyconfigs/s/SDL2_mixer/SDL2_mixer-2.8.0-GCCcore-12.3.0.eb @@ -0,0 +1,37 @@ +# Authors:: Jack Perdue - TAMU HPRC - http://hprc.tamu.edu + +easyblock = 'ConfigureMake' + +name = 'SDL2_mixer' +version = '2.8.0' + +homepage = 'https://github.com/libsdl-org/SDL_mixer' +description = """ +Due to popular demand, here is a simple multi-channel audio mixer. It supports +8 channels of 16 bit stereo audio, plus a single channel of music. It can load +FLAC, MP3, Ogg, VOC, and WAV format audio. It can also load MIDI, MOD, and Opus +audio, depending on build options (see the note below for details.) +""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +source_urls = ['https://github.com/libsdl-org/SDL_mixer/archive/refs/tags/'] +sources = ['release-%(version)s.tar.gz'] +checksums = ['1146f00815c8ad22c3d48fbe31ae23dc5997936ebf30b4b3aeab6eab7ea1db3e'] + +builddependencies = [ + ('binutils', '2.40'), +] + +dependencies = [ + ('SDL2', '2.28.2'), + ('FFmpeg', '6.0'), +] + +sanity_check_paths = { + 'files': ['include/SDL2/SDL_mixer.h', 'lib/libSDL2_mixer.%s' % SHLIB_EXT, + 'lib/pkgconfig/SDL2_mixer.pc'], + 'dirs': [], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/s/SDL2_ttf/SDL2_ttf-2.22.0-GCCcore-12.3.0.eb b/easybuild/easyconfigs/s/SDL2_ttf/SDL2_ttf-2.22.0-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..87bd8e421f0 --- /dev/null +++ b/easybuild/easyconfigs/s/SDL2_ttf/SDL2_ttf-2.22.0-GCCcore-12.3.0.eb @@ -0,0 +1,36 @@ +easyblock = 'ConfigureMake' + +name = 'SDL2_ttf' +version = '2.22.0' + +homepage = 'https://github.com/libsdl-org/SDL_ttf' +description = """ +This library is a wrapper around the FreeType and Harfbuzz libraries, allowing +you to use TrueType fonts to render text in SDL applications. +""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +source_urls = ['https://github.com/libsdl-org/SDL_ttf/archive/refs/tags/'] +sources = ['release-%(version)s.tar.gz'] +checksums = ['2275d0ddfffa53f0efa628bc1621f662dacbd42467b5a44db99e38255fbb575a'] + +builddependencies = [ + ('binutils', '2.40'), + ('pkgconf', '1.9.5'), +] + +dependencies = [ + ('SDL2', '2.28.2'), + ('freetype', '2.13.0'), +] + +configopts = '--disable-harfbuzz --disable-freetype-builtin' + +sanity_check_paths = { + 'files': ['include/SDL2/SDL_ttf.h', 'lib/libSDL2_ttf.%s' % SHLIB_EXT, + 'lib/pkgconfig/SDL2_ttf.pc'], + 'dirs': [], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/s/SOCI/SOCI-4.0.3-GCC-13.2.0.eb b/easybuild/easyconfigs/s/SOCI/SOCI-4.0.3-GCC-13.2.0.eb new file mode 100644 index 00000000000..9f4329a7316 --- /dev/null +++ b/easybuild/easyconfigs/s/SOCI/SOCI-4.0.3-GCC-13.2.0.eb @@ -0,0 +1,52 @@ +easyblock = 'CMakeMake' + +name = 'SOCI' +version = '4.0.3' + +homepage = 'http://soci.sourceforge.net/' +description = """SOCI is a database access library for C++ that makes the illusion of embedding SQL queries in the + regular C++ code, staying entirely within the Standard C++.""" + +toolchain = {'name': 'GCC', 'version': '13.2.0'} + +source_urls = ['https://github.com/SOCI/soci/archive'] +sources = ['v%(version)s.tar.gz'] +checksums = ['4b1ff9c8545c5d802fbe06ee6cd2886630e5c03bf740e269bb625b45cf934928'] + +builddependencies = [ + ('CMake', '3.27.6'), +] + +dependencies = [ + ('Boost', '1.83.0'), + ('SQLite', '3.43.1'), + ('PostgreSQL', '16.1'), +] + +# Matches RStudio (1.4.1717) install options +# https://github.com/rstudio/rstudio/blob/ddcd7191ec89c4da00e77afae7e9f27e61e87c36/dependencies/common/install-soci +configopts = "-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=true " +configopts += "-DSOCI_TESTS=OFF " +configopts += "-DSOCI_CXX11=ON " +configopts += "-DSOCI_EMPTY=OFF " +configopts += '-DCMAKE_INCLUDE_PATH="$EBROOTBOOST/include" ' +configopts += "-DBoost_USE_STATIC_LIBS=ON " +configopts += '-DCMAKE_LIBRARY_PATH="$EBROOTBOOST/lib" ' +configopts += "-DWITH_BOOST=ON " +configopts += "-DWITH_POSTGRESQL=ON " +configopts += "-DWITH_SQLITE3=ON " +configopts += "-DWITH_DB2=OFF " +configopts += "-DWITH_MYSQL=OFF " +configopts += "-DWITH_ORACLE=OFF " +configopts += "-DWITH_FIREBIRD=OFF " +configopts += "-DWITH_ODBC=OFF " +configopts += "-DBoost_DEBUG=1 " + +local_dbs = ['postgresql', 'sqlite3'] + +sanity_check_paths = { + 'files': ['lib/libsoci_%s.%s' % (x, SHLIB_EXT) for x in local_dbs + ['core']], + 'dirs': ['include/soci/%s' % x for x in local_dbs], +} + +moduleclass = 'lang' diff --git a/easybuild/easyconfigs/s/SQLite/SQLite-3.45.3-GCCcore-13.3.0.eb b/easybuild/easyconfigs/s/SQLite/SQLite-3.45.3-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..2a1d41ffc3c --- /dev/null +++ b/easybuild/easyconfigs/s/SQLite/SQLite-3.45.3-GCCcore-13.3.0.eb @@ -0,0 +1,39 @@ +easyblock = 'ConfigureMake' + +name = 'SQLite' +version = '3.45.3' +local_filename_version = '3450300' + +homepage = 'https://www.sqlite.org/' +description = "SQLite: SQL Database Engine in a C Library" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://www.sqlite.org/2024/'] +sources = ['%%(namelower)s-autoconf-%s.tar.gz' % (local_filename_version)] +checksums = ['b2809ca53124c19c60f42bf627736eae011afdcc205bb48270a5ee9a38191531'] + +builddependencies = [ + ('binutils', '2.42'), +] +dependencies = [ + ('libreadline', '8.2'), + ('Tcl', '8.6.14'), +] + +# enable additional APIs that provide access to meta-data about tables and queries +# needed for GDAL when it used as a dep for QGIS +buildopts = 'CC="$CC" CFLAGS="$CFLAGS -DSQLITE_ENABLE_COLUMN_METADATA"' + +sanity_check_paths = { + 'files': ['bin/sqlite3', 'include/sqlite3ext.h', 'include/sqlite3.h', + 'lib/libsqlite3.a', 'lib/libsqlite3.%s' % SHLIB_EXT], + 'dirs': ['lib/pkgconfig'], +} + +sanity_check_commands = [ + 'sqlite3 --version | grep ^%(version)s', +] + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/s/SRA-Toolkit/SRA-Toolkit-3.0.5-gompi-2022b.eb b/easybuild/easyconfigs/s/SRA-Toolkit/SRA-Toolkit-3.0.5-gompi-2022b.eb new file mode 100644 index 00000000000..c81d146ae63 --- /dev/null +++ b/easybuild/easyconfigs/s/SRA-Toolkit/SRA-Toolkit-3.0.5-gompi-2022b.eb @@ -0,0 +1,76 @@ +# updated: Denis Kristak (INUITS) +# updated: Sebastien Moretti (SIB - Vital-IT) +# updated: Pavel Tománek (INUITS) +easyblock = 'CMakeMake' + +name = 'SRA-Toolkit' +version = '3.0.5' + +homepage = 'https://github.com/ncbi/sra-tools' +description = """The SRA Toolkit, and the source-code SRA System Development + Kit (SDK), will allow you to programmatically access data housed within SRA + and convert it from the SRA format""" +github_account = 'ncbi' + +toolchain = {'name': 'gompi', 'version': '2022b'} +toolchainopts = {'extra_cflags': '-DH5_USE_110_API'} + +source_urls = ['https://github.com/ncbi/sra-tools/archive/refs/tags/'] +sources = [{'download_filename': '%(version)s.tar.gz', 'filename': SOURCE_TAR_GZ}] +checksums = ['6dca9889ca9cfa83e9ce1c39bf7ae5654576fc79c4f608e902272a49573a05e0'] + +builddependencies = [ + ('CMake', '3.24.3'), + ('flex', '2.6.4'), + ('Bison', '3.8.2'), + ('Perl', '5.36.0'), +] + +dependencies = [ + ('Python', '3.10.8'), + ('Java', '11', '', SYSTEM), + ('OpenSSL', '1.1', '', SYSTEM), + ('ncbi-vdb', version), + ('bzip2', '1.0.8'), + ('file', '5.43'), + ('HDF5', '1.14.0'), + ('libxml2', '2.10.3'), + ('zlib', '1.2.12'), +] + +configopts = '-DVDB_INCDIR="$EBROOTNCBIMINVDB/include" -DVDB_LIBDIR="$EBROOTNCBIMINVDB/lib" ' +configopts += '-DBUILD_TOOLS_LOADERS=ON -DBUILD_TOOLS_INTERNAL=ON' + +postinstallcmds = [ + "cp -r %(start_dir)s/ngs/ngs-python/ %(installdir)s/", +] + +_sra_bin = [ + 'abi-dump', 'abi-load', 'align-info', 'bam-load', 'cache-mgr', 'cg-load', 'copycat', 'fasterq-dump', 'fastq-dump', + 'fastq-load', 'helicos-load', 'illumina-dump', 'illumina-load', 'kar', 'kdbmeta', 'latf-load', 'pacbio-load', + 'prefetch', 'rcexplain', 'sam-dump', 'sff-dump', 'sff-load', 'srapath', 'sra-pileup', 'sra-sort', 'sra-stat', + 'sratools', 'srf-load', 'test-sra', 'vdb-config', 'vdb-copy', 'vdb-decrypt', 'vdb-dump', 'vdb-encrypt', 'vdb-lock', + 'vdb-unlock', 'vdb-validate', +] + +_ngs_libs = ['libncbi-ngs.a', 'libncbi-ngs-c++.a', 'libncbi-ngs.%s' % SHLIB_EXT, + 'libngs-c++.a', 'libngs-c++.%s' % SHLIB_EXT] + +sanity_check_paths = { + 'files': ['bin/%s' % x for x in _sra_bin] + ['lib/%s' % l for l in _ngs_libs], + 'dirs': ['jar', 'include/ncbi-vdb', 'include/ngs'] +} + +sanity_check_commands = [ + "abi-dump --help", + "kar --help", + "sra-sort --help", + "python -c 'import ngs'", +] + +modextrapaths = { + 'CLASSPATH': 'jar/ngs-java.jar', + 'PYTHONPATH': 'ngs-python', +} + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/s/STAR/STAR-2.7.11b-GCC-13.2.0.eb b/easybuild/easyconfigs/s/STAR/STAR-2.7.11b-GCC-13.2.0.eb new file mode 100644 index 00000000000..a86f215d8dd --- /dev/null +++ b/easybuild/easyconfigs/s/STAR/STAR-2.7.11b-GCC-13.2.0.eb @@ -0,0 +1,55 @@ +# Contribution from the NIHR Biomedical Research Centre +# Guy's and St Thomas' NHS Foundation Trust and King's College London +# Based on STAR-2.7.7a-GCC-10.2.0.eb +# uploaded by J. Sassmannshausen +# modified by Thomas Eylenbosch + +easyblock = 'MakeCp' + +name = 'STAR' +version = '2.7.11b' + +homepage = 'https://github.com/alexdobin/STAR' +description = "STAR aligns RNA-seq reads to a reference genome using uncompressed suffix arrays." + +toolchain = {'name': 'GCC', 'version': '13.2.0'} +toolchainopts = {'openmp': True} + +github_account = 'alexdobin' +source_urls = [GITHUB_SOURCE] +sources = ['%(version)s.tar.gz'] +patches = ['STAR-2.7.11a_use-external-htslib.patch'] +checksums = [ + {'2.7.11b.tar.gz': '3f65305e4112bd154c7e22b333dcdaafc681f4a895048fa30fa7ae56cac408e7'}, + {'STAR-2.7.11a_use-external-htslib.patch': '2fdc3ed9372d983f77d861d6f16a60a553598358dce9ff8216f96eb20e63ce4e'}, +] + +builddependencies = [ + ('xxd', '9.1.0307'), +] + +dependencies = [ + ('HTSlib', '1.19.1'), + ('zlib', '1.2.13'), +] + +start_dir = 'source' + +buildopts = ' STAR && make STARlong' + +files_to_copy = [ + (['source/%(name)s', 'source/%(name)slong'], 'bin'), + 'CHANGES.md', 'doc', 'extras', 'LICENSE', 'README.md', 'RELEASEnotes.md', +] + +sanity_check_paths = { + 'files': ['bin/%(name)s', 'bin/%(name)slong'], + 'dirs': [], +} + +sanity_check_commands = [ + "STAR --help", + "STARlong --help", +] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/s/SWIG/SWIG-4.2.1-GCCcore-13.3.0.eb b/easybuild/easyconfigs/s/SWIG/SWIG-4.2.1-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..4e73a2c53c9 --- /dev/null +++ b/easybuild/easyconfigs/s/SWIG/SWIG-4.2.1-GCCcore-13.3.0.eb @@ -0,0 +1,27 @@ +name = 'SWIG' +version = '4.2.1' + +homepage = 'http://www.swig.org/' +description = """SWIG is a software development tool that connects programs written in C and C++ with + a variety of high-level programming languages.""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} +toolchainopts = {'pic': True} + +source_urls = [SOURCEFORGE_SOURCE] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['fa045354e2d048b2cddc69579e4256245d4676894858fcf0bab2290ecf59b7d8'] + +builddependencies = [ + ('binutils', '2.42'), + ('Bison', '3.8.2'), +] + +dependencies = [ + ('zlib', '1.3.1'), + ('PCRE2', '10.43'), +] + +configopts = '--without-alllang --with-boost=no' + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/s/SYMMETRICA/SYMMETRICA-2.0-GCCcore-13.2.0.eb b/easybuild/easyconfigs/s/SYMMETRICA/SYMMETRICA-2.0-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..9381f0a71c8 --- /dev/null +++ b/easybuild/easyconfigs/s/SYMMETRICA/SYMMETRICA-2.0-GCCcore-13.2.0.eb @@ -0,0 +1,43 @@ +easyblock = 'MakeCp' + +name = 'SYMMETRICA' +version = '2.0' + +homepage = 'https://www.algorithm.uni-bayreuth.de/en/research/SYMMETRICA' +description = "Symmetrica is a Collection of C routines for representation theory." + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} +toolchainopts = {'pic': True} + +source_urls = [homepage] +sources = [{'download_filename': 'SYM2_0_tar.gz', 'filename': SOURCE_TAR_GZ}] +patches = ['SYMMETRICA-2.0_makefile.patch'] +checksums = [ + {'SYMMETRICA-2.0.tar.gz': 'bf52788dedc14c482e89f5e7efe8c60864a633314ddd446dd4602d5fdaca0ee2'}, + {'SYMMETRICA-2.0_makefile.patch': 'd38a8935a3c1e7d9fbafd941e43f933b241fbe8bc012ef8b3a32610ab3be25df'}, +] + +builddependencies = [('binutils', '2.40')] + +local_sharedlib = 'libsymmetrica.%s' % SHLIB_EXT + +buildopts = 'test && $CC -shared $CFLAGS $LDFLAGS -o %s *.o' % local_sharedlib + +files_to_copy = [ + (['factorial'], 'bin'), + (['*.doc'], 'share/doc'), + ([local_sharedlib], 'lib'), + (['def.h', 'macro.h'], 'include/symmetrica'), +] + +sanity_check_paths = { + 'files': ['bin/factorial', + 'share/doc/intro.doc', + 'lib/%s' % local_sharedlib, + 'include/symmetrica/def.h', 'include/symmetrica/macro.h'], + 'dirs': [], +} + +sanity_check_commands = ["echo 5 | %(installdir)s/bin/factorial | grep 120"] + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/s/ScaLAPACK/ScaLAPACK-2.2.0-gompi-2024.05-fb.eb b/easybuild/easyconfigs/s/ScaLAPACK/ScaLAPACK-2.2.0-gompi-2024.05-fb.eb new file mode 100644 index 00000000000..4bdfa045feb --- /dev/null +++ b/easybuild/easyconfigs/s/ScaLAPACK/ScaLAPACK-2.2.0-gompi-2024.05-fb.eb @@ -0,0 +1,40 @@ +name = 'ScaLAPACK' +version = '2.2.0' +versionsuffix = '-fb' + +homepage = 'https://www.netlib.org/scalapack/' +description = """The ScaLAPACK (or Scalable LAPACK) library includes a subset of LAPACK routines + redesigned for distributed memory MIMD parallel computers.""" + +toolchain = {'name': 'gompi', 'version': '2024.05'} +toolchainopts = {'extra_fflags': '-lpthread', 'openmp': True, 'pic': True, 'usempi': True} + +source_urls = [homepage] +sources = [SOURCELOWER_TGZ] +patches = ['ScaLAPACK-%(version)s_fix-GCC-10.patch'] +checksums = [ + '40b9406c20735a9a3009d863318cb8d3e496fb073d201c5463df810e01ab2a57', # scalapack-2.2.0.tgz + 'f6bc3c6dee012ba4a696548a2e12b6aae932ce4fd5a142153b338839f52b5906', # ScaLAPACK-2.2.0_fix-GCC-10.patch +] + +builddependencies = [ + ('CMake', '3.29.3'), +] + +dependencies = [ + ('FlexiBLAS', '3.4.4'), +] + +# Config Opts based on AOCL User Guide: +# https://developer.amd.com/wp-content/resources/AOCL_User%20Guide_2.2.pdf + +configopts = '-DBUILD_SHARED_LIBS=ON ' +configopts += '-DBLAS_LIBRARIES="$EBROOTFLEXIBLAS/lib/libflexiblas.%s" ' % SHLIB_EXT +configopts += '-DLAPACK_LIBRARIES="$EBROOTFLEXIBLAS/lib/libflexiblas.%s" ' % SHLIB_EXT + +sanity_check_paths = { + 'files': ['lib/libscalapack.%s' % SHLIB_EXT, 'lib64/libscalapack.%s' % SHLIB_EXT], + 'dirs': ["lib", "lib64"], +} + +moduleclass = 'numlib' diff --git a/easybuild/easyconfigs/s/SciTools-Iris/SciTools-Iris-3.2.1-foss-2022a.eb b/easybuild/easyconfigs/s/SciTools-Iris/SciTools-Iris-3.2.1-foss-2022a.eb new file mode 100644 index 00000000000..2e1bf32ea15 --- /dev/null +++ b/easybuild/easyconfigs/s/SciTools-Iris/SciTools-Iris-3.2.1-foss-2022a.eb @@ -0,0 +1,42 @@ +easyblock = 'PythonBundle' + +name = 'SciTools-Iris' +version = '3.2.1' + +homepage = 'https://scitools-iris.readthedocs.io' +description = """A powerful, format-agnostic, community-driven Python package for analysing and +visualising Earth science data.""" + +toolchain = {'name': 'foss', 'version': '2022a'} + +dependencies = [ + ('Python', '3.10.4'), + ('SciPy-bundle', '2022.05'), + ('Cartopy', '0.20.3'), + ('dask', '2022.10.0'), + ('matplotlib', '3.5.2'), + ('netcdf4-python', '1.6.1'), + ('python-xxhash', '3.1.0'), + ('UDUNITS', '2.2.28'), +] + +use_pip = True + +exts_list = [ + ('antlr4-python3-runtime', '4.7.2', { + 'modulename': 'antlr4', + 'checksums': ['168cdcec8fb9152e84a87ca6fd261b3d54c8f6358f42ab3b813b14a7193bb50b'], + }), + ('cf-units', '3.1.1', { + 'preinstallopts': 'UDUNITS2_XML_PATH="$EBROOTUDUNITS/share/udunits/udunits2.xml"', + 'checksums': ['d402b5a54c46b8ad2fb4fd815a054520c36ee7b483e4c9555e4b45b62af7558b'], + }), + ('scitools-iris', version, { + 'modulename': 'iris', + 'checksums': ['f09ea7e79664d633f35f11b9d5c3afd3ac5f97698864bd6f2293007fb06c5e72'], + }), +] + +sanity_pip_check = True + +moduleclass = 'geo' diff --git a/easybuild/easyconfigs/s/SciTools-Iris/SciTools-Iris-3.9.0-foss-2023a.eb b/easybuild/easyconfigs/s/SciTools-Iris/SciTools-Iris-3.9.0-foss-2023a.eb new file mode 100644 index 00000000000..e372ed94d82 --- /dev/null +++ b/easybuild/easyconfigs/s/SciTools-Iris/SciTools-Iris-3.9.0-foss-2023a.eb @@ -0,0 +1,42 @@ +easyblock = 'PythonBundle' + +name = 'SciTools-Iris' +version = '3.9.0' + +homepage = 'https://scitools-iris.readthedocs.io' +description = """A powerful, format-agnostic, community-driven Python package for analysing and +visualising Earth science data.""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +dependencies = [ + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), + ('Cartopy', '0.22.0'), + ('dask', '2023.9.2'), + ('matplotlib', '3.7.2'), + ('netcdf4-python', '1.6.4'), + ('python-xxhash', '3.4.1'), + ('UDUNITS', '2.2.28'), +] + +use_pip = True + +exts_list = [ + ('antlr4-python3-runtime', '4.7.2', { + 'modulename': 'antlr4', + 'checksums': ['168cdcec8fb9152e84a87ca6fd261b3d54c8f6358f42ab3b813b14a7193bb50b'], + }), + ('cf-units', '3.2.0', { + 'preinstallopts': 'UDUNITS2_XML_PATH="$EBROOTUDUNITS/share/udunits/udunits2.xml"', + 'checksums': ['88a9f140e4157fe4c2d322b5e079046c4c0a7d76cb4950c700a8363bc235074f'], + }), + ('scitools_iris', version, { + 'modulename': 'iris', + 'checksums': ['53c701899aa08014beeb9dd0040bd5584511229fff98e74ff30b6eab5d4d02aa'], + }), +] + +sanity_pip_check = True + +moduleclass = 'geo' diff --git a/easybuild/easyconfigs/s/Seaborn/Seaborn-0.11.2-intel-2021b.eb b/easybuild/easyconfigs/s/Seaborn/Seaborn-0.11.2-intel-2021b.eb new file mode 100644 index 00000000000..5faa2506a5b --- /dev/null +++ b/easybuild/easyconfigs/s/Seaborn/Seaborn-0.11.2-intel-2021b.eb @@ -0,0 +1,28 @@ +# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild +# Author: Pablo Escobar Lopez +# Swiss Institute of Bioinformatics (SIB) +# Biozentrum - University of Basel +easyblock = 'PythonPackage' + +name = 'Seaborn' +version = '0.11.2' + +homepage = 'https://seaborn.pydata.org/' +description = """ Seaborn is a Python visualization library based on matplotlib. + It provides a high-level interface for drawing attractive statistical graphics. """ + +toolchain = {'name': 'intel', 'version': '2021b'} + +sources = [SOURCELOWER_TAR_GZ] +checksums = ['cf45e9286d40826864be0e3c066f98536982baf701a7caa386511792d61ff4f6'] + +dependencies = [ + ('Python', '3.9.6'), + ('matplotlib', '3.4.3'), +] + +use_pip = True +download_dep_fail = True +sanity_pip_check = True + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/s/Seaborn/Seaborn-0.13.2-gfbf-2023b.eb b/easybuild/easyconfigs/s/Seaborn/Seaborn-0.13.2-gfbf-2023b.eb new file mode 100644 index 00000000000..23ec87f56ed --- /dev/null +++ b/easybuild/easyconfigs/s/Seaborn/Seaborn-0.13.2-gfbf-2023b.eb @@ -0,0 +1,24 @@ +easyblock = 'PythonPackage' + +name = 'Seaborn' +version = '0.13.2' + +homepage = 'https://seaborn.pydata.org/' +description = """ Seaborn is a Python visualization library based on matplotlib. + It provides a high-level interface for drawing attractive statistical graphics. """ + +toolchain = {'name': 'gfbf', 'version': '2023b'} + +sources = [SOURCELOWER_TAR_GZ] +checksums = ['93e60a40988f4d65e9f4885df477e2fdaff6b73a9ded434c1ab356dd57eefff7'] + +dependencies = [ + ('Python', '3.11.5'), + ('matplotlib', '3.8.2'), +] + +use_pip = True +download_dep_fail = True +sanity_pip_check = True + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/s/SentencePiece/SentencePiece-0.2.0-GCC-12.3.0.eb b/easybuild/easyconfigs/s/SentencePiece/SentencePiece-0.2.0-GCC-12.3.0.eb new file mode 100644 index 00000000000..1ff1c337cf7 --- /dev/null +++ b/easybuild/easyconfigs/s/SentencePiece/SentencePiece-0.2.0-GCC-12.3.0.eb @@ -0,0 +1,70 @@ +easyblock = 'Bundle' + +name = 'SentencePiece' +version = '0.2.0' + +homepage = 'https://github.com/google/sentencepiece' +description = "Unsupervised text tokenizer for Neural Network-based text generation." +github_account = 'google' + +toolchain = {'name': 'GCC', 'version': '12.3.0'} + +builddependencies = [ + ('CMake', '3.26.3'), + ('pkgconf', '1.9.5'), +] + +dependencies = [ + ('Python', '3.11.3'), + ('gperftools', '2.12'), +] + +default_component_specs = { + 'source_urls': [GITHUB_LOWER_SOURCE], + 'sources': ['v%(version)s.tar.gz'], + 'checksums': ['9970f0a0afee1648890293321665e5b2efa04eaec9f1671fcf8048f456f5bb86'], +} + +local_external_absl = 'sed -i %(builddir)s/' + +components = [ + (name, version, { + 'easyblock': 'CMakeMake', + 'separate_build_dir': True, + 'start_dir': '%(namelower)s-%(version)s', + # using internal protobuf there is no matching pc file so requirement is removed: + 'preconfigopts': 'sed -i s/Requires.private.*// ../sentencepiece-%(version)s/sentencepiece.pc.in &&', + }), + ('sentencepiece', version, { + 'easyblock': 'PythonPackage', + 'start_dir': '%(namelower)s-%(version)s/python', + # Unpredicable where pc files end up; including both lib and lib64 + 'prebuildopts': 'export PKG_CONFIG_PATH=%(installdir)s/lib64/pkgconfig:%(installdir)s/lib/pkgconfig/:' + '$PKG_CONFIG_PATH && ', + 'preinstallopts': 'export PKG_CONFIG_PATH=%(installdir)s/lib64/pkgconfig:%(installdir)s/lib/pkgconfig/:' + '$PKG_CONFIG_PATH && ', + 'use_pip': True, + 'download_dep_fail': True, + 'sanity_pip_check': True, + }), +] + +postinstallcmds = ['cp -a %(builddir)s/%(namelower)s-%(version)s/{data,doc} %(installdir)s/'] + +sanity_check_paths = { + 'files': ['bin/spm_%s' % x for x in ['decode', 'encode', 'export_vocab', 'normalize', 'train']] + + ['lib/libsentencepiece.%s' % SHLIB_EXT, 'lib/libsentencepiece_train.%s' % SHLIB_EXT] + + ['include/sentencepiece_processor.h', 'include/sentencepiece_trainer.h'], + 'dirs': ['lib/python%(pyshortver)s/site-packages', 'data', 'doc'], +} + +sanity_check_commands = [ + 'spm_train --help | grep accept_language', # --help has exit code 1, so we check for output text + "python -c 'import sentencepiece'", +] + +modextrapaths = { + 'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages'] +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/s/Seurat/Seurat-5.1.0-foss-2023a-R-4.3.2.eb b/easybuild/easyconfigs/s/Seurat/Seurat-5.1.0-foss-2023a-R-4.3.2.eb new file mode 100644 index 00000000000..11f439e4017 --- /dev/null +++ b/easybuild/easyconfigs/s/Seurat/Seurat-5.1.0-foss-2023a-R-4.3.2.eb @@ -0,0 +1,76 @@ +easyblock = 'Bundle' + +name = 'Seurat' +version = '5.1.0' +versionsuffix = '-R-%(rver)s' + +homepage = 'https://satijalab.org/seurat' +description = "Seurat is an R package designed for QC, analysis, and exploration of single cell RNA-seq data." + +toolchain = {'name': 'foss', 'version': '2023a'} + +dependencies = [ + ('R', '4.3.2'), + ('R-bundle-Bioconductor', '3.18', versionsuffix), +] + +exts_defaultclass = 'RPackage' +exts_default_options = { + 'sources': ['%(name)s_%(version)s.tar.gz'], + 'source_urls': [ + 'https://cran.r-project.org/src/contrib/Archive/%(name)s', # package archive + 'https://cran.r-project.org/src/contrib/', # current version of packages + 'https://cran.freestatistics.org/src/contrib', # mirror alternative for current packages + ], +} + +exts_list = [ + ('Matrix', '1.6-4', { + 'checksums': ['70ca7bdaece68d4837da0523d067e1553947c3c81b0b55206223bb647617bb01'], + }), + ('sp', '2.1-4', { + 'checksums': ['e185e7fb61d2d7dbc50fd765a93e170fa778083a653588db1f5e99d019479f0a'], + }), + ('SeuratObject', '5.0.2', { + 'checksums': ['ded30d21f445b7e353fe4a0c4954d45ad19fbe162615d9addf6732f9318ba0cf'], + }), + ('sctransform', '0.4.1', { + 'checksums': ['5f6be7f8be543e4c32c8007207b603a750881459370b7bb5afd63e8c8fabf171'], + }), + ('uwot', '0.2.2', { + 'checksums': ['d9938c43d29530d4b36d1b2649cc679b09945a740db2cd3a266242b1aa9a6cd1'], + }), + ('spatstat.utils', '3.0-1', { + 'checksums': ['cba1c7806564fd9145ca15edf77233d6ba5609f0989f7812221f5fc1ece0b91a'], + }), + ('spatstat.data', '3.0-0', { + 'checksums': ['cff9058a88489020a4a05b9576cd452f37fa9b42084873c474d06931f5187057'], + }), + ('spatstat.geom', '3.0-3', { + 'checksums': ['6e5b56c60e774a0cdcaa5a8ffde071225f233832446a341588bd8a7840913c84'], + }), + ('spatstat.random', '3.0-1', { + 'checksums': ['938c845c063b8781bf894c0a67537e7b2a7c425a4beba4a95ec9d2c37b43e5b6'], + }), + ('spatstat.sparse', '3.0-0', { + 'checksums': ['99be0a3c7592760fdf1668dc0811f75ed91c400390d1ecc3d5e643255f501ad2'], + }), + ('spatstat.explore', '3.0-5', { + 'checksums': ['9f438a12fac3f3e1d0bd550b1393c1e5732be694517b0878db09da557d6dc862'], + }), + ('scattermore', '1.2', { + 'checksums': ['5534a87b0bdd1375f0fbffc1a5c980ad64e33a108435a67469b8324b580602d1'], + }), + (name, version, { + 'checksums': ['adcfb43d7a8cc55eaa7a0954a082ac95e14059a82901913379bfec115e224d59'], + }), +] + +sanity_check_paths = { + 'files': [], + 'dirs': [name], +} + +modextrapaths = {'R_LIBS_SITE': ''} + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/s/SeuratDisk/SeuratDisk-20231104-foss-2023a-R-4.3.2.eb b/easybuild/easyconfigs/s/SeuratDisk/SeuratDisk-20231104-foss-2023a-R-4.3.2.eb new file mode 100644 index 00000000000..16d65a66c5b --- /dev/null +++ b/easybuild/easyconfigs/s/SeuratDisk/SeuratDisk-20231104-foss-2023a-R-4.3.2.eb @@ -0,0 +1,27 @@ +easyblock = 'RPackage' + +name = 'SeuratDisk' +local_commit = '877d4e1' +version = '20231104' +versionsuffix = '-R-%(rver)s' + +homepage = 'https://github.com/mojaveazure/seurat-disk' +description = "Interfaces for HDF5-based Single Cell File Formats" + +toolchain = {'name': 'foss', 'version': '2023a'} + +source_urls = ['https://github.com/mojaveazure/seurat-disk/archive/'] +sources = [{'download_filename': '%s.tar.gz' % local_commit, 'filename': SOURCE_TAR_GZ}] +checksums = ['d2d6b6604e8a1f6de90956d0401d34b51b07b30671a445d0e06876f2dec999ac'] + +dependencies = [ + ('R', '4.3.2'), + ('R-bundle-Bioconductor', '3.18', versionsuffix), +] + +sanity_check_paths = { + 'files': [], + 'dirs': [name], +} + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/s/SimNIBS/SimNIBS-4.0.1-foss-2023a.eb b/easybuild/easyconfigs/s/SimNIBS/SimNIBS-4.0.1-foss-2023a.eb new file mode 100644 index 00000000000..97e87ebe02b --- /dev/null +++ b/easybuild/easyconfigs/s/SimNIBS/SimNIBS-4.0.1-foss-2023a.eb @@ -0,0 +1,65 @@ +easyblock = 'PythonBundle' + +name = 'SimNIBS' +version = '4.0.1' + +homepage = 'https://simnibs.github.io/simnibs' +description = "SimNIBS is a free and open source software package for the Simulation of Non-invasive Brain Stimulation" + +toolchain = {'name': 'foss', 'version': '2023a'} + +builddependencies = [ + ('CMake', '3.26.3'), + ('Eigen', '3.4.0'), + # SimNIBS 4.0.1 requires old versions of Boost, CGAL, tbb + ('Boost', '1.74.0'), + ('CGAL', '5.4'), + ('tbb', '2020.1'), +] +dependencies = [ + ('Python', '3.11.3'), + ('Python-bundle-PyPI', '2023.06'), + ('SciPy-bundle', '2023.07'), + ('matplotlib', '3.7.2'), + ('Pillow', '10.0.0'), + ('h5py', '3.9.0'), + ('PyOpenGL', '3.1.7'), + ('freeglut', '3.4.0'), + ('libwebp', '1.3.1'), + ('NiBabel', '5.2.0'), + ('PyQt5', '5.15.10'), + ('FMM3D', '1.0.4'), + ('charm-gems', '1.3.3'), +] + +exts_list = [ + (name, version, { + 'patches': ['%(name)s-%(version)s_setup.py-fix.patch'], + 'source_urls': ['https://github.com/simnibs/simnibs/archive/'], + 'sources': ['v%(version)s.tar.gz'], + 'checksums': [ + {'v4.0.1.tar.gz': 'c5455cd0e0240b3638fbc64125bdfaeae289a63ee94a3ecc3b4d10981890c8ff'}, + {'SimNIBS-4.0.1_setup.py-fix.patch': '9e0a28233e2830cc90dca67e3e945094591f46ed646eba20a7ecf2396d126fe2'}, + ], + }), +] + +postinstallcmds = [ + 'cd %(installdir)s/bin && ' + 'ln -s %(installdir)s/lib/python%(pyshortver)s/site-packages/simnibs/external/bin/linux/gmsh gmsh && ' + 'ln -s %(installdir)s/lib/python%(pyshortver)s/site-packages/simnibs/external/bin/linux/meshfix meshfix && ' + 'ln -s %(installdir)s/lib/python%(pyshortver)s/site-packages/simnibs/external/dwi2cond dwi2cond', +] + +use_pip = True +sanity_pip_check = True + +local_bin_list = ['dwi2cond', 'gmsh', 'meshfix', 'simnibs', 'simnibs_gui', 'charm'] +sanity_check_paths = { + 'files': ['bin/%s' % f for f in local_bin_list], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +sanity_check_commands = ["simnibs --help"] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/s/SimNIBS/SimNIBS-4.0.1_setup.py-fix.patch b/easybuild/easyconfigs/s/SimNIBS/SimNIBS-4.0.1_setup.py-fix.patch new file mode 100644 index 00000000000..44ff8cd0b82 --- /dev/null +++ b/easybuild/easyconfigs/s/SimNIBS/SimNIBS-4.0.1_setup.py-fix.patch @@ -0,0 +1,513 @@ +Authot: Pavel Tománek (INUITS) +Fix for setup.py to use EB dependecies CGAL and tbb and not download them before compilation. +Get rid of code for another platforms. +Add compilation flags for gcc. +--- setup.py.orig 2024-04-02 18:56:13.015206000 +0200 ++++ setup.py 2024-04-10 12:22:35.495147000 +0200 +@@ -12,7 +12,7 @@ + from distutils.dep_util import newer_group + import numpy as np + +- ++ + #################################################### + # add all scripts in the cli folder as + # console_scripts or gui_scripts +@@ -35,31 +35,8 @@ + 'simnibs_gui=simnibs.cli.simnibs_gui:main', + ] + +- +-######################################################################################################## +-# external stuff for which symlinks or .cmd should be added to the scripts folder +-######################################################################################################## +-external_progs = ['gmsh','meshfix'] +- +-bin_dir = os.path.join('simnibs', 'external', 'bin') +-ending='' +-if sys.platform == 'darwin': +- bin_dir = os.path.join(bin_dir, 'osx') +-elif sys.platform == 'linux': +- bin_dir = os.path.join(bin_dir, 'linux') +-elif sys.platform == 'win32': +- bin_dir = os.path.join(bin_dir, 'win') +- ending='.exe' +-else: +- raise OSError('OS not supported!') +-for i in range(len(external_progs)): +- external_progs[i] = os.path.join(bin_dir, external_progs[i]+ending) +- +-if not sys.platform == 'win32': +- external_progs.append(os.path.join('simnibs','external','dwi2cond')) +- +- +-''' C extensions ++''' ++C extensions + + CGAL Compilation + ----------------- +@@ -81,15 +58,9 @@ + + ''' + +-# Information for CGAL download ++# Information for CGAL + CGAL_version = '5.4' +-CGAL_headers = os.path.abspath(f'CGAL-{CGAL_version}/include') +-CGAL_url = ( +- f'https://github.com/CGAL/cgal/releases/download/' +- #f'releases/CGAL-{CGAL_version}/' +- f'v{CGAL_version}/' +- f'CGAL-{CGAL_version}-library.zip' +-) ++CGAL_headers = os.path.join(os.getenv('EBROOTCGAL'), 'include') + cgal_mesh_macros = [ + ('CGAL_MESH_3_NO_DEPRECATED_SURFACE_INDEX', None), + ('CGAL_MESH_3_NO_DEPRECATED_C3T3_ITERATORS', None), +@@ -100,185 +71,76 @@ + ] + + # Information for eigen library +-# I don't download it because gitlab does not allow it + eigen_version = '3.3.7' +-eigen_headers = os.path.abspath(f'simnibs/external/include/eigen-{eigen_version}') ++eigen_headers = os.path.join(os.getenv('EBROOTEIGEN'), 'include') + + # Information for Intel TBB download + tbb_version = '2020.1' +-tbb_path = os.path.abspath('tbb') +-tbb_headers = os.path.join(tbb_path, 'tbb', 'include') +-if sys.platform == 'win32': +- tbb_url = ( +- f'https://github.com/intel/tbb/releases/download/' +- f'v{tbb_version}/tbb-{tbb_version}-win.zip' +- ) +- tbb_libs = [ +- os.path.join(tbb_path, 'tbb', 'bin', 'intel64', 'vc14', 'tbb.dll'), +- os.path.join(tbb_path, 'tbb', 'lib', 'intel64', 'vc14', 'tbb.lib'), +- os.path.join(tbb_path, 'tbb', 'bin', 'intel64', 'vc14', 'tbbmalloc.dll'), +- os.path.join(tbb_path, 'tbb', 'lib', 'intel64', 'vc14', 'tbbmalloc.lib'), +- ] +-elif sys.platform == 'linux': +- tbb_url = ( +- f'https://github.com/intel/tbb/releases/download/' +- f'v{tbb_version}/tbb-{tbb_version}-lin.tgz' +- ) +- tbb_libs = [ +- os.path.join(tbb_path, 'tbb', 'lib', 'intel64', 'gcc4.8', 'libtbb.so'), +- os.path.join(tbb_path, 'tbb', 'lib', 'intel64', 'gcc4.8', 'libtbb.so.2'), +- os.path.join(tbb_path, 'tbb', 'lib', 'intel64', 'gcc4.8', 'libtbbmalloc.so'), +- os.path.join(tbb_path, 'tbb', 'lib', 'intel64', 'gcc4.8', 'libtbbmalloc.so.2'), +- ] +-elif sys.platform == 'darwin': +- tbb_url = ( +- f'https://github.com/intel/tbb/releases/download/' +- f'v{tbb_version}/tbb-{tbb_version}-mac.tgz' +- ) +- tbb_libs = [ +- os.path.join(tbb_path, 'tbb', 'lib', 'libtbb.dylib'), +- os.path.join(tbb_path, 'tbb', 'lib', 'libtbbmalloc.dylib'), +- ] +-else: +- raise OSError('OS not supported!') ++tbb_headers = os.path.join(os.getenv('EBROOTTBB'), 'include') + ++tbb_libs = [ ++ os.path.join(os.getenv('EBROOTTBB'), 'lib', 'libtbb.so'), ++ os.path.join(os.getenv('EBROOTTBB'), 'lib', 'libtbb.so.2'), ++ os.path.join(os.getenv('EBROOTTBB'), 'lib', 'libtbbmalloc.so'), ++ os.path.join(os.getenv('EBROOTTBB'), 'lib', 'libtbbmalloc.so.2'), ++] + + #### Setup compilation arguments +-is_conda = 'CONDA_PREFIX' in os.environ +- +-if sys.platform == 'win32': +- petsc_libs = ['libpetsc', 'msmpi'] +- petsc_include = [ +- np.get_include(), +- 'simnibs/external/include/win/petsc', +- 'simnibs/external/include/win/hypre', +- 'simnibs/external/include/win/mpi' +- ] +- petsc_dirs = ['simnibs/external/lib/win'] +- petsc_runtime = None +- petsc_extra_link_args = None +- +- cgal_libs = ['libmpfr-4', 'libgmp-10', 'zlib', 'tbb', 'tbbmalloc'] +- cgal_include = [ +- np.get_include(), +- CGAL_headers, +- eigen_headers, +- tbb_headers, +- 'simnibs/external/include/win/mpfr', +- 'simnibs/external/include/win/gmp' +- ] +- # Find boost headers if installed with conda +- if is_conda: +- cgal_include += [os.path.join(os.environ['CONDA_PREFIX'], 'Library', 'include')] +- cgal_dirs = ['simnibs/external/lib/win'] +- cgal_runtime = None +- # Got those arguments from compiling a CGAL program following the instructions in the website +- cgal_compile_args = [ +- '/Zi', '/WX-', '/diagnostics:classic', '/Ob0', '/Oy', +- '/D WIN32', '/D _WINDOWS', '/D _SCL_SECURE_NO_DEPRECATE', +- '/D _SCL_SECURE_NO_WARNINGS', '/D BOOST_ALL_DYN_LINK=1', +- '/D _MBCS' +- ] +- cgal_link_args = None +- +- cat_compile_args = None + +-elif sys.platform == 'linux': +- petsc_libs = ['petsc'] +- petsc_include = [ +- np.get_include(), +- 'simnibs/external/include/linux/petsc' +- ] +- petsc_dirs = ['simnibs/external/lib/linux'] +- petsc_runtime = ['$ORIGIN/../external/lib/linux'] +- petsc_extra_link_args = None +- +- cgal_libs = ['mpfr', 'gmp', 'z', 'tbb', 'tbbmalloc', 'pthread'] +- cgal_include = [ +- np.get_include(), +- CGAL_headers, +- eigen_headers, +- tbb_headers, +- 'simnibs/external/include/linux/mpfr', +- 'simnibs/external/include/linux/gmp' +- ] +- # To find the boost headers if installed with conda +- if is_conda: +- cgal_include += [os.path.join(os.environ['CONDA_PREFIX'], 'include')] +- cgal_dirs = ['simnibs/external/lib/linux'] +- cgal_runtime = ['$ORIGIN/../../external/lib/linux'] +- # Add -Os -flto for much smaller binaries +- cgal_compile_args = [ +- '-Os', '-flto', +- '-frounding-math', +- '-std=gnu++14', +- ] +- cgal_mesh_macros += [('NOMINMAX', None)] +- cgal_link_args = None +- +- cat_compile_args = [ +- '-std=gnu99', +- ] +- +-elif sys.platform == 'darwin': +- petsc_libs = ['petsc'] +- petsc_include = [ +- np.get_include(), +- 'simnibs/external/include/osx/petsc' +- ] +- petsc_dirs = ['simnibs/external/lib/osx'] +- petsc_runtime = None +- # add RPATH as the _runtime argument does not work in MacOS, likely bug in setuptools +- petsc_extra_link_args = ['-Wl,-rpath,@loader_path/../external/lib/osx'] +- +- cgal_libs = ['mpfr', 'gmp', 'z', 'tbb', 'tbbmalloc'] +- cgal_include = [ +- np.get_include(), +- CGAL_headers, +- eigen_headers, +- tbb_headers, +- 'simnibs/external/include/osx/mpfr', +- 'simnibs/external/include/osx/gmp' +- ] +- if is_conda: +- cgal_include += [os.path.join(os.environ['CONDA_PREFIX'], 'include')] +- cgal_dirs = ['simnibs/external/lib/osx'] +- cgal_runtime = None +- cgal_compile_args = [ +- '-std=gnu++14', +- '-stdlib=libc++', +- ] +- cgal_mesh_macros += [('NOMINMAX', None)] +- cgal_link_args = [ +- '-stdlib=libc++', +- '-Wl,-rpath,@loader_path/../../external/lib/osx' +- ] +- +- cat_compile_args = None +- +-else: +- raise OSError('OS not supported!') ++petsc_libs = ['petsc'] ++petsc_include = [ ++ np.get_include(), ++ 'simnibs/external/include/linux/petsc' ++] ++petsc_dirs = ['simnibs/external/lib/linux'] ++petsc_runtime = ['$ORIGIN/../external/lib/linux'] ++petsc_extra_link_args = None ++ ++cgal_libs = ['mpfr', 'gmp', 'z', 'tbb', 'tbbmalloc', 'pthread'] ++cgal_include = [ ++ np.get_include(), ++ CGAL_headers, ++ eigen_headers, ++ tbb_headers, ++ 'simnibs/external/include/linux/mpfr', ++ 'simnibs/external/include/linux/gmp' ++] ++cgal_dirs = ['simnibs/external/lib/linux'] ++cgal_runtime = ['$ORIGIN/../../external/lib/linux'] ++# Add -Os -flto for much smaller binaries ++cgal_compile_args = [ ++ '-Os', '-flto', ++ '-frounding-math', ++ '-std=gnu++14', ++ '-w', # removes warnings as errors ++ '-fcompare-debug-second', # removes notes as errors ++] ++cgal_mesh_macros += [('NOMINMAX', None)] ++cgal_link_args = None + + cython_msh = Extension( + 'simnibs.mesh_tools.cython_msh', + ["simnibs/mesh_tools/cython_msh.pyx"], +- include_dirs=[np.get_include()] ++ include_dirs=[np.get_include()], ++ extra_compile_args=['-w'], + ) + marching_cubes_lewiner_cy = Extension( + 'simnibs.segmentation._marching_cubes_lewiner_cy', + ["simnibs/segmentation/_marching_cubes_lewiner_cy.pyx"], +- include_dirs=[np.get_include()] ++ include_dirs=[np.get_include()], ++ extra_compile_args=['-w'], + ) + cat_c_utils = Extension( + 'simnibs.segmentation._cat_c_utils', + ["simnibs/segmentation/_cat_c_utils.pyx", "simnibs/segmentation/cat_c_utils/genus0.c"], + include_dirs=[np.get_include(), 'simnibs/segmentation/cat_c_utils'], +- extra_compile_args=cat_compile_args ++ extra_compile_args=['-w', '-std=gnu99'], + ) + thickness = Extension( + 'simnibs.segmentation._thickness', + ["simnibs/segmentation/_thickness.pyx"], +- include_dirs=[np.get_include()] ++ include_dirs=[np.get_include()], ++ extra_compile_args=['-w'], + ) + petsc_solver = Extension( + 'simnibs.simulation.petsc_solver', +@@ -288,7 +150,8 @@ + library_dirs=petsc_dirs, + libraries=petsc_libs, + runtime_library_dirs=petsc_runtime, +- extra_link_args=petsc_extra_link_args ++ extra_link_args=petsc_extra_link_args, ++ extra_compile_args=['-w'], + ) + # I separated the CGAL functions into several files for two reasons + # 1. Reduce memory consumption during compilation in Linux +@@ -343,57 +206,8 @@ + cgal_misc + ] + +- +-def add_symlinks_or_cmd(external_progs,script_dir): +- ''' add symbolic links or .cmd ''' +- for s in external_progs: +- if not os.path.exists(s): +- raise IOError('Could not find '+s) +- s = os.path.abspath(s) +- bash_name = os.path.join(script_dir, os.path.basename(s)) +- if sys.platform == 'win32': +- bash_name=os.path.splitext(bash_name)[0] + '.cmd' +- print('making cmd link '+bash_name+' --> '+s) +- with open(bash_name, 'w') as f: +- f.write("@echo off\n") +- f.write(f'"{s}" %*') +- else: +- if os.path.lexists(bash_name): +- os.remove(bash_name) +- print('making sym link '+bash_name+' --> '+s) +- os.symlink(s, bash_name) +- +- +-def download_and_extract(url, path='.'): +- ''' Downloads and extracts a zip or tar-gz folder ''' +- print('Downloading:', url) +- with urllib.request.urlopen(url) as response: +- with tempfile.NamedTemporaryFile('wb', delete=False) as tmpf: +- shutil.copyfileobj(response, tmpf) +- tmpname = tmpf.name +- +- if url.endswith('.zip'): +- with zipfile.ZipFile(tmpname) as z: +- z.extractall(path) +- +- elif url.endswith('.tgz') or url.endswith('.tar.gz'): +- with tarfile.open(tmpname, 'r:gz') as z: +- z.extractall(path) +- else: +- raise IOError('Could not extract file, unrecognized extension') +- +- os.remove(tmpname) +- +- +-def install_lib(url, path, libs, build_path): +- ''' Downloads a compiled library from the internet and move to "lib" folder ''' +- download_and_extract(url, path) +- if sys.platform == 'darwin': +- folder_name = 'osx' +- elif sys.platform == 'linux': +- folder_name = 'linux' +- elif sys.platform == 'win32': +- folder_name = 'win' ++def install_lib(libs, build_path): ++ folder_name = 'linux' + for l in libs: + shutil.copy( + l, f'simnibs/external/lib/{folder_name}', +@@ -408,13 +222,12 @@ + + class build_ext_(build_ext): + ''' +- Build the extension, download some dependencies and remove stuff from other OS ++ Build the extension, download some dependencies and remove stuff from other OS + ''' + def run(self): + from Cython.Build import cythonize + ## Cythonize + self.extension = cythonize(self.extensions) +- ## Download requirements + changed_meshing = ( + newer_group( + create_mesh_surf.sources + create_mesh_surf.depends, +@@ -433,90 +246,49 @@ + ) + ) + if self.force or changed_meshing: +- download_and_extract(CGAL_url) + if self.inplace: + build_lib = "" + else: + build_lib = self.build_lib + "/" +- +- install_lib(tbb_url, tbb_path, tbb_libs, build_lib) ++ install_lib(tbb_libs, build_lib) + + # Compile + build_ext.run(self) +- # cleanup downloads +- if self.force or changed_meshing: +- shutil.rmtree(f'CGAL-{CGAL_version}', ignore_errors=True) +- shutil.rmtree(tbb_path, ignore_errors=True) +- # Remove unescessary binary files +- linux_folders = [ +- os.path.join(self.build_lib, 'simnibs', 'external', 'bin', 'linux'), +- os.path.join(self.build_lib, 'simnibs', 'external', 'include', 'linux'), +- os.path.join(self.build_lib, 'simnibs', 'external', 'lib', 'linux'), +- ] +- osx_folders = [ +- os.path.join(self.build_lib, 'simnibs', 'external', 'bin', 'osx'), +- os.path.join(self.build_lib, 'simnibs', 'external', 'include', 'osx'), +- os.path.join(self.build_lib, 'simnibs', 'external', 'lib', 'osx'), +- ] +- win_folders = [ +- os.path.join(self.build_lib, 'simnibs', 'external', 'bin', 'win'), +- os.path.join(self.build_lib, 'simnibs', 'external', 'include', 'win'), +- os.path.join(self.build_lib, 'simnibs', 'external', 'lib', 'win'), +- ] +- if sys.platform == 'linux': +- [shutil.rmtree(f, True) for f in osx_folders] +- [shutil.rmtree(f, True) for f in win_folders] +- +- if sys.platform == 'darwin': +- [shutil.rmtree(f, True) for f in linux_folders] +- [shutil.rmtree(f, True) for f in win_folders] +- +- if sys.platform == 'win32': +- [shutil.rmtree(f, True) for f in linux_folders] +- [shutil.rmtree(f, True) for f in osx_folders] +- +- +-setup(name='simnibs', +- version=open("simnibs/_version.py").readlines()[-1].split()[-1].strip("\"'"), +- description='www.simnibs.org', +- author='SimNIBS developers', +- author_email='support@simnibs.org', +- packages=find_namespace_packages(), +- license='GPL3', +- ext_modules=extensions, +- include_package_data=True, +- cmdclass={ +- 'build_ext': build_ext_ +- }, +- entry_points={ +- 'console_scripts': console_scripts, +- 'gui_scripts': gui_scripts +- }, +- install_requires=[ +- 'numpy>=1.16', +- 'scipy>=1.2', +- 'h5py>=2.9', +- 'nibabel>=2.3', +- 'packaging', +- 'requests', +- 'charm-gems', +- 'fmm3dpy' +- ], +- extras_require={ +- 'GUI': ['pyqt5', 'pyopengl'] +- }, +- setup_requires=[ +- 'numpy>=1.16', +- 'cython' +- ], +- tests_require=['pytest', 'mock'], +- zip_safe=False) +- +- +-script_dir = shutil.which('simnibs') +-if script_dir is None: +- raise IOError('could not locate folder with console-scripts') +-else: +- script_dir = os.path.dirname(script_dir) +- add_symlinks_or_cmd(external_progs,script_dir) +- ++ ++setup( ++ name='simnibs', ++ version="4.0.1", ++ description='www.simnibs.org', ++ author='SimNIBS developers', ++ author_email='support@simnibs.org', ++ packages=find_namespace_packages(), ++ license='GPL3', ++ ext_modules=extensions, ++ include_package_data=True, ++ cmdclass={ ++ 'build_ext': build_ext_ ++ }, ++ entry_points={ ++ 'console_scripts': console_scripts, ++ 'gui_scripts': gui_scripts ++ }, ++ install_requires=[ ++ 'numpy>=1.16', ++ 'scipy>=1.2', ++ 'h5py>=2.9', ++ 'nibabel>=2.3', ++ 'packaging', ++ 'requests', ++ 'charm-gems', ++ 'fmm3dpy' ++ ], ++ extras_require={ ++ 'GUI': ['pyqt5', 'pyopengl'] ++ }, ++ setup_requires=[ ++ 'numpy>=1.16', ++ 'cython' ++ ], ++ tests_require=['pytest', 'mock'], ++ zip_safe=False ++) diff --git a/easybuild/easyconfigs/s/Singular/Singular-4.4.0-gfbf-2023b.eb b/easybuild/easyconfigs/s/Singular/Singular-4.4.0-gfbf-2023b.eb new file mode 100644 index 00000000000..b68c9946147 --- /dev/null +++ b/easybuild/easyconfigs/s/Singular/Singular-4.4.0-gfbf-2023b.eb @@ -0,0 +1,47 @@ +easyblock = 'ConfigureMake' + +name = 'Singular' +version = '4.4.0' + +homepage = 'https://www.singular.uni-kl.de/' +description = """Singular is a computer algebra system for polynomial computations, +with special emphasis on commutative and non-commutative algebra, algebraic geometry, +and singularity theory.""" + +toolchain = {'name': 'gfbf', 'version': '2023b'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/Singular/Singular/archive/refs/tags/'] +sources = ['Release-%s.tar.gz' % version.replace('.', '-')] +checksums = ['b60063628a223b2519e1d44310e05bc664b671735466da3ec192969681d2772c'] + +builddependencies = [ + ('Autotools', '20220317'), + ('Doxygen', '1.9.8'), + ('pkgconf', '2.0.3'), +] + +dependencies = [ + ('libreadline', '8.2'), + ('GMP', '6.3.0'), + ('MPFR', '4.2.1'), + ('FLINT', '3.1.1'), + ('NTL', '11.5.1'), + ('cddlib', '0.94m'), + ('4ti2', '1.6.10'), +] + +preconfigopts = "./autogen.sh && " +configopts = "--with-gmp=$EBROOTGMP --with-flint=$EBROOTFLINT --with-ntl=$EBROOTNTL" + +sanity_check_paths = { + 'files': ['bin/%s' % x for x in ['ESingular', 'Singular', 'TSingular', 'libpolys-config', 'libsingular-config']] + + ['lib/lib%s.%s' % (l, e) for l in ['Singular', 'factory', 'omalloc', 'polys', 'singular_resources'] + for e in ['a', SHLIB_EXT]], + 'dirs': ['include/%s' % h for h in ['factory', 'omalloc', 'resources', 'singular']] + + ['libexec/singular', 'share'], +} + +sanity_check_commands = ["Singular --help"] + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/s/SoX/SoX-14.4.2-GCCcore-12.3.0.eb b/easybuild/easyconfigs/s/SoX/SoX-14.4.2-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..5238f615df8 --- /dev/null +++ b/easybuild/easyconfigs/s/SoX/SoX-14.4.2-GCCcore-12.3.0.eb @@ -0,0 +1,34 @@ +easyblock = 'ConfigureMake' + +name = 'SoX' +version = '14.4.2' + +homepage = 'http://sox.sourceforge.net/' +docurls = 'http://sox.sourceforge.net/Docs/Documentation' +description = """Sound eXchange, the Swiss Army knife of audio manipulation""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +source_urls = [SOURCEFORGE_SOURCE] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['b45f598643ffbd8e363ff24d61166ccec4836fea6d3888881b8df53e3bb55f6c'] + +builddependencies = [('binutils', '2.40')] + +dependencies = [ + ('FLAC', '1.4.2'), + ('LAME', '3.100'), + ('libmad', '0.15.1b'), + ('libvorbis', '1.3.7'), + ('FFmpeg', '6.0'), +] + +sanity_check_paths = { + 'files': ['bin/play', 'bin/rec', 'bin/sox', 'bin/soxi', 'include/sox.h', + 'lib/libsox.la', 'lib/libsox.a', 'lib/pkgconfig/sox.pc', 'lib/libsox.%s' % SHLIB_EXT], + 'dirs': ['bin', 'include', 'lib', 'lib/pkgconfig', 'share/man'], +} + +sanity_check_commands = ['sox --help'] + +moduleclass = 'data' diff --git a/easybuild/easyconfigs/s/Spack/Spack-0.21.2.eb b/easybuild/easyconfigs/s/Spack/Spack-0.21.2.eb new file mode 100644 index 00000000000..91b1aea025e --- /dev/null +++ b/easybuild/easyconfigs/s/Spack/Spack-0.21.2.eb @@ -0,0 +1,32 @@ +## +# Author: Robert Mijakovic +## +easyblock = 'Tarball' + +name = 'Spack' +version = '0.21.2' + +homepage = 'https://spack.io/' +description = """Spack is a package manager for supercomputers, Linux, and macOS. It makes installing scientific + software easy. With Spack, you can build a package with multiple versions, configurations, platforms, and compilers, + and all of these builds can coexist on the same machine.""" + +toolchain = SYSTEM + +source_urls = [GITHUB_LOWER_RELEASE] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['b1860537ba00c55fa0b2517ce9dbfe0e415600892c48e3dc4e15ee8da0f50dd3'] + +keepsymlinks = True + +sanity_check_paths = { + 'files': ['bin/spack'], + 'dirs': ['etc/spack/defaults', 'lib/spack', 'share/spack', 'var/spack'], +} + +sanity_check_commands = [ + "spack list", + "spack versions gcc", +] + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/s/Squidpy/Squidpy-1.4.1-foss-2023a.eb b/easybuild/easyconfigs/s/Squidpy/Squidpy-1.4.1-foss-2023a.eb new file mode 100644 index 00000000000..e57500557b2 --- /dev/null +++ b/easybuild/easyconfigs/s/Squidpy/Squidpy-1.4.1-foss-2023a.eb @@ -0,0 +1,135 @@ +easyblock = 'PythonBundle' + +name = 'Squidpy' +version = '1.4.1' + +homepage = 'https://squidpy.readthedocs.io' +description = "Squidpy is a tool for the analysis and visualization of spatial molecular data." + +toolchain = {'name': 'foss', 'version': '2023a'} + +builddependencies = [ + ('hatchling', '1.18.0'), + ('poetry', '1.7.1'), +] + +dependencies = [ + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), + ('aiohttp', '3.8.5'), + ('anndata', '0.10.5.post1'), + ('dask', '2023.9.2'), + ('leidenalg', '0.10.2'), + ('matplotlib', '3.7.2'), + ('networkx', '3.1'), + ('numba', '0.58.1'), + ('Pillow', '10.0.0'), + ('scanpy', '1.9.8'), + ('scikit-image', '0.22.0'), + ('scikit-learn', '1.3.1'), + ('statsmodels', '0.14.1'), + ('tqdm', '4.66.1'), + ('xarray', '2023.9.0'), + ('zarr', '2.17.1'), + ('geopandas', '0.14.2'), + ('Arrow', '14.0.1'), + ('PyGEOS', '0.14'), + ('Shapely', '2.0.1'), + ('wrapt', '1.15.0'), # omnipath dep + ('pydantic', '2.5.3'), # inflect dep +] + +use_pip = True + +exts_list = [ + ('pytest_socket', '0.7.0', { + 'checksums': ['71ab048cbbcb085c15a4423b73b619a8b35d6a307f46f78ea46be51b1b7e11b3'], + }), + ('xarray_dataclasses', '1.7.0', { + 'checksums': ['b82b454c5800bf9d488c188d6362428e6bc310d2fc35f96fa4063efa40d33267'], + }), + ('xarray-datatree', '0.0.13', { + 'modulename': 'datatree', + 'checksums': ['f42bd519cab8754eb8a98749464846893b59560318520c45212e85c46af692c9'], + }), + ('multipledispatch', '1.0.0', { + 'checksums': ['5c839915465c68206c3e9c473357908216c28383b425361e5d144594bf85a7e0'], + }), + ('colorcet', '3.1.0', { + 'checksums': ['2921b3cd81a2288aaf2d63dbc0ce3c26dcd882e8c389cc505d6886bf7aa9a4eb'], + }), + ('pyct', '0.5.0', { + 'checksums': ['dd9f4ac5cbd8e37c352c04036062d3c5f67efec76d404761ef16b0cbf26aa6a0'], + }), + ('param', '2.0.2', { + 'checksums': ['785845a727a588eb94c7666d80551c7e2bb97d4309d3507beab66f95e57f7527'], + }), + ('slicerator', '1.1.0', { + 'checksums': ['44010a7f5cd87680c07213b5cabe81d1fb71252962943e5373ee7d14605d6046'], + }), + ('datashader', '0.16.0', { + 'checksums': ['ed4c111957578dcb3fcff972d954f77586dafd71a7345fd5cd069d9fb050d0d1'], + }), + ('typing_extensions', '4.8.0', { + 'checksums': ['df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef'], + }), + ('inflect', '7.0.0', { + 'checksums': ['63da9325ad29da81ec23e055b41225795ab793b4ecb483be5dc1fa363fd4717e'], + }), + ('PIMS', '0.6.1', { + 'checksums': ['e2b704461d4ea9bce8b6a22ca35836fe67d6d34537736b405341ae5547194f3b'], + }), + ('xarray-spatial', '0.3.7', { + 'modulename': 'xrspatial', + 'preinstallopts': "sed -i 's/numpy <= 1.23.4/numpy/g' setup.cfg &&", + 'checksums': ['21bef5f0f5a3cfe18d7a33f40d7c9eee459ed33f7e5674cfe1d156de56d47b2f'], + }), + ('xarray-schema', '0.0.3', { + 'checksums': ['9c6c760489c0690a70394b2ad1368b32f8fa1333911c361b4adf249384212920'], + }), + ('spatial_image', '0.3.0', { + 'checksums': ['508ed434d1cdba5147c1dd358aea0ea41a0f913b02a73e0fd36fcbdbee14b40d'], + }), + ('ome-zarr', '0.8.3', { + 'checksums': ['e98762e6a3cc82e8f6ef50c938e23fc579498d94d1991f3476ccf9726209997b'], + }), + ('multiscale_spatial_image', '0.11.2', { + 'checksums': ['07db47c3358bdfad9688a5ee8064a219ec72a43deb65e30bd4e591adfe35d10f'], + }), + ('spatialdata', '0.0.15', { + 'preinstallopts': "sed -i 's/fsspec<=2023.6/fsspec/g' pyproject.toml &&", + 'checksums': ['7372b13b9fa84c0eadcbfca2f2cd354a9ae8dd370401745d55d572864eb4dc75'], + }), + ('validators', '0.22.0', { + 'checksums': ['77b2689b172eeeb600d9605ab86194641670cdb73b60afd577142a9397873370'], + }), + ('tifffile', '2024.2.12', { + 'checksums': ['4920a3ec8e8e003e673d3c6531863c99eedd570d1b8b7e141c072ed78ff8030d'], + }), + ('omnipath', '1.0.8', { + 'checksums': ['3821b9ba11957412ff9e4932eb6d0c17242939661468064ad1ce28ee3e27394f'], + }), + ('matplotlib-scalebar', '0.8.1', { + 'checksums': ['14887af1093579c5e6afae51a0a1ecc3f715cdbc5c4d7ef59cdeec76ee6bb15d'], + }), + ('fsspec', '2024.2.0', { + 'checksums': ['b6ad1a679f760dda52b1168c859d01b7b80648ea6f7f7c7f5a8a91dc3f3ecb84'], + }), + ('docrep', '0.3.2', { + 'checksums': ['ed8a17e201abd829ef8da78a0b6f4d51fb99a4cbd0554adbed3309297f964314'], + }), + ('dask-image', '2023.8.1', { + 'checksums': ['5e9a8985b0527a1b5942c6a7e744e0e57d264e222c7058f05baeb81c374d04b6'], + }), + ('cycler', '0.12.1', { + 'checksums': ['88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c'], + }), + ('squidpy', version, { + 'preinstallopts': "sed -i 's/pandas>=2.1.0/pandas/g' pyproject.toml &&", + 'checksums': ['485e48163b235af5b3d1cc06e3971ae848d0787c2958b5795200755a86dadf4f'], + }), +] + +sanity_pip_check = True + +moduleclass = 'bio' 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..5d98269ab47 --- /dev/null +++ b/easybuild/easyconfigs/s/SymEngine-python/SymEngine-python-0.11.0-gfbf-2023b.eb @@ -0,0 +1,30 @@ +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'), +] + +use_pip = True +sanity_pip_check = True + +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/sbt/sbt-1.3.13-Java-8.eb b/easybuild/easyconfigs/s/sbt/sbt-1.3.13-Java-8.eb new file mode 100644 index 00000000000..8c7a7d40219 --- /dev/null +++ b/easybuild/easyconfigs/s/sbt/sbt-1.3.13-Java-8.eb @@ -0,0 +1,25 @@ +easyblock = 'Tarball' + +name = 'sbt' +version = '1.3.13' +versionsuffix = '-Java-%(javaver)s' + +homepage = 'http://www.scala-sbt.org/' +description = "sbt is a build tool for Scala, Java, and more." + +toolchain = SYSTEM + +source_urls = ['https://github.com/sbt/sbt/releases/download/v%(version)s'] +sources = [SOURCE_TGZ] +checksums = ['854154de27a7d8c13b5a0f9a297cd1f254cc13b44588dae507e5d4fb2741bd22'] + +dependencies = [('Java', '8')] + +sanity_check_paths = { + 'files': ['bin/sbt'], + 'dirs': [], +} + +sanity_check_commands = ["sbt --version"] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/s/sbt/sbt-1.6.2-Java-8.eb b/easybuild/easyconfigs/s/sbt/sbt-1.6.2-Java-8.eb new file mode 100644 index 00000000000..b873f927a57 --- /dev/null +++ b/easybuild/easyconfigs/s/sbt/sbt-1.6.2-Java-8.eb @@ -0,0 +1,25 @@ +easyblock = 'Tarball' + +name = 'sbt' +version = '1.6.2' +versionsuffix = '-Java-%(javaver)s' + +homepage = 'http://www.scala-sbt.org/' +description = "sbt is a build tool for Scala, Java, and more." + +toolchain = SYSTEM + +source_urls = ['https://github.com/sbt/sbt/releases/download/v%(version)s'] +sources = [SOURCE_TGZ] +checksums = ['637637b6c4e6fa04ab62cd364061e32b12480b09001cd23303df62b36fadd440'] + +dependencies = [('Java', '8')] + +sanity_check_paths = { + 'files': ['bin/sbt'], + 'dirs': [], +} + +sanity_check_commands = ["sbt --version"] + +moduleclass = 'tools' 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 f1c79dc4cbf..6869c22fa57 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 71% 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 6b0f81efa7e..472df30eee9 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'), ] use_pip = True @@ -32,10 +32,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/s/scikit-build-core/scikit-build-core-0.5.0-GCCcore-12.3.0.eb b/easybuild/easyconfigs/s/scikit-build-core/scikit-build-core-0.5.0-GCCcore-12.3.0.eb index 672a73b4031..226560cd69c 100644 --- a/easybuild/easyconfigs/s/scikit-build-core/scikit-build-core-0.5.0-GCCcore-12.3.0.eb +++ b/easybuild/easyconfigs/s/scikit-build-core/scikit-build-core-0.5.0-GCCcore-12.3.0.eb @@ -25,6 +25,10 @@ use_pip = True sanity_pip_check = True exts_list = [ + ('pyproject-metadata', '0.8.0', { + 'sources': ['pyproject_metadata-%(version)s.tar.gz'], + 'checksums': ['376d5a00764ac29440a54579f88e66b7d9cb7e629d35c35a1c7248bfebc9b455'], + }), ('scikit_build_core', version, { 'checksums': ['a42a95029b34b5cf892855342d9b9445c774cb797fcb24c8fc4c2fb42b18dfca'], }), diff --git a/easybuild/easyconfigs/s/scikit-build-core/scikit-build-core-0.9.3-GCCcore-13.2.0.eb b/easybuild/easyconfigs/s/scikit-build-core/scikit-build-core-0.9.3-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..691bd671f50 --- /dev/null +++ b/easybuild/easyconfigs/s/scikit-build-core/scikit-build-core-0.9.3-GCCcore-13.2.0.eb @@ -0,0 +1,33 @@ +easyblock = 'PythonBundle' + +name = 'scikit-build-core' +version = '0.9.3' + +homepage = 'https://scikit-build.readthedocs.io/en/latest/' +description = """Scikit-build-core is a complete ground-up rewrite of scikit-build on top of +modern packaging APIs. It provides a bridge between CMake and the Python build +system, allowing you to make Python modules with CMake.""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +builddependencies = [ + ('binutils', '2.40'), + ('hatchling', '1.18.0'), +] + +dependencies = [ + ('Python', '3.11.5'), + ('Python-bundle-PyPI', '2023.10'), + ('CMake', '3.27.6'), +] + +use_pip = True +sanity_pip_check = True + +exts_list = [ + ('scikit_build_core', version, { + 'checksums': ['341d113e473a5409dc62522e8b1b1b8b1647a0b95557ad15f6be2a36071fd390'], + }), +] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/s/scikit-learn/scikit-learn-1.4.2-gfbf-2023a.eb b/easybuild/easyconfigs/s/scikit-learn/scikit-learn-1.4.2-gfbf-2023a.eb new file mode 100644 index 00000000000..c94ab50744a --- /dev/null +++ b/easybuild/easyconfigs/s/scikit-learn/scikit-learn-1.4.2-gfbf-2023a.eb @@ -0,0 +1,36 @@ +easyblock = 'PythonBundle' + +name = 'scikit-learn' +version = '1.4.2' + +homepage = 'https://scikit-learn.org/stable/index.html' +description = """Scikit-learn integrates machine learning algorithms in the tightly-knit scientific Python world, +building upon numpy, scipy, and matplotlib. As a machine-learning module, +it provides versatile tools for data mining and analysis in any field of science and engineering. +It strives to be simple and efficient, accessible to everybody, and reusable in various contexts.""" + +toolchain = {'name': 'gfbf', 'version': '2023a'} + +dependencies = [ + ('Python', '3.11.3'), + ('Python-bundle-PyPI', '2023.06'), + # Build requires "Cython>=3.0.8" + # Cython included with Python-bundle-PyPI (0.29.35) is too old + ('Cython', '3.0.8'), + ('SciPy-bundle', '2023.07'), +] + +use_pip = True +sanity_pip_check = True + +exts_list = [ + (name, version, { + 'modulename': 'sklearn', + 'checksums': ['daa1c471d95bad080c6e44b4946c9390a4842adc3082572c20e4f8884e39e959'], + }), + ('sklearn', '0.0', { + 'checksums': ['e23001573aa194b834122d2b9562459bf5ae494a2d59ca6b8aa22c85a44c0e31'], + }), +] + +moduleclass = 'data' diff --git a/easybuild/easyconfigs/s/skorch/skorch-0.15.0-foss-2023a-PyTorch-2.1.2-CUDA-12.1.1.eb b/easybuild/easyconfigs/s/skorch/skorch-0.15.0-foss-2023a-PyTorch-2.1.2-CUDA-12.1.1.eb new file mode 100644 index 00000000000..7db54f41b95 --- /dev/null +++ b/easybuild/easyconfigs/s/skorch/skorch-0.15.0-foss-2023a-PyTorch-2.1.2-CUDA-12.1.1.eb @@ -0,0 +1,32 @@ +easyblock = 'PythonBundle' + +name = 'skorch' +version = '0.15.0' +local_torch_version = '2.1.2' +versionsuffix = '-PyTorch-' + local_torch_version + '-CUDA-%(cudaver)s' + +homepage = 'https://skorch.readthedocs.io/' +description = "A scikit-learn compatible neural network library that wraps PyTorch." + +toolchain = {'name': 'foss', 'version': '2023a'} + +dependencies = [ + ('CUDA', '12.1.1', '', SYSTEM), + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), + ('scikit-learn', '1.3.1'), + ('tqdm', '4.66.1'), + ('PyTorch', local_torch_version, '-CUDA-%(cudaver)s'), +] + +use_pip = True + +exts_list = [ + (name, version, { + 'checksums': ['dfd5d50650a66e0d7adb3f6e2fce0666b53ebfe33cc1a5db19d555ef66587fce'], + }), +] + +sanity_pip_check = True + +moduleclass = 'ai' diff --git a/easybuild/easyconfigs/s/subunit/subunit-1.4.3-GCCcore-12.2.0.eb b/easybuild/easyconfigs/s/subunit/subunit-1.4.3-GCCcore-12.2.0.eb new file mode 100644 index 00000000000..059b784a9fb --- /dev/null +++ b/easybuild/easyconfigs/s/subunit/subunit-1.4.3-GCCcore-12.2.0.eb @@ -0,0 +1,60 @@ +# This easyconfig was created by the BEAR Software team at the University of Birmingham. +easyblock = 'ConfigureMake' + +name = 'subunit' +version = '1.4.3' + +homepage = "https://github.com/testing-cabal/subunit" +description = """Subunit is a streaming protocol for test results.""" + +toolchain = {'name': 'GCCcore', 'version': '12.2.0'} + +source_urls = ['https://github.com/testing-cabal/subunit/archive/refs/tags/'] +sources = ['%(version)s.tar.gz'] +checksums = ['dc4bf970521d3382eb33cd58aff8b5b65a0d86e1fe8d5d97abb969413909907c'] + +builddependencies = [ + ('binutils', '2.39'), + ('Autotools', '20220317'), + ('pkgconf', '1.9.3'), +] + +dependencies = [ + ('Check', '0.15.2'), + ('CppUnit', '1.15.1'), + ('Python', '3.10.8'), +] + +preconfigopts = "autoreconf -vi &&" + +exts_defaultclass = 'PythonPackage' + +exts_default_options = { + 'source_urls': [PYPI_SOURCE], + 'use_pip': True, + 'download_dep_fail': True, + 'sanity_pip_check': True, +} + +exts_list = [ + ('iso8601', '1.1.0', { + 'checksums': ['32811e7b81deee2063ea6d2e94f8819a86d1f3811e49d23623a41fa832bef03f'], + }), + ('fixtures', '4.1.0', { + 'checksums': ['82b1c5e69f615526ef6c067188a1e6c6067df7f88332509c99f8b8fdbb9776f3'], + }), + ('testtools', '2.6.0', { + 'checksums': ['28b65e14c0f2d3ecbbfb5f55c9dcde5e4faa80ac16a37a823909a1fe3cbcb30a'], + }), +] + +modextrapaths = {'PYTHONPATH': 'lib/python%(pyshortver)s/site-packages'} + +sanity_check_paths = { + 'files': ['lib/libsubunit.a', 'lib/libsubunit.%s' % SHLIB_EXT], + 'dirs': ['include/subunit'], +} + +sanity_check_commands = ['python -c "import subunit"'] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/s/svist4get/svist4get-1.3.1-foss-2023a.eb b/easybuild/easyconfigs/s/svist4get/svist4get-1.3.1-foss-2023a.eb new file mode 100644 index 00000000000..f44d27dd1f5 --- /dev/null +++ b/easybuild/easyconfigs/s/svist4get/svist4get-1.3.1-foss-2023a.eb @@ -0,0 +1,61 @@ +# Author: J. Sassmannshausen (Imperial College London/UK) +# Update: Pavel Tománek (Inuits) + +easyblock = 'PythonBundle' + +name = 'svist4get' +version = '1.3.1' + +homepage = 'https://github.com/art-egorov/svist4get' +description = """Svist4get is a simple bioinformatics tool for visualization of +genomic signal tracks in user-defined genomic windows, either arbitrary selected +by genomic coordinates or anchored to particular transcripts or genes.""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +dependencies = [ + ('Python', '3.11.3'), + ('pybedtools', '0.9.1'), + ('Biopython', '1.83'), + ('Pillow', '10.0.0'), + ('ImageMagick', '7.1.1-15'), +] + +use_pip = True +sanity_pip_check = True + +exts_list = [ + ('reportlab', '3.6.9', { + 'patches': ['reportlab-3.6.12-fontconfig.patch'], + 'checksums': ['5d0cc3682456ad213150f6dbffe7d47eab737d809e517c316103376be548fb84', + # reportlab-3.6.12-fontconfig.patch: + '2cc9b40e09650b7404ee9c4d72b134739acc89bacac3da58131cef2308726297'], + }), + ('configs', '3.0.3', { + 'sources': ['%(name)s-%(version)s.zip'], + 'checksums': ['a5ab09e04e441dac6aa856a71fbf5ffc62954352630f79d311b8f8a31d9ce19c'], + }), + ('argparse', '1.4.0', { + 'checksums': ['62b089a55be1d8949cd2bc7e0df0bddb9e028faefc8c32038cc84862aefdd6e4'], + }), + ('Wand', '0.6.10', { + 'checksums': ['373f4a7f2866c868c31ce910e1f9b36a92d132640a20068ec17cea3284fedc57'], + }), + (name, version, { + # unpin statistics dependency - it is old package and interfering with python lib statistics + 'preinstallopts': "sed -i 's/statistics//' setup.py && ", + 'checksums': ['22311fdc956cca531dac7ba924744e8f870a57bc6f27cbe4e8ba9854117e720c'], + }), +] + +sanity_check_paths = { + 'files': ['bin/svist4get', 'bin/svist4get_copier'], + 'dirs': ['lib'], +} + +sanity_check_commands = [ + "svist4get --help", + "svist4get -v", +] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/t/TAMkin/TAMkin-1.2.6-foss-2023a.eb b/easybuild/easyconfigs/t/TAMkin/TAMkin-1.2.6-foss-2023a.eb new file mode 100644 index 00000000000..b3b40928643 --- /dev/null +++ b/easybuild/easyconfigs/t/TAMkin/TAMkin-1.2.6-foss-2023a.eb @@ -0,0 +1,46 @@ +easyblock = 'PythonPackage' + +name = 'TAMkin' +version = '1.2.6' + +homepage = 'https://molmod.github.io/tamkin/' +description = """TAMkin is a post-processing toolkit for normal mode analysis, + thermochemistry and reaction kinetics. It uses a Hessian computation from a + standard computational chemistry program as its input.""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +source_urls = ['https://github.com/molmod/tamkin/releases/download/%(version)s'] +sources = [SOURCE_TAR_GZ] +patches = [ + 'TAMkin-1.2.6_fix-python38.patch', + 'TAMkin-1.2.6_fix-test_vsa_no_mass.patch', +] +checksums = [ + {'TAMkin-1.2.6.tar.gz': '1bde275a09be91e5241616aaa9fedc60cb359a263f5c5909bb14431c3a4ed5fd'}, + {'TAMkin-1.2.6_fix-python38.patch': '1633d5b24b012f8c4b6731491e4072c819ebbba65574966b7185ecca52eeac9b'}, + {'TAMkin-1.2.6_fix-test_vsa_no_mass.patch': '67d8b8671d7c71123e8ee9a7b9ebea6562e9711edb41555d1926b1b51d549066'}, +] + +dependencies = [ + ('Python', '3.11.3'), + ('matplotlib', '3.7.2'), + ('molmod', '1.4.8'), + ('nose3', '1.3.8'), +] + +download_dep_fail = True +use_pip = True + +# disable tests that require X11 by specifying "backend: agg" in matplotlibrc +runtest = 'export MATPLOTLIBRC=$PWD; echo "backend: agg" > $MATPLOTLIBRC/matplotlibrc; ' +runtest += 'export OMP_NUM_THREADS=1; nosetests -v tamkin' + +sanity_check_paths = { + 'files': [], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +sanity_pip_check = True + +moduleclass = 'chem' diff --git a/easybuild/easyconfigs/t/TF-COMB/TF-COMB-1.1-foss-2023a.eb b/easybuild/easyconfigs/t/TF-COMB/TF-COMB-1.1-foss-2023a.eb new file mode 100644 index 00000000000..d95bedfc764 --- /dev/null +++ b/easybuild/easyconfigs/t/TF-COMB/TF-COMB-1.1-foss-2023a.eb @@ -0,0 +1,54 @@ +easyblock = 'PythonBundle' + +name = 'TF-COMB' +version = '1.1' + +homepage = 'https://github.com/loosolab/TF-COMB' +description = """Transcription Factor Co-Occurrence using Market Basket analysis.""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +dependencies = [ + ('Python', '3.11.3'), + ('Python-bundle-PyPI', '2023.06'), + ('SciPy-bundle', '2023.07'), + ('tqdm', '4.66.1'), + ('Pysam', '0.22.0'), + ('matplotlib', '3.7.2'), + ('networkx', '3.1'), + ('Graphviz', '8.1.0'), + ('statsmodels', '0.14.1'), + ('dill', '0.3.7'), + ('Seaborn', '0.13.2'), + ('IPython', '8.14.0'), + ('TOBIAS', '0.16.1'), + ('python-louvain', '0.16'), + ('GOATOOLS', '1.4.5'), + ('qnorm', '0.8.1'), +] + +use_pip = True +sanity_pip_check = True + +# remove graphviz from deps - the pip check failing, should be "import gv" +local_tfcomb_preinstallopts = "sed -i '70d' setup.py && " +# fix "import graphviz" to "import gv" +local_tfcomb_preinstallopts += "sed -i 's/import graphviz/import gv as graphviz/' tfcomb/plotting.py && " +# unpin python version to works with python 3.11.3 +local_tfcomb_preinstallopts += "sed -i '59d' setup.py && " +# regenerate counting.c to works with python 3.11 +local_tfcomb_preinstallopts += "cd tfcomb && rm counting.c && cythonize -i counting.pyx && cd .. && " + + +exts_list = [ + ('uropa', '4.0.3', { + 'checksums': ['e0b648881b95f301e3f3ecc924314995312f10b0cbabf96d5a5ce2fb18c53a59'], + }), + (name, version, { + 'preinstallopts': local_tfcomb_preinstallopts, + 'modulename': 'tfcomb', + 'checksums': ['5b718061660e0f9f94d86459eb742ca81de5851b0defd8b08c8a7a7e3370c253'], + }), +] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/t/TOBIAS/TOBIAS-0.16.1-foss-2023a.eb b/easybuild/easyconfigs/t/TOBIAS/TOBIAS-0.16.1-foss-2023a.eb new file mode 100644 index 00000000000..186556eb374 --- /dev/null +++ b/easybuild/easyconfigs/t/TOBIAS/TOBIAS-0.16.1-foss-2023a.eb @@ -0,0 +1,57 @@ +easyblock = 'PythonBundle' + +name = 'TOBIAS' +version = '0.16.1' + +homepage = 'https://github.com/loosolab/TOBIAS' +description = """TOBIAS is a collection of command-line bioinformatics tools +for performing footprinting analysis on ATAC-seq data.""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +builddependencies = [('hatchling', '1.18.0')] +dependencies = [ + ('Python', '3.11.3'), + ('Python-bundle-PyPI', '2023.06'), + ('SciPy-bundle', '2023.07'), + ('matplotlib', '3.7.2'), + ('Seaborn', '0.13.2'), + ('Pysam', '0.22.0'), + ('pybedtools', '0.9.1'), + ('boto3', '1.28.70'), + ('pyBigWig', '0.3.22'), + ('scikit-learn', '1.3.1'), + ('PyYAML', '6.0'), + ('XlsxWriter', '3.1.3'), + ('svist4get', '1.3.1'), + ('adjustText', '0.7.3'), +] + +use_pip = True +sanity_pip_check = True + +exts_list = [ + ('kneed', '0.8.5', { + 'checksums': ['a4847ac4f1d04852fea278d5de7aa8bfdc3beb7fbca4a182fec0f0efee43f4b1'], + }), + ('logomaker', '0.8', { + 'checksums': ['d8c7501a7d6d7961cd68e5a44e939000ebf1b0c4197a0c9198351e1d681d3f6d'], + }), + ('MOODS-python', '1.9.4.1', { + 'modulename': 'MOODS', + 'checksums': ['b3b5e080cb0cd13c0fd175d0ee0d453fde3e42794fa7ac39a4f6db1ac5ddb4cc'], + }), + ('PyPDF2', '3.0.1', { + 'modulename': 'PyPDF2', + 'checksums': ['a74408f69ba6271f71b9352ef4ed03dc53a31aa404d29b5d31f53bfecfee1440'], + }), + ('tobias', version, { + # remove pyBigWig dependency - pip_check fails with "import pybigwig" + 'preinstallopts': "sed -i '81d' setup.py && ", + 'checksums': ['c46267c01287be06201b3e6f7a36daad1ad86d6c578f96e878501be7da7fd109'], + }), +] + +sanity_check_commands = ["python -c 'import pyBigWig'"] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/t/Tcl/Tcl-8.6.14-GCCcore-13.3.0.eb b/easybuild/easyconfigs/t/Tcl/Tcl-8.6.14-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..e81b854198b --- /dev/null +++ b/easybuild/easyconfigs/t/Tcl/Tcl-8.6.14-GCCcore-13.3.0.eb @@ -0,0 +1,41 @@ +easyblock = 'ConfigureMake' + +name = 'Tcl' +version = '8.6.14' + +homepage = 'https://www.tcl.tk/' +description = """ + Tcl (Tool Command Language) is a very powerful but easy to learn dynamic + programming language, suitable for a very wide range of uses, including web + and desktop applications, networking, administration, testing and many more. +""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = ['http://prdownloads.sourceforge.net/%(namelower)s'] +sources = ['%(namelower)s%(version)s-src.tar.gz'] +checksums = ['5880225babf7954c58d4fb0f5cf6279104ce1cd6aa9b71e9a6322540e1c4de66'] + +builddependencies = [ + ('binutils', '2.42'), +] +dependencies = [ + ('zlib', '1.3.1'), +] + +configopts = '--enable-threads EXTRA_INSTALL="install-private-headers"' + +runtest = 'test' + +start_dir = 'unix' + +postinstallcmds = ['ln -s %(installdir)s/bin/tclsh%(version_major)s.%(version_minor)s %(installdir)s/bin/tclsh'] + +sanity_check_paths = { + 'files': ['bin/tclsh%(version_major)s.%(version_minor)s', 'bin/tclsh', + 'include/tcl.h', 'lib/libtcl%%(version_major)s.%%(version_minor)s.%s' % SHLIB_EXT, + 'lib/tclConfig.sh', 'man/man1/tclsh.1'], + 'dirs': ['share'], +} + +moduleclass = 'lang' diff --git a/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.15.1-foss-2023a.eb b/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.15.1-foss-2023a.eb new file mode 100644 index 00000000000..014f3bbd7a5 --- /dev/null +++ b/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.15.1-foss-2023a.eb @@ -0,0 +1,211 @@ +easyblock = 'PythonBundle' + +name = 'TensorFlow' +version = '2.15.1' + +homepage = 'https://www.tensorflow.org/' +description = "An open-source software library for Machine Intelligence" + +toolchain = {'name': 'foss', 'version': '2023a'} +toolchainopts = {'pic': True} + +use_pip = True +sanity_pip_check = True + +builddependencies = [ + ('Bazel', '6.1.0'), + # git 2.x required, see also https://github.com/tensorflow/tensorflow/issues/29053 + ('git', '2.41.0', '-nodocs'), + ('pybind11', '2.11.1'), + ('UnZip', '6.0'), + # Required to build some of the extensions + ('poetry', '1.5.1'), + # Protobuf disabled since 2.13.0 easyconfigs: + # Compiling with system protobuf don't seem to work, see: + # https://github.com/tensorflow/tensorflow/issues/61593 + # ('protobuf', '24.0'), +] + +dependencies = [ + ('Python', '3.11.3'), + ('h5py', '3.9.0'), + ('cURL', '8.0.1'), + ('dill', '0.3.7'), + ('double-conversion', '3.3.0'), + ('flatbuffers', '23.5.26'), + ('flatbuffers-python', '23.5.26'), + ('giflib', '5.2.1'), + ('hwloc', '2.9.1'), + ('ICU', '73.2'), + ('JsonCpp', '1.9.5'), + ('libjpeg-turbo', '2.1.5.1'), + ('ml_dtypes', '0.3.2'), + ('NASM', '2.16.01'), + ('nsync', '1.26.0'), + ('SQLite', '3.42.0'), + ('patchelf', '0.18.0'), + ('libpng', '1.6.39'), + ('snappy', '1.1.10'), + ('zlib', '1.2.13'), + ('grpcio', '1.57.0'), +] + +# Dependencies created and updated using findPythonDeps, see: +# https://docs.easybuild.io/api/easybuild/scripts/findPythonDeps +# Notable changes since 2.13.0-foss-2023a +# - tensoboard-wit deprecated as of tensorboard 2.13.0 (tensorboard@33abcb54d7) +# - portpicker for tests no longer needed (TF@e85860e838) +# - opt_einsum now comes from ml_dtypes +exts_list = [ + + ('wrapt', '1.14.1', { + 'checksums': ['380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d'], + }), + ('termcolor', '2.3.0', { + 'checksums': ['b5b08f68937f138fe92f6c089b99f1e2da0ae56c52b78bf7075fd95420fd9a5a'], + }), + ('tensorflow-estimator', '2.15.0', { + 'source_tmpl': 'tensorflow_estimator-%(version)s-py2.py3-none-any.whl', + 'checksums': ['aedf21eec7fb2dc91150fc91a1ce12bc44dbb72278a08b58e79ff87c9e28f153'], + }), + ('Werkzeug', '3.0.2', { + 'source_tmpl': SOURCELOWER_TAR_GZ, + 'checksums': ['e39b645a6ac92822588e7b39a692e7828724ceae0b0d702ef96701f90e70128d'], + }), + ('tensorboard-data-server', '0.7.2', { + 'source_tmpl': 'tensorboard_data_server-%(version)s-py3-none-any.whl', + 'checksums': ['7e0610d205889588983836ec05dc098e80f97b7e7bbff7e994ebb78f578d0ddb'], + }), + ('Markdown', '3.6', { + 'checksums': ['ed4f41f6daecbeeb96e576ce414c41d2d876daa9a16cb35fa8ed8c2ddfad0224'], + }), + ('oauthlib', '3.2.2', { + 'checksums': ['9859c40929662bec5d64f34d01c99e093149682a3f38915dc0655d5a633dd918'], + }), + ('requests-oauthlib', '2.0.0', { + 'checksums': ['b3dffaebd884d8cd778494369603a9e7b58d29111bf6b41bdc2dcd87203af4e9'], + }), + ('rsa', '4.9', { + 'checksums': ['e38464a49c6c85d7f1351b0126661487a7e0a14a50f1675ec50eb34d4f20ef21'], + }), + ('pyasn1-modules', '0.4.0', { + 'source_tmpl': 'pyasn1_modules-%(version)s.tar.gz', + 'checksums': ['831dbcea1b177b28c9baddf4c6d1013c24c3accd14a1873fffaa6a2e905f17b6'], + }), + ('cachetools', '5.3.3', { + 'checksums': ['ba29e2dfa0b8b556606f097407ed1aa62080ee108ab0dc5ec9d6a723a007d105'], + }), + ('google-auth', '2.29.0', { + 'modulename': 'google.auth', + 'checksums': ['672dff332d073227550ffc7457868ac4218d6c500b155fe6cc17d2b13602c360'], + }), + ('google-auth-oauthlib', '1.2.0', { + 'checksums': ['292d2d3783349f2b0734a0a0207b1e1e322ac193c2c09d8f7c613fb7cc501ea8'], + }), + ('absl-py', '2.1.0', { + 'modulename': 'absl', + 'checksums': ['7820790efbb316739cde8b4e19357243fc3608a152024288513dd968d7d959ff'], + }), + ('tensorboard', '2.15.2', { + 'source_tmpl': '%(name)s-%(version)s-py3-none-any.whl', + 'checksums': ['a6f6443728064d962caea6d34653e220e34ef8df764cb06a8212c17e1a8f0622'], + }), + ('keras', '2.15.0', { + 'source_tmpl': '%(name)s-%(version)s-py3-none-any.whl', + 'checksums': ['2dcc6d2e30cf9c951064b63c1f4c404b966c59caf09e01f3549138ec8ee0dd1f'], + }), + ('google-pasta', '0.2.0', { + 'modulename': 'pasta', + 'checksums': ['c9f2c8dfc8f96d0d5808299920721be30c9eec37f2389f28904f454565c8a16e'], + }), + ('astunparse', '1.6.3', { + 'checksums': ['5ad93a8456f0d084c3456d059fd9a92cce667963232cbf763eac3bc5b7940872'], + }), + # Required by tests + ('tblib', '3.0.0', { + 'checksums': ['93622790a0a29e04f0346458face1e144dc4d32f493714c6c3dff82a4adb77e6'], + }), + ('astor', '0.8.1', { + 'checksums': ['6a6effda93f4e1ce9f618779b2dd1d9d84f1e32812c23a29b3fff6fd7f63fa5e'], + }), + # Optional profile plugin + dependency + ('gviz-api', '1.10.0', { + 'source_tmpl': 'gviz_api-%(version)s.tar.gz', + 'checksums': ['846692dd8cc73224fc31b18e41589bd934e1cc05090c6576af4b4b26c2e71b90'], + }), + ('tensorboard-plugin-profile', '2.15.1', { + 'source_tmpl': 'tensorboard_plugin_profile-%(version)s.tar.gz', + 'checksums': ['84bb33e446eb4a9c0616f669fc6a42cdd40eadd9ae1d74bf756f4f0479993273'], + }), + (name, version, { + 'patches': [ + 'TensorFlow-2.13.0_add-missing-system-protobuf-targets.patch', + 'TensorFlow-2.15.1_remove-libclang-dep.patch', + 'TensorFlow-2.15.1_remove-io-gcs-filesystem-dep.patch', + 'TensorFlow-2.15.1_add-default-shell-env.patch', + 'TensorFlow-2.15.1_fix-flatbuffer-license.patch', + 'TensorFlow-2.15.1_fix-pybind11-build.patch', + ], + 'source_tmpl': 'v%(version)s.tar.gz', + 'source_urls': ['https://github.com/tensorflow/tensorflow/archive/'], + 'test_script': 'TensorFlow-2.x_mnist-test.py', + 'test_tag_filters_cpu': ( + '-gpu,-tpu,-no_cuda_on_cpu_tap,' + '-no_pip,-no_oss,-oss_serial,-benchmark-test,-v1only' + ), + 'test_tag_filters_gpu': ( + 'gpu,-no_gpu,-nogpu,-gpu_cupti,-no_cuda11,' + '-no_pip,-no_oss,-oss_serial,-benchmark-test,-v1only' + ), + 'test_targets': [ + '//tensorflow/core/...', + '-//tensorflow/core:example_java_proto', + '-//tensorflow/core/example:example_protos_closure', + '//tensorflow/cc/...', + '//tensorflow/c/...', + '//tensorflow/python/...', + '-//tensorflow/c/eager:c_api_test_gpu', + '-//tensorflow/c/eager:c_api_distributed_test', + '-//tensorflow/c/eager:c_api_distributed_test_gpu', + '-//tensorflow/c/eager:c_api_cluster_test_gpu', + '-//tensorflow/c/eager:c_api_remote_function_test_gpu', + '-//tensorflow/c/eager:c_api_remote_test_gpu', + '-//tensorflow/core/common_runtime:collective_param_resolver_local_test', + '-//tensorflow/core/kernels/mkl:mkl_fused_ops_test', + '-//tensorflow/core/kernels/mkl:mkl_fused_batch_norm_op_test', + '-//tensorflow/core/ir/importexport/tests/roundtrip/...', + ], + 'testopts': '--test_env=HOME=/tmp --test_timeout=3600 --test_size_filters=small ', + 'testopts_gpu': ( + '--test_env=HOME=/tmp --test_timeout=3600 --test_size_filters=small ' + '--run_under=//tensorflow/tools/ci_build/gpu_build:parallel_gpu_execute ' + ), + 'with_xla': True, + 'checksums': [ + {'v2.15.1.tar.gz': 'f36416d831f06fe866e149c7cd752da410a11178b01ff5620e9f265511ed57cf'}, + {'TensorFlow-2.13.0_add-missing-system-protobuf-targets.patch': + '77d8c8a5627493fc7c38b4de79d49e60ff6628b05ff969f4cd3ff9857176c459'}, + {'TensorFlow-2.15.1_remove-libclang-dep.patch': + '871b2f0221b7a150ac9f563ffad7187e052a7eedd95c20fb4524987d7edb6f21'}, + {'TensorFlow-2.15.1_remove-io-gcs-filesystem-dep.patch': + 'eba7351a4b0696c589b9c507bacb0257ebce8c39fde39ab72d5d6a69deaaec02'}, + {'TensorFlow-2.15.1_add-default-shell-env.patch': + '3d5196b4bf2e91048dc8a18f9e8f487a223fcd973d6302e80b0d4000ea3d652b'}, + {'TensorFlow-2.15.1_fix-flatbuffer-license.patch': + '2c04d5095977a628a238dbf93c5fada7159c86752a7183e64e0cf7c7ab00caf4'}, + {'TensorFlow-2.15.1_fix-pybind11-build.patch': + '3bb350ac92ab99c63c951c96b3b0160699f5f16822b64f72111ebfd2275cafce'}, + ], + }), +] + +# Taken from tensorboard-2.15.1-gfbf-2023a.eb: +# Relax restriction on protobuf dependency as issue was fixed +# in https://github.com/protocolbuffers/upb/pull/1514 +# see also: https://github.com/easybuilders/easybuild-easyconfigs/pull/19671 +postinstallcmds = [ + 'sed -i "s/Requires-Dist: protobuf.*/Requires-Dist: protobuf >=3.19.6/g" ' + + '%(installdir)s/lib/python%(pyshortver)s/site-packages/tensorboard-2.15.2.dist-info/METADATA', +] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.15.1_add-default-shell-env.patch b/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.15.1_add-default-shell-env.patch new file mode 100644 index 00000000000..f1510205a04 --- /dev/null +++ b/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.15.1_add-default-shell-env.patch @@ -0,0 +1,51 @@ +Make TensorFlow use the environment as set by EasyBuild + +See https://github.com/tensorflow/tensorflow/pull/61591 + +Author: Alexander Grund (TU Dresden) + +Edit in 2.15.1: include also python api generator / Yunqi Shao (C3SE) + +diff --git a/tensorflow/python/tools/api/generator2/generate_api.bzl b/tensorflow/python/tools/api/generator2/generate_api.bzl index 64e9b96276e..afadd07bc3d 100644 +--- a/tensorflow/python/tools/api/generator2/generate_api.bzl ++++ b/tensorflow/python/tools/api/generator2/generate_api.bzl +@@ -95,6 +95,7 @@ def _api_extractor_impl(target, ctx): + outputs = [output], + arguments = [args], + progress_message = "Extracting " + api + " APIs for %{label} to %{output}.", ++ use_default_shell_env = True, + ) + + direct_api.append(output) +@@ -218,6 +219,7 @@ def _generate_api_impl(ctx): + outputs = ctx.outputs.output_files, + arguments = [args], + progress_message = "Generating APIs for %{label} to %{output}.", ++ use_default_shell_env = True, + ) + + # Convert output_paths to the list of corresponding modules for the further testing +diff --git a/tensorflow/lite/build_def.bzl b/tensorflow/lite/build_def.bzl +index cdc02ac2b26..6b4c8b9045f 100644 +--- a/tensorflow/lite/build_def.bzl ++++ b/tensorflow/lite/build_def.bzl +@@ -368,6 +368,7 @@ def _gen_selected_ops_impl(ctx): + executable = ctx.executable._generate_op_registrations, + mnemonic = "OpRegistration", + progress_message = "gen_selected_ops", ++ use_default_shell_env = True, + ) + + gen_selected_ops_rule = rule( +diff --git a/tensorflow/tensorflow.bzl b/tensorflow/tensorflow.bzl +index 6762ccd8f9b..de7c27a1275 100644 +--- a/tensorflow/tensorflow.bzl ++++ b/tensorflow/tensorflow.bzl +@@ -1325,6 +1325,7 @@ def _generate_op_reg_offsets_impl(ctx): + tools = [ctx.executable._offset_counter], + executable = ctx.executable._offset_counter, + arguments = [args], ++ use_default_shell_env = True, + ) + + generate_op_reg_offsets = rule( diff --git a/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.15.1_fix-flatbuffer-license.patch b/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.15.1_fix-flatbuffer-license.patch new file mode 100644 index 00000000000..4970cd0b758 --- /dev/null +++ b/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.15.1_fix-flatbuffer-license.patch @@ -0,0 +1,13 @@ +diff --git a/third_party/flatbuffers/BUILD.system b/third_party/flatbuffers/BUILD.system +index 8fe4d7a5907..b1d63b4ca0f 100644 +--- a/third_party/flatbuffers/BUILD.system ++++ b/third_party/flatbuffers/BUILD.system +@@ -1,7 +1,7 @@ + licenses(["notice"]) # Apache 2.0 + + filegroup( +- name = "LICENSE.txt", ++ name = "LICENSE", + visibility = ["//visibility:public"], + ) + diff --git a/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.15.1_fix-pybind11-build.patch b/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.15.1_fix-pybind11-build.patch new file mode 100644 index 00000000000..c12c8726172 --- /dev/null +++ b/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.15.1_fix-pybind11-build.patch @@ -0,0 +1,14 @@ +diff --git a/third_party/systemlibs/pybind11.BUILD b/third_party/systemlibs/pybind11.BUILD +index 79a483d7b5d..463dd1a8ec7 100644 +--- a/third_party/systemlibs/pybind11.BUILD ++++ b/third_party/systemlibs/pybind11.BUILD +@@ -6,3 +6,9 @@ cc_library( + "@org_tensorflow//third_party/python_runtime:headers", + ], + ) ++ ++# Needed by pybind11_bazel. ++config_setting( ++ name = "osx", ++ constraint_values = ["@platforms//os:osx"], ++) diff --git a/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.15.1_remove-io-gcs-filesystem-dep.patch b/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.15.1_remove-io-gcs-filesystem-dep.patch new file mode 100644 index 00000000000..911d4b651ed --- /dev/null +++ b/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.15.1_remove-io-gcs-filesystem-dep.patch @@ -0,0 +1,12 @@ +diff --git a/tensorflow/tools/pip_package/setup.py b/tensorflow/tools/pip_package/setup.py +index 17ba9dc3323..c62900882ad 100644 +--- a/tensorflow/tools/pip_package/setup.py ++++ b/tensorflow/tools/pip_package/setup.py +@@ -101,7 +101,6 @@ REQUIRED_PACKAGES = [ + 'termcolor >= 1.1.0', + 'typing_extensions >= 3.6.6', + 'wrapt >= 1.11.0, < 1.15', +- 'tensorflow-io-gcs-filesystem >= 0.23.1', + # grpcio does not build correctly on big-endian machines due to lack of + # BoringSSL support. + # See https://github.com/tensorflow/tensorflow/issues/17882. diff --git a/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.15.1_remove-libclang-dep.patch b/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.15.1_remove-libclang-dep.patch new file mode 100644 index 00000000000..377c6e5a377 --- /dev/null +++ b/easybuild/easyconfigs/t/TensorFlow/TensorFlow-2.15.1_remove-libclang-dep.patch @@ -0,0 +1,12 @@ +diff --git a/tensorflow/tools/pip_package/setup.py b/tensorflow/tools/pip_package/setup.py +index fc5fd364c47..17ba9dc3323 100644 +--- a/tensorflow/tools/pip_package/setup.py ++++ b/tensorflow/tools/pip_package/setup.py +@@ -88,7 +88,6 @@ REQUIRED_PACKAGES = [ + 'gast >=0.2.1,!=0.5.0,!=0.5.1,!=0.5.2', + 'google_pasta >= 0.1.1', + 'h5py >= 2.9.0', +- 'libclang >= 13.0.0', + 'ml_dtypes ~= 0.3.1', + 'numpy >= 1.23.5, < 2.0.0', + 'opt_einsum >= 2.3.2', diff --git a/easybuild/easyconfigs/t/TorchIO/TorchIO-0.19.6-foss-2023a-CUDA-12.1.1.eb b/easybuild/easyconfigs/t/TorchIO/TorchIO-0.19.6-foss-2023a-CUDA-12.1.1.eb new file mode 100644 index 00000000000..ed04f4a9f40 --- /dev/null +++ b/easybuild/easyconfigs/t/TorchIO/TorchIO-0.19.6-foss-2023a-CUDA-12.1.1.eb @@ -0,0 +1,60 @@ +easyblock = 'PythonBundle' + +name = 'TorchIO' +version = '0.19.6' +versionsuffix = '-CUDA-%(cudaver)s' + +homepage = 'https://torchio.readthedocs.io/' +description = """ +TorchIO is an open-source Python library for efficient loading, preprocessing, +augmentation and patch-based sampling of 3D medical images in deep learning, +following the design of PyTorch. + +It includes multiple intensity and spatial transforms for data augmentation and +preprocessing. These transforms include typical computer vision operations such +as random affine transformations and also domain-specific ones such as +simulation of intensity artifacts due to MRI magnetic field inhomogeneity +(bias) or k-space motion artifacts.""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +builddependencies = [ + ('hatchling', '1.18.0'), +] + +dependencies = [ + ('CUDA', '12.1.1', '', SYSTEM), + ('Python', '3.11.3'), + ('PyTorch', '2.1.2', versionsuffix), + ('tqdm', '4.66.1'), + ('Deprecated', '1.2.14'), + ('SimpleITK', '2.3.1'), + ('NiBabel', '5.2.0'), +] + +use_pip = True + +exts_list = [ + ('humanize', '4.8.0', { + 'checksums': ['9783373bf1eec713a770ecaa7c2d7a7902c98398009dfa3d8a2df91eec9311e8'], + }), + ('typer', '0.9.0', { + 'checksums': ['50922fd79aea2f4751a8e0408ff10d2662bd0c8bbfa84755a699f3bada2978b2'], + }), + ('torchio', version, { + 'checksums': ['c3afe16c3d822b6cb4aa103ffd6ec28816c95faa03cbeb22f33ff4cf81ec05df'], + }), +] + +_bins = ['tiohd', 'tiotr', 'torchio-transform'] + +sanity_check_paths = { + 'files': ['bin/%s' % x for x in _bins], + 'dirs': ['lib/python%(pyshortver)s/site-packages/'], +} + +sanity_check_commands = ['%s --help' % x for x in _bins] + +sanity_pip_check = True + +moduleclass = 'vis' diff --git a/easybuild/easyconfigs/t/Transformers/Transformers-4.39.3-gfbf-2023a.eb b/easybuild/easyconfigs/t/Transformers/Transformers-4.39.3-gfbf-2023a.eb new file mode 100644 index 00000000000..cef130c9947 --- /dev/null +++ b/easybuild/easyconfigs/t/Transformers/Transformers-4.39.3-gfbf-2023a.eb @@ -0,0 +1,44 @@ +easyblock = 'PythonBundle' + +name = 'Transformers' +version = '4.39.3' + +homepage = 'https://github.com/huggingface/transformers' +description = """State-of-the-art Natural Language Processing for PyTorch and TensorFlow 2.0""" + +toolchain = {'name': 'gfbf', 'version': '2023a'} + +_rust_ver = '1.75.0' +builddependencies = [ + ('Rust', _rust_ver), + ('maturin', '1.4.0', '-Rust-%s' % _rust_ver), +] + +dependencies = [ + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), + ('PyYAML', '6.0'), + ('tqdm', '4.66.1'), + ('tokenizers', '0.15.2'), +] + +use_pip = True +sanity_pip_check = True + +exts_list = [ + ('safetensors', '0.4.2', { + 'checksums': ['acc85dcb09ec5e8aa787f588d7ad4d55c103f31e4ff060e17d92cc0e8b8cac73'], + }), + ('regex', '2023.12.25', { + 'checksums': ['29171aa128da69afdf4bde412d5bedc335f2ca8fcfe4489038577d05f16181e5'], + }), + ('%(namelower)s', version, { + 'checksums': ['2586e5ff4150f122716fc40f5530e92871befc051848fbe82600969c535b762d'], + }), +] + +sanity_check_commands = [ + "python -c 'from transformers import AutoTokenizer'", +] + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/t/t-SNE-CUDA/t-SNE-CUDA-3.0.1-foss-2023a-CUDA-12.1.1.eb b/easybuild/easyconfigs/t/t-SNE-CUDA/t-SNE-CUDA-3.0.1-foss-2023a-CUDA-12.1.1.eb new file mode 100644 index 00000000000..880e2f47538 --- /dev/null +++ b/easybuild/easyconfigs/t/t-SNE-CUDA/t-SNE-CUDA-3.0.1-foss-2023a-CUDA-12.1.1.eb @@ -0,0 +1,58 @@ +# Author: Jasper Grimm (UoY) +easyblock = 'CMakePythonPackage' + +name = 't-SNE-CUDA' +version = '3.0.1' +versionsuffix = '-CUDA-%(cudaver)s' + +homepage = 'https://github.com/CannyLab/tsne-cuda' +description = "GPU Accelerated t-SNE for CUDA with Python bindings" + +toolchain = {'name': 'foss', 'version': '2023a'} + +source_urls = ['https://github.com/CannyLab/tsne-cuda/archive'] +sources = ['%(version)s.tar.gz'] +patches = [ + '%(name)s-3.0.1_use-external-cxxopts.patch', + '%(name)s-3.0.1_avoid-overriding-cuda-compute-capabilities.patch', +] +checksums = [ + {'3.0.1.tar.gz': '0f778247191f483df22dc4dbed792c9a6a9152ee7404329c4d9da3fd9a8774d6'}, + {'t-SNE-CUDA-3.0.1_use-external-cxxopts.patch': 'be278f6a122ac12b02e05faffd53f3bce3e58b1d6b40af5e6af6b4182c6a25f1'}, + {'t-SNE-CUDA-3.0.1_avoid-overriding-cuda-compute-capabilities.patch': + '09a1ac23c8ca485478fdfccacfe7b04a5608530f3da33892f64c76064a834722'}, +] + +builddependencies = [ + ('CMake', '3.26.3'), + ('googletest', '1.13.0'), + ('cxxopts', '3.0.0', '', SYSTEM), +] + +dependencies = [ + ('Python', '3.11.3'), + ('CUDA', '12.1.1', '', SYSTEM), + ('Faiss', '1.7.4', versionsuffix), + ('gflags', '2.2.2'), +] + +_copts = [ + '-DBUILD_PYTHON=ON', + '-DWITH_ZMQ=FALSE', + '-DWITH_MKL=OFF', + '-DCMAKE_CUDA_ARCHITECTURES="%(cuda_cc_cmake)s"', +] + +configopts = ' '.join(_copts) + +install_cmd = ('cd %(builddir)s/easybuild_obj/python &&' + ' python -m pip install --prefix=%(installdir)s --no-build-isolation .') + +options = {'modulename': 'tsnecuda'} + +sanity_check_paths = { + 'files': ['lib/python%%(pyshortver)s/site-packages/tsnecuda/libtsnecuda.%s' % SHLIB_EXT], + 'dirs': [], +} + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/t/t-SNE-CUDA/t-SNE-CUDA-3.0.1_avoid-overriding-cuda-compute-capabilities.patch b/easybuild/easyconfigs/t/t-SNE-CUDA/t-SNE-CUDA-3.0.1_avoid-overriding-cuda-compute-capabilities.patch new file mode 100644 index 00000000000..b8586bf9c6e --- /dev/null +++ b/easybuild/easyconfigs/t/t-SNE-CUDA/t-SNE-CUDA-3.0.1_avoid-overriding-cuda-compute-capabilities.patch @@ -0,0 +1,109 @@ +Avoid overriding CUDA_ARCH if CMAKE_CUDA_ARCHITECTURES is non-empty +diff -Nru tsne-cuda-3.0.1.orig/CMakeLists.txt tsne-cuda-3.0.1/CMakeLists.txt +--- tsne-cuda-3.0.1.orig/CMakeLists.txt 2024-01-18 17:31:58.841767793 +0000 ++++ tsne-cuda-3.0.1/CMakeLists.txt 2024-01-18 18:17:35.153863840 +0000 +@@ -58,55 +58,56 @@ + set(CMAKE_CUDA_STANDARD_REQUIRED ON) + endif() + +-if(CUDAToolkit_VERSION_MAJOR EQUAL "10") +- set(CUDA_ARCH +- -gencode=arch=compute_30,code=sm_30 +- -gencode=arch=compute_35,code=sm_35 +- -gencode=arch=compute_37,code=sm_37 +- -gencode=arch=compute_50,code=sm_50 +- -gencode=arch=compute_52,code=sm_52 +- -gencode=arch=compute_60,code=sm_60 +- -gencode=arch=compute_61,code=sm_61 +- -gencode=arch=compute_70,code=sm_70 +- -gencode=arch=compute_75,code=sm_75 +- ) +-elseif(CUDAToolkit_VERSION_MAJOR EQUAL "11" AND CUDAToolkit_VERSION_MINOR LESS "1") +- set(CUDA_ARCH +- -gencode=arch=compute_35,code=sm_35 +- -gencode=arch=compute_37,code=sm_37 +- -gencode=arch=compute_50,code=sm_50 +- -gencode=arch=compute_52,code=sm_52 +- -gencode=arch=compute_60,code=sm_60 +- -gencode=arch=compute_61,code=sm_61 +- -gencode=arch=compute_70,code=sm_70 +- -gencode=arch=compute_75,code=sm_75 +- -gencode=arch=compute_80,code=sm_80 +- ) +-elseif(CUDAToolkit_VERSION_MAJOR EQUAL "11") +- set(CUDA_ARCH +- -gencode=arch=compute_35,code=sm_35 +- -gencode=arch=compute_37,code=sm_37 +- -gencode=arch=compute_50,code=sm_50 +- -gencode=arch=compute_52,code=sm_52 +- -gencode=arch=compute_60,code=sm_60 +- -gencode=arch=compute_61,code=sm_61 +- -gencode=arch=compute_70,code=sm_70 +- -gencode=arch=compute_75,code=sm_75 +- -gencode=arch=compute_80,code=sm_80 +- -gencode=arch=compute_86,code=sm_86 +- ) +-else() +- set(CUDA_ARCH +- -gencode=arch=compute_30,code=sm_30 +- -gencode=arch=compute_35,code=sm_35 +- -gencode=arch=compute_37,code=sm_37 +- -gencode=arch=compute_50,code=sm_50 +- -gencode=arch=compute_52,code=sm_52 +- -gencode=arch=compute_60,code=sm_60 +- -gencode=arch=compute_61,code=sm_61 ++if("${CMAKE_CUDA_ARCHITECTURES}" STREQUAL "") ++ if(CUDAToolkit_VERSION_MAJOR EQUAL "10") ++ set(CUDA_ARCH ++ -gencode=arch=compute_30,code=sm_30 ++ -gencode=arch=compute_35,code=sm_35 ++ -gencode=arch=compute_37,code=sm_37 ++ -gencode=arch=compute_50,code=sm_50 ++ -gencode=arch=compute_52,code=sm_52 ++ -gencode=arch=compute_60,code=sm_60 ++ -gencode=arch=compute_61,code=sm_61 ++ -gencode=arch=compute_70,code=sm_70 ++ -gencode=arch=compute_75,code=sm_75 + ) +-endif() +- ++ elseif(CUDAToolkit_VERSION_MAJOR EQUAL "11" AND CUDAToolkit_VERSION_MINOR LESS "1") ++ set(CUDA_ARCH ++ -gencode=arch=compute_35,code=sm_35 ++ -gencode=arch=compute_37,code=sm_37 ++ -gencode=arch=compute_50,code=sm_50 ++ -gencode=arch=compute_52,code=sm_52 ++ -gencode=arch=compute_60,code=sm_60 ++ -gencode=arch=compute_61,code=sm_61 ++ -gencode=arch=compute_70,code=sm_70 ++ -gencode=arch=compute_75,code=sm_75 ++ -gencode=arch=compute_80,code=sm_80 ++ ) ++ elseif(CUDAToolkit_VERSION_MAJOR EQUAL "11") ++ set(CUDA_ARCH ++ -gencode=arch=compute_35,code=sm_35 ++ -gencode=arch=compute_37,code=sm_37 ++ -gencode=arch=compute_50,code=sm_50 ++ -gencode=arch=compute_52,code=sm_52 ++ -gencode=arch=compute_60,code=sm_60 ++ -gencode=arch=compute_61,code=sm_61 ++ -gencode=arch=compute_70,code=sm_70 ++ -gencode=arch=compute_75,code=sm_75 ++ -gencode=arch=compute_80,code=sm_80 ++ -gencode=arch=compute_86,code=sm_86 ++ ) ++ else() ++ set(CUDA_ARCH ++ -gencode=arch=compute_30,code=sm_30 ++ -gencode=arch=compute_35,code=sm_35 ++ -gencode=arch=compute_37,code=sm_37 ++ -gencode=arch=compute_50,code=sm_50 ++ -gencode=arch=compute_52,code=sm_52 ++ -gencode=arch=compute_60,code=sm_60 ++ -gencode=arch=compute_61,code=sm_61 ++ ) ++ endif() ++endif() + + set(CUDA_OPTS + -O3 diff --git a/easybuild/easyconfigs/t/t-SNE-CUDA/t-SNE-CUDA-3.0.1_use-external-cxxopts.patch b/easybuild/easyconfigs/t/t-SNE-CUDA/t-SNE-CUDA-3.0.1_use-external-cxxopts.patch new file mode 100644 index 00000000000..d5d2e37012a --- /dev/null +++ b/easybuild/easyconfigs/t/t-SNE-CUDA/t-SNE-CUDA-3.0.1_use-external-cxxopts.patch @@ -0,0 +1,27 @@ +Update CMakeLists.txt to use an external cxxopts +diff -Nru tsne-cuda-3.0.1.orig/CMakeLists.txt tsne-cuda-3.0.1/CMakeLists.txt +--- tsne-cuda-3.0.1.orig/CMakeLists.txt 2024-01-18 17:31:58.841767793 +0000 ++++ tsne-cuda-3.0.1/CMakeLists.txt 2024-01-18 17:34:46.095207526 +0000 +@@ -157,6 +157,14 @@ + endif() + include_directories(${FAISS_INCLUDE_DIR}) + ++# CXXOPTS Configuration ++#------------------------------------------------------------------------------- ++find_package(CXXOPTS REQUIRED) ++if(NOT ${CXXOPTS_FOUND}) ++ message("-- CXXOPTS not installed. PLease install CXXOPTS.") ++endif() ++include_directories(${CXXOPTS_INCLUDE_DIR}) ++ + # Project Setup + #------------------------------------------------------------------------------- + include_directories( +@@ -164,7 +172,6 @@ + src/include + ${CUDA_INCLUDE_DIRS} + third_party/ +- third_party/cxxopts/include/ + ${ZMQ_INCLUDE_DIR} + ) + link_directories( diff --git a/easybuild/easyconfigs/t/tbb/tbb-2020.1-GCCcore-12.3.0.eb b/easybuild/easyconfigs/t/tbb/tbb-2020.1-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..2519951c3f4 --- /dev/null +++ b/easybuild/easyconfigs/t/tbb/tbb-2020.1-GCCcore-12.3.0.eb @@ -0,0 +1,18 @@ +name = 'tbb' +version = '2020.1' + +homepage = 'https://01.org/tbb/' +description = """Intel(R) Threading Building Blocks (Intel(R) TBB) lets you easily write parallel C++ programs that + take full advantage of multicore performance, that are portable, composable and have future-proof scalability.""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +source_urls = ['https://github.com/oneapi-src/oneTBB/archive/'] +sources = ['v%(version)s.tar.gz'] +checksums = ['7c96a150ed22bc3c6628bc3fef9ed475c00887b26d37bca61518d76a56510971'] + +builddependencies = [ + ('binutils', '2.40') +] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/t/tbb/tbb-2020.3-GCCcore-12.3.0.eb b/easybuild/easyconfigs/t/tbb/tbb-2020.3-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..01112f9169c --- /dev/null +++ b/easybuild/easyconfigs/t/tbb/tbb-2020.3-GCCcore-12.3.0.eb @@ -0,0 +1,19 @@ +name = 'tbb' +version = '2020.3' + +homepage = 'https://github.com/oneapi-src/oneTBB' +description = """Intel(R) Threading Building Blocks (Intel(R) TBB) lets you easily write parallel C++ programs that + take full advantage of multicore performance, that are portable, composable and have future-proof scalability.""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +source_urls = ['https://github.com/oneapi-src/oneTBB/archive/'] +sources = ['v%(version)s.tar.gz'] +checksums = ['ebc4f6aa47972daed1f7bf71d100ae5bf6931c2e3144cf299c8cc7d041dca2f3'] + +builddependencies = [ + ('binutils', '2.40'), + ('CMake', '3.26.3'), +] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/t/texlive/texlive-20230313-GCC-13.2.0.eb b/easybuild/easyconfigs/t/texlive/texlive-20230313-GCC-13.2.0.eb new file mode 100644 index 00000000000..5d21ba5f6d1 --- /dev/null +++ b/easybuild/easyconfigs/t/texlive/texlive-20230313-GCC-13.2.0.eb @@ -0,0 +1,78 @@ +# Based off the 2017 version by John Dey jfdey@fredhutch.org +# https://github.com/easybuilders/easybuild-easyconfigs/pull/5085 +easyblock = 'Tarball' + +name = 'texlive' +version = '20230313' +local_ver_year = version[:4] + +homepage = 'https://tug.org' +description = """TeX is a typesetting language. Instead of visually formatting your text, you enter your manuscript + text intertwined with TeX commands in a plain text file. You then run TeX to produce formatted output, such as a + PDF file. Thus, in contrast to standard word processors, your document is a separate file that does not pretend to + be a representation of the final typeset output, and so can be easily edited and manipulated.""" + +toolchain = {'name': 'GCC', 'version': '13.2.0'} + +source_urls = [ + 'ftp://tug.org/texlive/historic/%s/' % local_ver_year, + 'https://ftp.math.utah.edu/pub/tex/historic/systems/texlive/%s/' % local_ver_year, +] +sources = [ + { + 'download_filename': 'install-tl-unx.tar.gz', + 'filename': 'install-tl-unx-%(version)s.tar.gz' + } +] +checksums = ['d97bdb3b1903428e56373e70861b24db448243d74d950cdff96f4e888f008605'] + +dependencies = [ + ('X11', '20231019'), + ('libpng', '1.6.40'), + ('libGLU', '9.0.3'), + ('Perl', '5.38.0'), + ('HarfBuzz', '8.2.2'), + ('poppler', '24.04.0'), + ('cairo', '1.18.0'), + ('fontconfig', '2.14.2'), + ('zlib', '1.2.13'), + ('graphite2', '1.3.14'), +] + +# For the latest release, the tlnet-final repository isn't available yet, so we use the default +# But, the default can _not_ be used for the historic releases. The only way to write an EasyConfig +# that will work today and in the future, is to try one by one. +# Similarly, ftp is not available on all HPC systems, hence providing fallback to https +# See https://github.com/easybuilders/easybuild-easyconfigs/issues/17871 +local_install_tl = "%%(builddir)s/install-tl-%%(version)s/install-tl -profile %%(installdir)s/texlive.profile %s" +local_ftp = '-repository ftp://ftp.math.utah.edu/pub/tex/historic/systems/textlive/%s/tlnet-final' % local_ver_year +local_https = '-repository https://ftp.math.utah.edu/pub/tex/historic/systems/texlive/%s/tlnet-final' % local_ver_year +local_install_tl_or = ( + ' || '.join([ + local_install_tl % '', + local_install_tl % local_ftp, + local_install_tl % local_https, + ]) +) +postinstallcmds = [ + 'echo "TEXDIR %%(installdir)s/" > %%(installdir)s/texlive.profile && ' + 'echo "TEXMFLOCAL %%(installdir)s/texmf-local" >> %%(installdir)s/texlive.profile && ' + 'echo "TEXMFSYSCONFIG %%(installdir)s/texmf-config" >> %%(installdir)s/texlive.profile && ' + 'echo "TEXMFSYSVAR %%(installdir)s/texmf-var" >> %%(installdir)s/texlive.profile && ' + '%s' % local_install_tl_or +] + +sanity_check_paths = { + 'files': ['bin/%(arch)s-linux/tex', 'bin/%(arch)s-linux/latex'], + 'dirs': ['bin/%(arch)s-linux', 'texmf-dist'], +} + +modextrapaths = { + 'INFOPATH': 'texmf-dist/doc/info', + 'MANPATH': 'texmf-dist/doc/man', + 'PATH': 'bin/%(arch)s-linux', +} + +modextravars = {'TEXMFHOME': '%(installdir)s/texmf-dist'} + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/t/tiktoken/tiktoken-0.6.0-GCCcore-12.3.0.eb b/easybuild/easyconfigs/t/tiktoken/tiktoken-0.6.0-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..ee72245c3d0 --- /dev/null +++ b/easybuild/easyconfigs/t/tiktoken/tiktoken-0.6.0-GCCcore-12.3.0.eb @@ -0,0 +1,135 @@ +easyblock = 'CargoPythonPackage' + +name = 'tiktoken' +version = '0.6.0' + +homepage = 'https://github.com/openai/tiktoken' +description = "tiktoken is a fast BPE tokeniser for use with OpenAI's models" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +crates = [ + ('aho-corasick', '1.1.3'), + ('autocfg', '1.2.0'), + ('bit-set', '0.5.3'), + ('bit-vec', '0.6.3'), + ('bitflags', '1.3.2'), + ('bstr', '1.9.1'), + ('cfg-if', '1.0.0'), + ('fancy-regex', '0.11.0'), + ('heck', '0.4.1'), + ('indoc', '2.0.5'), + ('libc', '0.2.153'), + ('lock_api', '0.4.11'), + ('memchr', '2.7.2'), + ('memoffset', '0.9.1'), + ('once_cell', '1.19.0'), + ('parking_lot', '0.12.1'), + ('parking_lot_core', '0.9.9'), + ('portable-atomic', '1.6.0'), + ('proc-macro2', '1.0.79'), + ('pyo3', '0.20.3'), + ('pyo3-build-config', '0.20.3'), + ('pyo3-ffi', '0.20.3'), + ('pyo3-macros', '0.20.3'), + ('pyo3-macros-backend', '0.20.3'), + ('quote', '1.0.36'), + ('redox_syscall', '0.4.1'), + ('regex', '1.10.4'), + ('regex-automata', '0.4.6'), + ('regex-syntax', '0.8.3'), + ('rustc-hash', '1.1.0'), + ('scopeguard', '1.2.0'), + ('serde', '1.0.197'), + ('serde_derive', '1.0.197'), + ('smallvec', '1.13.2'), + ('syn', '2.0.58'), + ('target-lexicon', '0.12.14'), + ('unicode-ident', '1.0.12'), + ('unindent', '0.2.3'), + ('windows-targets', '0.48.5'), + ('windows_aarch64_gnullvm', '0.48.5'), + ('windows_aarch64_msvc', '0.48.5'), + ('windows_i686_gnu', '0.48.5'), + ('windows_i686_msvc', '0.48.5'), + ('windows_x86_64_gnu', '0.48.5'), + ('windows_x86_64_gnullvm', '0.48.5'), + ('windows_x86_64_msvc', '0.48.5'), +] +sources = [SOURCE_TAR_GZ] +checksums = [ + {'tiktoken-0.6.0.tar.gz': 'ace62a4ede83c75b0374a2ddfa4b76903cf483e9cb06247f566be3bf14e6beed'}, + {'aho-corasick-1.1.3.tar.gz': '8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916'}, + {'autocfg-1.2.0.tar.gz': 'f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80'}, + {'bit-set-0.5.3.tar.gz': '0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1'}, + {'bit-vec-0.6.3.tar.gz': '349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb'}, + {'bitflags-1.3.2.tar.gz': 'bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a'}, + {'bstr-1.9.1.tar.gz': '05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706'}, + {'cfg-if-1.0.0.tar.gz': 'baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd'}, + {'fancy-regex-0.11.0.tar.gz': 'b95f7c0680e4142284cf8b22c14a476e87d61b004a3a0861872b32ef7ead40a2'}, + {'heck-0.4.1.tar.gz': '95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8'}, + {'indoc-2.0.5.tar.gz': 'b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5'}, + {'libc-0.2.153.tar.gz': '9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd'}, + {'lock_api-0.4.11.tar.gz': '3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45'}, + {'memchr-2.7.2.tar.gz': '6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d'}, + {'memoffset-0.9.1.tar.gz': '488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a'}, + {'once_cell-1.19.0.tar.gz': '3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92'}, + {'parking_lot-0.12.1.tar.gz': '3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f'}, + {'parking_lot_core-0.9.9.tar.gz': '4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e'}, + {'portable-atomic-1.6.0.tar.gz': '7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0'}, + {'proc-macro2-1.0.79.tar.gz': 'e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e'}, + {'pyo3-0.20.3.tar.gz': '53bdbb96d49157e65d45cc287af5f32ffadd5f4761438b527b055fb0d4bb8233'}, + {'pyo3-build-config-0.20.3.tar.gz': 'deaa5745de3f5231ce10517a1f5dd97d53e5a2fd77aa6b5842292085831d48d7'}, + {'pyo3-ffi-0.20.3.tar.gz': '62b42531d03e08d4ef1f6e85a2ed422eb678b8cd62b762e53891c05faf0d4afa'}, + {'pyo3-macros-0.20.3.tar.gz': '7305c720fa01b8055ec95e484a6eca7a83c841267f0dd5280f0c8b8551d2c158'}, + {'pyo3-macros-backend-0.20.3.tar.gz': '7c7e9b68bb9c3149c5b0cade5d07f953d6d125eb4337723c4ccdb665f1f96185'}, + {'quote-1.0.36.tar.gz': '0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7'}, + {'redox_syscall-0.4.1.tar.gz': '4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa'}, + {'regex-1.10.4.tar.gz': 'c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c'}, + {'regex-automata-0.4.6.tar.gz': '86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea'}, + {'regex-syntax-0.8.3.tar.gz': 'adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56'}, + {'rustc-hash-1.1.0.tar.gz': '08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2'}, + {'scopeguard-1.2.0.tar.gz': '94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49'}, + {'serde-1.0.197.tar.gz': '3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2'}, + {'serde_derive-1.0.197.tar.gz': '7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b'}, + {'smallvec-1.13.2.tar.gz': '3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67'}, + {'syn-2.0.58.tar.gz': '44cfb93f38070beee36b3fef7d4f5a16f27751d94b187b666a5cc5e9b0d30687'}, + {'target-lexicon-0.12.14.tar.gz': 'e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f'}, + {'unicode-ident-1.0.12.tar.gz': '3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b'}, + {'unindent-0.2.3.tar.gz': 'c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce'}, + {'windows-targets-0.48.5.tar.gz': '9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c'}, + {'windows_aarch64_gnullvm-0.48.5.tar.gz': '2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8'}, + {'windows_aarch64_msvc-0.48.5.tar.gz': 'dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc'}, + {'windows_i686_gnu-0.48.5.tar.gz': 'a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e'}, + {'windows_i686_msvc-0.48.5.tar.gz': '8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406'}, + {'windows_x86_64_gnu-0.48.5.tar.gz': '53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e'}, + {'windows_x86_64_gnullvm-0.48.5.tar.gz': '0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc'}, + {'windows_x86_64_msvc-0.48.5.tar.gz': 'ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538'}, +] + +_rust_ver = '1.75.0' +builddependencies = [ + ('binutils', '2.40'), + ('Rust', _rust_ver), + ('maturin', '1.4.0', '-Rust-%s' % _rust_ver), + ('hypothesis', '6.82.0') +] + +dependencies = [ + ('Python', '3.11.3'), + ('Python-bundle-PyPI', '2023.06'), # regex (and pytest for tests) +] + +use_pip = True +sanity_pip_check = True +download_dep_fail = True + +# https://github.com/openai/tiktoken/issues/194 +runtest = ( + 'ln -s $PWD/tests ../tests_%(name)s' + ' && cd ..' + ' && pytest tests_%(name)s/' +) +testinstall = True + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/t/timm/timm-0.9.7-foss-2022a-CUDA-11.7.0.eb b/easybuild/easyconfigs/t/timm/timm-0.9.7-foss-2022a-CUDA-11.7.0.eb index f97e02d9b16..07cedb70489 100644 --- a/easybuild/easyconfigs/t/timm/timm-0.9.7-foss-2022a-CUDA-11.7.0.eb +++ b/easybuild/easyconfigs/t/timm/timm-0.9.7-foss-2022a-CUDA-11.7.0.eb @@ -139,14 +139,9 @@ crates = [ ('aho-corasick', '1.1.2'), ('anes', '0.1.6'), ('atty', '0.2.14'), - ('autocfg', '1.1.0'), ('bit-set', '0.5.3'), ('bit-vec', '0.6.3'), - ('bitflags', '1.3.2'), - ('bitflags', '2.4.2'), - ('bumpalo', '3.14.0'), ('cast', '0.3.0'), - ('cfg-if', '1.0.0'), ('ciborium', '0.2.2'), ('ciborium-io', '0.2.2'), ('ciborium-ll', '0.2.2'), @@ -154,91 +149,41 @@ crates = [ ('clap_lex', '0.2.4'), ('criterion', '0.4.0'), ('criterion-plot', '0.5.0'), - ('crossbeam-deque', '0.8.5'), - ('crossbeam-epoch', '0.9.18'), - ('crossbeam-utils', '0.8.19'), ('crunchy', '0.2.2'), - ('either', '1.9.0'), ('errno', '0.3.8'), ('fastrand', '2.0.1'), ('fnv', '1.0.7'), - ('getrandom', '0.2.12'), ('half', '2.3.1'), ('hashbrown', '0.12.3'), ('hermit-abi', '0.1.19'), ('indexmap', '1.9.3'), ('itertools', '0.10.5'), - ('itoa', '1.0.10'), - ('js-sys', '0.3.67'), - ('lazy_static', '1.4.0'), - ('libc', '0.2.152'), - ('libm', '0.2.8'), ('linux-raw-sys', '0.4.13'), - ('log', '0.4.20'), ('memchr', '2.7.1'), ('memmap2', '0.5.10'), - ('num-traits', '0.2.17'), - ('once_cell', '1.19.0'), ('oorandom', '11.1.3'), ('os_str_bytes', '6.6.1'), ('plotters', '0.3.5'), ('plotters-backend', '0.3.5'), ('plotters-svg', '0.3.5'), - ('ppv-lite86', '0.2.17'), - ('proc-macro2', '1.0.78'), - ('proptest', '1.4.0'), ('pyo3', '0.20.2'), ('pyo3-build-config', '0.20.2'), ('pyo3-ffi', '0.20.2'), ('pyo3-macros', '0.20.2'), ('pyo3-macros-backend', '0.20.2'), ('quick-error', '1.2.3'), - ('quote', '1.0.35'), - ('rand', '0.8.5'), - ('rand_chacha', '0.3.1'), - ('rand_core', '0.6.4'), - ('rand_xorshift', '0.3.0'), - ('rayon', '1.8.1'), - ('rayon-core', '1.12.1'), - ('redox_syscall', '0.4.1'), ('regex', '1.10.3'), ('regex-automata', '0.4.4'), - ('regex-syntax', '0.8.2'), ('rustix', '0.38.30'), ('rusty-fork', '0.3.0'), - ('ryu', '1.0.16'), ('same-file', '1.0.6'), - ('serde', '1.0.195'), - ('serde_derive', '1.0.195'), - ('serde_json', '1.0.111'), - ('syn', '2.0.48'), ('tempfile', '3.9.0'), ('textwrap', '0.16.0'), ('tinytemplate', '1.2.1'), - ('unarray', '0.1.4'), - ('unicode-ident', '1.0.12'), ('wait-timeout', '0.2.0'), ('walkdir', '2.4.0'), - ('wasi', '0.11.0+wasi-snapshot-preview1'), - ('wasm-bindgen', '0.2.90'), - ('wasm-bindgen-backend', '0.2.90'), - ('wasm-bindgen-macro', '0.2.90'), - ('wasm-bindgen-macro-support', '0.2.90'), - ('wasm-bindgen-shared', '0.2.90'), ('web-sys', '0.3.67'), - ('winapi', '0.3.9'), - ('winapi-i686-pc-windows-gnu', '0.4.0'), - ('winapi-util', '0.1.6'), - ('winapi-x86_64-pc-windows-gnu', '0.4.0'), ('windows-sys', '0.52.0'), - ('windows-targets', '0.52.0'), - ('windows_aarch64_gnullvm', '0.52.0'), - ('windows_aarch64_msvc', '0.52.0'), - ('windows_i686_gnu', '0.52.0'), - ('windows_i686_msvc', '0.52.0'), - ('windows_x86_64_gnu', '0.52.0'), - ('windows_x86_64_gnullvm', '0.52.0'), - ('windows_x86_64_msvc', '0.52.0'), ] sources = [SOURCE_TAR_GZ] checksums = [ @@ -352,14 +297,9 @@ checksums = [ {'aho-corasick-1.1.2.tar.gz': 'b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0'}, {'anes-0.1.6.tar.gz': '4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299'}, {'atty-0.2.14.tar.gz': 'd9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8'}, - {'autocfg-1.1.0.tar.gz': 'd468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa'}, {'bit-set-0.5.3.tar.gz': '0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1'}, {'bit-vec-0.6.3.tar.gz': '349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb'}, - {'bitflags-1.3.2.tar.gz': 'bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a'}, - {'bitflags-2.4.2.tar.gz': 'ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf'}, - {'bumpalo-3.14.0.tar.gz': '7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec'}, {'cast-0.3.0.tar.gz': '37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5'}, - {'cfg-if-1.0.0.tar.gz': 'baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd'}, {'ciborium-0.2.2.tar.gz': '42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e'}, {'ciborium-io-0.2.2.tar.gz': '05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757'}, {'ciborium-ll-0.2.2.tar.gz': '57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9'}, @@ -367,91 +307,40 @@ checksums = [ {'clap_lex-0.2.4.tar.gz': '2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5'}, {'criterion-0.4.0.tar.gz': 'e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb'}, {'criterion-plot-0.5.0.tar.gz': '6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1'}, - {'crossbeam-deque-0.8.5.tar.gz': '613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d'}, - {'crossbeam-epoch-0.9.18.tar.gz': '5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e'}, - {'crossbeam-utils-0.8.19.tar.gz': '248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345'}, {'crunchy-0.2.2.tar.gz': '7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7'}, - {'either-1.9.0.tar.gz': 'a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07'}, {'errno-0.3.8.tar.gz': 'a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245'}, {'fastrand-2.0.1.tar.gz': '25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5'}, {'fnv-1.0.7.tar.gz': '3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1'}, - {'getrandom-0.2.12.tar.gz': '190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5'}, {'half-2.3.1.tar.gz': 'bc52e53916c08643f1b56ec082790d1e86a32e58dc5268f897f313fbae7b4872'}, {'hashbrown-0.12.3.tar.gz': '8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888'}, {'hermit-abi-0.1.19.tar.gz': '62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33'}, {'indexmap-1.9.3.tar.gz': 'bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99'}, {'itertools-0.10.5.tar.gz': 'b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473'}, - {'itoa-1.0.10.tar.gz': 'b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c'}, - {'js-sys-0.3.67.tar.gz': '9a1d36f1235bc969acba30b7f5990b864423a6068a10f7c90ae8f0112e3a59d1'}, - {'lazy_static-1.4.0.tar.gz': 'e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646'}, - {'libc-0.2.152.tar.gz': '13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7'}, - {'libm-0.2.8.tar.gz': '4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058'}, {'linux-raw-sys-0.4.13.tar.gz': '01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c'}, - {'log-0.4.20.tar.gz': 'b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f'}, {'memchr-2.7.1.tar.gz': '523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149'}, {'memmap2-0.5.10.tar.gz': '83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327'}, - {'num-traits-0.2.17.tar.gz': '39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c'}, - {'once_cell-1.19.0.tar.gz': '3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92'}, {'oorandom-11.1.3.tar.gz': '0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575'}, {'os_str_bytes-6.6.1.tar.gz': 'e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1'}, {'plotters-0.3.5.tar.gz': 'd2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45'}, {'plotters-backend-0.3.5.tar.gz': '9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609'}, {'plotters-svg-0.3.5.tar.gz': '38f6d39893cca0701371e3c27294f09797214b86f1fb951b89ade8ec04e2abab'}, - {'ppv-lite86-0.2.17.tar.gz': '5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de'}, - {'proc-macro2-1.0.78.tar.gz': 'e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae'}, - {'proptest-1.4.0.tar.gz': '31b476131c3c86cb68032fdc5cb6d5a1045e3e42d96b69fa599fd77701e1f5bf'}, {'pyo3-0.20.2.tar.gz': '9a89dc7a5850d0e983be1ec2a463a171d20990487c3cfcd68b5363f1ee3d6fe0'}, {'pyo3-build-config-0.20.2.tar.gz': '07426f0d8fe5a601f26293f300afd1a7b1ed5e78b2a705870c5f30893c5163be'}, {'pyo3-ffi-0.20.2.tar.gz': 'dbb7dec17e17766b46bca4f1a4215a85006b4c2ecde122076c562dd058da6cf1'}, {'pyo3-macros-0.20.2.tar.gz': '05f738b4e40d50b5711957f142878cfa0f28e054aa0ebdfc3fd137a843f74ed3'}, {'pyo3-macros-backend-0.20.2.tar.gz': '0fc910d4851847827daf9d6cdd4a823fbdaab5b8818325c5e97a86da79e8881f'}, {'quick-error-1.2.3.tar.gz': 'a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0'}, - {'quote-1.0.35.tar.gz': '291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef'}, - {'rand-0.8.5.tar.gz': '34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404'}, - {'rand_chacha-0.3.1.tar.gz': 'e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88'}, - {'rand_core-0.6.4.tar.gz': 'ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c'}, - {'rand_xorshift-0.3.0.tar.gz': 'd25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f'}, - {'rayon-1.8.1.tar.gz': 'fa7237101a77a10773db45d62004a272517633fbcc3df19d96455ede1122e051'}, - {'rayon-core-1.12.1.tar.gz': '1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2'}, - {'redox_syscall-0.4.1.tar.gz': '4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa'}, {'regex-1.10.3.tar.gz': 'b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15'}, {'regex-automata-0.4.4.tar.gz': '3b7fa1134405e2ec9353fd416b17f8dacd46c473d7d3fd1cf202706a14eb792a'}, - {'regex-syntax-0.8.2.tar.gz': 'c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f'}, {'rustix-0.38.30.tar.gz': '322394588aaf33c24007e8bb3238ee3e4c5c09c084ab32bc73890b99ff326bca'}, {'rusty-fork-0.3.0.tar.gz': 'cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f'}, - {'ryu-1.0.16.tar.gz': 'f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c'}, {'same-file-1.0.6.tar.gz': '93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502'}, - {'serde-1.0.195.tar.gz': '63261df402c67811e9ac6def069e4786148c4563f4b50fd4bf30aa370d626b02'}, - {'serde_derive-1.0.195.tar.gz': '46fe8f8603d81ba86327b23a2e9cdf49e1255fb94a4c5f297f6ee0547178ea2c'}, - {'serde_json-1.0.111.tar.gz': '176e46fa42316f18edd598015a5166857fc835ec732f5215eac6b7bdbf0a84f4'}, - {'syn-2.0.48.tar.gz': '0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f'}, {'tempfile-3.9.0.tar.gz': '01ce4141aa927a6d1bd34a041795abd0db1cccba5d5f24b009f694bdf3a1f3fa'}, {'textwrap-0.16.0.tar.gz': '222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d'}, {'tinytemplate-1.2.1.tar.gz': 'be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc'}, - {'unarray-0.1.4.tar.gz': 'eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94'}, - {'unicode-ident-1.0.12.tar.gz': '3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b'}, {'wait-timeout-0.2.0.tar.gz': '9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6'}, {'walkdir-2.4.0.tar.gz': 'd71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee'}, - {'wasi-0.11.0+wasi-snapshot-preview1.tar.gz': '9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423'}, - {'wasm-bindgen-0.2.90.tar.gz': 'b1223296a201415c7fad14792dbefaace9bd52b62d33453ade1c5b5f07555406'}, - {'wasm-bindgen-backend-0.2.90.tar.gz': 'fcdc935b63408d58a32f8cc9738a0bffd8f05cc7c002086c6ef20b7312ad9dcd'}, - {'wasm-bindgen-macro-0.2.90.tar.gz': '3e4c238561b2d428924c49815533a8b9121c664599558a5d9ec51f8a1740a999'}, - {'wasm-bindgen-macro-support-0.2.90.tar.gz': 'bae1abb6806dc1ad9e560ed242107c0f6c84335f1749dd4e8ddb012ebd5e25a7'}, - {'wasm-bindgen-shared-0.2.90.tar.gz': '4d91413b1c31d7539ba5ef2451af3f0b833a005eb27a631cec32bc0635a8602b'}, {'web-sys-0.3.67.tar.gz': '58cd2333b6e0be7a39605f0e255892fd7418a682d8da8fe042fe25128794d2ed'}, - {'winapi-0.3.9.tar.gz': '5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419'}, - {'winapi-i686-pc-windows-gnu-0.4.0.tar.gz': 'ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6'}, - {'winapi-util-0.1.6.tar.gz': 'f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596'}, - {'winapi-x86_64-pc-windows-gnu-0.4.0.tar.gz': '712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f'}, - {'windows-sys-0.52.0.tar.gz': '282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d'}, - {'windows-targets-0.52.0.tar.gz': '8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd'}, - {'windows_aarch64_gnullvm-0.52.0.tar.gz': 'cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea'}, - {'windows_aarch64_msvc-0.52.0.tar.gz': 'bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef'}, - {'windows_i686_gnu-0.52.0.tar.gz': 'a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313'}, - {'windows_i686_msvc-0.52.0.tar.gz': 'ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a'}, - {'windows_x86_64_gnu-0.52.0.tar.gz': '3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd'}, - {'windows_x86_64_gnullvm-0.52.0.tar.gz': '1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e'}, - {'windows_x86_64_msvc-0.52.0.tar.gz': 'dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04'}, ] use_pip = True diff --git a/easybuild/easyconfigs/t/tmux/tmux-3.4-GCCcore-13.2.0.eb b/easybuild/easyconfigs/t/tmux/tmux-3.4-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..8a3a24c2d12 --- /dev/null +++ b/easybuild/easyconfigs/t/tmux/tmux-3.4-GCCcore-13.2.0.eb @@ -0,0 +1,38 @@ +easyblock = 'ConfigureMake' + +name = 'tmux' +version = '3.4' + +homepage = 'https://github.com/tmux/tmux/' +description = """tmux is a terminal multiplexer: it enables a number of +terminals to be created, accessed, and controlled from a single screen. tmux +may be detached from a screen and continue running in the background, then +later reattached.""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} +toolchainopts = {'optarch': True} + +source_urls = ['https://github.com/%(name)s/%(name)s/releases/download/%(version)s/'] +sources = [SOURCE_TAR_GZ] +checksums = ['551ab8dea0bf505c0ad6b7bb35ef567cdde0ccb84357df142c254f35a23e19aa'] + +builddependencies = [ + ('binutils', '2.40'), + ('Bison', '3.8.2'), + ('make', '4.4.1'), + ('pkgconf', '2.0.3'), +] + +dependencies = [ + ('libevent', '2.1.12'), + ('ncurses', '6.4'), +] + +sanity_check_paths = { + 'files': ['bin/tmux'], + 'dirs': [] +} + +sanity_check_commands = ["tmux --help 2>&1 | grep 'usage: tmux'"] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/t/tmux/tmux-3.4-GCCcore-13.3.0.eb b/easybuild/easyconfigs/t/tmux/tmux-3.4-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..43a1310c52d --- /dev/null +++ b/easybuild/easyconfigs/t/tmux/tmux-3.4-GCCcore-13.3.0.eb @@ -0,0 +1,38 @@ +easyblock = 'ConfigureMake' + +name = 'tmux' +version = '3.4' + +homepage = 'https://github.com/tmux/tmux/' +description = """tmux is a terminal multiplexer: it enables a number of +terminals to be created, accessed, and controlled from a single screen. tmux +may be detached from a screen and continue running in the background, then +later reattached.""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} +toolchainopts = {'optarch': True} + +source_urls = ['https://github.com/%(name)s/%(name)s/releases/download/%(version)s/'] +sources = [SOURCE_TAR_GZ] +checksums = ['551ab8dea0bf505c0ad6b7bb35ef567cdde0ccb84357df142c254f35a23e19aa'] + +builddependencies = [ + ('binutils', '2.42'), + ('Bison', '3.8.2'), + ('make', '4.4.1'), + ('pkgconf', '2.2.0'), +] + +dependencies = [ + ('libevent', '2.1.12'), + ('ncurses', '6.5'), +] + +sanity_check_paths = { + 'files': ['bin/tmux'], + 'dirs': [] +} + +sanity_check_commands = ["tmux --help 2>&1 | grep 'usage: tmux'"] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/t/tmux/tmux-3.4.eb b/easybuild/easyconfigs/t/tmux/tmux-3.4.eb new file mode 100644 index 00000000000..d15f35e58ed --- /dev/null +++ b/easybuild/easyconfigs/t/tmux/tmux-3.4.eb @@ -0,0 +1,34 @@ +easyblock = 'ConfigureMake' + +name = 'tmux' +version = '3.4' + +homepage = 'https://github.com/tmux/tmux/' +description = """tmux is a terminal multiplexer: it enables a number of +terminals to be created, accessed, and controlled from a single screen. tmux +may be detached from a screen and continue running in the background, then +later reattached.""" + +toolchain = SYSTEM + +source_urls = ['https://github.com/%(name)s/%(name)s/releases/download/%(version)s/'] +sources = [SOURCE_TAR_GZ] +checksums = ['551ab8dea0bf505c0ad6b7bb35ef567cdde0ccb84357df142c254f35a23e19aa'] + +builddependencies = [ + ('Bison', '3.8.2'), +] + +dependencies = [ + ('libevent', '2.1.12'), + ('ncurses', '6.5'), +] + +sanity_check_paths = { + 'files': ['bin/tmux'], + 'dirs': [] +} + +sanity_check_commands = ["tmux --help 2>&1 | grep 'usage: tmux'"] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/t/tokenizers/tokenizers-0.15.2-GCCcore-12.3.0.eb b/easybuild/easyconfigs/t/tokenizers/tokenizers-0.15.2-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..f5938e32de3 --- /dev/null +++ b/easybuild/easyconfigs/t/tokenizers/tokenizers-0.15.2-GCCcore-12.3.0.eb @@ -0,0 +1,327 @@ +easyblock = 'CargoPythonBundle' + +name = 'tokenizers' +version = '0.15.2' + +homepage = 'https://github.com/huggingface/tokenizers' +description = "Fast State-of-the-Art Tokenizers optimized for Research and Production" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +crates = [ + ('aho-corasick', '1.1.2'), + ('anstream', '0.6.11'), + ('anstyle', '1.0.6'), + ('anstyle-parse', '0.2.3'), + ('anstyle-query', '1.0.2'), + ('anstyle-wincon', '3.0.2'), + ('autocfg', '1.1.0'), + ('base64', '0.13.1'), + ('bitflags', '1.3.2'), + ('bitflags', '2.4.2'), + ('cc', '1.0.83'), + ('cfg-if', '1.0.0'), + ('clap', '4.5.0'), + ('clap_builder', '4.5.0'), + ('clap_derive', '4.5.0'), + ('clap_lex', '0.7.0'), + ('colorchoice', '1.0.0'), + ('console', '0.15.8'), + ('crossbeam-deque', '0.8.5'), + ('crossbeam-epoch', '0.9.18'), + ('crossbeam-utils', '0.8.19'), + ('darling', '0.14.4'), + ('darling_core', '0.14.4'), + ('darling_macro', '0.14.4'), + ('derive_builder', '0.12.0'), + ('derive_builder_core', '0.12.0'), + ('derive_builder_macro', '0.12.0'), + ('either', '1.10.0'), + ('encode_unicode', '0.3.6'), + ('env_logger', '0.10.2'), + ('errno', '0.3.8'), + ('esaxx-rs', '0.1.10'), + ('fastrand', '2.0.1'), + ('fnv', '1.0.7'), + ('getrandom', '0.2.12'), + ('heck', '0.4.1'), + ('hermit-abi', '0.3.5'), + ('humantime', '2.1.0'), + ('ident_case', '1.0.1'), + ('indicatif', '0.17.8'), + ('indoc', '2.0.4'), + ('instant', '0.1.12'), + ('is-terminal', '0.4.12'), + ('itertools', '0.11.0'), + ('itertools', '0.12.1'), + ('itoa', '1.0.10'), + ('lazy_static', '1.4.0'), + ('libc', '0.2.153'), + ('linux-raw-sys', '0.4.13'), + ('lock_api', '0.4.11'), + ('log', '0.4.20'), + ('macro_rules_attribute', '0.2.0'), + ('macro_rules_attribute-proc_macro', '0.2.0'), + ('matrixmultiply', '0.3.8'), + ('memchr', '2.7.1'), + ('memoffset', '0.9.0'), + ('minimal-lexical', '0.2.1'), + ('monostate', '0.1.11'), + ('monostate-impl', '0.1.11'), + ('ndarray', '0.15.6'), + ('nom', '7.1.3'), + ('num-complex', '0.4.5'), + ('num-integer', '0.1.46'), + ('num-traits', '0.2.18'), + ('number_prefix', '0.4.0'), + ('numpy', '0.20.0'), + ('once_cell', '1.19.0'), + ('onig', '6.4.0'), + ('onig_sys', '69.8.1'), + ('parking_lot', '0.12.1'), + ('parking_lot_core', '0.9.9'), + ('paste', '1.0.14'), + ('pkg-config', '0.3.29'), + ('portable-atomic', '1.6.0'), + ('ppv-lite86', '0.2.17'), + ('proc-macro2', '1.0.78'), + ('pyo3', '0.20.2'), + ('pyo3-build-config', '0.20.2'), + ('pyo3-ffi', '0.20.2'), + ('pyo3-macros', '0.20.2'), + ('pyo3-macros-backend', '0.20.2'), + ('quote', '1.0.35'), + ('rand', '0.8.5'), + ('rand_chacha', '0.3.1'), + ('rand_core', '0.6.4'), + ('rawpointer', '0.2.1'), + ('rayon', '1.8.1'), + ('rayon-cond', '0.3.0'), + ('rayon-core', '1.12.1'), + ('redox_syscall', '0.4.1'), + ('regex', '1.10.3'), + ('regex-automata', '0.4.5'), + ('regex-syntax', '0.8.2'), + ('rustc-hash', '1.1.0'), + ('rustix', '0.38.31'), + ('ryu', '1.0.16'), + ('scopeguard', '1.2.0'), + ('serde', '1.0.196'), + ('serde_derive', '1.0.196'), + ('serde_json', '1.0.113'), + ('smallvec', '1.13.1'), + ('spm_precompiled', '0.1.4'), + ('strsim', '0.10.0'), + ('strsim', '0.11.0'), + ('syn', '1.0.109'), + ('syn', '2.0.48'), + ('target-lexicon', '0.12.13'), + ('tempfile', '3.10.0'), + ('termcolor', '1.4.1'), + ('thiserror', '1.0.56'), + ('thiserror-impl', '1.0.56'), + ('unicode-ident', '1.0.12'), + ('unicode-normalization-alignments', '0.1.12'), + ('unicode-segmentation', '1.11.0'), + ('unicode-width', '0.1.11'), + ('unicode_categories', '0.1.1'), + ('unindent', '0.2.3'), + ('utf8parse', '0.2.1'), + ('wasi', '0.11.0+wasi-snapshot-preview1'), + ('winapi', '0.3.9'), + ('winapi-i686-pc-windows-gnu', '0.4.0'), + ('winapi-util', '0.1.6'), + ('winapi-x86_64-pc-windows-gnu', '0.4.0'), + ('windows-sys', '0.52.0'), + ('windows-targets', '0.48.5'), + ('windows-targets', '0.52.0'), + ('windows_aarch64_gnullvm', '0.48.5'), + ('windows_aarch64_gnullvm', '0.52.0'), + ('windows_aarch64_msvc', '0.48.5'), + ('windows_aarch64_msvc', '0.52.0'), + ('windows_i686_gnu', '0.48.5'), + ('windows_i686_gnu', '0.52.0'), + ('windows_i686_msvc', '0.48.5'), + ('windows_i686_msvc', '0.52.0'), + ('windows_x86_64_gnu', '0.48.5'), + ('windows_x86_64_gnu', '0.52.0'), + ('windows_x86_64_gnullvm', '0.48.5'), + ('windows_x86_64_gnullvm', '0.52.0'), + ('windows_x86_64_msvc', '0.48.5'), + ('windows_x86_64_msvc', '0.52.0'), +] +sources = [SOURCE_TAR_GZ] +checksums = [ + {'tokenizers-0.15.2.tar.gz': 'e6e9c6e019dd5484be5beafc775ae6c925f4c69a3487040ed09b45e13df2cb91'}, + {'aho-corasick-1.1.2.tar.gz': 'b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0'}, + {'anstream-0.6.11.tar.gz': '6e2e1ebcb11de5c03c67de28a7df593d32191b44939c482e97702baaaa6ab6a5'}, + {'anstyle-1.0.6.tar.gz': '8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc'}, + {'anstyle-parse-0.2.3.tar.gz': 'c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c'}, + {'anstyle-query-1.0.2.tar.gz': 'e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648'}, + {'anstyle-wincon-3.0.2.tar.gz': '1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7'}, + {'autocfg-1.1.0.tar.gz': 'd468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa'}, + {'base64-0.13.1.tar.gz': '9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8'}, + {'bitflags-1.3.2.tar.gz': 'bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a'}, + {'bitflags-2.4.2.tar.gz': 'ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf'}, + {'cc-1.0.83.tar.gz': 'f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0'}, + {'cfg-if-1.0.0.tar.gz': 'baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd'}, + {'clap-4.5.0.tar.gz': '80c21025abd42669a92efc996ef13cfb2c5c627858421ea58d5c3b331a6c134f'}, + {'clap_builder-4.5.0.tar.gz': '458bf1f341769dfcf849846f65dffdf9146daa56bcd2a47cb4e1de9915567c99'}, + {'clap_derive-4.5.0.tar.gz': '307bc0538d5f0f83b8248db3087aa92fe504e4691294d0c96c0eabc33f47ba47'}, + {'clap_lex-0.7.0.tar.gz': '98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce'}, + {'colorchoice-1.0.0.tar.gz': 'acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7'}, + {'console-0.15.8.tar.gz': '0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb'}, + {'crossbeam-deque-0.8.5.tar.gz': '613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d'}, + {'crossbeam-epoch-0.9.18.tar.gz': '5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e'}, + {'crossbeam-utils-0.8.19.tar.gz': '248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345'}, + {'darling-0.14.4.tar.gz': '7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850'}, + {'darling_core-0.14.4.tar.gz': '109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0'}, + {'darling_macro-0.14.4.tar.gz': 'a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e'}, + {'derive_builder-0.12.0.tar.gz': '8d67778784b508018359cbc8696edb3db78160bab2c2a28ba7f56ef6932997f8'}, + {'derive_builder_core-0.12.0.tar.gz': 'c11bdc11a0c47bc7d37d582b5285da6849c96681023680b906673c5707af7b0f'}, + {'derive_builder_macro-0.12.0.tar.gz': 'ebcda35c7a396850a55ffeac740804b40ffec779b98fffbb1738f4033f0ee79e'}, + {'either-1.10.0.tar.gz': '11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a'}, + {'encode_unicode-0.3.6.tar.gz': 'a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f'}, + {'env_logger-0.10.2.tar.gz': '4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580'}, + {'errno-0.3.8.tar.gz': 'a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245'}, + {'esaxx-rs-0.1.10.tar.gz': 'd817e038c30374a4bcb22f94d0a8a0e216958d4c3dcde369b1439fec4bdda6e6'}, + {'fastrand-2.0.1.tar.gz': '25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5'}, + {'fnv-1.0.7.tar.gz': '3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1'}, + {'getrandom-0.2.12.tar.gz': '190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5'}, + {'heck-0.4.1.tar.gz': '95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8'}, + {'hermit-abi-0.3.5.tar.gz': 'd0c62115964e08cb8039170eb33c1d0e2388a256930279edca206fff675f82c3'}, + {'humantime-2.1.0.tar.gz': '9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4'}, + {'ident_case-1.0.1.tar.gz': 'b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39'}, + {'indicatif-0.17.8.tar.gz': '763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3'}, + {'indoc-2.0.4.tar.gz': '1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8'}, + {'instant-0.1.12.tar.gz': '7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c'}, + {'is-terminal-0.4.12.tar.gz': 'f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b'}, + {'itertools-0.11.0.tar.gz': 'b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57'}, + {'itertools-0.12.1.tar.gz': 'ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569'}, + {'itoa-1.0.10.tar.gz': 'b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c'}, + {'lazy_static-1.4.0.tar.gz': 'e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646'}, + {'libc-0.2.153.tar.gz': '9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd'}, + {'linux-raw-sys-0.4.13.tar.gz': '01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c'}, + {'lock_api-0.4.11.tar.gz': '3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45'}, + {'log-0.4.20.tar.gz': 'b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f'}, + {'macro_rules_attribute-0.2.0.tar.gz': '8a82271f7bc033d84bbca59a3ce3e4159938cb08a9c3aebbe54d215131518a13'}, + {'macro_rules_attribute-proc_macro-0.2.0.tar.gz': + 'b8dd856d451cc0da70e2ef2ce95a18e39a93b7558bedf10201ad28503f918568'}, + {'matrixmultiply-0.3.8.tar.gz': '7574c1cf36da4798ab73da5b215bbf444f50718207754cb522201d78d1cd0ff2'}, + {'memchr-2.7.1.tar.gz': '523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149'}, + {'memoffset-0.9.0.tar.gz': '5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c'}, + {'minimal-lexical-0.2.1.tar.gz': '68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a'}, + {'monostate-0.1.11.tar.gz': '878c2a1f1c70e5724fa28f101ca787b6a7e8ad5c5e4ae4ca3b0fa4a419fa9075'}, + {'monostate-impl-0.1.11.tar.gz': 'f686d68a09079e63b1d2c64aa305095887ce50565f00a922ebfaeeee0d9ba6ce'}, + {'ndarray-0.15.6.tar.gz': 'adb12d4e967ec485a5f71c6311fe28158e9d6f4bc4a447b474184d0f91a8fa32'}, + {'nom-7.1.3.tar.gz': 'd273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a'}, + {'num-complex-0.4.5.tar.gz': '23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6'}, + {'num-integer-0.1.46.tar.gz': '7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f'}, + {'num-traits-0.2.18.tar.gz': 'da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a'}, + {'number_prefix-0.4.0.tar.gz': '830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3'}, + {'numpy-0.20.0.tar.gz': 'bef41cbb417ea83b30525259e30ccef6af39b31c240bda578889494c5392d331'}, + {'once_cell-1.19.0.tar.gz': '3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92'}, + {'onig-6.4.0.tar.gz': '8c4b31c8722ad9171c6d77d3557db078cab2bd50afcc9d09c8b315c59df8ca4f'}, + {'onig_sys-69.8.1.tar.gz': '7b829e3d7e9cc74c7e315ee8edb185bf4190da5acde74afd7fc59c35b1f086e7'}, + {'parking_lot-0.12.1.tar.gz': '3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f'}, + {'parking_lot_core-0.9.9.tar.gz': '4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e'}, + {'paste-1.0.14.tar.gz': 'de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c'}, + {'pkg-config-0.3.29.tar.gz': '2900ede94e305130c13ddd391e0ab7cbaeb783945ae07a279c268cb05109c6cb'}, + {'portable-atomic-1.6.0.tar.gz': '7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0'}, + {'ppv-lite86-0.2.17.tar.gz': '5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de'}, + {'proc-macro2-1.0.78.tar.gz': 'e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae'}, + {'pyo3-0.20.2.tar.gz': '9a89dc7a5850d0e983be1ec2a463a171d20990487c3cfcd68b5363f1ee3d6fe0'}, + {'pyo3-build-config-0.20.2.tar.gz': '07426f0d8fe5a601f26293f300afd1a7b1ed5e78b2a705870c5f30893c5163be'}, + {'pyo3-ffi-0.20.2.tar.gz': 'dbb7dec17e17766b46bca4f1a4215a85006b4c2ecde122076c562dd058da6cf1'}, + {'pyo3-macros-0.20.2.tar.gz': '05f738b4e40d50b5711957f142878cfa0f28e054aa0ebdfc3fd137a843f74ed3'}, + {'pyo3-macros-backend-0.20.2.tar.gz': '0fc910d4851847827daf9d6cdd4a823fbdaab5b8818325c5e97a86da79e8881f'}, + {'quote-1.0.35.tar.gz': '291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef'}, + {'rand-0.8.5.tar.gz': '34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404'}, + {'rand_chacha-0.3.1.tar.gz': 'e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88'}, + {'rand_core-0.6.4.tar.gz': 'ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c'}, + {'rawpointer-0.2.1.tar.gz': '60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3'}, + {'rayon-1.8.1.tar.gz': 'fa7237101a77a10773db45d62004a272517633fbcc3df19d96455ede1122e051'}, + {'rayon-cond-0.3.0.tar.gz': '059f538b55efd2309c9794130bc149c6a553db90e9d99c2030785c82f0bd7df9'}, + {'rayon-core-1.12.1.tar.gz': '1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2'}, + {'redox_syscall-0.4.1.tar.gz': '4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa'}, + {'regex-1.10.3.tar.gz': 'b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15'}, + {'regex-automata-0.4.5.tar.gz': '5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd'}, + {'regex-syntax-0.8.2.tar.gz': 'c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f'}, + {'rustc-hash-1.1.0.tar.gz': '08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2'}, + {'rustix-0.38.31.tar.gz': '6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949'}, + {'ryu-1.0.16.tar.gz': 'f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c'}, + {'scopeguard-1.2.0.tar.gz': '94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49'}, + {'serde-1.0.196.tar.gz': '870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32'}, + {'serde_derive-1.0.196.tar.gz': '33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67'}, + {'serde_json-1.0.113.tar.gz': '69801b70b1c3dac963ecb03a364ba0ceda9cf60c71cfe475e99864759c8b8a79'}, + {'smallvec-1.13.1.tar.gz': 'e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7'}, + {'spm_precompiled-0.1.4.tar.gz': '5851699c4033c63636f7ea4cf7b7c1f1bf06d0cc03cfb42e711de5a5c46cf326'}, + {'strsim-0.10.0.tar.gz': '73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623'}, + {'strsim-0.11.0.tar.gz': '5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01'}, + {'syn-1.0.109.tar.gz': '72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237'}, + {'syn-2.0.48.tar.gz': '0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f'}, + {'target-lexicon-0.12.13.tar.gz': '69758bda2e78f098e4ccb393021a0963bb3442eac05f135c30f61b7370bbafae'}, + {'tempfile-3.10.0.tar.gz': 'a365e8cd18e44762ef95d87f284f4b5cd04107fec2ff3052bd6a3e6069669e67'}, + {'termcolor-1.4.1.tar.gz': '06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755'}, + {'thiserror-1.0.56.tar.gz': 'd54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad'}, + {'thiserror-impl-1.0.56.tar.gz': 'fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471'}, + {'unicode-ident-1.0.12.tar.gz': '3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b'}, + {'unicode-normalization-alignments-0.1.12.tar.gz': + '43f613e4fa046e69818dd287fdc4bc78175ff20331479dab6e1b0f98d57062de'}, + {'unicode-segmentation-1.11.0.tar.gz': 'd4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202'}, + {'unicode-width-0.1.11.tar.gz': 'e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85'}, + {'unicode_categories-0.1.1.tar.gz': '39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e'}, + {'unindent-0.2.3.tar.gz': 'c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce'}, + {'utf8parse-0.2.1.tar.gz': '711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a'}, + {'wasi-0.11.0+wasi-snapshot-preview1.tar.gz': '9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423'}, + {'winapi-0.3.9.tar.gz': '5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419'}, + {'winapi-i686-pc-windows-gnu-0.4.0.tar.gz': 'ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6'}, + {'winapi-util-0.1.6.tar.gz': 'f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596'}, + {'winapi-x86_64-pc-windows-gnu-0.4.0.tar.gz': '712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f'}, + {'windows-sys-0.52.0.tar.gz': '282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d'}, + {'windows-targets-0.48.5.tar.gz': '9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c'}, + {'windows-targets-0.52.0.tar.gz': '8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd'}, + {'windows_aarch64_gnullvm-0.48.5.tar.gz': '2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8'}, + {'windows_aarch64_gnullvm-0.52.0.tar.gz': 'cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea'}, + {'windows_aarch64_msvc-0.48.5.tar.gz': 'dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc'}, + {'windows_aarch64_msvc-0.52.0.tar.gz': 'bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef'}, + {'windows_i686_gnu-0.48.5.tar.gz': 'a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e'}, + {'windows_i686_gnu-0.52.0.tar.gz': 'a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313'}, + {'windows_i686_msvc-0.48.5.tar.gz': '8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406'}, + {'windows_i686_msvc-0.52.0.tar.gz': 'ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a'}, + {'windows_x86_64_gnu-0.48.5.tar.gz': '53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e'}, + {'windows_x86_64_gnu-0.52.0.tar.gz': '3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd'}, + {'windows_x86_64_gnullvm-0.48.5.tar.gz': '0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc'}, + {'windows_x86_64_gnullvm-0.52.0.tar.gz': '1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e'}, + {'windows_x86_64_msvc-0.48.5.tar.gz': 'ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538'}, + {'windows_x86_64_msvc-0.52.0.tar.gz': 'dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04'}, +] + +_rust_ver = '1.75.0' +builddependencies = [ + ('binutils', '2.40'), + ('Rust', _rust_ver), + ('maturin', '1.4.0', '-Rust-%s' % _rust_ver), +] + +dependencies = [ + ('Python', '3.11.3'), + ('Python-bundle-PyPI', '2023.06'), # fsspec, filelock used by hf-hub + ('PyYAML', '6.0'), # used by hf-hub + ('tqdm', '4.66.1'), # used by hf-hub +] + +use_pip = True +sanity_pip_check = True + +exts_list = [ + ('huggingface-hub', '0.21.4', { + 'source_tmpl': 'huggingface_hub-%(version)s.tar.gz', + 'checksums': ['e1f4968c93726565a80edf6dc309763c7b546d0cfe79aa221206034d50155531'], + }), + (name, version, { + 'checksums': ['e6e9c6e019dd5484be5beafc775ae6c925f4c69a3487040ed09b45e13df2cb91'], + }), +] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/t/topaz/topaz-0.2.5.20231120-foss-2023a-CUDA-12.1.1.eb b/easybuild/easyconfigs/t/topaz/topaz-0.2.5.20231120-foss-2023a-CUDA-12.1.1.eb new file mode 100644 index 00000000000..8156c8d8dbc --- /dev/null +++ b/easybuild/easyconfigs/t/topaz/topaz-0.2.5.20231120-foss-2023a-CUDA-12.1.1.eb @@ -0,0 +1,61 @@ +# Thomas Hoffman, EMBL Heidelberg, structures-it@embl.de, 2023/11 +easyblock = 'PythonPackage' + +name = 'topaz' +_mainversion = '0.2.5' +_commitdate = '20231120' +_commit = '25cb2cb' +version = '%s.%s' % (_mainversion, _commitdate) +versionsuffix = '-CUDA-%(cudaver)s' + +homepage = 'http://cb.csail.mit.edu/cb/topaz/' + +description = """Particle picking software for single particle cryo-electron microscopy using +convolutional neural networks and positive-unlabeled learning. Includes methods +for micrograph denoising.""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +dependencies = [ + ('CUDA', '12.1.1', '', SYSTEM), + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), + ('PyTorch-bundle', '2.1.2', versionsuffix), + ('scikit-learn', '1.3.1'), + ('scikit-image', '0.22.0'), +] + +source_urls = ['https://github.com/tbepler/topaz/archive'] +sources = [{ + 'download_filename': '%s.tar.gz' % _commit, + 'filename': '%(name)s-%(version)s.tar.gz' +}] +patches = [ + 'topaz-0.2.5_install_relion3_wrappers.patch', + 'topaz-0.2.5.20231120_helical-filament-picking.patch', + 'topaz-0.2.5.20231120_update-description.patch', +] +checksums = [ + {'topaz-0.2.5.20231120.tar.gz': 'ca0630f9a69622eb3e10c9de310f58ac846e60a5504c4533398a9a75b3091df9'}, + {'topaz-0.2.5_install_relion3_wrappers.patch': '0fe23a0ecaf887aaa89641a7e7cf37fafd3134384b0a8f46acb4e17537d1a151'}, + {'topaz-0.2.5.20231120_helical-filament-picking.patch': + '320466e4ac1d1f06ba392a419aefa369905baa6877717868cd8ea7135b6bc28f'}, + {'topaz-0.2.5.20231120_update-description.patch': + '073241dba2de63e543136a387ff7ef698a5e0139ab3356de021e370338fa57c1'}, +] + +download_dep_fail = True +use_pip = True +sanity_pip_check = True + +options = {'modulename': 'topaz'} + +_relion3_wrappers = ['denoise', 'pick', 'train', 'train_denoise'] + +sanity_check_paths = { + 'files': ["bin/run_topaz_%s.py" % x for x in _relion3_wrappers], + 'dirs': [], +} +sanity_check_commands = ['run_topaz_%s.py --help' % x for x in _relion3_wrappers] + ['topaz --help'] + +moduleclass = 'chem' diff --git a/easybuild/easyconfigs/t/topaz/topaz-0.2.5.20231120_helical-filament-picking.patch b/easybuild/easyconfigs/t/topaz/topaz-0.2.5.20231120_helical-filament-picking.patch new file mode 100644 index 00000000000..2e8413fd5e3 --- /dev/null +++ b/easybuild/easyconfigs/t/topaz/topaz-0.2.5.20231120_helical-filament-picking.patch @@ -0,0 +1,289 @@ +From 4ea1710c88648ff4c5f7232e20ad5d9aa9535241 Mon Sep 17 00:00:00 2001 +From: scheres +Date: Wed, 5 Jan 2022 12:13:10 +0000 +Subject: [PATCH] implemented helical filament picking in extract.py + +--- + topaz/commands/extract.py | 225 ++++++++++++++++++++++++++++++++++++-- + 1 file changed, 215 insertions(+), 10 deletions(-) + +diff --git a/topaz/commands/extract.py b/topaz/commands/extract.py +index 3c3f032..6676618 100644 +--- a/topaz/commands/extract.py ++++ b/topaz/commands/extract.py +@@ -52,6 +52,11 @@ def add_arguments(parser): + parser.add_argument('--targets', help='path to file specifying particle coordinates. used to find extraction radius that maximizes the AUPRC') + parser.add_argument('--only-validate', action='store_true', help='flag indicating to only calculate validation metrics. does not report full prediction list') + ++ # Filament picking SHWS 30032021 ++ parser.add_argument('-f', '--filaments', action='store_true', help='flag for filament start-end picking.') ++ parser.add_argument('-fp', '--filaments_plot', action='store_true', help='flag for filament start-end picking plus plotting of its intermediate stages (useful for tuning parameters).') ++ parser.add_argument('-fl', '--filaments_length', default=-1, type=int, help='minimum length of straight filament segments to be picked (in Angstrom) (default: twice --radius)') ++ + parser.add_argument('-d', '--device', default=0, type=int, help='which device to use, <0 corresponds to CPU') + + parser.add_argument('-o', '--output', help='file path to write') +@@ -63,24 +68,219 @@ def add_arguments(parser): + + return parser + ++ ++def is_in_between(point, line): ++ dx = line[1][0] - line[0][0] ++ dy = line[1][1] - line[0][1] ++ dotp = (point[0] - line[0][0])*dx + (point[1] - line[0][1])*dy ++ return 0 <= dotp and dotp <= dx*dx + dy*dy ++ ++def distance_point_line(point, line): ++ x1=line[0][0] ++ x2=line[1][0] ++ y1=line[0][1] ++ y2=line[1][1] ++ x0=point[0] ++ y0=point[1] ++ dd = abs( (x2-x1)*(y1-y0) - (x1-x0)*(y2-y1) ) / np.sqrt( (x2-x1)*(x2-x1) + (y2-y1)*(y2-y1) ) ++ if not is_in_between(point,line): ++ closest = min(distance_point_point(point,line[0]), distance_point_point(point,line[1])) ++ return max(closest, dd) ++ else: ++ return dd ++ ++def distance_point_point(point1, point2): ++ x1=point1[0] ++ y1=point1[1] ++ x2=point2[0] ++ y2=point2[1] ++ return np.sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2)) ++ ++def angle_line_line(line1, line2): ++ a1 = np.arctan2(line1[1][1]-line1[0][1], line1[1][0]-line1[0][0]) ++ a2 = np.arctan2(line2[1][1]-line2[0][1], line2[1][0]-line2[0][0]) ++ return abs(a2-a1) ++ ++def prune_lines(inlines, mind, min_ang, max_merge): ++ import math ++ lengths = [] ++ merged = [] ++ lines = np.asarray(inlines) ++ for line in lines: ++ lengths = np.append(lengths, np.linalg.norm(line[0]-line[1])) ++ merged = np.append(merged, 1) ++ sortidx = np.argsort(lengths); ++ ++ min_ang_rad = math.radians(min_ang) ++ NN = len(sortidx) ++ idx = NN - 1 ++ while idx >= 0: ++ i1 = sortidx[idx] ++ ++ for i2 in range(NN): ++ if (i1 != i2 and lengths[i2] > 0. and lengths[i1] > 0.): ++ ++ d11 = distance_point_line(lines[i1][0],lines[i2]) ++ d12 = distance_point_line(lines[i1][1],lines[i2]) ++ d21 = distance_point_line(lines[i2][0],lines[i1]) ++ d22 = distance_point_line(lines[i2][1],lines[i1]) ++ ang = angle_line_line(lines[i1], lines[i2]) ++ sum = 0 ++ if (d11 < mind): ++ sum = sum + 1 ++ if (d12 < mind): ++ sum = sum + 1 ++ if (d21 < mind): ++ sum = sum + 1 ++ if (d22 < mind): ++ sum = sum + 1 ++ ++ # merge lines if they haven't been merged too often already, they overlap two or more points and are parallel ++ if ( (merged[i1] + merged[i2] < max_merge) and (sum >= 2) and (ang < min_ang_rad or abs(ang-math.pi) < min_ang_rad) ): ++ ++ # select the two points with the furthest distance ++ maxd=0 ++ for i in range(2): ++ for j in range(2): ++ d = distance_point_point(lines[i1][i], lines[i2][j]) ++ if (d > maxd): ++ maxd = d ++ mymax0 = lines[i1][i] ++ mymax1 = lines[i2][j] ++ # perhaps original one was longer? ++ if maxd > lengths[i1]: ++ lines[i1][0] = mymax0 ++ lines[i1][1] = mymax1 ++ lengths[i1] = np.linalg.norm(lines[i1][0]-lines[i1][1]) ++ merged[i1] = merged[i1] + merged[i2] ++ ++ lines[i2][0][0] = -9999 ++ lines[i2][0][1] = -9999 ++ lines[i2][1][0] = -9999 ++ lines[i2][1][1] = -9999 ++ lengths[i2] = 0 ++ merged[i2] = 0 ++ idx = idx + 1 ++ break ++ ++ # remove smaller lines with both points close to longer one ++ elif (d21 < mind and d22 < mind): ++ lines[i2][0][0] = -9999 ++ lines[i2][0][1] = -9999 ++ lines[i2][1][0] = -9999 ++ lines[i2][1][1] = -9999 ++ lengths[i2] = 0 ++ ++ idx = idx - 1 ++ ++ return lines ++ ++ ++def pick_filaments(score, radius, threshold, filaments_length, filaments_plot): ++ from topaz import mrc ++ from skimage.filters import gaussian ++ from skimage.transform import probabilistic_hough_line ++ from skimage.morphology import skeletonize ++ import math ++ ++ #Parameters ++ thr = round(0.1*filaments_length) ++ line_length = filaments_length ++ gap = radius ++ mind= radius ++ min_angle = 10 ++ max_merge = 5 ++ ++ bin_score = (gaussian(score, 3) > threshold) ++ edges = skeletonize(bin_score) ++ houghs = probabilistic_hough_line(edges, threshold=thr, line_length=line_length, line_gap=gap) ++ lines = prune_lines(houghs, mind=mind, min_ang=min_angle, max_merge=max_merge) ++ ++ if filaments_plot: ++ import matplotlib.pyplot as plt ++ from matplotlib import cm ++ fig, axes = plt.subplots(1, 4, figsize=(15, 5), sharex=True, sharey=True) ++ ax = axes.ravel() ++ ++ ax[0].imshow(score, cmap=cm.binary, vmin=-20, vmax=5) ++ ax[0].imshow(bin_score, alpha=0.5, cmap=cm.Reds) ++ ax[0].set_title('FOM [-20,5] thr= ' + str(threshold)) ++ ++ ax[1].imshow(edges, cmap=cm.gray) ++ ax[1].set_title('Skeletonize') ++ ++ ax[2].imshow(edges * 0) ++ for hough in houghs: ++ p0, p1 = hough ++ ax[2].plot((p0[0], p1[0]), (p0[1], p1[1])) ++ ax[2].set_xlim((0, score.shape[1])) ++ ax[2].set_ylim((score.shape[0], 0)) ++ ax[2].set_title('Hough transform; len= ' + str(line_length) + ' gap= ' + str(gap)) ++ ++ ax[3].imshow(edges * 0) ++ for line in lines: ++ p0, p1 = line ++ ax[3].plot((p0[0], p1[0]), (p0[1], p1[1])) ++ ax[3].set_xlim((0, score.shape[1])) ++ ax[3].set_ylim((score.shape[0], 0)) ++ ax[3].set_title('Prune: mind= ' + str(mind)) ++ ++ for a in ax: ++ a.set_axis_off() ++ ++ plt.tight_layout() ++ plt.show() ++ ++ oldlines=lines ++ # Flatten lines into 2D array, as rest of topaz ++ NN=len(lines) ++ if NN>0: ++ lines = lines.reshape(2*NN, 2) ++ # Remove -9999 coordinates ++ newlines = [] ++ for i in range(2*NN): ++ if (lines[i,0] != -9999 and lines[i,1] != -9999): ++ newlines = np.append(newlines, lines[i]) ++ ++ NN=round(len(newlines)/2) ++ if (NN>0): ++ lines = newlines.reshape(NN, 2) ++ else: ++ lines = [] ++ ++ # Just set scores to zero, a they are meaningless now ++ scores = np.zeros(NN, dtype=np.float32) ++ ++ return scores, lines ++ ++ + class NonMaximumSuppression: +- def __init__(self, radius, threshold): ++ def __init__(self, radius, threshold, do_filaments=False, filaments_length=150, filaments_plot=False): + self.radius = radius + self.threshold = threshold ++ self.do_filaments = do_filaments ++ self.filaments_length = filaments_length ++ self.filaments_plot = filaments_plot + + def __call__(self, args): + name,score = args +- score,coords = non_maximum_suppression(score, self.radius, threshold=self.threshold) +- return name, score, coords ++ if self.do_filaments: ++ score,coords = pick_filaments(score, self.radius, threshold=self.threshold, length=self.filaments_length, filaments_plot = self.filaments_plot ) ++ else: ++ score,coords = non_maximum_suppression(score, self.radius, threshold=self.threshold, length=self.filaments_length) ++ return name, core, coords + +-def nms_iterator(scores, radius, threshold, pool=None): +- process = NonMaximumSuppression(radius, threshold) ++def nms_iterator(scores, radius, threshold, pool=None, do_filaments=False, filaments_length=150, filaments_plot=False): ++ process = NonMaximumSuppression(radius, threshold, do_filaments, filaments_length, filaments_plot) + if pool is not None: + for name,score,coords in pool.imap_unordered(process, scores): + yield name,score,coords + else: + for name,score in scores: +- score,coords = non_maximum_suppression(score, radius, threshold=threshold) ++ if do_filaments: ++ score,coords = pick_filaments(score, radius, threshold=threshold, filaments_length=filaments_length, filaments_plot=filaments_plot) ++ else: ++ score,coords = non_maximum_suppression(score, radius, threshold=threshold) + yield name,score,coords + + def iterate_score_target_pairs(scores, targets): +@@ -231,6 +431,12 @@ def main(args): + if radius is None: + radius = -1 + ++ do_filaments = args.filaments or args.filaments_plot ++ filaments_length = args.filaments_length ++ if (filaments_length < 0): ++ filaments_length = 2 * radius ++ filaments_plot = args.filaments_plot ++ + num_workers = args.num_workers + pool = None + if num_workers < 0: +@@ -284,12 +490,13 @@ def main(args): + + if not per_micrograph: + print('image_name\tx_coord\ty_coord\tscore', file=f) ++ + ## extract coordinates using radius +- for path,score,coords in nms_iterator(stream, radius, threshold, pool=pool): ++ for path,score,coords in nms_iterator(stream, radius, threshold, pool=pool, do_filaments=do_filaments, filaments_length=filaments_length, filaments_plot=filaments_plot): + basename = os.path.basename(path) + name = os.path.splitext(basename)[0] + ## scale the coordinates +- if scale != 1: ++ if scale != 1 and len(coords)>0: + coords = np.round(coords*scale).astype(int) + + if per_micrograph: +@@ -303,8 +510,6 @@ def main(args): + print(name + '\t' + str(coords[i,0]) + '\t' + str(coords[i,1]) + '\t' + str(score[i]), file=f) + + +- +- + if __name__ == '__main__': + import argparse + parser = argparse.ArgumentParser('Script for extracting particles from segmented images or images processed with a trained model. Uses a non maximum suppression algorithm.') diff --git a/easybuild/easyconfigs/t/topaz/topaz-0.2.5.20231120_update-description.patch b/easybuild/easyconfigs/t/topaz/topaz-0.2.5.20231120_update-description.patch new file mode 100644 index 00000000000..f52fac9497d --- /dev/null +++ b/easybuild/easyconfigs/t/topaz/topaz-0.2.5.20231120_update-description.patch @@ -0,0 +1,24 @@ +From 14b2bc331768b67b3267397523de57c707fa1253 Mon Sep 17 00:00:00 2001 +From: scheres +Date: Fri, 25 Mar 2022 09:27:07 +0000 +Subject: [PATCH] added description of new options and dependency on skimage + +--- + README.md | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/README.md b/README.md +index bed6f4f..a98993c 100644 +--- a/README.md ++++ b/README.md +@@ -3,6 +3,10 @@ A pipeline for particle detection in cryo-electron microscopy images using convo + + **Check out our [Discussion](https://github.com/tbepler/topaz/discussions) section for general help, suggestions, and tips on using Topaz.** + ++## New in modification for filament picking: ++- Added support for filament start-end coordinate picking (new options -f, -fp and -fl in the extract command), for subsequent helical reconstruction in RELION ++- This adds a new dependency to skimage (make sure you install this in your conda environment) ++ + ## New in v0.2.5 + - Added Relion integration scripts + - Topaz extract can now write particle coordinates to one file per input micrograph diff --git a/easybuild/easyconfigs/t/torchvision/torchvision-0.16.0-foss-2023a-CUDA-12.1.1.eb b/easybuild/easyconfigs/t/torchvision/torchvision-0.16.0-foss-2023a-CUDA-12.1.1.eb new file mode 100644 index 00000000000..68696ef7dba --- /dev/null +++ b/easybuild/easyconfigs/t/torchvision/torchvision-0.16.0-foss-2023a-CUDA-12.1.1.eb @@ -0,0 +1,34 @@ +name = 'torchvision' +version = '0.16.0' +versionsuffix = '-CUDA-%(cudaver)s' + +homepage = 'https://github.com/pytorch/vision' +description = " Datasets, Transforms and Models specific to Computer Vision" + +toolchain = {'name': 'foss', 'version': '2023a'} +toolchainopts = {'cstd': 'c++17'} + +source_urls = ['https://github.com/pytorch/vision/archive'] +sources = ['v%(version)s.tar.gz'] +patches = [ + '%(name)s-%(version)s_fix-build-with-FFmpeg6.patch', +] +checksums = [ + {'v0.16.0.tar.gz': '79b30b082237e3ead21e74587cedf4a4d832f977cf7dfeccfb65f67988b12ceb'}, + {'torchvision-0.16.0_fix-build-with-FFmpeg6.patch': + 'a49336e7bfa1c950e886852bff37a3ea2146ac7bda87241e3ffb31c5cb869cce'}, +] + +builddependencies = [ + ('CMake', '3.26.3'), +] + +dependencies = [ + ('CUDA', '12.1.1', '', SYSTEM), + ('Python', '3.11.3'), + ('FFmpeg', '6.0'), + ('Pillow-SIMD', '9.5.0'), + ('PyTorch', '2.1.2', versionsuffix), +] + +moduleclass = 'vis' diff --git a/easybuild/easyconfigs/t/tornado/tornado-timeouts.patch b/easybuild/easyconfigs/t/tornado/tornado-6.1_increase-default-timeouts.patch similarity index 65% rename from easybuild/easyconfigs/t/tornado/tornado-timeouts.patch rename to easybuild/easyconfigs/t/tornado/tornado-6.1_increase-default-timeouts.patch index 635fa6d7143..1fc291ae62e 100644 --- a/easybuild/easyconfigs/t/tornado/tornado-timeouts.patch +++ b/easybuild/easyconfigs/t/tornado/tornado-6.1_increase-default-timeouts.patch @@ -1,7 +1,8 @@ -# Increase timeouts to prevent tornado from killing jupyter on compute nodes +Increase timeouts to prevent tornado from killing jupyter server on compute nodes +author: Alexandre Strube diff -Naur tornado.orig/tornado-6.1/tornado/httpclient.py tornado/tornado-6.1/tornado/httpclient.py ---- tornado.orig/tornado-6.1/tornado/httpclient.py 2020-10-30 21:17:45.000000000 +0100 -+++ tornado/tornado-6.1/tornado/httpclient.py 2022-05-01 22:01:50.923741948 +0200 +--- a/tornado/httpclient.py 2020-10-30 21:17:45.000000000 +0100 ++++ b/tornado/httpclient.py 2022-05-01 22:01:50.923741948 +0200 @@ -345,8 +345,8 @@ # Merged with the values on the request object by AsyncHTTPClient # implementations. diff --git a/easybuild/easyconfigs/t/tornado/tornado-6.3.2-GCCcore-12.3.0.eb b/easybuild/easyconfigs/t/tornado/tornado-6.3.2-GCCcore-12.3.0.eb index 9fd6757d976..eab25faf448 100644 --- a/easybuild/easyconfigs/t/tornado/tornado-6.3.2-GCCcore-12.3.0.eb +++ b/easybuild/easyconfigs/t/tornado/tornado-6.3.2-GCCcore-12.3.0.eb @@ -9,10 +9,10 @@ description = "Tornado is a Python web framework and asynchronous networking lib toolchain = {"name": "GCCcore", "version": "12.3.0"} sources = [SOURCE_TAR_GZ] -patches = ['tornado-timeouts.patch'] +patches = ['tornado-6.1_increase-default-timeouts.patch'] checksums = [ {'tornado-6.3.2.tar.gz': '4b927c4f19b71e627b13f3db2324e4ae660527143f9e1f2e2fb404f3a187e2ba'}, - {'tornado-timeouts.patch': 'dd97748cb80506b36570f1274b19c8fc53d81e15f0eb2c5b6d0ba9d80141af34'}, + {'tornado-6.1_increase-default-timeouts.patch': '32e09dd8243acb8c55162f361880dc294d76770a7ff083c05aef6b8660e3bfb9'}, ] builddependencies = [ diff --git a/easybuild/easyconfigs/t/tornado/tornado-6.4-GCCcore-13.2.0.eb b/easybuild/easyconfigs/t/tornado/tornado-6.4-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..38b085529bf --- /dev/null +++ b/easybuild/easyconfigs/t/tornado/tornado-6.4-GCCcore-13.2.0.eb @@ -0,0 +1,29 @@ +easyblock = "PythonPackage" + +name = "tornado" +version = "6.4" + +homepage = "https://github.com/tornadoweb/tornado" +description = "Tornado is a Python web framework and asynchronous networking library." + +toolchain = {"name": "GCCcore", "version": "13.2.0"} + +sources = [SOURCE_TAR_GZ] +patches = ['tornado-6.1_increase-default-timeouts.patch'] +checksums = [ + {'tornado-6.4.tar.gz': '72291fa6e6bc84e626589f1c29d90a5a6d593ef5ae68052ee2ef000dfd273dee'}, + {'tornado-6.1_increase-default-timeouts.patch': '32e09dd8243acb8c55162f361880dc294d76770a7ff083c05aef6b8660e3bfb9'}, +] + +builddependencies = [ + ("binutils", "2.40"), +] +dependencies = [ + ("Python", "3.11.5"), +] + +download_dep_fail = True +sanity_pip_check = True +use_pip = True + +moduleclass = "lib" diff --git a/easybuild/easyconfigs/u/UCC/UCC-1.2.0-GCCcore-13.2.0.eb b/easybuild/easyconfigs/u/UCC/UCC-1.2.0-GCCcore-13.2.0.eb index 45727a0c4bc..2c50c82b7d8 100644 --- a/easybuild/easyconfigs/u/UCC/UCC-1.2.0-GCCcore-13.2.0.eb +++ b/easybuild/easyconfigs/u/UCC/UCC-1.2.0-GCCcore-13.2.0.eb @@ -20,6 +20,11 @@ checksums = [ {'UCC-1.1.0-multiple_component_paths.patch': '3081d0f694331daa4a88a0fa3fb54b9a918015248ae5eb7b3157b924abd31bee'}, ] +if ARCH == "riscv64": + patches += ['UCC-1.2.0_add-riscv-support.patch'] + checksums += [{'UCC-1.2.0_add-riscv-support.patch': + 'e9e2a4c206dad2367af97d92c12b796b454992cfce23984b132e9e78a07ff55b'}] + builddependencies = [ ('binutils', '2.40'), ('Autotools', '20220317'), diff --git a/easybuild/easyconfigs/u/UCC/UCC-1.2.0_add-riscv-support.patch b/easybuild/easyconfigs/u/UCC/UCC-1.2.0_add-riscv-support.patch new file mode 100644 index 00000000000..1aa1e5fa331 --- /dev/null +++ b/easybuild/easyconfigs/u/UCC/UCC-1.2.0_add-riscv-support.patch @@ -0,0 +1,91 @@ +Add RISC-V support to UCC 1.2.0 using https://github.com/openucx/ucc/pull/829. + +diff --git a/src/Makefile.am b/src/Makefile.am +index b3fe5ed1c2..85496f83dd 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -50,6 +50,7 @@ noinst_HEADERS = \ + coll_score/ucc_coll_score.h \ + utils/arch/aarch64/cpu.h \ + utils/arch/ppc64/cpu.h \ ++ utils/arch/riscv64/cpu.h \ + utils/arch/x86_64/cpu.h \ + utils/arch/cpu.h \ + utils/arch/cuda_def.h \ +diff --git a/src/utils/arch/cpu.h b/src/utils/arch/cpu.h +index 8025f7a9d8..17a74195b7 100644 +--- a/src/utils/arch/cpu.h ++++ b/src/utils/arch/cpu.h +@@ -2,6 +2,7 @@ + * Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2023. ALL RIGHTS RESERVED. + * Copyright (C) ARM Ltd. 2016. ALL RIGHTS RESERVED. + * Copyright (C) Shanghai Zhaoxin Semiconductor Co., Ltd. 2020. ALL RIGHTS RESERVED. ++* Copyright (C) Rivos Inc. 2023 + * + * See file LICENSE for terms. + */ +@@ -44,6 +45,7 @@ typedef enum ucc_cpu_vendor { + UCC_CPU_VENDOR_AMD, + UCC_CPU_VENDOR_GENERIC_ARM, + UCC_CPU_VENDOR_GENERIC_PPC, ++ UCC_CPU_VENDOR_GENERIC_RISCV, + UCC_CPU_VENDOR_FUJITSU_ARM, + UCC_CPU_VENDOR_ZHAOXIN, + UCC_CPU_VENDOR_LAST +@@ -59,6 +61,8 @@ static inline ucc_cpu_vendor_t ucc_get_vendor_from_str(const char *v_name) + return UCC_CPU_VENDOR_GENERIC_ARM; + if (strcasecmp(v_name, "ppc") == 0) + return UCC_CPU_VENDOR_GENERIC_PPC; ++ if (strcasecmp(v_name, "riscv") == 0) ++ return UCC_CPU_VENDOR_GENERIC_RISCV; + if (strcasecmp(v_name, "fujitsu") == 0) + return UCC_CPU_VENDOR_FUJITSU_ARM; + if (strcasecmp(v_name, "zhaoxin") == 0) +@@ -107,6 +111,8 @@ static inline ucc_cpu_model_t ucc_get_model_from_str(const char *m_name) + # include "ppc64/cpu.h" + #elif defined(__aarch64__) + # include "aarch64/cpu.h" ++#elif defined(__riscv) && (__riscv_xlen == 64) ++# include "riscv64/cpu.h" + #else + # error "Unsupported architecture" + #endif +diff --git a/src/utils/arch/riscv64/cpu.h b/src/utils/arch/riscv64/cpu.h +new file mode 100644 +index 0000000000..c93cdb3db1 +--- /dev/null ++++ b/src/utils/arch/riscv64/cpu.h +@@ -0,0 +1,33 @@ ++/** ++* Copyright (c) 2001-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved. ++* Copyright (C) ARM Ltd. 2016-2017. ALL RIGHTS RESERVED. ++* Copyright (C) Rivos Inc. 2023 ++* ++* See file LICENSE for terms. ++*/ ++ ++#ifndef UCC_UTILS_ARCH_RISCV64_CPU_H_ ++#define UCC_UTILS_ARCH_RISCV64_CPU_H_ ++ ++#define UCC_ARCH_CACHE_LINE_SIZE 64 ++ ++/* RVWMO rules */ ++#define ucc_memory_bus_fence() asm volatile("fence iorw, iorw" ::: "memory") ++#define ucc_memory_bus_store_fence() asm volatile("fence ow, ow" ::: "memory") ++#define ucc_memory_bus_load_fence() asm volatile("fence ir, ir" ::: "memory") ++ ++#define ucc_memory_cpu_fence() asm volatile("fence rw, rw" ::: "memory") ++#define ucc_memory_cpu_store_fence() asm volatile("fence rw, w" ::: "memory") ++#define ucc_memory_cpu_load_fence() asm volatile("fence r, rw" ::: "memory") ++ ++static inline ucc_cpu_model_t ucc_arch_get_cpu_model() ++{ ++ return UCC_CPU_MODEL_UNKNOWN; ++} ++ ++static inline ucc_cpu_vendor_t ucc_arch_get_cpu_vendor() ++{ ++ return UCC_CPU_VENDOR_GENERIC_RISCV; ++} ++ ++#endif diff --git a/easybuild/easyconfigs/u/UCC/UCC-1.3.0-GCCcore-13.3.0.eb b/easybuild/easyconfigs/u/UCC/UCC-1.3.0-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..57314f2667e --- /dev/null +++ b/easybuild/easyconfigs/u/UCC/UCC-1.3.0-GCCcore-13.3.0.eb @@ -0,0 +1,41 @@ +easyblock = 'ConfigureMake' + +name = 'UCC' +version = '1.3.0' + +homepage = 'https://www.openucx.org/' +description = """UCC (Unified Collective Communication) is a collective +communication operations API and library that is flexible, complete, and +feature-rich for current and emerging programming models and runtimes. +""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/openucx/ucc/archive/refs/tags'] +sources = ['v%(version)s.tar.gz'] +patches = ['UCC-1.1.0-multiple_component_paths.patch'] +checksums = [ + {'v1.3.0.tar.gz': 'b56379abe5f1c125bfa83be305d78d81a64aa271b7b5fff0ac17b86725ff3acf'}, + {'UCC-1.1.0-multiple_component_paths.patch': '3081d0f694331daa4a88a0fa3fb54b9a918015248ae5eb7b3157b924abd31bee'}, +] + +builddependencies = [ + ('binutils', '2.42'), + ('Autotools', '20231222'), +] + +dependencies = [ + ('UCX', '1.16.0'), +] + +preconfigopts = "./autogen.sh && " + +sanity_check_paths = { + 'files': ['bin/ucc_info'], + 'dirs': ['include', 'lib'] +} + +sanity_check_commands = ["ucc_info -c"] + +moduleclass = 'lib' 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.13.1-GCCcore-12.2.0.eb b/easybuild/easyconfigs/u/UCX/UCX-1.13.1-GCCcore-12.2.0.eb index 00fb55690cd..18bdf44c47d 100644 --- a/easybuild/easyconfigs/u/UCX/UCX-1.13.1-GCCcore-12.2.0.eb +++ b/easybuild/easyconfigs/u/UCX/UCX-1.13.1-GCCcore-12.2.0.eb @@ -40,10 +40,10 @@ dependencies = [ ('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 ' +# include the configure options from contrib/configure-release +configopts += '--disable-logging --disable-debug --disable-assertions --disable-params-check ' buildopts = 'V=1' diff --git a/easybuild/easyconfigs/u/UCX/UCX-1.14.0-GCCcore-12.2.0.eb b/easybuild/easyconfigs/u/UCX/UCX-1.14.0-GCCcore-12.2.0.eb index 0bf2334b18f..b8ea3f98832 100644 --- a/easybuild/easyconfigs/u/UCX/UCX-1.14.0-GCCcore-12.2.0.eb +++ b/easybuild/easyconfigs/u/UCX/UCX-1.14.0-GCCcore-12.2.0.eb @@ -37,10 +37,10 @@ dependencies = [ ('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 ' +# include the configure options from contrib/configure-release +configopts += '--disable-logging --disable-debug --disable-assertions --disable-params-check ' buildopts = 'V=1' diff --git a/easybuild/easyconfigs/u/UCX/UCX-1.14.1-GCCcore-12.3.0.eb b/easybuild/easyconfigs/u/UCX/UCX-1.14.1-GCCcore-12.3.0.eb index af30595f9c5..1705ab53f4d 100644 --- a/easybuild/easyconfigs/u/UCX/UCX-1.14.1-GCCcore-12.3.0.eb +++ b/easybuild/easyconfigs/u/UCX/UCX-1.14.1-GCCcore-12.3.0.eb @@ -37,10 +37,10 @@ dependencies = [ ('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 ' +# include the configure options from contrib/configure-release +configopts += '--disable-logging --disable-debug --disable-assertions --disable-params-check ' buildopts = 'V=1' diff --git a/easybuild/easyconfigs/u/UCX/UCX-1.15.0-GCCcore-13.2.0.eb b/easybuild/easyconfigs/u/UCX/UCX-1.15.0-GCCcore-13.2.0.eb index 6380530f16c..c419432071f 100644 --- a/easybuild/easyconfigs/u/UCX/UCX-1.15.0-GCCcore-13.2.0.eb +++ b/easybuild/easyconfigs/u/UCX/UCX-1.15.0-GCCcore-13.2.0.eb @@ -37,10 +37,16 @@ dependencies = [ ('numactl', '2.0.16'), ] -configure_cmd = "contrib/configure-release" +if ARCH == "riscv64": + patches += ['UCX-1.15.0-add_riscv_support.patch'] + checksums += [{'UCX-1.15.0-add_riscv_support.patch': + '700640d469f441f3ee2c9d42e3a533f78f0c892c1d3c221aebd41279668d118e'}] + preconfigopts = 'autoreconf -fi && ' configopts = '--enable-optimizations --enable-cma --enable-mt --with-verbs ' configopts += '--without-java --without-go --disable-doxygen-doc ' +# include the configure options from contrib/configure-release +configopts += '--disable-logging --disable-debug --disable-assertions --disable-params-check ' buildopts = 'V=1' diff --git a/easybuild/easyconfigs/u/UCX/UCX-1.15.0-add_riscv_support.patch b/easybuild/easyconfigs/u/UCX/UCX-1.15.0-add_riscv_support.patch new file mode 100644 index 00000000000..99fc1fcc298 --- /dev/null +++ b/easybuild/easyconfigs/u/UCX/UCX-1.15.0-add_riscv_support.patch @@ -0,0 +1,792 @@ +Backport RISC-V support to 1.15.0, based on https://github.com/openucx/ucx/pull/9168. + +Author: Bob Dröge (University of Groningen) + +diff -Nru ucx-1.15.0.orig/src/tools/info/sys_info.c ucx-1.15.0/src/tools/info/sys_info.c +--- ucx-1.15.0.orig/src/tools/info/sys_info.c 2023-09-29 12:31:02.000000000 +0200 ++++ ucx-1.15.0/src/tools/info/sys_info.c 2024-04-25 16:22:29.633087861 +0200 +@@ -1,6 +1,7 @@ + /** + * Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2015. ALL RIGHTS RESERVED. + * Copyright (C) Shanghai Zhaoxin Semiconductor Co., Ltd. 2020. ALL RIGHTS RESERVED. ++* Copyright (C) Tactical Computing Labs, LLC. 2022. ALL RIGHTS RESERVED. + * + * See file LICENSE for terms. + */ +@@ -37,7 +38,8 @@ + [UCS_CPU_MODEL_AMD_MILAN] = "Milan", + [UCS_CPU_MODEL_ZHAOXIN_ZHANGJIANG] = "Zhangjiang", + [UCS_CPU_MODEL_ZHAOXIN_WUDAOKOU] = "Wudaokou", +- [UCS_CPU_MODEL_ZHAOXIN_LUJIAZUI] = "Lujiazui" ++ [UCS_CPU_MODEL_ZHAOXIN_LUJIAZUI] = "Lujiazui", ++ [UCS_CPU_MODEL_RV64G] = "RV64G", + }; + + static const char* cpu_vendor_names[] = { +@@ -46,6 +48,7 @@ + [UCS_CPU_VENDOR_AMD] = "AMD", + [UCS_CPU_VENDOR_GENERIC_ARM] = "Generic ARM", + [UCS_CPU_VENDOR_GENERIC_PPC] = "Generic PPC", ++ [UCS_CPU_VENDOR_GENERIC_RV64G] = "Generic RV64G", + [UCS_CPU_VENDOR_FUJITSU_ARM] = "Fujitsu ARM", + [UCS_CPU_VENDOR_ZHAOXIN] = "Zhaoxin" + }; +diff -Nru ucx-1.15.0.orig/src/ucm/bistro/bistro.c ucx-1.15.0/src/ucm/bistro/bistro.c +--- ucx-1.15.0.orig/src/ucm/bistro/bistro.c 2023-09-29 12:31:02.000000000 +0200 ++++ ucx-1.15.0/src/ucm/bistro/bistro.c 2024-04-25 16:20:49.604417755 +0200 +@@ -1,5 +1,6 @@ + /** + * Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2018. ALL RIGHTS RESERVED. ++ * Copyright (C) Tactical Computing Labs, LLC. 2022. ALL RIGHTS RESERVED. + * + * See file LICENSE for terms. + */ +@@ -63,7 +64,7 @@ + return status; + } + +-#if defined(__x86_64__) || defined (__aarch64__) ++#if defined(__x86_64__) || defined (__aarch64__) || defined (__riscv) + struct ucm_bistro_restore_point { + void *addr; /* address of function to restore */ + size_t patch_len; /* patch length */ +diff -Nru ucx-1.15.0.orig/src/ucm/bistro/bistro.h ucx-1.15.0/src/ucm/bistro/bistro.h +--- ucx-1.15.0.orig/src/ucm/bistro/bistro.h 2023-09-29 12:31:02.000000000 +0200 ++++ ucx-1.15.0/src/ucm/bistro/bistro.h 2024-04-25 16:20:49.604417755 +0200 +@@ -1,5 +1,6 @@ + /** + * Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2018. ALL RIGHTS RESERVED. ++ * Copyright (C) Tactical Computing Labs, LLC. 2022. ALL RIGHTS RESERVED. + * + * See file LICENSE for terms. + */ +@@ -20,6 +21,8 @@ + # include "bistro_aarch64.h" + #elif defined(__x86_64__) + # include "bistro_x86_64.h" ++#elif defined(__riscv) ++# include "bistro_rv64.h" + #else + # error "Unsupported architecture" + #endif +diff -Nru ucx-1.15.0.orig/src/ucm/bistro/bistro_rv64.c ucx-1.15.0/src/ucm/bistro/bistro_rv64.c +--- ucx-1.15.0.orig/src/ucm/bistro/bistro_rv64.c 1970-01-01 01:00:00.000000000 +0100 ++++ ucx-1.15.0/src/ucm/bistro/bistro_rv64.c 2024-04-25 16:20:49.604417755 +0200 +@@ -0,0 +1,108 @@ ++/** ++ * Copyright (C) Tactical Computing Labs, LLC. 2022. ALL RIGHTS RESERVED. ++ * ++ * See file LICENSE for terms. ++ */ ++ ++#ifdef HAVE_CONFIG_H ++# include "config.h" ++#endif ++ ++#if defined(__riscv) ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#define X31 31 ++#define X0 0 ++ ++/** ++ * @brief JALR - Add 12 bit immediate to source register, save to destination ++ * register, jump and link from destination register ++ * ++ * @param[in] _regs source register number (0-31) ++ * @param[in] _regd destination register number (0-31) ++ * @param[in] _imm 12 bit immmediate value ++ */ ++#define JALR(_regs, _regd, _imm) \ ++ (((_imm) << 20) | ((_regs) << 15) | (0b000 << 12) | ((_regd) << 7) | (0x67)) ++ ++/** ++ * @brief C_J - Indirect jump (using compressed instruction) ++ * ++ * @param[in] _imm 12 bit immmediate value ++ */ ++#define C_J(_imm) \ ++ ((0b101) << 13 | ((_imm >> 1) << 2) | (0b01)) ++ ++/** ++ * @brief AUIPIC - Add upper intermediate to PC ++ * ++ * @param[in] _regd register number (0-31) ++ * @param[in] _imm 12 bit immmediate value ++ */ ++#define AUIPC(_regd, _imm) (((_imm) << 12) | ((_regd) << 7) | (0x17)) ++ ++/** ++ * @brief LD - Load from memory with address from register plus immediate ++ * ++ * @param[in] _regs source register number (0-31) ++ * @param[in] _regd destination register number (0-31) ++ * @param[in] _imm 12 bit immmediate value ++ */ ++#define LD(_regs, _regd, _imm) \ ++ (((_imm) << 20) | ((_regs) << 15) | (0b011 << 12) | ((_regd) << 7) | (0x3)) ++ ++/* void ucm_bistro_patch_lock(void *dst) ++{ ++ static const ucm_bistro_lock_t self_jmp = { ++ .j = C_J(0) ++ }; ++ ucm_bistro_modify_code(dst, &self_jmp); ++} */ ++ ++ucs_status_t ucm_bistro_patch(void *func_ptr, void *hook, const char *symbol, ++ void **orig_func_p, ++ ucm_bistro_restore_point_t **rp) ++{ ++ ucs_status_t status; ++ ucm_bistro_patch_t patch; ++ ++ patch = (ucm_bistro_patch_t) { ++ .auipc = AUIPC(X31, 0), ++ .ld = LD(31, 31, 0x10), ++ .jalr = JALR(X31, X0, 0), ++ .spare = 0, ++ .address = (uintptr_t)hook ++ }; ++ ++ if (orig_func_p != NULL) { ++ return UCS_ERR_UNSUPPORTED; ++ } ++ ++ status = ucm_bistro_create_restore_point(func_ptr, sizeof(patch), rp); ++ if (UCS_STATUS_IS_ERR(status)) { ++ return status; ++ } ++ ++ return ucm_bistro_apply_patch(func_ptr, &patch, sizeof(patch)); ++} ++ ++ucs_status_t ucm_bistro_relocate_one(ucm_bistro_relocate_context_t *ctx) ++{ ++ return UCS_ERR_UNSUPPORTED; ++} ++ ++#endif +diff -Nru ucx-1.15.0.orig/src/ucm/bistro/bistro_rv64.h ucx-1.15.0/src/ucm/bistro/bistro_rv64.h +--- ucx-1.15.0.orig/src/ucm/bistro/bistro_rv64.h 1970-01-01 01:00:00.000000000 +0100 ++++ ucx-1.15.0/src/ucm/bistro/bistro_rv64.h 2024-04-25 16:20:49.604417755 +0200 +@@ -0,0 +1,58 @@ ++/** ++ * Copyright (C) Tactical Computing Labs, LLC. 2022. ALL RIGHTS RESERVED. ++ * ++ * See file LICENSE for terms. ++ */ ++ ++ ++#ifndef UCM_BISTRO_BISTRO_RV64_H_ ++#define UCM_BISTRO_BISTRO_RV64_H_ ++ ++#include ++#include ++ ++#include ++#include ++ ++#define UCM_BISTRO_PROLOGUE ++#define UCM_BISTRO_EPILOGUE ++ ++typedef struct ucm_bistro_patch { ++ uint32_t auipc; ++ uint32_t ld; ++ uint32_t jalr; ++ uint32_t spare; ++ uint64_t address; ++} UCS_S_PACKED ucm_bistro_patch_t; ++ ++ ++/** ++ * Set library function call hook using Binary Instrumentation ++ * method (BISTRO): replace function body by user defined call ++ * ++ * @param func_ptr Pointer to function to patch. ++ * @param hook User-defined function-replacer. ++ * @param symbol Function name to replace. ++ * @param orig_func_p Unsupported on this architecture and must be NULL. ++ * If set to a non-NULL value, this function returns ++ * @ref UCS_ERR_UNSUPPORTED. ++ * @param rp Restore point used to restore original function. ++ * Optional, may be NULL. ++ * ++ * @return Error code as defined by @ref ucs_status_t ++ */ ++ucs_status_t ucm_bistro_patch(void *func_ptr, void *hook, const char *symbol, ++ void **orig_func_p, ++ ucm_bistro_restore_point_t **rp); ++ ++/* Lock implementation */ ++typedef struct { ++ uint16_t j; /* jump to self */ ++} UCS_S_PACKED ucm_bistro_lock_t; ++ ++/** ++ * Helper functions to improve atomicity of function patching ++ */ ++// void ucm_bistro_patch_lock(void *dst); ++ ++#endif +diff -Nru ucx-1.15.0.orig/src/ucm/Makefile.am ucx-1.15.0/src/ucm/Makefile.am +--- ucx-1.15.0.orig/src/ucm/Makefile.am 2023-09-29 12:31:02.000000000 +0200 ++++ ucx-1.15.0/src/ucm/Makefile.am 2024-04-25 16:20:49.604417755 +0200 +@@ -31,7 +31,8 @@ + bistro/bistro.h \ + bistro/bistro_x86_64.h \ + bistro/bistro_aarch64.h \ +- bistro/bistro_ppc64.h ++ bistro/bistro_ppc64.h \ ++ bistro/bistro_rv64.h + + libucm_la_SOURCES = \ + event/event.c \ +@@ -44,7 +45,8 @@ + bistro/bistro.c \ + bistro/bistro_x86_64.c \ + bistro/bistro_aarch64.c \ +- bistro/bistro_ppc64.c ++ bistro/bistro_ppc64.c \ ++ bistro/bistro_rv64.c + + if HAVE_UCM_PTMALLOC286 + libucm_la_CPPFLAGS += \ +diff -Nru ucx-1.15.0.orig/src/ucm/util/reloc.c ucx-1.15.0/src/ucm/util/reloc.c +--- ucx-1.15.0.orig/src/ucm/util/reloc.c 2023-09-29 12:31:02.000000000 +0200 ++++ ucx-1.15.0/src/ucm/util/reloc.c 2024-04-25 16:20:49.604417755 +0200 +@@ -91,6 +91,19 @@ + return 0; + } + ++static void * ++ucm_reloc_get_pointer(ElfW(Addr) base, const ElfW(Phdr) *dphdr, ElfW(Sxword) tag) ++{ ++ uintptr_t entry = ucm_reloc_get_entry(base, dphdr, tag); ++ ++#if defined(__riscv) ++ /* On RISC-V these are not pointers but offsets */ ++ return UCS_PTR_BYTE_OFFSET(base, entry); ++#else ++ return (void *)entry; ++#endif ++} ++ + static void ucm_reloc_file_lock(int fd, int l_type) + { + struct flock fl = { l_type, SEEK_SET, 0, 0}; +@@ -358,8 +371,8 @@ + } + + /* Get ELF tables pointers */ +- symtab = (void*)ucm_reloc_get_entry(dlpi_addr, dphdr, DT_SYMTAB); +- strtab = (void*)ucm_reloc_get_entry(dlpi_addr, dphdr, DT_STRTAB); ++ symtab = ucm_reloc_get_pointer(dlpi_addr, dphdr, DT_SYMTAB); ++ strtab = ucm_reloc_get_pointer(dlpi_addr, dphdr, DT_STRTAB); + if ((symtab == NULL) || (strtab == NULL)) { + /* no DT_SYMTAB or DT_STRTAB sections are defined */ + ucm_debug("%s has no dynamic symbols - skipping", dl_name) +@@ -369,7 +382,7 @@ + num_symbols = 0; + + /* populate .got.plt */ +- jmprel = (void*)ucm_reloc_get_entry(dlpi_addr, dphdr, DT_JMPREL); ++ jmprel = ucm_reloc_get_pointer(dlpi_addr, dphdr, DT_JMPREL); + if (jmprel != NULL) { + pltrelsz = ucm_reloc_get_entry(dlpi_addr, dphdr, DT_PLTRELSZ); + num_symbols += ucm_dl_populate_symbols(dl_info, dlpi_addr, jmprel, +@@ -377,7 +390,7 @@ + } + + /* populate .got */ +- rela = (void*)ucm_reloc_get_entry(dlpi_addr, dphdr, DT_RELA); ++ rela = ucm_reloc_get_pointer(dlpi_addr, dphdr, DT_RELA); + if (rela != NULL) { + relasz = ucm_reloc_get_entry(dlpi_addr, dphdr, DT_RELASZ); + num_symbols += ucm_dl_populate_symbols(dl_info, dlpi_addr, rela, relasz, +diff -Nru ucx-1.15.0.orig/src/ucm/util/reloc.h ucx-1.15.0/src/ucm/util/reloc.h +--- ucx-1.15.0.orig/src/ucm/util/reloc.h 2023-09-29 12:31:02.000000000 +0200 ++++ ucx-1.15.0/src/ucm/util/reloc.h 2024-04-25 16:20:49.604417755 +0200 +@@ -54,13 +54,33 @@ + static UCS_F_MAYBE_UNUSED + void* ucm_reloc_get_orig(const char *symbol, void *replacement) + { ++ static const int flags = RTLD_LOCAL | RTLD_NODELETE | RTLD_LAZY; + const char *error; +- void *func_ptr; ++ void *func_ptr = NULL; ++ int ret; ++ void *dl; ++ Dl_info info; ++ ++ (void)dlerror(); ++ ret = dladdr((void*)ucm_reloc_get_orig, &info); ++ if (ret == 0) { ++ ucm_warn("could not find address of current library: %s", dlerror()); ++ return NULL; ++ } ++ ++ (void)dlerror(); ++ dl = dlopen(info.dli_fname, flags); ++ if (dl != NULL) { ++ (void)dlerror(); ++ func_ptr = dlsym(dl, symbol); ++ ucm_trace("(libucm) found symbol %s at %p", symbol, func_ptr); ++ dlclose(dl); ++ } + +- func_ptr = dlsym(RTLD_NEXT, symbol); + if (func_ptr == NULL) { + (void)dlerror(); + func_ptr = dlsym(RTLD_DEFAULT, symbol); ++ ucm_trace("(default) found symbol %s at %p", symbol, func_ptr); + if (func_ptr == replacement) { + error = dlerror(); + ucm_fatal("could not find address of original %s(): %s", symbol, +diff -Nru ucx-1.15.0.orig/src/ucs/arch/atomic.h ucx-1.15.0/src/ucs/arch/atomic.h +--- ucx-1.15.0.orig/src/ucs/arch/atomic.h 2023-09-29 12:31:02.000000000 +0200 ++++ ucx-1.15.0/src/ucs/arch/atomic.h 2024-04-25 16:20:49.604417755 +0200 +@@ -1,5 +1,6 @@ + /** + * Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2015. ALL RIGHTS RESERVED. ++* Copyright (C) Tactical Computing Labs, LLC. 2022. ALL RIGHTS RESERVED. + * + * See file LICENSE for terms. + */ +@@ -15,6 +16,8 @@ + # include "generic/atomic.h" + #elif defined(__aarch64__) + # include "generic/atomic.h" ++#elif defined(__riscv) ++# include "generic/atomic.h" + #else + # error "Unsupported architecture" + #endif +diff -Nru ucx-1.15.0.orig/src/ucs/arch/bitops.h ucx-1.15.0/src/ucs/arch/bitops.h +--- ucx-1.15.0.orig/src/ucs/arch/bitops.h 2023-09-29 12:31:02.000000000 +0200 ++++ ucx-1.15.0/src/ucs/arch/bitops.h 2024-04-25 16:20:49.604417755 +0200 +@@ -1,6 +1,7 @@ + /** + * Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2015. ALL RIGHTS RESERVED. + * Copyright (C) Huawei Technologies Co., Ltd. 2020. ALL RIGHTS RESERVED. ++* Copyright (C) Tactical Computing Labs, LLC. 2022. ALL RIGHTS RESERVED. + * + * See file LICENSE for terms. + */ +@@ -20,6 +21,8 @@ + # include "ppc64/bitops.h" + #elif defined(__aarch64__) + # include "aarch64/bitops.h" ++#elif defined(__riscv) ++# include "rv64/bitops.h" + #else + # error "Unsupported architecture" + #endif +diff -Nru ucx-1.15.0.orig/src/ucs/arch/cpu.c ucx-1.15.0/src/ucs/arch/cpu.c +--- ucx-1.15.0.orig/src/ucs/arch/cpu.c 2023-09-29 12:31:02.000000000 +0200 ++++ ucx-1.15.0/src/ucs/arch/cpu.c 2024-04-25 16:25:29.290421918 +0200 +@@ -1,6 +1,7 @@ + /** + * Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2019. ALL RIGHTS RESERVED. + * Copyright (C) Shanghai Zhaoxin Semiconductor Co., Ltd. 2020. ALL RIGHTS RESERVED. ++* Copyright (C) Tactical Computing Labs, LLC. 2022. ALL RIGHTS RESERVED. + * + * See file LICENSE for terms. + */ +@@ -70,17 +71,22 @@ + [UCS_CPU_VENDOR_ZHAOXIN] = { + .min = UCS_MEMUNITS_INF, + .max = UCS_MEMUNITS_INF ++ }, ++ [UCS_CPU_VENDOR_GENERIC_RV64G] = { ++ .min = UCS_MEMUNITS_INF, ++ .max = UCS_MEMUNITS_INF + } + }; + + const size_t ucs_cpu_est_bcopy_bw[UCS_CPU_VENDOR_LAST] = { +- [UCS_CPU_VENDOR_UNKNOWN] = UCS_CPU_EST_BCOPY_BW_DEFAULT, +- [UCS_CPU_VENDOR_INTEL] = UCS_CPU_EST_BCOPY_BW_DEFAULT, +- [UCS_CPU_VENDOR_AMD] = UCS_CPU_EST_BCOPY_BW_AMD, +- [UCS_CPU_VENDOR_GENERIC_ARM] = UCS_CPU_EST_BCOPY_BW_DEFAULT, +- [UCS_CPU_VENDOR_GENERIC_PPC] = UCS_CPU_EST_BCOPY_BW_DEFAULT, +- [UCS_CPU_VENDOR_FUJITSU_ARM] = UCS_CPU_EST_BCOPY_BW_FUJITSU_ARM, +- [UCS_CPU_VENDOR_ZHAOXIN] = UCS_CPU_EST_BCOPY_BW_DEFAULT ++ [UCS_CPU_VENDOR_UNKNOWN] = UCS_CPU_EST_BCOPY_BW_DEFAULT, ++ [UCS_CPU_VENDOR_INTEL] = UCS_CPU_EST_BCOPY_BW_DEFAULT, ++ [UCS_CPU_VENDOR_AMD] = UCS_CPU_EST_BCOPY_BW_AMD, ++ [UCS_CPU_VENDOR_GENERIC_ARM] = UCS_CPU_EST_BCOPY_BW_DEFAULT, ++ [UCS_CPU_VENDOR_GENERIC_PPC] = UCS_CPU_EST_BCOPY_BW_DEFAULT, ++ [UCS_CPU_VENDOR_GENERIC_RV64G] = UCS_CPU_EST_BCOPY_BW_DEFAULT, ++ [UCS_CPU_VENDOR_FUJITSU_ARM] = UCS_CPU_EST_BCOPY_BW_FUJITSU_ARM, ++ [UCS_CPU_VENDOR_ZHAOXIN] = UCS_CPU_EST_BCOPY_BW_DEFAULT + }; + + static void ucs_sysfs_get_cache_size() +diff -Nru ucx-1.15.0.orig/src/ucs/arch/cpu.h ucx-1.15.0/src/ucs/arch/cpu.h +--- ucx-1.15.0.orig/src/ucs/arch/cpu.h 2023-09-29 12:31:02.000000000 +0200 ++++ ucx-1.15.0/src/ucs/arch/cpu.h 2024-04-25 16:20:49.604417755 +0200 +@@ -2,6 +2,7 @@ + * Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2015. ALL RIGHTS RESERVED. + * Copyright (C) ARM Ltd. 2016. ALL RIGHTS RESERVED. + * Copyright (C) Shanghai Zhaoxin Semiconductor Co., Ltd. 2020. ALL RIGHTS RESERVED. ++* Copyright (C) Tactical Computing Labs, LLC. 2022. ALL RIGHTS RESERVED. + * + * See file LICENSE for terms. + */ +@@ -36,6 +37,7 @@ + UCS_CPU_MODEL_ZHAOXIN_ZHANGJIANG, + UCS_CPU_MODEL_ZHAOXIN_WUDAOKOU, + UCS_CPU_MODEL_ZHAOXIN_LUJIAZUI, ++ UCS_CPU_MODEL_RV64G, + UCS_CPU_MODEL_LAST + } ucs_cpu_model_t; + +@@ -66,6 +68,7 @@ + UCS_CPU_VENDOR_GENERIC_PPC, + UCS_CPU_VENDOR_FUJITSU_ARM, + UCS_CPU_VENDOR_ZHAOXIN, ++ UCS_CPU_VENDOR_GENERIC_RV64G, + UCS_CPU_VENDOR_LAST + } ucs_cpu_vendor_t; + +@@ -99,6 +102,8 @@ + # include "ppc64/cpu.h" + #elif defined(__aarch64__) + # include "aarch64/cpu.h" ++#elif defined(__riscv) ++# include "rv64/cpu.h" + #else + # error "Unsupported architecture" + #endif +diff -Nru ucx-1.15.0.orig/src/ucs/arch/global_opts.h ucx-1.15.0/src/ucs/arch/global_opts.h +--- ucx-1.15.0.orig/src/ucs/arch/global_opts.h 2023-09-29 12:31:02.000000000 +0200 ++++ ucx-1.15.0/src/ucs/arch/global_opts.h 2024-04-25 16:20:49.604417755 +0200 +@@ -1,5 +1,6 @@ + /** + * Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2019. ALL RIGHTS RESERVED. ++* Copyright (C) Tactical Computing Labs, LLC. 2022. ALL RIGHTS RESERVED. + * + * See file LICENSE for terms. + */ +@@ -15,6 +16,8 @@ + # include "ppc64/global_opts.h" + #elif defined(__aarch64__) + # include "aarch64/global_opts.h" ++#elif defined(__riscv) ++# include "rv64/global_opts.h" + #else + # error "Unsupported architecture" + #endif +diff -Nru ucx-1.15.0.orig/src/ucs/arch/rv64/bitops.h ucx-1.15.0/src/ucs/arch/rv64/bitops.h +--- ucx-1.15.0.orig/src/ucs/arch/rv64/bitops.h 1970-01-01 01:00:00.000000000 +0100 ++++ ucx-1.15.0/src/ucs/arch/rv64/bitops.h 2024-04-25 16:20:49.608417782 +0200 +@@ -0,0 +1,33 @@ ++/** ++* Copyright (C) Tactical Computing Labs, LLC. 2022. ALL RIGHTS RESERVED. ++* ++* See file LICENSE for terms. ++*/ ++ ++#ifndef UCS_ARCH_RV64_BITOPS_H_ ++#define UCS_ARCH_RV64_BITOPS_H_ ++ ++#include ++#include ++ ++static UCS_F_ALWAYS_INLINE unsigned __ucs_ilog2_u32(uint32_t n) ++{ ++ return 31 - __builtin_clz(n); ++} ++ ++static UCS_F_ALWAYS_INLINE unsigned __ucs_ilog2_u64(uint64_t n) ++{ ++ return 63 - __builtin_clzll(n); ++} ++ ++static UCS_F_ALWAYS_INLINE unsigned ucs_ffs32(uint32_t n) ++{ ++ return __ucs_ilog2_u32(n & -n); ++} ++ ++static UCS_F_ALWAYS_INLINE unsigned ucs_ffs64(uint64_t n) ++{ ++ return __ucs_ilog2_u64(n & -n); ++} ++ ++#endif +diff -Nru ucx-1.15.0.orig/src/ucs/arch/rv64/cpu.c ucx-1.15.0/src/ucs/arch/rv64/cpu.c +--- ucx-1.15.0.orig/src/ucs/arch/rv64/cpu.c 1970-01-01 01:00:00.000000000 +0100 ++++ ucx-1.15.0/src/ucs/arch/rv64/cpu.c 2024-04-25 16:20:49.608417782 +0200 +@@ -0,0 +1,20 @@ ++/** ++* Copyright (C) Tactical Computing Labs, LLC. 2022. ALL RIGHTS RESERVED. ++* ++* See file LICENSE for terms. ++*/ ++ ++#if defined(__riscv) ++ ++#ifdef HAVE_CONFIG_H ++# include "config.h" ++#endif ++ ++#include ++ ++ucs_cpu_vendor_t ucs_arch_get_cpu_vendor() ++{ ++ return UCS_CPU_VENDOR_GENERIC_RV64G; ++} ++ ++#endif +diff -Nru ucx-1.15.0.orig/src/ucs/arch/rv64/cpu.h ucx-1.15.0/src/ucs/arch/rv64/cpu.h +--- ucx-1.15.0.orig/src/ucs/arch/rv64/cpu.h 1970-01-01 01:00:00.000000000 +0100 ++++ ucx-1.15.0/src/ucs/arch/rv64/cpu.h 2024-04-25 16:20:49.608417782 +0200 +@@ -0,0 +1,113 @@ ++/** ++* Copyright (C) Tactical Computing Labs, LLC. 2022. ALL RIGHTS RESERVED. ++* Copyright (C) Rivos Inc. 2023 ++* ++* See file LICENSE for terms. ++*/ ++ ++#ifndef UCS_ARCH_RV64_CPU_H_ ++#define UCS_ARCH_RV64_CPU_H_ ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++BEGIN_C_DECLS ++ ++/** @file cpu.h */ ++ ++#define UCS_ARCH_CACHE_LINE_SIZE 64 ++ ++/* ++ * System call for flushing the instruction caches. ++ * ++ * Need to pass zero to lead to all HARTs (CPUs) to update their caches. ++ */ ++#define ucs_rv64_icache_flush(_start, _end) \ ++ syscall(SYS_riscv_flush_icache, _start, _end, 0) ++ ++#define ucs_memory_bus_store_fence() asm volatile("fence ow, ow" ::: "memory") ++#define ucs_memory_bus_load_fence() asm volatile("fence ir, ir" ::: "memory") ++ ++/** ++ * The RISC-V memory model is mostly weak. The fence instruction ensures that all ++ * HARTs (CPUs) see any stores or loads before the fence before any stores or ++ * loads after the fence. ++ */ ++ ++#define ucs_memory_cpu_fence() asm volatile("fence rw, rw" ::: "memory") ++#define ucs_memory_bus_cacheline_wc_flush() ucs_memory_cpu_fence() ++#define ucs_memory_cpu_store_fence() asm volatile("fence rw, w" ::: "memory") ++#define ucs_memory_cpu_load_fence() asm volatile("fence r, rw" ::: "memory") ++#define ucs_memory_cpu_wc_fence() ucs_memory_cpu_fence() ++ ++static inline double ucs_arch_get_clocks_per_sec() ++{ ++ return ucs_arch_generic_get_clocks_per_sec(); ++} ++ ++static inline ucs_cpu_model_t ucs_arch_get_cpu_model() ++{ ++ return UCS_CPU_MODEL_RV64G; ++} ++ ++static inline int ucs_arch_get_cpu_flag() ++{ ++ return UCS_CPU_FLAG_UNKNOWN; ++} ++ ++static inline void ucs_cpu_init() ++{ ++} ++ ++ucs_cpu_vendor_t ucs_arch_get_cpu_vendor(); ++ ++static inline ucs_status_t ucs_arch_get_cache_size(size_t *cache_sizes) ++{ ++ return UCS_ERR_UNSUPPORTED; ++} ++ ++static inline uint64_t ucs_arch_read_hres_clock() ++{ ++ return ucs_arch_generic_read_hres_clock(); ++} ++ ++#define ucs_arch_wait_mem ucs_arch_generic_wait_mem ++ ++#if !HAVE___CLEAR_CACHE ++static inline void ucs_arch_clear_cache(void *start, void *end) ++{ ++ /* ++ * The syscall will cause all other HARTs (CPUs) to invalidate their ++ * instruction caches. This is the equivalent of the glibc __clear_cache() ++ * implementation that ucs_clear_cache() will use if HAVE_CLEAR_CACHE is ++ * defined. ++ */ ++ ucs_rv64_icache_flush(start, end); ++} ++#endif ++ ++static inline void *ucs_memcpy_relaxed(void *dst, const void *src, size_t len) ++{ ++ return memcpy(dst, src, len); ++} ++ ++static UCS_F_ALWAYS_INLINE void ++ucs_memcpy_nontemporal(void *dst, const void *src, size_t len) ++{ ++ memcpy(dst, src, len); ++} ++ ++END_C_DECLS ++ ++#endif +diff -Nru ucx-1.15.0.orig/src/ucs/arch/rv64/global_opts.c ucx-1.15.0/src/ucs/arch/rv64/global_opts.c +--- ucx-1.15.0.orig/src/ucs/arch/rv64/global_opts.c 1970-01-01 01:00:00.000000000 +0100 ++++ ucx-1.15.0/src/ucs/arch/rv64/global_opts.c 2024-04-25 16:20:49.608417782 +0200 +@@ -0,0 +1,24 @@ ++/** ++* Copyright (C) Tactical Computing Labs, LLC. 2022. ALL RIGHTS RESERVED. ++* ++* See file LICENSE for terms. ++*/ ++ ++#if defined(__riscv) ++ ++#ifdef HAVE_CONFIG_H ++# include "config.h" ++#endif ++ ++#include ++#include ++ ++ucs_config_field_t ucs_arch_global_opts_table[] = { ++ {NULL} ++}; ++ ++void ucs_arch_print_memcpy_limits(ucs_arch_global_opts_t *config) ++{ ++} ++ ++#endif +diff -Nru ucx-1.15.0.orig/src/ucs/arch/rv64/global_opts.h ucx-1.15.0/src/ucs/arch/rv64/global_opts.h +--- ucx-1.15.0.orig/src/ucs/arch/rv64/global_opts.h 1970-01-01 01:00:00.000000000 +0100 ++++ ucx-1.15.0/src/ucs/arch/rv64/global_opts.h 2024-04-25 16:20:49.608417782 +0200 +@@ -0,0 +1,25 @@ ++/** ++* Copyright (C) Tactical Computing Labs, LLC. 2022. ALL RIGHTS RESERVED. ++* ++* See file LICENSE for terms. ++*/ ++ ++#ifndef UCS_ARCH_RV64_GLOBAL_OPTS_H_ ++#define UCS_ARCH_RV64_GLOBAL_OPTS_H_ ++ ++#include ++ ++#include ++ ++BEGIN_C_DECLS ++ ++#define UCS_ARCH_GLOBAL_OPTS_INITALIZER {} ++ ++/* built-in memcpy config */ ++typedef struct ucs_arch_global_opts { ++ char dummy; ++} ucs_arch_global_opts_t; ++ ++END_C_DECLS ++ ++#endif +diff -Nru ucx-1.15.0.orig/src/ucs/configure.m4 ucx-1.15.0/src/ucs/configure.m4 +--- ucx-1.15.0.orig/src/ucs/configure.m4 2023-09-29 12:31:02.000000000 +0200 ++++ ucx-1.15.0/src/ucs/configure.m4 2024-04-25 16:20:49.608417782 +0200 +@@ -2,6 +2,7 @@ + # Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2014. ALL RIGHTS RESERVED. + # Copyright (C) UT-Battelle, LLC. 2015. ALL RIGHTS RESERVED. + # Copyright (C) ARM, Ltd. 2016. ALL RIGHTS RESERVED. ++# Copyright (C) Tactical Computing Labs, LLC. 2022. ALL RIGHTS RESERVED. + # See file LICENSE for terms. + # + +@@ -238,7 +239,7 @@ + [AS_HELP_STRING([--with-cache-line-size=SIZE], + [Build UCX with cache line size defined by user. This parameter + overwrites default cache line sizes defines in +- UCX (x86-64: 64, Power: 128, ARMv8: 64/128). The supported values are: 64, 128])], ++ UCX (x86-64: 64, Power: 128, ARMv8: 64/128, RISCV: 64). The supported values are: 64, 128])], + [], + [with_cache_line_size=no]) + +diff -Nru ucx-1.15.0.orig/src/ucs/Makefile.am ucx-1.15.0/src/ucs/Makefile.am +--- ucx-1.15.0.orig/src/ucs/Makefile.am 2023-09-29 12:31:02.000000000 +0200 ++++ ucx-1.15.0/src/ucs/Makefile.am 2024-04-25 16:20:49.604417755 +0200 +@@ -2,6 +2,7 @@ + # Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2014. ALL RIGHTS RESERVED. + # Copyright (C) UT-Battelle, LLC. 2014-2017. ALL RIGHTS RESERVED. + # Copyright (C) ARM Ltd. 2016-2017. ALL RIGHTS RESERVED. ++# Copyright (C) Tactical Computing Labs, LLC. 2022. ALL RIGHTS RESERVED. + # See file LICENSE for terms. + # + +@@ -22,6 +23,7 @@ + nobase_dist_libucs_la_HEADERS = \ + arch/aarch64/bitops.h \ + arch/ppc64/bitops.h \ ++ arch/rv64/bitops.h \ + arch/x86_64/bitops.h \ + arch/bitops.h \ + algorithm/crc.h \ +@@ -82,12 +84,14 @@ + arch/aarch64/global_opts.h \ + arch/generic/atomic.h \ + arch/ppc64/global_opts.h \ ++ arch/rv64/global_opts.h \ + arch/global_opts.h + + noinst_HEADERS = \ + arch/aarch64/cpu.h \ + arch/generic/cpu.h \ + arch/ppc64/cpu.h \ ++ arch/rv64/cpu.h \ + arch/x86_64/cpu.h \ + arch/cpu.h \ + config/ucm_opts.h \ +@@ -140,6 +144,8 @@ + arch/aarch64/global_opts.c \ + arch/ppc64/timebase.c \ + arch/ppc64/global_opts.c \ ++ arch/rv64/cpu.c \ ++ arch/rv64/global_opts.c \ + arch/x86_64/cpu.c \ + arch/x86_64/global_opts.c \ + arch/cpu.c \ diff --git a/easybuild/easyconfigs/u/UCX/UCX-1.16.0-GCCcore-13.2.0.eb b/easybuild/easyconfigs/u/UCX/UCX-1.16.0-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..204af6d108a --- /dev/null +++ b/easybuild/easyconfigs/u/UCX/UCX-1.16.0-GCCcore-13.2.0.eb @@ -0,0 +1,52 @@ +easyblock = 'ConfigureMake' + +name = 'UCX' +version = '1.16.0' + +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 = ['%(namelower)s-%(version)s.tar.gz'] +patches = [ + 'UCX-1.13.1-dynamic_modules.patch', +] +checksums = [ + {'ucx-1.16.0.tar.gz': 'f73770d3b583c91aba5fb07557e655ead0786e057018bfe42f0ebe8716e9d28c'}, + {'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'), +] + +configopts = '--enable-optimizations --enable-cma --enable-mt --with-verbs ' +configopts += '--without-java --without-go --disable-doxygen-doc ' +# include the configure options from contrib/configure-release +configopts += '--disable-logging --disable-debug --disable-assertions --disable-params-check ' + +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-GCCcore-13.3.0.eb b/easybuild/easyconfigs/u/UCX/UCX-1.16.0-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..e5a9d8a4954 --- /dev/null +++ b/easybuild/easyconfigs/u/UCX/UCX-1.16.0-GCCcore-13.3.0.eb @@ -0,0 +1,52 @@ +easyblock = 'ConfigureMake' + +name = 'UCX' +version = '1.16.0' + +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.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/openucx/ucx/releases/download/v%(version)s'] +sources = ['%(namelower)s-%(version)s.tar.gz'] +patches = [ + 'UCX-1.13.1-dynamic_modules.patch', +] +checksums = [ + {'ucx-1.16.0.tar.gz': 'f73770d3b583c91aba5fb07557e655ead0786e057018bfe42f0ebe8716e9d28c'}, + {'UCX-1.13.1-dynamic_modules.patch': '00874687bd90b795fff61aaa183f6c6bea2210aa1003b28f23d9ebf7066f8782'}, +] + +builddependencies = [ + ('binutils', '2.42'), + ('Autotools', '20231222'), + ('pkgconf', '2.2.0'), +] + +osdependencies = [OS_PKG_IBVERBS_DEV] + +dependencies = [ + ('zlib', '1.3.1'), + ('numactl', '2.0.18'), +] + +configopts = '--enable-optimizations --enable-cma --enable-mt --with-verbs ' +configopts += '--without-java --without-go --disable-doxygen-doc ' +# include the configure options from contrib/configure-release +configopts += '--disable-logging --disable-debug --disable-assertions --disable-params-check ' + +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.2.0.eb b/easybuild/easyconfigs/u/UCX/UCX-1.16.0-rc4-GCCcore-11.2.0.eb index 42f38528005..59c23e605c9 100644 --- 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 @@ -35,10 +35,10 @@ dependencies = [ ('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 ' +# include the configure options from contrib/configure-release +configopts += '--disable-logging --disable-debug --disable-assertions --disable-params-check ' buildopts = 'V=1' 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 index 3627a39308c..3547fe01346 100644 --- 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 @@ -35,10 +35,10 @@ dependencies = [ ('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 ' +# include the configure options from contrib/configure-release +configopts += '--disable-logging --disable-debug --disable-assertions --disable-params-check ' buildopts = 'V=1' 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 index b49c37a93ed..ecf466624e0 100644 --- 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 @@ -35,10 +35,10 @@ dependencies = [ ('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 ' +# include the configure options from contrib/configure-release +configopts += '--disable-logging --disable-debug --disable-assertions --disable-params-check ' buildopts = 'V=1' 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 index b4530aa124a..e9aad758fa0 100644 --- 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 @@ -35,10 +35,10 @@ dependencies = [ ('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 ' +# include the configure options from contrib/configure-release +configopts += '--disable-logging --disable-debug --disable-assertions --disable-params-check ' buildopts = 'V=1' 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 index 66faa507c27..ce7ac056ed5 100644 --- 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 @@ -35,10 +35,10 @@ dependencies = [ ('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 ' +# include the configure options from contrib/configure-release +configopts += '--disable-logging --disable-debug --disable-assertions --disable-params-check ' buildopts = 'V=1' diff --git a/easybuild/easyconfigs/u/UnZip/UnZip-6.0-GCCcore-13.3.0.eb b/easybuild/easyconfigs/u/UnZip/UnZip-6.0-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..08f61c7f44c --- /dev/null +++ b/easybuild/easyconfigs/u/UnZip/UnZip-6.0-GCCcore-13.3.0.eb @@ -0,0 +1,59 @@ +easyblock = 'ConfigureMake' + +name = 'UnZip' +version = '6.0' + +homepage = 'http://www.info-zip.org/UnZip.html' +description = """UnZip is an extraction utility for archives compressed +in .zip format (also called "zipfiles"). Although highly compatible both +with PKWARE's PKZIP and PKUNZIP utilities for MS-DOS and with Info-ZIP's +own Zip program, our primary objectives have been portability and +non-MSDOS functionality.""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = ['https://download.sourceforge.net/infozip'] +sources = ['%(namelower)s%(version_major)s%(version_minor)s.tar.gz'] +patches = [ + 'UnZip-%(version)s_various-security-and-other-fixes-from-Ubuntu.patch', +] +checksums = [ + '036d96991646d0449ed0aa952e4fbe21b476ce994abc276e49d30e686708bd37', # unzip60.tar.gz + # UnZip-6.0_various-security-and-other-fixes-from-Ubuntu.patch + '06b9307fd5aa018896bd4126818c00c1fd284a06cc3681cf0492f951ebb57ffe', +] + +builddependencies = [ + ('binutils', '2.42'), +] + +dependencies = [ + ('bzip2', '1.0.8'), +] + +skipsteps = ['configure'] + +local_cf = ['$CFLAGS', '$CPPFLAGS', '-I.', '-DACORN_FTYPE_NFS', '-DWILD_STOP_AT_DIR', '-DLARGE_FILE_SUPPORT' + '-DUNICODE_SUPPORT', '-DUNICODE_WCHAR', '-DUTF8_MAYBE_NATIVE', '-DNO_LCHMOD', '-DDATE_FORMAT=DF_YMD', + '-DUSE_BZIP2', '-DIZ_HAVE_UXUIDGID', '-DNOMEMCPY', '-DNO_WORKING_ISPRINT'] + +buildopts = ' '.join([ + "-f unix/Makefile", + 'CC="$CC"', + 'D_USE_BZ2=-DUSE_BZIP2', + 'L_BZ2=-lbz2', + 'LF2="$LDFLAGS"', + 'CF="%s"' % ' '.join(local_cf), + 'unzips', +]) + +installopts = '-f unix/Makefile prefix=%(installdir)s ' + +sanity_check_paths = { + 'files': ['bin/unzip', 'bin/zipinfo'], + 'dirs': ['man/man1'] +} + +sanity_check_commands = ["unzip -v"] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/u/util-linux/util-linux-2.40-GCCcore-13.3.0.eb b/easybuild/easyconfigs/u/util-linux/util-linux-2.40-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..7ca00a929ad --- /dev/null +++ b/easybuild/easyconfigs/u/util-linux/util-linux-2.40-GCCcore-13.3.0.eb @@ -0,0 +1,46 @@ +easyblock = 'ConfigureMake' + +name = 'util-linux' +version = '2.40' + +homepage = 'https://www.kernel.org/pub/linux/utils/util-linux' + +description = "Set of Linux utilities" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['%s/v%%(version_major_minor)s' % homepage] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['2a51d08cb71fd8e491e0cf633032c928f9a2848417f8441cb8cf7ef9971de916'] + +builddependencies = [ + ('binutils', '2.42'), + ('Autotools', '20231222'), # for fix_waitpid patch + ('pkgconf', '2.2.0'), # for fix_waitpid patch +] + +dependencies = [ + ('ncurses', '6.5'), + ('zlib', '1.3.1'), + ('SQLite', '3.45.3'), +] + +# disable account related utilities (they need OS dependent pam-devel files) +# disable wall and friends (requires group changing permissions for install user) +# install systemd service files in install dir +# install bash completion files in install dir +configopts = "--disable-chfn-chsh --disable-login --disable-su --disable-rfkill " +configopts += "--disable-wall --disable-use-tty-group " +configopts += "--disable-makeinstall-chown --disable-makeinstall-setuid " +configopts += "--with-systemdsystemunitdir='${prefix}/systemd' " +configopts += "--with-bashcompletiondir='${prefix}/share/bash-completion/completions' " +# disable building Python bindings (since we don't include Python as a dep) +configopts += "--without-python " + +sanity_check_paths = { + 'files': ['lib/lib%s.a' % x for x in ['blkid', 'mount', 'uuid']], + 'dirs': ['include', 'bin', 'share', 'sbin'], +} + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/v/VAMPIRE-ASM/VAMPIRE-ASM-6.0-foss-2022b.eb b/easybuild/easyconfigs/v/VAMPIRE-ASM/VAMPIRE-ASM-6.0-foss-2022b.eb new file mode 100644 index 00000000000..b235221f1c6 --- /dev/null +++ b/easybuild/easyconfigs/v/VAMPIRE-ASM/VAMPIRE-ASM-6.0-foss-2022b.eb @@ -0,0 +1,48 @@ +# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild +# License:: MIT/GPL + +easyblock = 'MakeCp' + +name = 'VAMPIRE-ASM' +version = '6.0' + +homepage = 'https://vampire.york.ac.uk/' +description = """ +Vampire is designed from the ground-up to be an easy to use, fast, +open-source and extensible software package capable of modelling +almost any magnetic material with atomic resolution. +""" + +toolchain = {'name': 'foss', 'version': '2022b'} +toolchainopts = {'usempi': True} + +source_urls = ['https://github.com/richard-evans/vampire/archive/refs/tags/'] +sources = ['v%(version)s.tar.gz'] +checksums = [ + {'v6.0.tar.gz': '5a5104eebe6f2c83c11139a6d56cfd78018aba247fd0466e87daa9c39aa62cf8'}, +] + +skipsteps = ['configure'] + +files_to_copy = [ + (['vampire-serial', 'vampire-parallel', 'util/vdc/vdc'], 'bin'), + (['input', 'Co.mat'], 'examples'), + 'license', 'BSD_licence', 'readme.md', +] + +sanity_check_paths = { + 'files': [ + 'bin/vampire-serial', + 'bin/vampire-parallel', + ], + 'dirs': [ + 'bin', + 'examples', + ] +} + +sanity_check_commands = [ + 'cd %(installdir)s/examples && vampire-serial', +] + +moduleclass = 'chem' diff --git a/easybuild/easyconfigs/v/VSCode/VSCode-1.88.1.eb b/easybuild/easyconfigs/v/VSCode/VSCode-1.88.1.eb new file mode 100644 index 00000000000..5eb26c94f86 --- /dev/null +++ b/easybuild/easyconfigs/v/VSCode/VSCode-1.88.1.eb @@ -0,0 +1,30 @@ +easyblock = 'Tarball' + +name = 'VSCode' +version = '1.88.1' +local_version_id = '1712770462' + +homepage = 'https://code.visualstudio.com/' +description = ''' + Visual Studio Code is a lightweight but powerful source code editor + which runs on your desktop and is available for Windows, macOS and + Linux. It comes with built-in support for JavaScript, TypeScript and + Node.js and has a rich ecosystem of extensions for other languages + and runtimes (such as C++, C#, Java, Python, PHP, Go, .NET). Begin + your journey with VS Code with these introductory videos. +''' + +toolchain = {'name': 'system', 'version': 'system'} + +source_urls = ['https://code.visualstudio.com/sha/download?build=stable&os=linux-x64&'] +sources = ['code-stable-x64-%s.tar.gz' % local_version_id] +checksums = [None] # the tarballs are not stable + +modaliases = {'vscode': '%(installdir)s/bin/code'} + +sanity_check_paths = { + 'files': ['code', 'bin/code'], + 'dirs': ['bin', 'locales', 'resources'] +} + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/v/VTK/VTK-9.3.0-foss-2023b.eb b/easybuild/easyconfigs/v/VTK/VTK-9.3.0-foss-2023b.eb new file mode 100644 index 00000000000..8a0452f863f --- /dev/null +++ b/easybuild/easyconfigs/v/VTK/VTK-9.3.0-foss-2023b.eb @@ -0,0 +1,92 @@ +## +# Authors:: +# * Fotis Georgatos +# * Robert Mijakovic +## + +easyblock = 'CMakeNinja' + +name = 'VTK' +version = '9.3.0' + +homepage = 'https://www.vtk.org' +description = """The Visualization Toolkit (VTK) is an open-source, freely available software system for + 3D computer graphics, image processing and visualization. VTK consists of a C++ class library and several + interpreted interface layers including Tcl/Tk, Java, and Python. VTK supports a wide variety of visualization + algorithms including: scalar, vector, tensor, texture, and volumetric methods; and advanced modeling techniques + such as: implicit modeling, polygon reduction, mesh smoothing, cutting, contouring, and Delaunay triangulation.""" + +toolchain = {'name': 'foss', 'version': '2023b'} +toolchainopts = {'usempi': True} + +source_urls = ['https://www.vtk.org/files/release/%(version_major_minor)s'] +sources = [ + SOURCE_TAR_GZ, + '%(name)sData-%(version)s.tar.gz', +] +patches = [('vtk-version.egg-info', '.')] +checksums = [ + {'VTK-9.3.0.tar.gz': 'fdc7b9295225b34e4fdddc49cd06e66e94260cb00efee456e0f66568c9681be9'}, + {'VTKData-9.3.0.tar.gz': 'f82142dd327e995c9536c1003e1370bb4092c96f23edb8119d16d2411ef35dc3'}, + {'vtk-version.egg-info': '787b82415ae7a4a1f815b4db0e25f7abc809a05fc85d7d219627f3a7e5d3867b'}, +] + +builddependencies = [ + ('CMake', '3.27.6'), + ('Ninja', '1.11.1'), +] + +dependencies = [ + ('Python', '3.11.5'), + ('SciPy-bundle', '2023.11'), + ('XZ', '5.4.4'), + ('libGLU', '9.0.3'), + ('X11', '20231019'), +] + +separate_build_dir = True + +# OpenGL +configopts = "-DOPENGL_glu_LIBRARY=$EBROOTLIBGLU/lib/libGLU.%s " % SHLIB_EXT +configopts += "-DOPENGL_gl_LIBRARY=$EBROOTMESA/lib/libGL.%s " % SHLIB_EXT +configopts += "-DOPENGL_INCLUDE_DIR=$EBROOTMESA/include " +# Python +configopts += "-DVTK_WRAP_PYTHON=ON -DVTK_PYTHON_VERSION=3 -DVTK_PYTHON_OPTIONAL_LINK=OFF " +configopts += "-DPython3_EXECUTABLE=$EBROOTPYTHON/bin/python3 " +configopts += "-DPython3_INCLUDE_DIR=$EBROOTPYTHON/include/python%(pyshortver)s " +configopts += "-DPython3_LIBRARY=$EBROOTPYTHON/lib/libpython%(pyshortver)s.so " +# Other +configopts += "-DVTK_USE_MPI=ON " +configopts += "-DCMAKE_INSTALL_LIBDIR=lib" + +preinstallopts = "export PYTHONPATH=%(installdir)s/lib/python%(pyshortver)s/site-packages:$PYTHONPATH && " + +# Install a egg-info file so VTK is more python friendly, required for mayavi +local_egg_info_src = '%(builddir)s/VTK-%(version)s/vtk-version.egg-info' +local_egg_info_dest = '%(installdir)s/lib/python%(pyshortver)s/site-packages/vtk-%(version)s.egg-info' +postinstallcmds = [ + 'sed "s/#VTK_VERSION#/%%(version)s/" %s > %s' % (local_egg_info_src, local_egg_info_dest), +] + +modextrapaths = {'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages']} + +local_vtk_exec = ['vtk%s-%%(version_major_minor)s' % x + for x in ['WrapJava', 'ParseJava', 'WrapPythonInit', 'WrapPython', 'WrapHierarchy']] +local_vtk_exec += ['vtkpython'] +local_vtk_libs = ['CommonCore', 'IONetCDF', 'ParallelCore', 'RenderingOpenGL2'] + +sanity_check_paths = { + 'files': ['bin/%s' % x for x in local_vtk_exec] + ['include/vtk-%(version_major_minor)s/vtkMPI.h'] + + ['lib/libvtk%s-%%(version_major_minor)s.%s' % (l, SHLIB_EXT) for l in local_vtk_libs], + 'dirs': ['lib/python%(pyshortver)s/site-packages/', 'include/vtk-%(version_major_minor)s'], +} + +sanity_check_commands = [ + "python -c 'import %(namelower)s'", + "python -c 'import pkg_resources; pkg_resources.get_distribution(\"vtk\")'", + # make sure that VTK Python libraries link to libpython (controlled via DVTK_PYTHON_OPTIONAL_LINK=OFF), + # see https://gitlab.kitware.com/vtk/vtk/-/issues/17881 + "ldd $EBROOTVTK/lib/libvtkPythonContext2D-%%(version_major_minor)s.%s | grep /libpython" % SHLIB_EXT, +] + +moduleclass = 'vis' diff --git a/easybuild/easyconfigs/v/Valgrind/Valgrind-3.23.0-gompi-2023b.eb b/easybuild/easyconfigs/v/Valgrind/Valgrind-3.23.0-gompi-2023b.eb new file mode 100644 index 00000000000..c0874657c57 --- /dev/null +++ b/easybuild/easyconfigs/v/Valgrind/Valgrind-3.23.0-gompi-2023b.eb @@ -0,0 +1,46 @@ +easyblock = 'ConfigureMake' + +name = 'Valgrind' +version = '3.23.0' + +homepage = 'https://valgrind.org' +description = "Valgrind: Debugging and profiling tools" + +toolchain = {'name': 'gompi', 'version': '2023b'} +toolchainopts = {'optarch': True} + +source_urls = [ + 'https://sourceware.org/pub/valgrind/', + 'https://www.mirrorservice.org/sites/sourceware.org/pub/valgrind/', +] +sources = [SOURCELOWER_TAR_BZ2] +checksums = ['c5c34a3380457b9b75606df890102e7df2c702b9420c2ebef9540f8b5d56264d'] + +dependencies = [ + ('Perl', '5.38.0'), + ('Python', '3.11.5'), +] + +configopts = ' --with-mpicc="$MPICC"' + +local_binaries = [ + 'callgrind_annotate', 'callgrind_control', 'cg_annotate', 'cg_diff', + 'cg_merge', 'ms_print', 'valgrind', 'valgrind-listener', 'vgdb' +] +local_archs = ('amd64', 'arm64', 'ppc64le') + +sanity_check_paths = { + 'files': ['bin/%s' % x for x in local_binaries] + + [['lib/valgrind/libmpiwrap-%s-linux.%s' % (a, SHLIB_EXT) for a in local_archs]], + 'dirs': [] +} + +sanity_check_commands = [ + 'callgrind_annotate --version 2>&1 | grep "%(version)s"', + 'cg_annotate --help', + 'ms_print --version 2>&1 | grep "%(version)s"', + 'valgrind --help', + 'vgdb --help', +] + +moduleclass = 'debugger' diff --git a/easybuild/easyconfigs/v/VisPy/VisPy-0.14.1-foss-2023a.eb b/easybuild/easyconfigs/v/VisPy/VisPy-0.14.1-foss-2023a.eb new file mode 100644 index 00000000000..cc273eb0895 --- /dev/null +++ b/easybuild/easyconfigs/v/VisPy/VisPy-0.14.1-foss-2023a.eb @@ -0,0 +1,40 @@ +easyblock = 'PythonBundle' + +name = 'VisPy' +version = '0.14.1' + +homepage = 'https://vispy.org' +description = """VisPy is a high-performance interactive 2D/3D data visualization library + leveraging the computational power of modern Graphics Processing Units (GPUs) through the + OpenGL library to display very large datasets.""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +dependencies = [ + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), + ('PyQt5', '5.15.10'), + ('matplotlib', '3.7.2'), # for kiwisolver + ('freetype', '2.13.0') +] + +use_pip = True + +exts_list = [ + ('freetype_py', '2.4.0', { + 'modulename': 'freetype', + 'sources': ['freetype-py-2.4.0.zip'], + 'checksums': ['8ad81195d2f8f339aba61700cebfbd77defad149c51f59b75a2a5e37833ae12e'], + }), + ('hsluv', '5.0.3', { + 'checksums': ['2586bcb61d29d76e89e563a6836df24d86939961c9657f129a59f7617de45377'], + }), + ('vispy', version, { + 'checksums': ['249a50979fc00a8b65109283354dcf12cf415c1a5dcf9821e113f6e590b9b93c'], + 'use_pip': True + }), +] + +sanity_pip_check = True + +moduleclass = 'vis' diff --git a/easybuild/easyconfigs/w/WGDgc/WGDgc-1.3-foss-2023a-R-4.3.2.eb b/easybuild/easyconfigs/w/WGDgc/WGDgc-1.3-foss-2023a-R-4.3.2.eb new file mode 100644 index 00000000000..d4a361b0b15 --- /dev/null +++ b/easybuild/easyconfigs/w/WGDgc/WGDgc-1.3-foss-2023a-R-4.3.2.eb @@ -0,0 +1,39 @@ +easyblock = 'Bundle' + +name = 'WGDgc' +version = '1.3' +versionsuffix = '-R-%(rver)s' + +homepage = 'https://github.com/cecileane/WGDgc' +description = "Analysis of whole genome duplications (WGD) and triplications (WGT) using comparative gene count data" + +toolchain = {'name': 'foss', 'version': '2023a'} + +dependencies = [ + ('R', '4.3.2'), + ('R-bundle-CRAN', '2023.12'), +] + +exts_defaultclass = 'RPackage' + +exts_list = [ + ('phyext', '0.0.1', { + 'source_urls': ['https://cran.r-project.org/src/contrib/Archive/%(name)s'], + 'sources': ['%(name)s_%(version)s.tar.gz'], + 'checksums': ['b1e1d095034c17536a1a7ae7b203955d43fe13d403d5b772497d2c4cee93151e'], + }), + (name, version, { + 'source_urls': ['https://github.com/cecileane/WGDgc/archive/'], + 'sources': ['v%(version)s.tar.gz'], + 'checksums': ['bc4f938a47a8419f4cd43778bf558a7eb4c1b0af386eb78438020d0cfe0b68f0'], + }), +] + +sanity_check_paths = { + 'files': [], + 'dirs': [name], +} + +modextrapaths = {'R_LIBS_SITE': ''} + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/w/Wannier90/Wannier90-3.1.0-gomkl-2022a.eb b/easybuild/easyconfigs/w/Wannier90/Wannier90-3.1.0-gomkl-2022a.eb new file mode 100644 index 00000000000..3b0e4c6c179 --- /dev/null +++ b/easybuild/easyconfigs/w/Wannier90/Wannier90-3.1.0-gomkl-2022a.eb @@ -0,0 +1,35 @@ +easyblock = 'MakeCp' + +name = 'Wannier90' +version = '3.1.0' + +homepage = 'https://www.wannier.org' +description = """A tool for obtaining maximally-localised Wannier functions""" + +toolchain = {'name': 'gomkl', 'version': '2022a'} +toolchainopts = {'usempi': True} + +github_account = 'wannier-developers' +source_urls = [GITHUB_LOWER_SOURCE] +sources = [{'download_filename': 'v%(version)s.tar.gz', 'filename': SOURCELOWER_TAR_GZ}] +patches = ['Wannier90_3x_ignore_makeinc.patch'] +checksums = [ + '40651a9832eb93dec20a8360dd535262c261c34e13c41b6755fa6915c936b254', # wannier90-3.1.0.tar.gz + '561c0d296e0e30b8bb303702cd6e41ded54c153d9b9e6cd9cab73858e5e2945e', # Wannier90_3x_ignore_makeinc.patch +] + +# The -fallow-argument-mismatch allows MPI communication calls to be +# called with arrays of different types at different places in the +# code. This otherwise cause an error in GCC 10.X +buildopts = 'all F90=$F90 MPIF90=$MPIF90 FCOPTS="$FFLAGS -fallow-argument-mismatch" LDOPTS="$FFLAGS" ' +buildopts += 'LIBDIR="$LAPACK_LIB_DIR" LIBS="$LIBLAPACK" ' +buildopts += 'COMMS=mpi' + +files_to_copy = [(['wannier90.x', 'postw90.x'], 'bin'), (['libwannier.a'], 'lib')] + +sanity_check_paths = { + 'files': ['bin/wannier90.x', 'bin/postw90.x', 'lib/libwannier.a'], + 'dirs': [] +} + +moduleclass = 'chem' diff --git a/easybuild/easyconfigs/w/wfdb/wfdb-4.1.2-foss-2022a.eb b/easybuild/easyconfigs/w/wfdb/wfdb-4.1.2-foss-2022a.eb new file mode 100644 index 00000000000..f80a2d11ffd --- /dev/null +++ b/easybuild/easyconfigs/w/wfdb/wfdb-4.1.2-foss-2022a.eb @@ -0,0 +1,59 @@ +easyblock = 'PythonBundle' + +name = 'wfdb' +version = '4.1.2' + +homepage = 'https://wfdb.readthedocs.io/en/latest/' +description = """The native Python waveform-database (WFDB) package. + A library of tools for reading, writing, and processing WFDB signals and annotations.""" + +toolchain = {'name': 'foss', 'version': '2022a'} + +builddependencies = [ + ('poetry', '1.2.2'), +] + +dependencies = [ + ('Python', '3.10.4'), + ('SciPy-bundle', '2022.05'), + ('cffi', '1.15.1'), + ('matplotlib', '3.5.2'), + ('libsndfile', '1.1.0'), +] + +use_pip = True +sanity_pip_check = True + +exts_list = [ + ('soundfile', '0.12.1', { + 'source_tmpl': SOURCE_WHL, + 'checksums': ['828a79c2e75abab5359f780c81dccd4953c45a2c4cd4f05ba3e233ddf984b882'], + }), + ('certifi', '2024.2.2', { + 'source_tmpl': SOURCE_PY3_WHL, + 'checksums': ['dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1'], + }), + ('idna', '3.7', { + 'source_tmpl': SOURCE_PY3_WHL, + 'checksums': ['82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0'], + }), + ('charset_normalizer', '3.3.2', { + 'source_tmpl': SOURCE_PY3_WHL, + 'checksums': ['3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc'], + }), + # not the latest version to avoid hatchling + ('urllib3', '1.26.18', { + 'source_tmpl': SOURCE_WHL, + 'checksums': ['34b97092d7e0a3a8cf7cd10e386f401b3737364026c45e622aa02903dffe0f07'], + }), + ('requests', '2.31.0', { + 'source_tmpl': SOURCE_PY3_WHL, + 'checksums': ['58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f'], + }), + (name, version, { + 'source_tmpl': SOURCE_PY3_WHL, + 'checksums': ['57ef64309ec7793bb11611c646d129f0b1936b598947fed8c14f90a35665053d'], + }), +] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/w/wget/wget-1.24.5-GCCcore-12.3.0.eb b/easybuild/easyconfigs/w/wget/wget-1.24.5-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..ea4438bce14 --- /dev/null +++ b/easybuild/easyconfigs/w/wget/wget-1.24.5-GCCcore-12.3.0.eb @@ -0,0 +1,50 @@ +easyblock = 'ConfigureMake' + +name = 'wget' +version = '1.24.5' + +homepage = 'https://www.gnu.org/software/wget' +description = """GNU Wget is a free software package for retrieving files using HTTP, HTTPS and FTP, + the most widely-used Internet protocols. It is a non-interactive commandline tool, + so it may easily be called from scripts, cron jobs, terminals without X-Windows support, etc.""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +source_urls = [GNU_SOURCE] +sources = [SOURCE_TAR_GZ] +checksums = [ + {SOURCE_TAR_GZ: 'fa2dc35bab5184ecbc46a9ef83def2aaaa3f4c9f3c97d4bd19dcb07d4da637de'}, +] + +builddependencies = [ + ('binutils', '2.40'), + ('pkgconf', '1.9.5'), + ('Perl', '5.36.1'), +] +dependencies = [ + ('PCRE', '8.45'), + ('libidn2', '2.3.7'), + ('zlib', '1.2.13'), + ('OpenSSL', '1.1', '', SYSTEM), + # OS dependency should be preferred if the os version is more recent then this version, + # it's nice to have an up to date gnutls for security reasons + # ('GnuTLS', '3.7.1'), +] + +# make sure pkgconfig picks up system packages (OpenSSL & co) +local_pc = "%(sysroot)s/usr/lib64/pkgconfig:" +local_pc += "%(sysroot)s/usr/lib/pkgconfig:" +local_pc += "%(sysroot)s/usr/lib/x86_64-linux-gnu/pkgconfig" +preconfigopts = "export PKG_CONFIG_PATH=%s && " % local_pc +configopts = '--with-ssl=openssl ' + +# Optionally, you can use gnutls (default) instead of OpenSSL. +# Do not forget to comment out configopts in that case. +# osdependencies = [('gnutls-devel', 'gnutls-dev', 'libgnutls-devel')] + +sanity_check_paths = { + 'files': ['bin/%(name)s'], + 'dirs': [], +} + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/x/XZ/XZ-5.4.5-GCCcore-13.3.0.eb b/easybuild/easyconfigs/x/XZ/XZ-5.4.5-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..4e11c10a179 --- /dev/null +++ b/easybuild/easyconfigs/x/XZ/XZ-5.4.5-GCCcore-13.3.0.eb @@ -0,0 +1,34 @@ +easyblock = 'ConfigureMake' + +name = 'XZ' +version = '5.4.5' + +homepage = 'https://tukaani.org/xz/' +description = "xz: XZ utilities" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = ['https://tukaani.org/xz/'] +sources = [SOURCELOWER_TAR_BZ2] +checksums = ['8ccf5fff868c006f29522e386fb4c6a1b66463fbca65a4cfc3c4bd596e895e79'] + +builddependencies = [ + # use gettext built with system toolchain as build dep to avoid cyclic dependency (XZ -> gettext -> libxml2 -> XZ) + ('gettext', '0.22.5', '', SYSTEM), + ('binutils', '2.42'), +] + +# may become useful in non-x86 archs +# configopts = ' --disable-assembler ' + +sanity_check_paths = { + 'files': ['bin/lzmainfo', 'bin/unxz', 'bin/xz'], + 'dirs': [] +} + +sanity_check_commands = [ + "xz --help", + "unxz --help", +] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/x/xorg-macros/xorg-macros-1.20.1-GCCcore-13.3.0.eb b/easybuild/easyconfigs/x/xorg-macros/xorg-macros-1.20.1-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..9d1905e4d33 --- /dev/null +++ b/easybuild/easyconfigs/x/xorg-macros/xorg-macros-1.20.1-GCCcore-13.3.0.eb @@ -0,0 +1,27 @@ +easyblock = 'ConfigureMake' + +name = 'xorg-macros' +version = '1.20.1' + +homepage = 'https://gitlab.freedesktop.org/xorg/util/macros' +description = """X.org macros utilities.""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = ['https://gitlab.freedesktop.org/xorg/util/macros/-/archive/util-macros-%(version)s'] +sources = ['macros-util-macros-%(version)s.tar.gz'] +checksums = ['95c4331a2a7f4882374b9bbc845e522a4f1c77d95f495176300bf91d905c9b60'] + +builddependencies = [ + ('binutils', '2.42'), + ('Autotools', '20231222'), +] + +preconfigopts = './autogen.sh && ' + +sanity_check_paths = { + 'files': ['share/pkgconfig/xorg-macros.pc'], + 'dirs': [], +} + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/x/xprop/xprop-1.2.7-GCCcore-13.2.0.eb b/easybuild/easyconfigs/x/xprop/xprop-1.2.7-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..463d1606214 --- /dev/null +++ b/easybuild/easyconfigs/x/xprop/xprop-1.2.7-GCCcore-13.2.0.eb @@ -0,0 +1,32 @@ +easyblock = 'ConfigureMake' + +name = 'xprop' +version = '1.2.7' + +homepage = "https://www.x.org/wiki/" +description = """The xprop utility is for displaying window and font properties in an X server. + One window or font is selected using the command line arguments or possibly + in the case of a window, by clicking on the desired window. A list of + properties is then given, possibly with formatting information.""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +source_urls = ['https://ftp.x.org/archive/individual/app/'] +sources = [SOURCE_TAR_GZ] +checksums = ['11c06a876b0aa0bfac6cbfe4b3ebe1f5062f8b39b9b1b6c136a8629265f134b6'] + +builddependencies = [ + ('binutils', '2.40'), + ('pkgconf', '2.0.3'), +] + +dependencies = [ + ('X11', '20231019'), +] + +sanity_check_paths = { + 'files': ['bin/xprop'], + 'dirs': [], +} + +moduleclass = 'vis' diff --git a/easybuild/easyconfigs/x/xtb/xtb-6.6.1-gfbf-2022b.eb b/easybuild/easyconfigs/x/xtb/xtb-6.6.1-gfbf-2022b.eb new file mode 100644 index 00000000000..7d54b0b36b1 --- /dev/null +++ b/easybuild/easyconfigs/x/xtb/xtb-6.6.1-gfbf-2022b.eb @@ -0,0 +1,41 @@ +easyblock = 'MesonNinja' + +name = 'xtb' +version = '6.6.1' + +homepage = 'https://xtb-docs.readthedocs.io' +description = """ xtb - An extended tight-binding semi-empirical program package. """ + +toolchain = {'name': 'gfbf', 'version': '2022b'} + +github_account = 'grimme-lab' +source_urls = [GITHUB_LOWER_SOURCE] +sources = [{'download_filename': 'v%(version)s.tar.gz', 'filename': SOURCE_TAR_GZ}] +checksums = ['df9a9fbcbf685a94ba6e1a97a6fe6a8530227ea380a1507cb758e72907542dfe'] + +builddependencies = [ + ('Meson', '0.64.0'), + ('Ninja', '1.11.1'), + ('pkgconf', '1.9.3'), +] + +configopts = "-Dlapack='custom' " +configopts += "-Dcustom_libraries='flexiblas' " +configopts += "--buildtype release " + +runtest = 'meson' +testopts = 'test -C %(builddir)s/easybuild_obj -t 60' # Ensure test don't timeout + +sanity_check_paths = { + 'files': ['bin/xtb', 'include/xtb.h'] + ['lib/libxtb.%s' % e for e in ('a', SHLIB_EXT)], + 'dirs': ['share'], +} + +sanity_check_commands = ["xtb --help"] + +modextravars = { + 'XTBHOME': '%(installdir)s', + 'XTBPATH': '%(installdir)s', +} + +moduleclass = 'chem' diff --git a/easybuild/easyconfigs/x/xtb/xtb-6.7.0-gfbf-2023a.eb b/easybuild/easyconfigs/x/xtb/xtb-6.7.0-gfbf-2023a.eb new file mode 100644 index 00000000000..97ce290bfe0 --- /dev/null +++ b/easybuild/easyconfigs/x/xtb/xtb-6.7.0-gfbf-2023a.eb @@ -0,0 +1,42 @@ +easyblock = 'MesonNinja' + +name = 'xtb' +version = '6.7.0' + +homepage = 'https://xtb-docs.readthedocs.io' +description = """ xtb - An extended tight-binding semi-empirical program package. """ + +toolchain = {'name': 'gfbf', 'version': '2023a'} + +github_account = 'grimme-lab' +source_urls = [GITHUB_LOWER_SOURCE] +sources = [{'download_filename': 'v%(version)s.tar.gz', 'filename': SOURCE_TAR_GZ}] +checksums = ['9cf1997064d2d5bde7fae4cec6f873469602e6554872ad79de4079f022855ae2'] + +builddependencies = [ + ('Meson', '1.1.1'), + ('Ninja', '1.11.1'), + ('pkgconf', '1.9.5'), +] + +configopts = "-Dlapack='custom' " +configopts += "-Dcustom_libraries='flexiblas' " +configopts += "--buildtype release " + +runtest = 'meson' +pretestopts = 'export OMP_NUM_THREADS=2 && ' +testopts = 'test -C %(builddir)s/easybuild_obj -t 60' # Ensure test don't timeout + +sanity_check_paths = { + 'files': ['bin/xtb', 'include/xtb.h'] + ['lib/libxtb.%s' % e for e in ('a', SHLIB_EXT)], + 'dirs': ['share'], +} + +sanity_check_commands = ["xtb --help"] + +modextravars = { + 'XTBHOME': '%(installdir)s', + 'XTBPATH': '%(installdir)s', +} + +moduleclass = 'chem' diff --git a/easybuild/easyconfigs/x/xxHash/xxHash-0.8.2-GCCcore-13.2.0.eb b/easybuild/easyconfigs/x/xxHash/xxHash-0.8.2-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..75ee3c66d79 --- /dev/null +++ b/easybuild/easyconfigs/x/xxHash/xxHash-0.8.2-GCCcore-13.2.0.eb @@ -0,0 +1,31 @@ +easyblock = 'ConfigureMake' + +name = 'xxHash' +version = '0.8.2' + +homepage = 'https://cyan4973.github.io/xxHash' +description = "xxHash is an extremely fast non-cryptographic hash algorithm, working at RAM speed limit." + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +source_urls = ['https://github.com/Cyan4973/xxHash/archive/refs/tags/'] +sources = ['v%(version)s.tar.gz'] +checksums = ['baee0c6afd4f03165de7a4e67988d16f0f2b257b51d0e3cb91909302a26a79c4'] + +builddependencies = [ + ('binutils', '2.40'), +] + +skipsteps = ['configure'] + +installopts = "PREFIX=%(installdir)s" + +sanity_check_paths = { + 'files': ['bin/xxhsum', 'include/xxh3.h', 'include/xxhash.h', + 'lib/libxxhash.a', 'lib/libxxhash.%s' % SHLIB_EXT, 'lib/pkgconfig/libxxhash.pc'], + 'dirs': ['share/man'], +} + +sanity_check_commands = ["xxhsum --help"] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/x/xxd/xxd-9.1.0307-GCCcore-13.2.0.eb b/easybuild/easyconfigs/x/xxd/xxd-9.1.0307-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..32d7900cbf4 --- /dev/null +++ b/easybuild/easyconfigs/x/xxd/xxd-9.1.0307-GCCcore-13.2.0.eb @@ -0,0 +1,37 @@ +# Last contribution from the NIHR Biomedical Research Centre +# Guy's and St Thomas' NHS Foundation Trust and King's College London +# uploaded by J. Sassmannshausen + +easyblock = 'MakeCp' + +name = 'xxd' +version = '9.1.0307' + +homepage = 'https://www.vim.org' +description = """xxd is part of the VIM package and this will only install xxd, not vim! +xxd converts to/from hexdumps of binary files.""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +source_urls = ['https://github.com/vim/vim/archive/refs/tags'] +sources = ['v%(version)s.tar.gz'] +checksums = ['addfe566e4f531f169e0dd0f63747bcf6871a64dadd46dc4b8e539b508187c72'] + +builddependencies = [ + ('binutils', '2.40'), +] + +start_dir = 'src/xxd' + +files_to_copy = [ + (['xxd'], 'bin'), +] + +sanity_check_paths = { + 'files': ['bin/xxd'], + 'dirs': [], +} + +sanity_check_commands = ["xxd -h 2>&1 | grep -A 4 '^Usage:'"] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/y/YACS/YACS-0.1.8-GCCcore-12.3.0.eb b/easybuild/easyconfigs/y/YACS/YACS-0.1.8-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..058b8993dcf --- /dev/null +++ b/easybuild/easyconfigs/y/YACS/YACS-0.1.8-GCCcore-12.3.0.eb @@ -0,0 +1,31 @@ +easyblock = 'PythonPackage' + +name = 'YACS' +version = '0.1.8' + +homepage = "https://github.com/rbgirshick/yacs" +description = """YACS was created as a lightweight library to define and +manage system configurations, such as those commonly found in software +designed for scientific experimentation. These "configurations" +typically cover concepts like hyperparameters used in training a machine +learning model or configurable model hyperparameters, such as the depth +of a convolutional neural network.""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +sources = [SOURCELOWER_TAR_GZ] +checksums = ['efc4c732942b3103bea904ee89af98bcd27d01f0ac12d8d4d369f1e7a2914384'] + +builddependencies = [('binutils', '2.40')] + +dependencies = [ + ('Python', '3.11.3'), + ('PyYAML', '6.0'), +] + +use_pip = True +download_dep_fail = True + +sanity_pip_check = True + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/y/yaml-cpp/yaml-cpp-0.8.0-GCCcore-13.2.0.eb b/easybuild/easyconfigs/y/yaml-cpp/yaml-cpp-0.8.0-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..dc041455a41 --- /dev/null +++ b/easybuild/easyconfigs/y/yaml-cpp/yaml-cpp-0.8.0-GCCcore-13.2.0.eb @@ -0,0 +1,29 @@ +# This easyconfig was created by the BEAR Software team at the University of Birmingham. +easyblock = 'CMakeMake' +name = 'yaml-cpp' +version = "0.8.0" + +homepage = "https://github.com/jbeder/yaml-cpp" +description = """yaml-cpp is a YAML parser and emitter in C++ matching the YAML 1.2 spec""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/jbeder/%(name)s/archive/'] +sources = ['%(version)s.tar.gz'] + +checksums = [ + {'0.8.0.tar.gz': 'fbe74bbdcee21d656715688706da3c8becfd946d92cd44705cc6098bb23b3a16'}, +] + +builddependencies = [ + ('binutils', '2.40'), + ('CMake', '3.27.6') +] + +sanity_check_paths = { + 'files': ['lib/libyaml-cpp.a', 'include/yaml-cpp/yaml.h'], + 'dirs': ['lib', 'include'], +} + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/z/Zip/Zip-3.0-GCCcore-13.3.0.eb b/easybuild/easyconfigs/z/Zip/Zip-3.0-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..e85d9157eaf --- /dev/null +++ b/easybuild/easyconfigs/z/Zip/Zip-3.0-GCCcore-13.3.0.eb @@ -0,0 +1,40 @@ +easyblock = 'ConfigureMake' + +name = 'Zip' +version = '3.0' + +homepage = 'http://www.info-zip.org/Zip.html' +description = """Zip is a compression and file packaging/archive utility. +Although highly compatible both with PKWARE's PKZIP and PKUNZIP +utilities for MS-DOS and with Info-ZIP's own UnZip, our primary objectives +have been portability and other-than-MSDOS functionality""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = ['https://download.sourceforge.net/infozip'] +sources = ['%(namelower)s%(version_major)s%(version_minor)s.tar.gz'] +checksums = ['f0e8bb1f9b7eb0b01285495a2699df3a4b766784c1765a8f1aeedf63c0806369'] + +builddependencies = [ + ('binutils', '2.42'), +] +dependencies = [ + ('bzip2', '1.0.8'), +] + +skipsteps = ['configure'] + +buildopts = '-f unix/Makefile CC="$CC" IZ_OUR_BZIP2_DIR=$EBROOTBZIP2 ' +buildopts += 'CFLAGS="$CFLAGS -I. -DUNIX -DBZIP2_SUPPORT -DUNICODE_SUPPORT -DLARGE_FILE_SUPPORT" ' +buildopts += 'generic_gcc' + +installopts = '-f unix/Makefile prefix=%(installdir)s ' + +sanity_check_paths = { + 'files': ['bin/zip', 'bin/zipcloak', 'bin/zipnote', 'bin/zipsplit'], + 'dirs': ['man/man1'] +} + +sanity_check_commands = ["zip --version"] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/z/Zopfli/Zopfli-1.0.3-GCCcore-12.3.0.eb b/easybuild/easyconfigs/z/Zopfli/Zopfli-1.0.3-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..8b4417a9e34 --- /dev/null +++ b/easybuild/easyconfigs/z/Zopfli/Zopfli-1.0.3-GCCcore-12.3.0.eb @@ -0,0 +1,37 @@ +# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild +# Updated: Denis Kristak +# Updated: Thomas Hoffmann (EMBL), Denis Kristak (Inuits) +easyblock = 'CMakeMake' + +name = 'Zopfli' +version = '1.0.3' + +homepage = 'https://github.com/google/zopfli' +description = """Zopfli Compression Algorithm is a compression library programmed in C to perform +very good, but slow, deflate or zlib compression.""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/google/zopfli/archive/refs/tags/'] +sources = ['%(namelower)s-%(version)s.tar.gz'] +checksums = ['e955a7739f71af37ef3349c4fa141c648e8775bceb2195be07e86f8e638814bd'] + +builddependencies = [ + ('CMake', '3.26.3'), + ('binutils', '2.40'), +] + +configopts = [ + '-DBUILD_SHARED_LIBS=ON', + '-DBUILD_SHARED_LIBS=OFF', +] + +sanity_check_paths = { + 'files': ['bin/zopfli', 'include/zopfli.h', 'lib/libzopfli.a', 'lib/libzopfli.%s' % SHLIB_EXT], + 'dirs': [], +} + +sanity_check_commands = ["zopfli --help"] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/z/zarr/zarr-2.17.1-foss-2023a.eb b/easybuild/easyconfigs/z/zarr/zarr-2.17.1-foss-2023a.eb new file mode 100644 index 00000000000..9074cf08ac3 --- /dev/null +++ b/easybuild/easyconfigs/z/zarr/zarr-2.17.1-foss-2023a.eb @@ -0,0 +1,36 @@ +easyblock = "PythonBundle" + +name = 'zarr' +version = '2.17.1' + +homepage = 'https://zarr.readthedocs.io/en/stable/' +description = """Zarr is a Python package providing an implementation of compressed, +chunked, N-dimensional arrays, designed for use in parallel computing.""" + +toolchain = {'name': 'foss', 'version': '2023a'} + +dependencies = [ + ('Python', '3.11.3'), + ('SciPy-bundle', '2023.07'), + ('py-cpuinfo', '9.0.0'), +] + +use_pip = True +sanity_pip_check = True + +exts_list = [ + ('numcodecs', '0.12.1', { + 'checksums': ['05d91a433733e7eef268d7e80ec226a0232da244289614a8f3826901aec1098e'], + }), + ('fasteners', '0.19', { + 'checksums': ['b4f37c3ac52d8a445af3a66bce57b33b5e90b97c696b7b984f530cf8f0ded09c'], + }), + ('asciitree', '0.3.3', { + 'checksums': ['4aa4b9b649f85e3fcb343363d97564aa1fb62e249677f2e18a96765145cc0f6e'], + }), + (name, version, { + 'checksums': ['564b3aa072122546fe69a0fa21736f466b20fad41754334b62619f088ce46261'], + }), +] + +moduleclass = 'data' diff --git a/easybuild/easyconfigs/z/zfp/zfp-1.0.1-GCCcore-12.3.0.eb b/easybuild/easyconfigs/z/zfp/zfp-1.0.1-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..94719046584 --- /dev/null +++ b/easybuild/easyconfigs/z/zfp/zfp-1.0.1-GCCcore-12.3.0.eb @@ -0,0 +1,40 @@ +# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild +# Author: Denis Kristak +# Update: Thomas Hoffmann (EMBL) +easyblock = 'MakeCp' + +name = 'zfp' +version = '1.0.1' + +homepage = 'https://github.com/LLNL/zfp' +description = """zfp is a compressed format for representing multidimensional floating-point and integer arrays. +zfp provides compressed-array classes that support high throughput read and write random access to individual array +elements. zfp also supports serial and parallel (OpenMP and CUDA) compression of whole arrays, e.g., for applications +that read and write large data sets to and from disk.""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/LLNL/zfp/archive'] +sources = ['%(version)s.tar.gz'] +checksums = ['4984db6a55bc919831966dd17ba5e47ca7ac58668f4fd278ebd98cd2200da66f'] + +builddependencies = [ + ('binutils', '2.40'), +] + +prebuildopts = "sed -i 's/FLAGS = -O3/FLAGS = $CFLAGS/g' Makefile && " +buildopts = 'ZFP_WITH_OPENMP=1' + +runtest = 'test' + +files_to_copy = ['bin', 'include', 'lib'] + +sanity_check_paths = { + 'files': ['bin/zfp', 'bin/testzfp', 'include/zfp.h', 'lib/libzfp.a'], + 'dirs': ['include/zfp'], +} + +sanity_check_commands = ["zfp --help 2>&1 | grep 'Usage: zfp'"] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/z/zlib-ng/zlib-ng-2.1.6-GCCcore-12.3.0.eb b/easybuild/easyconfigs/z/zlib-ng/zlib-ng-2.1.6-GCCcore-12.3.0.eb new file mode 100644 index 00000000000..c29b31ffb34 --- /dev/null +++ b/easybuild/easyconfigs/z/zlib-ng/zlib-ng-2.1.6-GCCcore-12.3.0.eb @@ -0,0 +1,30 @@ +# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild +# Updated: Denis Kristak (Inuits) +# Updated: Thomas Hoffmann (EMBL), Denis Kristak (Inuits) +easyblock = 'CMakeMake' + +name = 'zlib-ng' +version = '2.1.6' + +homepage = 'https://github.com/zlib-ng/zlib-ng' +description = """zlib data compression library for the next generation systems""" + +toolchain = {'name': 'GCCcore', 'version': '12.3.0'} + +source_urls = ['https://github.com/zlib-ng/zlib-ng/archive/'] +sources = ['%(version)s.tar.gz'] +checksums = ['a5d504c0d52e2e2721e7e7d86988dec2e290d723ced2307145dedd06aeb6fef2'] + +builddependencies = [ + ('CMake', '3.26.3'), + ('binutils', '2.40'), +] + +configopts = ' -DZLIB_ENABLE_TESTS=True ' + +sanity_check_paths = { + 'files': ['include/zconf-ng.h', 'include/zlib-ng.h', 'lib/libz-ng.a', 'lib/libz-ng.%s' % SHLIB_EXT], + 'dirs': [], +} + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/z/zlib/zlib-1.3.1-GCCcore-13.3.0.eb b/easybuild/easyconfigs/z/zlib/zlib-1.3.1-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..3f9304a080e --- /dev/null +++ b/easybuild/easyconfigs/z/zlib/zlib-1.3.1-GCCcore-13.3.0.eb @@ -0,0 +1,26 @@ +easyblock = 'ConfigureMake' + +name = 'zlib' +version = '1.3.1' + +homepage = 'https://www.zlib.net/' +description = """zlib is designed to be a free, general-purpose, legally unencumbered -- that is, + not covered by any patents -- lossless data-compression library for use on virtually any + computer hardware and operating system.""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://zlib.net/fossils'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['9a93b2b7dfdac77ceba5a558a580e74667dd6fede4585b91eefb60f03b72df23'] + +# use same binutils version that was used when building GCC toolchain +builddependencies = [('binutils', '2.42', '', SYSTEM)] + +sanity_check_paths = { + 'files': ['include/zconf.h', 'include/zlib.h', 'lib/libz.a', 'lib/libz.%s' % SHLIB_EXT], + 'dirs': [], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/z/zlib/zlib-1.3.1-GCCcore-14.1.0.eb b/easybuild/easyconfigs/z/zlib/zlib-1.3.1-GCCcore-14.1.0.eb new file mode 100644 index 00000000000..39db9b778c4 --- /dev/null +++ b/easybuild/easyconfigs/z/zlib/zlib-1.3.1-GCCcore-14.1.0.eb @@ -0,0 +1,27 @@ +easyblock = 'ConfigureMake' + +name = 'zlib' +version = '1.3.1' + +homepage = 'https://www.zlib.net/' +description = """zlib is designed to be a free, general-purpose, legally unencumbered -- that is, + not covered by any patents -- lossless data-compression library for use on virtually any + computer hardware and operating system.""" + +toolchain = {'name': 'GCCcore', 'version': '14.1.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://zlib.net/fossils'] +sources = [SOURCELOWER_TAR_GZ] +# patches = ['zlib-%(version)s_fix-CC-logic-in-configure.patch'] +checksums = ['9a93b2b7dfdac77ceba5a558a580e74667dd6fede4585b91eefb60f03b72df23'] + +# use same binutils version that was used when building GCC toolchain +builddependencies = [('binutils', '2.42', '', SYSTEM)] + +sanity_check_paths = { + 'files': ['include/zconf.h', 'include/zlib.h', 'lib/libz.a', 'lib/libz.%s' % SHLIB_EXT], + 'dirs': [], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/z/zlib/zlib-1.3.1.eb b/easybuild/easyconfigs/z/zlib/zlib-1.3.1.eb new file mode 100644 index 00000000000..813ea85d0c2 --- /dev/null +++ b/easybuild/easyconfigs/z/zlib/zlib-1.3.1.eb @@ -0,0 +1,32 @@ +easyblock = 'ConfigureMake' + +name = 'zlib' +version = '1.3.1' + +homepage = 'https://www.zlib.net/' + +description = """ + zlib is designed to be a free, general-purpose, legally unencumbered -- that + is, not covered by any patents -- lossless data-compression library for use + on virtually any computer hardware and operating system. +""" + +toolchain = SYSTEM +toolchainopts = {'pic': True} + +source_urls = ['https://zlib.net/fossils/'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['9a93b2b7dfdac77ceba5a558a580e74667dd6fede4585b91eefb60f03b72df23'] + +# need to take care of $CFLAGS ourselves with SYSTEM toolchain +# we need to add -fPIC, but should also include -O* option to avoid +# compiling with -O0 (default for GCC) +buildopts = 'CFLAGS="-O2 -fPIC"' + +sanity_check_paths = { + 'files': ['include/zconf.h', 'include/zlib.h', 'lib/libz.a', + 'lib/libz.%s' % SHLIB_EXT], + 'dirs': [], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/z/zstd/zstd-1.5.6-GCCcore-13.3.0.eb b/easybuild/easyconfigs/z/zstd/zstd-1.5.6-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..259e352beef --- /dev/null +++ b/easybuild/easyconfigs/z/zstd/zstd-1.5.6-GCCcore-13.3.0.eb @@ -0,0 +1,41 @@ +easyblock = 'ConfigureMake' + +name = 'zstd' +version = '1.5.6' + +homepage = 'https://facebook.github.io/zstd' +description = """Zstandard is a real-time compression algorithm, providing high compression ratios. + It offers a very wide range of compression/speed trade-off, while being backed by a very fast decoder. + It also offers a special mode for small data, called dictionary compression, and can create dictionaries + from any sample set.""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +github_account = 'facebook' +source_urls = [GITHUB_SOURCE] +sources = ['v%(version)s.tar.gz'] +checksums = ['30f35f71c1203369dc979ecde0400ffea93c27391bfd2ac5a9715d2173d92ff7'] + +builddependencies = [ + ('binutils', '2.42'), +] + +dependencies = [ + ('zlib', '1.3.1'), + ('gzip', '1.13'), + ('XZ', '5.4.5'), + ('lz4', '1.9.4'), +] + +skipsteps = ['configure'] + +runtest = 'check' + +installopts = "PREFIX=%(installdir)s" + +sanity_check_paths = { + 'files': ["bin/zstd", "lib/libzstd.%s" % SHLIB_EXT, "include/zstd.h"], + 'dirs': ["lib/pkgconfig"] +} + +moduleclass = 'lib' diff --git a/setup.py b/setup.py index a5b10c2eb30..3aa9a822208 100644 --- a/setup.py +++ b/setup.py @@ -44,7 +44,7 @@ # recent setuptools versions will *TRANSFORM* something like 'X.Y.Zdev' into 'X.Y.Z.dev0', with a warning like # UserWarning: Normalizing '2.4.0dev' to '2.4.0.dev0' # This causes problems further up the dependency chain... -VERSION = '4.9.1' +VERSION = '4.9.2' MAJ_VER = VERSION.split('.')[0] MAJMIN_VER = '.'.join(VERSION.split('.')[0:2]) diff --git a/test/easyconfigs/easyconfigs.py b/test/easyconfigs/easyconfigs.py index e3fcacd6bd3..ceae4c5bef9 100644 --- a/test/easyconfigs/easyconfigs.py +++ b/test/easyconfigs/easyconfigs.py @@ -363,9 +363,9 @@ def check_dep_vars(self, gen, dep, dep_vars): # 'guilty' until proven 'innocent' res = False - # filter out wrapped Java versions + # filter out wrapped Java or dotNET-Core versions # i.e. if the version of one is a prefix of the version of the other one (e.g. 1.8 & 1.8.0_181) - if dep == 'Java': + if dep in ['Java', 'dotNET-Core']: dep_vars_to_check = sorted(dep_vars.keys()) retained_dep_vars = [] @@ -439,6 +439,8 @@ def check_dep_vars(self, gen, dep, dep_vars): # filter out BLIS and libFLAME with -amd versionsuffix # (AMD forks, used in gobff/*-amd toolchains) (['BLIS', 'libFLAME'], '-amd'), + # filter out OpenBLAS with -int8 versionsuffix, used by GAMESS-US + ('OpenBLAS', '-int8'), # filter out ScaLAPACK with -BLIS-* versionsuffix, used in goblf toolchain ('ScaLAPACK', ('-BLIS-', True)), # filter out ScaLAPACK with -bf versionsuffix, used in gobff toolchain @@ -585,6 +587,8 @@ def check_dep_vars(self, gen, dep, dep_vars): # SimpleITK 2.1.0 requires Lua 5.3.x, MedPy and nnU-Net depend on SimpleITK (r'5\.3\.5', [r'nnU-Net-1\.7\.0-', r'MedPy-0\.4\.0-', r'SimpleITK-2\.1\.0-']), ], + # FDMNES requires sequential variant of MUMPS + 'MUMPS': [(r'5\.6\.1; versionsuffix: -metis-seq', [r'FDMNES'])], # SRA-toolkit 3.0.0 requires ncbi-vdb 3.0.0, Finder requires SRA-Toolkit 3.0.0 'ncbi-vdb': [(r'3\.0\.0', [r'SRA-Toolkit-3\.0\.0', r'finder-1\.1\.0'])], # TensorFlow 2.5+ requires a more recent NCCL than version 2.4.8 used in 2019b generation; @@ -609,7 +613,7 @@ def check_dep_vars(self, gen, dep, dep_vars): ], 'pydantic': [ # GTDB-Tk v2.3.2 requires pydantic 1.x (see https://github.com/Ecogenomics/GTDBTk/pull/530) - ('1.10.13;', ['GTDB-Tk-2.3.2-']), + ('1.10.13;', ['GTDB-Tk-2.3.2-', 'GTDB-Tk-2.4.0-']), ], # medaka 1.1.*, 1.2.*, 1.4.* requires Pysam 0.16.0.1, # which is newer than what others use as dependency w.r.t. Pysam version in 2019b generation; @@ -628,7 +632,8 @@ def check_dep_vars(self, gen, dep, dep_vars): # Shasta requires spoa 3.x 'spoa': [(r'3\.4\.0', [r'Shasta-0\.8\.0-'])], # UShER requires tbb-2020.3 as newer versions will not build - 'tbb': [('2020.3', ['UShER-0.5.0-'])], + # orthagogue requires tbb-2020.3 as 2021 versions are not backward compatible with the previous releases + 'tbb': [('2020.3', ['UShER-0.5.0-', 'orthAgogue-20141105-'])], 'TensorFlow': [ # medaka 0.11.4/0.12.0 requires recent TensorFlow <= 1.14 (and Python 3.6), # artic-ncov2019 requires medaka @@ -655,6 +660,8 @@ def check_dep_vars(self, gen, dep, dep_vars): # for the sake of backwards compatibility, keep UCX-CUDA v1.11.0 which depends on UCX v1.11.0 # (for 2021b, UCX was updated to v1.11.2) 'UCX': [('1.11.0;', ['UCX-CUDA-1.11.0-'])], + # Napari 0.4.19post1 requires VisPy >=0.14.1 <0.15 + 'VisPy': [('0.14.1;', ['napari-0.4.19.post1-'])], # WPS 3.9.1 requires WRF 3.9.1.1 'WRF': [(r'3\.9\.1\.1', [r'WPS-3\.9\.1'])], # wxPython 4.2.0 depends on wxWidgets 3.2.0