diff --git a/easybuild/easyconfigs/a/AOFlagger/AOFlagger-3.4.0-foss-2023b.eb b/easybuild/easyconfigs/a/AOFlagger/AOFlagger-3.4.0-foss-2023b.eb new file mode 100644 index 000000000000..d1fe2a3f7dd3 --- /dev/null +++ b/easybuild/easyconfigs/a/AOFlagger/AOFlagger-3.4.0-foss-2023b.eb @@ -0,0 +1,46 @@ +easyblock = 'CMakeMake' + +name = 'AOFlagger' +version = '3.4.0' + +homepage = 'https://aoflagger.readthedocs.io/' +description = """The AOFlagger is a tool that can find and remove radio-frequency interference (RFI) +in radio astronomical observations. It can make use of Lua scripts to make flagging strategies flexible, +and the tools are applicable to a wide set of telescopes.""" + +toolchain = {'name': 'foss', 'version': '2023b'} + +sources = [ + { + 'source_urls': [ + 'https://gitlab.com/aroffringa/%(namelower)s/-/package_files/96704214/' + ], + 'filename': '%(namelower)s-v%(version)s.tar.bz2', + 'download_filename': 'download' + }, +] +checksums = ['9560b7381b68f37d842599f222a8aa2a5d3d3d501d1277471e1a0ba3d7b2aeba'] + +builddependencies = [ + ('CMake', '3.27.6'), +] +dependencies = [ + ('casacore', '3.5.0'), + ('Boost', '1.83.0'), + ('CFITSIO', '4.3.1'), + ('GSL', '2.7'), + ('HDF5', '1.14.3'), + ('Python', '3.11.5'), + ('Lua', '5.4.6'), + ('libpng', '1.6.40'), + ('libxml2', '2.11.5'), +] + +sanity_check_paths = { + 'files': ['include/%(namelower)s.h', 'bin/%(namelower)s'], + 'dirs': ['bin'], +} + +sanity_check_commands = [('%(namelower)s', '-v')] + +moduleclass = 'lib' 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 new file mode 100644 index 000000000000..cde4b18960cf --- /dev/null +++ b/easybuild/easyconfigs/a/Armadillo/Armadillo-12.8.0-foss-2023b.eb @@ -0,0 +1,24 @@ +name = 'Armadillo' +version = '12.8.0' + +homepage = 'https://arma.sourceforge.net/' +description = """Armadillo is an open-source C++ linear algebra library (matrix maths) aiming towards + a good balance between speed and ease of use. Integer, floating point and complex numbers are supported, + as well as a subset of trigonometric and statistics functions.""" + +toolchain = {'name': 'foss', 'version': '2023b'} + +source_urls = ['https://sourceforge.net/projects/arma/files'] +sources = [SOURCELOWER_TAR_XZ] +checksums = ['a89bb6fece5ce9fdd1d01a4bc145cf7cc0b939c5777cca46de69c2f5e3412cf0'] + +builddependencies = [ + ('CMake', '3.27.6'), +] +dependencies = [ + ('Boost', '1.83.0'), + ('arpack-ng', '3.9.0'), +] + + +moduleclass = 'numlib' diff --git a/easybuild/easyconfigs/a/arpack-ng/arpack-ng-3.9.0-foss-2023b.eb b/easybuild/easyconfigs/a/arpack-ng/arpack-ng-3.9.0-foss-2023b.eb new file mode 100644 index 000000000000..10d825ca22fa --- /dev/null +++ b/easybuild/easyconfigs/a/arpack-ng/arpack-ng-3.9.0-foss-2023b.eb @@ -0,0 +1,37 @@ +# Author: Robert Mijakovic + +easyblock = 'ConfigureMake' + +name = 'arpack-ng' +version = '3.9.0' + +homepage = 'https://github.com/opencollab/arpack-ng' +description = "ARPACK is a collection of Fortran77 subroutines designed to solve large scale eigenvalue problems." + +toolchain = {'name': 'foss', 'version': '2023b'} +toolchainopts = {'pic': True, 'usempi': True} + +github_account = 'opencollab' + +source_urls = [GITHUB_SOURCE] +sources = ['%(version)s.tar.gz'] +checksums = ['24f2a2b259992d3c797d80f626878aa8e2ed5009d549dad57854bbcfb95e1ed0'] + +builddependencies = [ + ('Autotools', '20220317'), + ('pkgconf', '2.0.3'), +] +dependencies = [ + ('Eigen', '3.4.0'), +] + +preconfigopts = "sh bootstrap && " +configopts = '--enable-mpi --with-pic --with-blas="$LIBBLAS" --with-lapack="$LIBLAPACK"' + +sanity_check_paths = { + 'files': ['lib64/libarpack.la', 'lib64/libarpack.%s' % SHLIB_EXT, + 'lib64/libparpack.la', 'lib64/libparpack.%s' % SHLIB_EXT], + 'dirs': [], +} + +moduleclass = 'numlib' diff --git a/easybuild/easyconfigs/b/Boost.Python/Boost.Python-1.83.0-GCC-13.2.0.eb b/easybuild/easyconfigs/b/Boost.Python/Boost.Python-1.83.0-GCC-13.2.0.eb new file mode 100644 index 000000000000..f7af796a853d --- /dev/null +++ b/easybuild/easyconfigs/b/Boost.Python/Boost.Python-1.83.0-GCC-13.2.0.eb @@ -0,0 +1,24 @@ +easyblock = 'EB_Boost' + +name = 'Boost.Python' +version = '1.83.0' + +homepage = 'https://boostorg.github.io/python' +description = """Boost.Python is a C++ library which enables seamless interoperability between C++ + and the Python programming language.""" + +toolchain = {'name': 'GCC', 'version': '13.2.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://boostorg.jfrog.io/artifactory/main/release/%(version)s/source/'] +sources = ['boost_1_83_0.tar.gz'] +checksums = ['c0685b68dd44cc46574cce86c4e17c0f611b15e195be9848dfd0769a0a207628'] + +dependencies = [ + ('Boost', '1.83.0'), + ('Python', '3.11.5'), +] + +only_python_bindings = True + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/c/CFITSIO/CFITSIO-4.3.1-GCCcore-13.2.0.eb b/easybuild/easyconfigs/c/CFITSIO/CFITSIO-4.3.1-GCCcore-13.2.0.eb new file mode 100644 index 000000000000..c22b4a16118e --- /dev/null +++ b/easybuild/easyconfigs/c/CFITSIO/CFITSIO-4.3.1-GCCcore-13.2.0.eb @@ -0,0 +1,43 @@ +# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild +# Author: Denis Kristak +easyblock = 'ConfigureMake' + +name = 'CFITSIO' +version = '4.3.1' + +homepage = 'https://heasarc.gsfc.nasa.gov/fitsio/' +description = """CFITSIO is a library of C and Fortran subroutines for reading and writing data files in +FITS (Flexible Image Transport System) data format.""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://heasarc.gsfc.nasa.gov/FTP/software/fitsio/c/'] +sources = [SOURCELOWER_TAR_GZ] +patches = ['%(name)s-3.48_install_test_data.patch'] +checksums = [ + {SOURCELOWER_TAR_GZ: '47a7c8ee05687be1e1d8eeeb94fb88f060fbf3cd8a4df52ccb88d5eb0f5062be'}, + {'%(name)s-3.48_install_test_data.patch': 'dbf16f857f133468fc1e6a793c6e89fca66d54796593e03606f2722a2a980c0c'}, +] + +builddependencies = [ + ('binutils', '2.40'), +] +# curl for HTTPs support +dependencies = [ + ('cURL', '8.3.0'), +] + +# make would create just static libcfitsio.a. +# Let's create dynamic lib and testprog too. +buildopts = "&& make shared && make testprog" + + +sanity_check_paths = { + 'files': ['lib/libcfitsio.a', 'lib/libcfitsio.%s' % SHLIB_EXT], + 'dirs': ['include'], +} + +sanity_check_commands = ['cd %(installdir)s/share && testprog'] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/c/casacore/casacore-3.5.0-add-C-style-header-for-GCC-13.1.patch b/easybuild/easyconfigs/c/casacore/casacore-3.5.0-add-C-style-header-for-GCC-13.1.patch new file mode 100644 index 000000000000..efef286e59a1 --- /dev/null +++ b/easybuild/easyconfigs/c/casacore/casacore-3.5.0-add-C-style-header-for-GCC-13.1.patch @@ -0,0 +1,21 @@ +From 68e43f489abd3d4f1e2fe54a42695396703aa81a Mon Sep 17 00:00:00 2001 +From: Chris Broekema +Date: Tue, 9 May 2023 12:43:34 +0200 +Subject: [PATCH] add C-style header to fix GCC 13.1 compile error on uint16_t + not being a valid type (#1309) + +--- + tables/Dysco/bytepacker.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/tables/Dysco/bytepacker.h b/tables/Dysco/bytepacker.h +index d62754046..cb1193b41 100644 +--- a/tables/Dysco/bytepacker.h ++++ b/tables/Dysco/bytepacker.h +@@ -2,6 +2,7 @@ + #define DYSCO_BYTE_PACKER_H + + #include ++#include + + namespace dyscostman { diff --git a/easybuild/easyconfigs/c/casacore/casacore-3.5.0-foss-2023b.eb b/easybuild/easyconfigs/c/casacore/casacore-3.5.0-foss-2023b.eb new file mode 100644 index 000000000000..741298d14886 --- /dev/null +++ b/easybuild/easyconfigs/c/casacore/casacore-3.5.0-foss-2023b.eb @@ -0,0 +1,62 @@ +easyblock = 'CMakeMake' + +name = 'casacore' +version = '3.5.0' + +homepage = 'https://github.com/casacore/casacore' +description = """A suite of C++ libraries for radio astronomy data processing. +The ephemerides data needs to be in DATA_DIR and the location must be specified at runtime. +Thus user's can update them. +""" + +toolchain = {'name': 'foss', 'version': '2023b'} + +source_urls = ['https://github.com/%(name)s/%(name)s/archive'] +sources = ['v%(version)s.tar.gz'] +patches = ['casacore-3.5.0-add-C-style-header-for-GCC-13.1.patch'] +checksums = [ + '63f1c8eff932b0fcbd38c598a5811e6e5397b72835b637d6f426105a183b3f91', # casacore-3.5.0.tar.gz + '7b35d21cd654a7a215d604310f5372319ad21b6261f4a7ae038912b97ef22983', # add-C-style-header-for-GCC-13.1.patch +] + +builddependencies = [ + ('CMake', '3.27.6'), + ('flex', '2.6.4'), + ('Bison', '3.8.2'), + ('wget', '1.21.4'), +] +dependencies = [ + ('CFITSIO', '4.3.1'), + ('WCSLIB', '7.11'), + ('HDF5', '1.14.3'), + ('GSL', '2.7'), + ('Boost.Python', '1.83.0'), + ('SciPy-bundle', '2023.11'), + ('ncurses', '6.4'), +] + +configopts = '-DBUILD_PYTHON=NO -DBUILD_PYTHON3=YES -Wno-dev -DCXX11="ON" ' +configopts += '-DDATA_DIR=%(installdir)s/data -DUSE_OPENMP=ON -DUSE_HDF5=ON ' +configopts += '-DUSE_MPI=ON ' + +local_download_cmd = 'wget --retry-connrefused ftp://anonymous@ftp.astron.nl/outgoing/Measures/WSRT_Measures.ztar ' +local_download_cmd += '-O /tmp/WSRT_Measures.ztar ' + +# Install casacore data +postinstallcmds = [ + local_download_cmd, + "tar xfvz /tmp/WSRT_Measures.ztar --one-top-level=%(installdir)s/data", +] + +sanity_check_paths = { + 'files': [ + 'lib/libcasa_casa.%s' % SHLIB_EXT, + 'lib/libcasa_mirlib.%s' % SHLIB_EXT, + 'lib/libcasa_ms.%s' % SHLIB_EXT, + ], + 'dirs': ['bin', 'include/%(name)s'], +} + +sanity_check_commands = [('measuresdata', '')] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/d/DP3/DP3-6.0-foss-2023b.eb b/easybuild/easyconfigs/d/DP3/DP3-6.0-foss-2023b.eb new file mode 100644 index 000000000000..8373cc5f8bdf --- /dev/null +++ b/easybuild/easyconfigs/d/DP3/DP3-6.0-foss-2023b.eb @@ -0,0 +1,57 @@ +easyblock = 'CMakeMake' + +name = 'DP3' +version = '6.0' + +homepage = 'https://dp3.readthedocs.io/' +description = "DP3: streaming processing pipeline for radio interferometric data." + +toolchain = {'name': 'foss', 'version': '2023b'} + +sources = [ + { + 'filename': '%(name)s-v%(version)s.tar.gz', + # Repo uses git submodules, which are not included in the release tarballs. + # Thus, we let EasyBuild download directly from the git repository. + 'git_config': { + 'url': 'https://git.astron.nl/RD', + 'repo_name': '%(name)s', + 'tag': 'v%(version)s', + 'clone_into': '%(name)s', + 'recursive': True + } + }, +] +patches = ['DP3-6.0_fix-for-xsimd-error-on-neoverse-v1.patch'] +checksums = [ + None, # checksum for git clone source is non-deterministic + # DP3-6.0_fix-for-xsimd-error-on-neoverse-v1.patch + '7f5069388846c9c715013d5a3a267a6d8e266520445a6427e63e9d52d3046c9d', +] + +builddependencies = [ + ('CMake', '3.27.6'), +] +dependencies = [ + ('casacore', '3.5.0'), + ('Boost', '1.83.0'), + ('CFITSIO', '4.3.1'), + ('WCSLIB', '7.11'), + ('GSL', '2.7'), + ('HDF5', '1.14.3'), + ('Python', '3.11.5'), + ('EveryBeam', '0.5.2'), + ('Armadillo', '12.8.0'), + ('AOFlagger', '3.4.0'), + ('IDG', '1.2.0'), +] + + +sanity_check_paths = { + 'files': ['include/include/%(namelower)s/base/%(name)s.h', 'bin/%(name)s'], + 'dirs': ['bin'], +} + +sanity_check_commands = [('%(name)s', '--version')] + +moduleclass = 'astro' diff --git a/easybuild/easyconfigs/d/DP3/DP3-6.0_fix-for-xsimd-error-on-neoverse-v1.patch b/easybuild/easyconfigs/d/DP3/DP3-6.0_fix-for-xsimd-error-on-neoverse-v1.patch new file mode 100644 index 000000000000..abfd8e34f069 --- /dev/null +++ b/easybuild/easyconfigs/d/DP3/DP3-6.0_fix-for-xsimd-error-on-neoverse-v1.patch @@ -0,0 +1,19 @@ +# Fix for XSIMD build error on Neoverse V1 +# See: https://github.com/xtensor-stack/xsimd/issues/1005 and https://github.com/xtensor-stack/xsimd/commit/1d8536b +# Mar 11th 2024 by T. Kok (SURF) +--- DP3.orig/external/aocommon/CMake/FetchXTensor.cmake 2024-03-11 11:20:32.024804259 +0100 ++++ DP3/external/aocommon/CMake/FetchXTensor.cmake 2024-03-11 11:21:32.851493709 +0100 +@@ -6,7 +6,7 @@ + set(xtl_GIT_TAG b3d0091a77af52f1b479b5b768260be4873aa8a7) + endif() + if (NOT xsimd_GIT_TAG) +- set(xsimd_GIT_TAG 2f5eddf8912c7e2527f0c50895c7560b964d29af) ++ set(xsimd_GIT_TAG 1d8536b393171b899031f01b7c2d63858b05665c) + endif() + if (NOT xtensor_GIT_TAG) + set(xtensor_GIT_TAG 0.24.2) +@@ -65,3 +65,4 @@ + endif() + + endforeach() ++ diff --git a/easybuild/easyconfigs/e/EveryBeam/EveryBeam-0.5.2-foss-2023b.eb b/easybuild/easyconfigs/e/EveryBeam/EveryBeam-0.5.2-foss-2023b.eb new file mode 100644 index 000000000000..bec1bf004e74 --- /dev/null +++ b/easybuild/easyconfigs/e/EveryBeam/EveryBeam-0.5.2-foss-2023b.eb @@ -0,0 +1,49 @@ +easyblock = 'CMakeMake' + +name = 'EveryBeam' +version = '0.5.2' + +homepage = 'https://everybeam.readthedocs.io/' +description = """Library that provides the antenna response pattern for several instruments, +such as LOFAR (and LOBES), SKA (OSKAR), MWA, JVLA, etc.""" + +toolchain = {'name': 'foss', 'version': '2023b'} + +sources = [ + { + 'filename': '%(name)s-v%(version)s.tar.gz', + # Repo uses git submodules, which are not included in the release tarballs. + # Thus, we let EasyBuild download directly from the git repository. + 'git_config': { + 'url': 'https://git.astron.nl/RD', + 'repo_name': '%(name)s', + 'tag': 'v%(version)s', + 'clone_into': '%(name)s', + 'recursive': True + } + }, +] +checksums = [None] + +builddependencies = [ + ('CMake', '3.27.6'), + ('wget', '1.21.4'), +] +dependencies = [ + ('casacore', '3.5.0'), + ('Boost', '1.83.0'), + ('CFITSIO', '4.3.1'), + ('WCSLIB', '7.11'), + ('GSL', '2.7'), + ('HDF5', '1.14.3'), + ('Python', '3.11.5'), + ('libxml2', '2.11.5'), +] + + +sanity_check_paths = { + 'files': ['include/%(name)s/beamformer.h', 'lib/libeverybeam.%s' % SHLIB_EXT], + 'dirs': [], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/i/IDG/IDG-1.2.0-foss-2023b.eb b/easybuild/easyconfigs/i/IDG/IDG-1.2.0-foss-2023b.eb new file mode 100644 index 000000000000..1efa15553447 --- /dev/null +++ b/easybuild/easyconfigs/i/IDG/IDG-1.2.0-foss-2023b.eb @@ -0,0 +1,59 @@ +easyblock = 'CMakeMake' + +name = 'IDG' +version = '1.2.0' + +homepage = 'https://idg.readthedocs.io/' +description = """Image Domain Gridding (IDG) is a fast method for convolutional resampling (gridding/degridding) +of radio astronomical data (visibilities). Direction dependent effects (DDEs) or A-tems can be applied +in the gridding process. +The algorithm is described in "Image Domain Gridding: a fast method for convolutional resampling of visibilities", +Van der Tol (2018). +The implementation is described in "Radio-astronomical imaging on graphics processors", Veenboer (2020). +Please cite these papers in publications using IDG. +""" + +toolchain = {'name': 'foss', 'version': '2023b'} + +sources = [ + { + 'filename': '%(name)s-v%(version)s.tar.gz', + # Repo uses git submodules, which are not included in the release tarballs. + # Thus, we let EasyBuild download directly from the git repository. + 'git_config': { + 'url': 'https://gitlab.com/astron-idg', + 'repo_name': '%(name)s', + 'tag': '%(version)s', + 'clone_into': '%(name)s', + 'recursive': True + } + }, +] +patches = ['IDG-1.2.0_fix-for-xsimd-error-on-neoverse-v1.patch'] +checksums = [ + None, # checksum for git clone source is non-deterministic + # IDG-1.2.0_fix-for-xsimd-error-on-neoverse-v1.patch + '3811028d7757cd7085501bf3209f8eb526eafb67caf2950110a25a7a072df3c1', +] + +builddependencies = [ + ('CMake', '3.27.6'), +] +dependencies = [ + ('Boost', '1.83.0'), + ('Python', '3.11.5'), +] + + +configopts = "-DBUILD_WITH_MPI=ON -DBUILD_WITH_PYTHON=ON " +configopts += "-DBUILD_WITH_DEMOS=ON " + +sanity_check_paths = { + 'files': [ + 'include/%(namelower)s-api.h', 'include/%(namelower)s.h', + 'lib/libidg.%s' % SHLIB_EXT, 'lib/libidg-api.%s' % SHLIB_EXT, + ], + 'dirs': ['include', 'lib', 'lib64'], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/i/IDG/IDG-1.2.0_fix-for-xsimd-error-on-neoverse-v1.patch b/easybuild/easyconfigs/i/IDG/IDG-1.2.0_fix-for-xsimd-error-on-neoverse-v1.patch new file mode 100644 index 000000000000..619cd243570f --- /dev/null +++ b/easybuild/easyconfigs/i/IDG/IDG-1.2.0_fix-for-xsimd-error-on-neoverse-v1.patch @@ -0,0 +1,104 @@ +# Fix for XSIMD build error on Neoverse V1 +# See: https://github.com/xtensor-stack/xsimd/issues/1005 and https://github.com/xtensor-stack/xsimd/commit/1d8536b +# Mar 11th 2024 by T. Kok (SURF) +--- IDG.orig/external/aocommon/CMake/FetchXTensor.cmake 2024-03-11 11:27:53.254059321 +0100 ++++ IDG/external/aocommon/CMake/FetchXTensor.cmake 2024-03-11 11:28:41.974412520 +0100 +@@ -1,35 +1,68 @@ +-#Allow overriding XTensor versions +-if (NOT XTL_GIT_TAG) +- set(XTL_GIT_TAG 0.7.4) ++#Allow overriding XTensor versions, e.g., for testing a new version in DP3. ++#For avoiding ODR violations, repositories that use aocommon should not override ++#these versions in their master branch. That way, the XTensor versions will ++#be equal in all repositories. ++if (NOT xtl_GIT_TAG) ++ set(xtl_GIT_TAG b3d0091a77af52f1b479b5b768260be4873aa8a7) + endif() +-if (NOT XSIMD_GIT_TAG) +- set(XSIMD_GIT_TAG 8.1.0) ++if (NOT xsimd_GIT_TAG) ++ set(xsimd_GIT_TAG 1d8536b393171b899031f01b7c2d63858b05665c) + endif() +-if (NOT XTENSOR_GIT_TAG) +- set(XTENSOR_GIT_TAG 0.24.2) ++if (NOT xtensor_GIT_TAG) ++ set(xtensor_GIT_TAG 0.24.2) ++endif() ++if (NOT xtensor-blas_GIT_TAG) ++ set(xtensor-blas_GIT_TAG 0.20.0) ++endif() ++if (NOT xtensor-fftw_GIT_TAG) ++ set(xtensor-fftw_GIT_TAG e6be85a376624da10629b6525c81759e02020308) ++endif() ++ ++# By default, only load the basic 'xtensor' and 'xtl' modules. ++if (NOT XTENSOR_LIBRARIES) ++ set(XTENSOR_LIBRARIES xtl xtensor) # Load xtl first, since xtensor uses it. + endif() + + include(FetchContent) + +-FetchContent_Declare( +- xtl +- GIT_REPOSITORY https://github.com/xtensor-stack/xtl.git +- GIT_SHALLOW TRUE +- GIT_TAG ${XTL_GIT_TAG}) +-FetchContent_Declare( +- xsimd +- GIT_REPOSITORY https://github.com/xtensor-stack/xsimd.git +- GIT_SHALLOW TRUE +- GIT_TAG ${XSMID_GIT_TAG}) +-FetchContent_Declare( +- xtensor +- GIT_REPOSITORY https://github.com/xtensor-stack/xtensor.git +- GIT_SHALLOW TRUE +- GIT_TAG ${XTENSOR_GIT_TAG}) +- +-# Ensure XTensor headers are included as system headers. +-foreach(LIB xtl;xsimd;xtensor) +- FetchContent_MakeAvailable(${LIB}) +- get_target_property(IID ${LIB} INTERFACE_INCLUDE_DIRECTORIES) +- set_target_properties(${LIB} PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${IID}") +-endforeach() +\ No newline at end of file ++foreach(LIB ${XTENSOR_LIBRARIES}) ++ set(XT_GIT_TAG "${${LIB}_GIT_TAG}") ++ if (NOT XT_GIT_TAG) ++ message(FATAL_ERROR "Unknown git tag for XTensor library '${LIB}'") ++ endif() ++ ++ # Checking out a specific git commit hash does not (always) work when ++ # GIT_SHALLOW is TRUE. See the documentation for GIT_TAG in ++ # https://cmake.org/cmake/help/latest/module/ExternalProject.html ++ # -> If the GIT_TAG is a commit hash, use a non-shallow clone. ++ string(LENGTH "${XT_GIT_TAG}" XT_TAG_LENGTH) ++ set(XT_SHALLOW TRUE) ++ if(XT_TAG_LENGTH EQUAL 40 AND XT_GIT_TAG MATCHES "^[0-9a-f]+$") ++ set(XT_SHALLOW FALSE) ++ endif() ++ ++ FetchContent_Declare( ++ ${LIB} ++ GIT_REPOSITORY https://github.com/xtensor-stack/${LIB}.git ++ GIT_SHALLOW ${XT_SHALLOW} ++ GIT_TAG ${XT_GIT_TAG}) ++ ++ if ("${LIB}" STREQUAL "xtensor-fftw") ++ # Unlike the other libraries, xtensor-fftw does not define a CMake target. ++ # Its CMakeLists.txt also loads FFTW using custom options. ++ # -> Do not build this library, and define an INTERFACE target manually. ++ FetchContent_GetProperties(${LIB}) ++ if(NOT ${${LIB}_POPULATED}) ++ FetchContent_Populate(${LIB}) ++ endif() ++ add_library(${LIB} INTERFACE) ++ target_include_directories(${LIB} SYSTEM INTERFACE "${${LIB}_SOURCE_DIR}/include") ++ else() ++ FetchContent_MakeAvailable(${LIB}) ++ # Ensure XTensor headers are included as system headers. ++ get_target_property(IID ${LIB} INTERFACE_INCLUDE_DIRECTORIES) ++ set_target_properties(${LIB} PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${IID}") ++ endif() ++ ++endforeach() ++ diff --git a/easybuild/easyconfigs/l/Lua/Lua-5.4.6-GCCcore-13.2.0.eb b/easybuild/easyconfigs/l/Lua/Lua-5.4.6-GCCcore-13.2.0.eb new file mode 100644 index 000000000000..b2b1eef5195d --- /dev/null +++ b/easybuild/easyconfigs/l/Lua/Lua-5.4.6-GCCcore-13.2.0.eb @@ -0,0 +1,28 @@ +name = 'Lua' +version = '5.4.6' + +homepage = 'https://www.lua.org/' +description = """Lua is a powerful, fast, lightweight, embeddable scripting language. + Lua combines simple procedural syntax with powerful data description constructs based + on associative arrays and extensible semantics. Lua is dynamically typed, + runs by interpreting bytecode for a register-based virtual machine, + and has automatic memory management with incremental garbage collection, + making it ideal for configuration, scripting, and rapid prototyping.""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://www.%(namelower)s.org/ftp/'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['7d5ea1b9cb6aa0b59ca3dde1c6adcb57ef83a1ba8e5432c0ecd06bf439b3ad88'] + +builddependencies = [ + ('binutils', '2.40'), +] +dependencies = [ + ('ncurses', '6.4'), + ('libreadline', '8.2'), +] + + +moduleclass = 'lang' diff --git a/easybuild/easyconfigs/l/libidn2/libidn2-2.3.2-GCCcore-13.2.0.eb b/easybuild/easyconfigs/l/libidn2/libidn2-2.3.2-GCCcore-13.2.0.eb new file mode 100644 index 000000000000..fea33552f7a9 --- /dev/null +++ b/easybuild/easyconfigs/l/libidn2/libidn2-2.3.2-GCCcore-13.2.0.eb @@ -0,0 +1,27 @@ +easyblock = 'ConfigureMake' + +name = 'libidn2' +version = '2.3.2' + +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': '13.2.0'} + +source_urls = ['https://ftp.gnu.org/gnu/libidn/'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['76940cd4e778e8093579a9d195b25fff5e936e9dc6242068528b437a76764f91'] + +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/p/PCRE/PCRE-8.45-GCCcore-13.2.0.eb b/easybuild/easyconfigs/p/PCRE/PCRE-8.45-GCCcore-13.2.0.eb new file mode 100644 index 000000000000..6815128938a1 --- /dev/null +++ b/easybuild/easyconfigs/p/PCRE/PCRE-8.45-GCCcore-13.2.0.eb @@ -0,0 +1,43 @@ +easyblock = 'ConfigureMake' + +name = 'PCRE' +version = '8.45' + +homepage = 'https://www.pcre.org/' +description = """ + The PCRE library is a set of functions that implement regular expression + pattern matching using the same syntax and semantics as Perl 5. +""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} +toolchainopts = {'pic': True} + +source_urls = [ + SOURCEFORGE_SOURCE, + 'https://ftp.%(namelower)s.org/pub/%(namelower)s/', +] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['4e6ce03e0336e8b4a3d6c2b70b1c5e18590a5673a98186da90d4f33c23defc09'] + +builddependencies = [ + ('binutils', '2.40'), +] +dependencies = [ + ('bzip2', '1.0.8'), + ('zlib', '1.2.13'), +] + +configopts = "--enable-utf --enable-unicode-properties --enable-pcre16 --enable-pcre32" + + +sanity_check_paths = { + 'files': [ + 'bin/%(namelower)s-config', + 'include/%(namelower)s.h', + 'share/man/man3/%(namelower)s.3', + 'lib/libpcre32.%s' % SHLIB_EXT + ], + 'dirs': ['lib/pkgconfig', 'share/doc/%(namelower)s/html', 'share/man/man1'], +} + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/p/PGPLOT/PGPLOT-5.2.2-GCCcore-13.2.0.eb b/easybuild/easyconfigs/p/PGPLOT/PGPLOT-5.2.2-GCCcore-13.2.0.eb new file mode 100644 index 000000000000..fef204118222 --- /dev/null +++ b/easybuild/easyconfigs/p/PGPLOT/PGPLOT-5.2.2-GCCcore-13.2.0.eb @@ -0,0 +1,61 @@ +easyblock = 'CmdCp' + +name = 'PGPLOT' +version = '5.2.2' + +homepage = 'https://sites.astro.caltech.edu/~tjp/pgplot/' +description = """The PGPLOT Graphics Subroutine Library is a Fortran- or C-callable, +device-independent graphics package for making simple scientific graphs. It is intended +for making graphical images of publication quality with minimum effort on the part of +the user. For most applications, the program can be device-independent, and the output +can be directed to the appropriate device at run time.""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +source_urls = ['ftp://ftp.astro.caltech.edu/pub/%(namelower)s/'] +sources = ['%%(namelower)s%s.tar.gz' % version.replace('.', '')] +patches = ['%(name)s-%(version_major_minor)s.2_gfortran-deps-fixes.patch'] +checksums = [ + {'pgplot522.tar.gz': 'a5799ff719a510d84d26df4ae7409ae61fe66477e3f1e8820422a9a4727a5be4'}, + {'PGPLOT-5.2.2_gfortran-deps-fixes.patch': 'b1822eb32499dc18aa4aa4fae0b31c3c64ff8abb3a243716e78addafa7e58cec'}, +] + +builddependencies = [ + ('binutils', '2.40'), +] +dependencies = [ + ('libpng', '1.6.40'), + ('zlib', '1.2.13'), + ('X11', '20231019'), +] + +# create .so symlinks for shared libraries +postinstallcmds = [ + "cd %%(installdir)s/lib && ln -s libcpgplot.%s.%%(version)s libcpgplot.%s.5" % (SHLIB_EXT, SHLIB_EXT), + "cd %%(installdir)s/lib && ln -s libcpgplot.%s.%%(version)s libcpgplot.%s" % (SHLIB_EXT, SHLIB_EXT), + "cd %%(installdir)s/lib && ln -s libpgplot.%s.%%(version)s libpgplot.%s.5" % (SHLIB_EXT, SHLIB_EXT), + "cd %%(installdir)s/lib && ln -s libpgplot.%s.%%(version)s libpgplot.%s" % (SHLIB_EXT, SHLIB_EXT), +] + +files_to_copy = [ + (['pgdemo*'], 'bin'), + (['libpgplot.*', 'libcpgplot.*'], 'lib'), + (['grfont.dat'], 'share'), + (['cpgplot.h'], 'include'), +] +cmds_map = [('.*', './makemake . linux g77_gcc && make && make shared && make cpg && make cpg-shared')] + +sanity_check_paths = { + 'files': [ + 'include/cpgplot.h', + 'lib/libpgplot.a', + 'lib/libcpgplot.a', + 'lib/libpgplot.%s' % SHLIB_EXT, + 'lib/libcpgplot.%s' % SHLIB_EXT + ], + 'dirs': ['bin'], +} + +modextravars = {'PGPLOT_FONT': '%(installdir)s/share/grfont.dat'} + +moduleclass = 'vis' diff --git a/easybuild/easyconfigs/w/WCSLIB/WCSLIB-7.11-GCC-13.2.0.eb b/easybuild/easyconfigs/w/WCSLIB/WCSLIB-7.11-GCC-13.2.0.eb new file mode 100644 index 000000000000..4a6ebb8aacfa --- /dev/null +++ b/easybuild/easyconfigs/w/WCSLIB/WCSLIB-7.11-GCC-13.2.0.eb @@ -0,0 +1,39 @@ +easyblock = 'ConfigureMake' + +name = 'WCSLIB' +version = '7.11' + +homepage = 'https://www.atnf.csiro.au/people/mcalabre/WCS/' +description = """The FITS "World Coordinate System" (WCS) standard defines keywords +and usage that provide for the description of astronomical coordinate systems in a +FITS image header.""" + +toolchain = {'name': 'GCC', 'version': '13.2.0'} +toolchainopts = {'pic': True} + +source_urls = ['ftp://ftp.atnf.csiro.au/pub/software/%(namelower)s/'] +sources = [SOURCELOWER_TAR_BZ2] +checksums = ['46befbfdf50cd4953896676a7d570094dc7661e2ae9677b092e7fb13cee3da5f'] + +builddependencies = [ + ('binutils', '2.40'), + ('M4', '1.4.19'), + ('flex', '2.6.4'), +] +dependencies = [ + ('CFITSIO', '4.3.1'), + ('PGPLOT', '5.2.2'), + ('X11', '20231019'), +] + +configopts = "--with-cfitsiolib=$EBROOTCFITSIO/lib --with-cfitsioinc=$EBROOTCFITSIO/include " +configopts += "--with-pgplotlib=$EBROOTPGPLOT/lib --with-pgplotinc=$EBROOTPGPLOT/include " + +sanity_check_paths = { + 'files': ['bin/wcsgrid', 'bin/wcsware', 'lib/libpgsbox-%(version)s.a', 'lib/libpgsbox.%s' % SHLIB_EXT], + 'dirs': ['include'], +} + +sanity_check_commands = ["wcsgrid --help 2>&1 | grep '^Usage: wcsgrid'"] + +moduleclass = 'geo' diff --git a/easybuild/easyconfigs/w/WSClean/WSClean-3.4-foss-2023b.eb b/easybuild/easyconfigs/w/WSClean/WSClean-3.4-foss-2023b.eb new file mode 100644 index 000000000000..b1bdea0de218 --- /dev/null +++ b/easybuild/easyconfigs/w/WSClean/WSClean-3.4-foss-2023b.eb @@ -0,0 +1,44 @@ +easyblock = 'CMakeMake' + +name = 'WSClean' +version = '3.4' + +homepage = 'https://wsclean.readthedocs.io/' +description = """WSClean (w-stacking clean) is a fast generic widefield imager. +It implements several gridding algorithms and offers fully-automated multi-scale +multi-frequency deconvolution.""" + +toolchain = {'name': 'foss', 'version': '2023b'} + +sources = [ + { + 'source_urls': ['https://gitlab.com/aroffringa/%(namelower)s/-/package_files/97237455/'], + 'filename': '%(namelower)s-v%(version)s.tar.bz2', + 'download_filename': 'download' + }, +] +checksums = ['b43d8ca490ccf34dd22aae6c5ca88a5dcb3cff0526835d3f97fa6d239745e641'] + +builddependencies = [ + ('CMake', '3.27.6'), +] +dependencies = [ + ('casacore', '3.5.0'), + ('EveryBeam', '0.5.2'), + ('Boost', '1.83.0'), + ('CFITSIO', '4.3.1'), + ('GSL', '2.7'), + ('HDF5', '1.14.3'), + ('Python', '3.11.5'), + ('IDG', '1.2.0'), +] + + +sanity_check_paths = { + 'files': ['include/wscleaninterface.h', 'bin/%(namelower)s'], + 'dirs': ['bin'], +} + +sanity_check_commands = [('%(namelower)s', '--version')] + +moduleclass = 'astro' diff --git a/easybuild/easyconfigs/w/wget/wget-1.21.4-GCCcore-13.2.0.eb b/easybuild/easyconfigs/w/wget/wget-1.21.4-GCCcore-13.2.0.eb new file mode 100644 index 000000000000..d77cd2923d7e --- /dev/null +++ b/easybuild/easyconfigs/w/wget/wget-1.21.4-GCCcore-13.2.0.eb @@ -0,0 +1,50 @@ +easyblock = 'ConfigureMake' + +name = 'wget' +version = '1.21.4' + +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': '13.2.0'} + +source_urls = [GNU_SOURCE] +sources = [SOURCE_TAR_GZ] +checksums = [ + {SOURCE_TAR_GZ: '81542f5cefb8faacc39bbbc6c82ded80e3e4a88505ae72ea51df27525bcde04c'}, +] + +builddependencies = [ + ('binutils', '2.40'), + ('pkgconf', '2.0.3'), + ('Perl', '5.38.0'), +] +dependencies = [ + ('PCRE', '8.45'), + ('libidn2', '2.3.2'), + ('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'