Blosc2/2.23.1-cpeGNU-26.03 (Blosc2-2.23.1-cpeGNU-26.03.eb)
Install with the EasyBuild-user module:
To access module help after installation and get reminded for which stacks and partitions the module is installed, usemodule spider Blosc2/2.23.1-cpeGNU-26.03.
EasyConfig:
easyblock = 'CMakeMake'
# ADIOS2 requires a very specific version of Blosc2.
local_Blosc2_2_version = '2.23.1' # https://github.com/Blosc/c-blosc2/releases
# Central stack dependencies
local_lz4_version = '1.10.0' # https://github.com/lz4/lz4/releases
local_zstd_version = '1.5.7' # https://github.com/facebook/zstd/releases
name = 'Blosc2'
version = local_Blosc2_2_version
homepage = 'https://www.blosc.org/'
whatis = [
'Description: Blosc2, an extremely fast, multi-threaded, meta-compressor library'
]
description = """
Blosc2 is a high-performance compressor and data format optimized for binary
data, including numerical arrays, tensors, and other structured formats. It
provides a flexible framework of codecs and filters, enabling developers to
balance compression speed and ratio for specific use cases, from high-throughput
data pipelines to persistent storage. As the successor to the original Blosc
library (released in 2010), Blosc2 is built on a mature foundation and is
integrated into many popular scientific computing libraries, such as PyTables,
h5py, and Zarr.
C-Blosc2 is the latest major version of C-Blosc, and is backward compatible with
both the C-Blosc1 API and its in-memory format. However, the reverse thing is
generally not true for the format; buffers generated with C-Blosc2 are not
format-compatible with C-Blosc1 (i.e. forward compatibility is not supported).
In case you want to ensure full API compatibility with C-Blosc1 API, define
the BLOSC1_COMPAT symbol.
"""
docurls = [
'Documentation in the GitHub at https://github.com/Blosc/c-blosc2'
]
toolchain = {'name': 'cpeGNU', 'version': '26.03'}
toolchain_opts = {'pic': True}
sources = [{
'download_filename': 'v%(version)s.tar.gz',
'filename': SOURCE_TAR_GZ,
'source_urls': ['https://github.com/Blosc/c-blosc2/archive/']
}]
checksums = ['3a1a55d1e3794fb2b51a12e722d611b3e577443abb7ff9951666511f576ea3da']
build_deps = [
('buildtools', '%(toolchain_version)s', '', SYSTEM),
]
deps = [
# Central stack packages
('lz4', local_lz4_version),
('zstd', local_zstd_version), # Will actually bring in lz4 (and zlib) in our configuration.
]
pre_configure_opts = 'module unload cray-libsci cray-mpich xpmem rocm && '
# Note: It uses zfp also but there seems to be no way to get an external one.
configure_opts = ' '.join([
'-DBUILD_STATIC=ON', # This is actually the default
'-DBUILD_SHARED=ON', # This is actually the default
'-DPREFER_EXTERNAL_LZ4=ON',
'-DPREFER_EXTERNAL_ZSTD=ON',
'-DPREFER_EXTERNAL_ZLIB=ON' # Fails with the external zlib.
])
post_install_cmds = [
'mkdir -p %(installdir)s/share/licenses/%(name)s',
'cd ../c-blosc2-%(version)s && cp LICENSE.txt README.rst THANKS.rst %(installdir)s/share/licenses/%(name)s',
]
sanity_check_paths = {
'files': ['include/blosc2/blosc2-export.h', 'include/blosc2.h', 'lib/libblosc2.a',
f'lib/libblosc2.{SHLIB_EXT}'],
'dirs': [],
}
sanity_check_cmds = [
'pkg-config --validate blosc2',
f'pkg-config --exact-version={version} blosc2'
]
env_mod_category = 'lib'