Blosc⅔.2.3-cpeGNU-26.03 (Blosc2-3.2.3-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/3.2.3-cpeGNU-26.03.
EasyConfig:
easyblock = 'CMakeMake'
local_Blosc2_version = '3.2.3' # 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
# User-installable dependencies
local_zfp_version = '1.0.1' # https://github.com/LLNL/zfp/releases
name = 'Blosc2'
version = local_Blosc2_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 = ['32977709c21f3fec50befa7a031fa624b963427b69d3ffb69c91aadc9279c887']
build_deps = [
('buildtools', '%(toolchain_version)s', '', SYSTEM),
]
deps = [
# Central stack packages
('lz4', local_lz4_version),
('zstd', local_zstd_version), # Will actually bring in lz4 in our configuration.
# User-installable packages
('zfp', local_zfp_version)
]
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
'-DBLOSC_DEPENDENCY_MODE=EXTERNAL',
'-DBLOSC_ENABLE_ZFP=ON',
])
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'