commit: 74f0e599968c2fefb2c971afc64bf17c5f279a95 Author: Brett A C Sheffield <bacs <AT> librecast <DOT> net> AuthorDate: Sat Jan 24 18:24:12 2026 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Mon Feb 9 23:44:37 2026 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=74f0e599
dev-python/blake3: do not use vendored C sources Fix build with USE="-rust" to not use bundled outdated blake3 C sources, but depend on dev-libs/blake3 package. Closes: https://bugs.gentoo.org/943281 Signed-off-by: Brett A C Sheffield <bacs <AT> librecast.net> Signed-off-by: Sam James <sam <AT> gentoo.org> dev-python/blake3/blake3-1.0.8-r1.ebuild | 144 +++++++++++++++++++++ .../files/blake3-1.0.8-use-installed-library.patch | 49 +++++++ 2 files changed, 193 insertions(+) diff --git a/dev-python/blake3/blake3-1.0.8-r1.ebuild b/dev-python/blake3/blake3-1.0.8-r1.ebuild new file mode 100644 index 000000000000..1769be858af7 --- /dev/null +++ b/dev-python/blake3/blake3-1.0.8-r1.ebuild @@ -0,0 +1,144 @@ +# Copyright 2022-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +CARGO_OPTIONAL=1 +DISTUTILS_EXT=1 +DISTUTILS_USE_PEP517=standalone +PYTHON_COMPAT=( python3_{11..14} ) + +RUST_MIN_VER="1.80.0" +CRATES=" + [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] +" + +inherit cargo distutils-r1 + +MY_P=blake3-py-${PV} +DESCRIPTION="Python bindings for the BLAKE3 cryptographic hash function" +HOMEPAGE=" + https://github.com/oconnor663/blake3-py/ + https://pypi.org/project/blake3/ +" +SRC_URI=" + https://github.com/oconnor663/blake3-py/archive/${PV}.tar.gz + -> ${MY_P}.gh.tar.gz + rust? ( + ${CARGO_CRATE_URIS} + ) +" +S=${WORKDIR}/${MY_P} + +LICENSE=" + || ( CC0-1.0 Apache-2.0 ) + rust? ( +" +# Dependent crate licenses +LICENSE+=" + Apache-2.0-with-LLVM-exceptions BSD-2 MIT Unicode-3.0 + || ( Apache-2.0 CC0-1.0 MIT-0 ) +" +LICENSE+=" + ) +" +SLOT="0" +KEYWORDS="~amd64" +IUSE="+rust" + +DEPEND=" + !rust? ( dev-libs/blake3:= ) +" +RDEPEND="${DEPEND}" +BDEPEND=" + ${DEPEND} + rust? ( + ${RUST_DEPEND} + dev-util/maturin[${PYTHON_USEDEP}] + ) + !rust? ( + dev-python/setuptools[${PYTHON_USEDEP}] + dev-python/wheel[${PYTHON_USEDEP}] + ) + test? ( + dev-python/numpy[${PYTHON_USEDEP}] + ) +" + +QA_FLAGS_IGNORED="usr/lib.*/py.*/site-packages/blake3/blake3.*.so" + +EPYTEST_PLUGINS=() +distutils_enable_tests pytest + +pkg_setup() { + use rust && rust_pkg_setup +} + +src_unpack() { + # Do this unconditionally as it has sensible behaviour even + # w/ USE=-rust. + cargo_src_unpack +} + +PATCHES=( + # Link against shared blake3 library. Bug 943281. + "${FILESDIR}/${P}-use-installed-library.patch" +) + +src_prepare() { + distutils-r1_src_prepare + + # sed the package name and version to improve compatibility + sed -e 's:blake3_experimental_c:blake3:' \ + -e "s:0[.]0[.]1:${PV}:" \ + -i c_impl/setup.py || die + + # remove vendored C sources to ensure we don't use accidentally + rm -r c_impl/vendor || die +} + +python_compile() { + local DISTUTILS_USE_PEP517=$(usex rust maturin setuptools) + + if ! use rust; then + export FORCE_SYSTEM_BLAKE3=1 + cd c_impl || die + fi + distutils-r1_python_compile + if ! use rust; then + cd - >/dev/null || die + fi +} diff --git a/dev-python/blake3/files/blake3-1.0.8-use-installed-library.patch b/dev-python/blake3/files/blake3-1.0.8-use-installed-library.patch new file mode 100644 index 000000000000..5f96470ad213 --- /dev/null +++ b/dev-python/blake3/files/blake3-1.0.8-use-installed-library.patch @@ -0,0 +1,49 @@ +# Link against shared blake3 library. Gentoo bug 943281. +# Set FORCE_SYSTEM_BLAKE3=1 to force use of installed system library. + +diff --git a/c_impl/setup.py b/c_impl/setup.py +index 417385b..2a664f0 100644 +--- a/c_impl/setup.py ++++ b/c_impl/setup.py +@@ -69,6 +69,9 @@ def is_aarch64(): + def force_intrinsics(): + return os.environ.get("FORCE_INTRINSICS") == "1" + ++def force_system_blake3(): ++ # force use of system library for blake3 ++ return os.environ.get("FORCE_SYSTEM_BLAKE3") == "1" + + def compile_x86_intrinsics(): + object_files = [] +@@ -203,9 +206,17 @@ def prepare_extension(): + "vendor/blake3_dispatch.c", + "vendor/blake3_portable.c", + ] ++ include_dirs=[ ++ "vendor", ++ ], ++ extra_link_args = [ "-lblake3" ] + target = platform.machine() + extra_objects = [] +- if is_macos(): ++ if force_system_blake3(): ++ print("using installed system library") ++ sources = sources[:1] ++ include_dirs = [] ++ elif is_macos(): + # On macOS we build a "universal" binary containing both x86 and ARM + # code. + extra_objects = compile_macos_universal_staticlib() +@@ -239,10 +250,9 @@ def prepare_extension(): + return setuptools.Extension( + "blake3", + sources=sources, +- include_dirs=[ +- "vendor", +- ], ++ include_dirs=include_dirs, + extra_objects=extra_objects, ++ extra_link_args=extra_link_args, + define_macros=[ + ("SETUP_PY_VERSION", escape_preprocessor_string(VERSION)), + ("SETUP_PY_DESCRIPTION", escape_preprocessor_string(DESCRIPTION)),
