diff --git a/easybuild/easyconfigs/b/Blosc2/Blosc2-2.6.1-GCCcore-11.3.0.eb b/easybuild/easyconfigs/b/Blosc2/Blosc2-2.6.1-GCCcore-11.3.0.eb new file mode 100644 index 00000000000..1a7d1da3a1f --- /dev/null +++ b/easybuild/easyconfigs/b/Blosc2/Blosc2-2.6.1-GCCcore-11.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) +easyblock = 'CMakeMake' + +name = 'Blosc2' +version = '2.6.1' + +homepage = 'https://www.blosc.org/' + +description = "Blosc, an extremely fast, multi-threaded, meta-compressor library" + +toolchain = {'name': 'GCCcore', 'version': '11.3.0'} +toolchainopts = {'pic': True, 'cstd': 'c++11'} + +source_urls = ['https://github.com/Blosc/c-blosc2/archive/'] +sources = ['v%(version)s.tar.gz'] +checksums = ['514a793368093893c1a7cae030f7e31faca7f86465ae69dd576f256d8bf28c08'] + +builddependencies = [ + ('binutils', '2.38'), + ('CMake', '3.24.3'), +] + +sanity_check_paths = { + 'files': ['include/blosc2/blosc2-export.h', 'include/blosc2.h', 'lib/libblosc2.a', + 'lib/libblosc2.%s' % SHLIB_EXT], + 'dirs': [], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/p/PyTables/PyTables-3.8.0-foss-2022a.eb b/easybuild/easyconfigs/p/PyTables/PyTables-3.8.0-foss-2022a.eb new file mode 100644 index 00000000000..a6378b7de69 --- /dev/null +++ b/easybuild/easyconfigs/p/PyTables/PyTables-3.8.0-foss-2022a.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': '2022a'} +toolchainopts = {'usempi': True} + +builddependencies = [ + ('pkgconf', '1.8.0'), + ('CMake', '3.24.3'), + ('Ninja', '1.10.2'), + ('scikit-build', '0.15.0'), +] + +dependencies = [ + ('Python', '3.10.4'), + ('SciPy-bundle', '2022.05'), # provides numexpr + ('HDF5', '1.12.2'), + ('LZO', '2.10'), + ('Blosc', '1.21.3'), + ('Blosc2', '2.6.1'), + ('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/PyTables/PyTables-3.8.0_fix-find-blosc2-library-path.patch b/easybuild/easyconfigs/p/PyTables/PyTables-3.8.0_fix-find-blosc2-library-path.patch new file mode 100644 index 00000000000..7849b1888d5 --- /dev/null +++ b/easybuild/easyconfigs/p/PyTables/PyTables-3.8.0_fix-find-blosc2-library-path.patch @@ -0,0 +1,44 @@ +determine location to Blosc2 library via $EBROOTBLOSC2, if defined, +since mechanism to locate the library via blosc2-*.dist-info/RECORD doesn't work if blosc2 was not installed +with vendored c-blosc2 library; +author: Kenneth Hoste (HPC-UGent) +--- tables-3.8.0/setup.py.orig 2023-01-19 20:10:15.637759755 +0100 ++++ tables-3.8.0/setup.py 2023-01-19 20:11:48.590853686 +0100 +@@ -110,19 +110,25 @@ + + def get_blosc2_directories(): + """Get Blosc2 directories for the C library by using wheel metadata""" +- try: +- import blosc2 +- except ModuleNotFoundError: +- raise EnvironmentError("Cannot import the blosc2 requirement") +- version = blosc2.__version__ +- basepath = Path(os.path.dirname(blosc2.__file__)) +- recinfo = basepath.parent / f'blosc2-{version}.dist-info' / 'RECORD' + library_path = None +- for line in open(recinfo): +- if 'libblosc2' in line: +- library_path = Path(os.path.abspath(basepath.parent / +- Path(line[:line.find('libblosc2')]))) +- break ++ blosc2_root = os.getenv('EBROOTBLOSC2') ++ if blosc2_root: ++ library_path = Path(os.path.join(blosc2_root, 'lib')) ++ else: ++ try: ++ import blosc2 ++ except ModuleNotFoundError: ++ raise EnvironmentError("Cannot import the blosc2 requirement") ++ version = blosc2.__version__ ++ basepath = Path(os.path.dirname(blosc2.__file__)) ++ recinfo = basepath.parent / f'blosc2-{version}.dist-info' / 'RECORD' ++ library_path = None ++ for line in open(recinfo): ++ if 'libblosc2' in line: ++ library_path = Path(os.path.abspath(basepath.parent / ++ Path(line[:line.find('libblosc2')]))) ++ break ++ + if not library_path: + raise NotADirectoryError("Library directory not found for blosc2!") + diff --git a/easybuild/easyconfigs/p/PyTables/PyTables-3.8.0_fix-libs.patch b/easybuild/easyconfigs/p/PyTables/PyTables-3.8.0_fix-libs.patch new file mode 100644 index 00000000000..8ffa99933b7 --- /dev/null +++ b/easybuild/easyconfigs/p/PyTables/PyTables-3.8.0_fix-libs.patch @@ -0,0 +1,15 @@ +# pyTables expects that LIBS is a list of library names and will add +# a -l by itself. +# original patch by ward.poelmans@ugent.be, ported to newer PyTables version by Kenneth Hoste (HPC-UGent) +--- PyTables-3.8.0/setup.py.orig 2023-01-11 19:14:27.160064110 +0100 ++++ PyTables-3.8.0/setup.py 2023-01-11 19:21:48.460252182 +0100 +@@ -576,6 +576,9 @@ + # is not a good idea. + CFLAGS = os.environ.get("CFLAGS", "").split() + LIBS = os.environ.get("LIBS", "").split() ++ for idx, lib in enumerate(LIBS): ++ if lib.startswith("-l"): ++ LIBS[idx] = lib.replace("-l", "") + CONDA_PREFIX = os.environ.get("CONDA_PREFIX", "") + # We start using pkg-config since some distributions are putting HDF5 + # (and possibly other libraries) in exotic locations. See issue #442. diff --git a/easybuild/easyconfigs/p/PyTables/blosc2-2.0.0_use-Blosc2-dep.patch b/easybuild/easyconfigs/p/PyTables/blosc2-2.0.0_use-Blosc2-dep.patch new file mode 100644 index 00000000000..9629c33f0eb --- /dev/null +++ b/easybuild/easyconfigs/p/PyTables/blosc2-2.0.0_use-Blosc2-dep.patch @@ -0,0 +1,24 @@ +make blosc2 use provided Blosc2 dependency, rather than letting it build its own vendored copy of c-blosc2 +author: Kenneth Hoste (HPC-UGent) +--- blosc2-2.0.0/blosc2/CMakeLists.txt.orig 2023-01-19 13:20:38.055582814 +0100 ++++ blosc2-2.0.0/blosc2/CMakeLists.txt 2023-01-19 13:21:03.808615093 +0100 +@@ -7,17 +7,14 @@ + set(BUILD_FUZZERS OFF CACHE BOOL "Build C-Blosc2 fuzzers") + + set(CMAKE_POSITION_INDEPENDENT_CODE ON) +-# we want the binaries of the C-Blosc2 library to go into the wheels +-set(BLOSC_INSTALL ON) +-add_subdirectory(c-blosc2) +-include_directories("${CMAKE_CURRENT_SOURCE_DIR}/c-blosc2/include") ++include_directories("$ENV{EBROOTBLOSC2}/include") + include_directories("${Python_NumPy_INCLUDE_DIRS}") + + + add_cython_target(blosc2_ext blosc2_ext.pyx) + add_library(blosc2_ext MODULE ${blosc2_ext}) + +-target_link_libraries(blosc2_ext blosc2_static) ++target_link_libraries(blosc2_ext $ENV{EBROOTBLOSC2}/lib/libblosc2.a) + + python_extension_module(blosc2_ext) + diff --git a/easybuild/easyconfigs/p/py-cpuinfo/py-cpuinfo-9.0.0-GCCcore-11.3.0.eb b/easybuild/easyconfigs/p/py-cpuinfo/py-cpuinfo-9.0.0-GCCcore-11.3.0.eb new file mode 100644 index 00000000000..14c968128f7 --- /dev/null +++ b/easybuild/easyconfigs/p/py-cpuinfo/py-cpuinfo-9.0.0-GCCcore-11.3.0.eb @@ -0,0 +1,39 @@ +easyblock = 'PythonPackage' + +name = 'py-cpuinfo' +version = '9.0.0' + +homepage = 'https://github.com/workhorsy/py-cpuinfo' +description = "py-cpuinfo gets CPU info with pure Python." + +toolchain = {'name': 'GCCcore', 'version': '11.3.0'} + +sources = [SOURCE_TAR_GZ] +checksums = ['3cdbbf3fac90dc6f118bfd64384f309edeadd902d7c8fb17f02ffa1fc3f49690'] + +builddependencies = [ + ('binutils', '2.38'), +] + +dependencies = [ + ('Python', '3.10.4'), +] + +download_dep_fail = True +use_pip = True + +sanity_check_paths = { + 'files': ['bin/cpuinfo'], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +sanity_check_commands = [ + "cpuinfo", + "python -m cpuinfo", +] + +options = {'modulename': 'cpuinfo'} + +sanity_pip_check = True + +moduleclass = 'tools'