# Copyright 2024 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 # Note: you need to use top-level Cargo.lock to generate the crate list. CRATES=" adler2@2.0.0 alloc-no-stdlib@2.0.4 alloc-stdlib@0.2.2 atty@0.2.14 autocfg@1.3.0 bitflags@1.3.2 bitflags@2.6.0 blosc2-rs@0.2.6+2.14.3 blosc2-sys@0.2.6+2.14.3 brotli-decompressor@2.5.1 brotli@3.5.0 bzip2-sys@0.1.11+1.0.8 bzip2@0.4.4 cbindgen@0.24.5 cc@1.1.16 cfg-if@1.0.0 clap@3.2.25 clap_lex@0.2.4 cmake@0.1.51 copy_dir@0.1.3 crc32fast@1.4.2 errno@0.3.9 fastrand@2.1.1 flate2@1.0.33 hashbrown@0.12.3 heck@0.4.1 heck@0.5.0 hermit-abi@0.1.19 indexmap@1.9.3 indoc@2.0.5 itoa@1.0.11 jobserver@0.1.32 libc@0.2.158 libcramjam@0.4.2 libdeflate-sys@1.19.3 libdeflater@1.19.3 linux-raw-sys@0.4.14 lock_api@0.4.12 log@0.4.22 lz4-sys@1.10.0 lz4@1.26.0 lzma-sys@0.1.20 memchr@2.7.4 memoffset@0.9.1 miniz_oxide@0.8.0 once_cell@1.19.0 os_str_bytes@6.6.1 parking_lot@0.12.3 parking_lot_core@0.9.10 pkg-config@0.3.30 portable-atomic@1.7.0 proc-macro2@1.0.86 pyo3-build-config@0.22.2 pyo3-ffi@0.22.2 pyo3-macros-backend@0.22.2 pyo3-macros@0.22.2 pyo3@0.22.2 python3-dll-a@0.2.10 quote@1.0.37 redox_syscall@0.5.3 rustix@0.38.36 ryu@1.0.18 same-file@1.0.6 scopeguard@1.2.0 serde@1.0.209 serde_derive@1.0.209 serde_json@1.0.128 shlex@1.3.0 smallvec@1.13.2 snap@1.1.1 strsim@0.10.0 syn@1.0.109 syn@2.0.77 target-lexicon@0.12.16 tempfile@3.12.0 termcolor@1.4.1 textwrap@0.16.1 toml@0.5.11 unicode-ident@1.0.12 unindent@0.2.3 walkdir@2.5.0 winapi-i686-pc-windows-gnu@0.4.0 winapi-util@0.1.9 winapi-x86_64-pc-windows-gnu@0.4.0 winapi@0.3.9 windows-sys@0.52.0 windows-sys@0.59.0 windows-targets@0.52.6 windows_aarch64_gnullvm@0.52.6 windows_aarch64_msvc@0.52.6 windows_i686_gnu@0.52.6 windows_i686_gnullvm@0.52.6 windows_i686_msvc@0.52.6 windows_x86_64_gnu@0.52.6 windows_x86_64_gnullvm@0.52.6 windows_x86_64_msvc@0.52.6 xz2@0.1.7 zstd-safe@7.2.1 zstd-sys@2.0.13+zstd.1.5.6 zstd@0.13.2 " DISTUTILS_EXT=1 DISTUTILS_USE_PEP517=maturin PYTHON_COMPAT=( pypy3 python3_{10..13} ) 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-DFS-2016 " 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/c-blosc2:= " RDEPEND=" ${DEPEND} " BDEPEND=" test? ( dev-python/hypothesis[${PYTHON_USEDEP}] dev-python/numpy[${PYTHON_USEDEP}] ) " distutils_enable_tests pytest QA_FLAGS_IGNORED="usr/lib/py.*/site-packages/cramjam/cramjam.*.so" 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, old, broken 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 # enable system libraries where supported export ZSTD_SYS_USE_PKG_CONFIG=1 pushd "${ECARGO_VENDOR}"/libcramjam* >/dev/null || Die eapply "${FILESDIR}/libcramjam-unbundle.patch" popd >/dev/null || die # unpin C library versions sed -i -e '/exactly_version/d' \ "${ECARGO_VENDOR}"/{blosc2,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 DISTUTILS_ARGS=( --features=use-system-blosc2 ) } python_test() { local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 epytest tests }