cramjam-2.11.0gentoo
download
# Copyright 2024-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DISTUTILS_EXT=1
DISTUTILS_USE_PEP517=maturin
PYPI_VERIFY_REPO=https://github.com/milesgranger/cramjam
PYTHON_COMPAT=( pypy3_11 python3_{11..14} )
# Note: you need to use top-level Cargo.lock to generate the crate list.
CRATES="
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]+2.15.2
[email protected]+2.15.2
[email protected]
[email protected]
[email protected]
[email protected]+1.0.8
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]+496255c
[email protected]+496255c
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]+lz4-1.10.0
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]+wasi-0.2.2
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]+zstd.1.5.7
[email protected]
"
inherit cargo distutils-r1 pypi
DESCRIPTION="Thin Python bindings to de/compression algorithms in Rust"
HOMEPAGE="
https://github.com/milesgranger/cramjam/
https://pypi.org/project/cramjam/
"
SRC_URI+="
${CARGO_CRATE_URIS}
"
LICENSE="MIT"
# Dependent crate licenses
LICENSE+="
Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD MIT MPL-2.0
Unicode-3.0
"
SLOT="0"
KEYWORDS="amd64 arm arm64 ~riscv ~sparc x86"
DEPEND="
app-arch/bzip2:=
app-arch/libdeflate:=
app-arch/lz4:=
app-arch/xz-utils:=
app-arch/zstd:=
dev-libs/isa-l:=
"
# dev-libs/c-blosc2:=
RDEPEND="
${DEPEND}
"
BDEPEND="
test? (
dev-python/numpy[${PYTHON_USEDEP}]
)
"
EPYTEST_PLUGINS=( hypothesis )
# horrible workaround for https://github.com/milesgranger/cramjam/issues/201
EPYTEST_RERUNS=5
distutils_enable_tests pytest
QA_FLAGS_IGNORED="usr/lib/py.*/site-packages/cramjam/cramjam.*.so"
src_unpack() {
pypi_src_unpack
cargo_src_unpack
}
src_prepare() {
sed -i -e '/strip/d' pyproject.toml || die
distutils-r1_src_prepare
export UNSAFE_PYO3_SKIP_VERSION_CHECK=1
# strip all the bundled C libraries
find "${ECARGO_VENDOR}"/*-sys-* \
-name '*.c' -delete || die
# https://github.com/10XGenomics/lz4-rs/pull/39
pushd "${ECARGO_VENDOR}"/lz4-sys* >/dev/null || Die
eapply -p2 "${FILESDIR}/lz4-sys-unbundle-lz4.patch"
popd >/dev/null || die
# https://github.com/milesgranger/isal-rs/pull/25 (cheap workaround)
sed -i -e '/default/d' "${ECARGO_VENDOR}"/isal-sys*/Cargo.toml || die
# enable system libraries where supported
export ZSTD_SYS_USE_PKG_CONFIG=1
# unpin C library versions
sed -i -e '/exactly_version/d' \
"${ECARGO_VENDOR}"/libdeflate-sys-*/build.rs || die
# bzip2-sys requires a pkg-config file
# https://github.com/alexcrichton/bzip2-rs/issues/104
mkdir "${T}/pkg-config" || die
export PKG_CONFIG_PATH=${T}/pkg-config${PKG_CONFIG_PATH+:${PKG_CONFIG_PATH}}
cat >> "${T}/pkg-config/bzip2.pc" <<-EOF || die
Name: bzip2
Version: 9999
Description:
Libs: -lbz2
EOF
local features=(
extension-module
snappy
lz4
bzip2
brotli
zstd
xz-shared
igzip-shared
ideflate-shared
izlib-shared
use-system-isal-shared
gzip-shared
zlib-shared
deflate-shared
# https://github.com/milesgranger/cramjam/issues/204#issuecomment-2692307708
# blosc2-shared
# use-system-blosc2-shared
)
local features_s=${features[*]}
DISTUTILS_ARGS=(
--no-default-features
--features="${features_s// /,}"
)
}