mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-23 16:49:10 -07:00
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@librecast.net> Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
committed by
Sam James
parent
3f877c2621
commit
74f0e59996
144
dev-python/blake3/blake3-1.0.8-r1.ebuild
Normal file
144
dev-python/blake3/blake3-1.0.8-r1.ebuild
Normal file
@@ -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="
|
||||
arrayref@0.3.9
|
||||
arrayvec@0.7.6
|
||||
autocfg@1.5.0
|
||||
blake3@1.8.2
|
||||
cc@1.2.39
|
||||
cfg-if@1.0.3
|
||||
constant_time_eq@0.3.1
|
||||
crossbeam-deque@0.8.6
|
||||
crossbeam-epoch@0.9.18
|
||||
crossbeam-utils@0.8.21
|
||||
either@1.15.0
|
||||
find-msvc-tools@0.1.2
|
||||
heck@0.5.0
|
||||
hex@0.4.3
|
||||
indoc@2.0.6
|
||||
libc@0.2.176
|
||||
memmap2@0.9.8
|
||||
memoffset@0.9.1
|
||||
once_cell@1.21.3
|
||||
portable-atomic@1.11.1
|
||||
proc-macro2@1.0.101
|
||||
pyo3-build-config@0.26.0
|
||||
pyo3-ffi@0.26.0
|
||||
pyo3-macros-backend@0.26.0
|
||||
pyo3-macros@0.26.0
|
||||
pyo3@0.26.0
|
||||
quote@1.0.41
|
||||
rayon-core@1.13.0
|
||||
rayon@1.11.0
|
||||
shlex@1.3.0
|
||||
syn@2.0.106
|
||||
target-lexicon@0.13.3
|
||||
unicode-ident@1.0.19
|
||||
unindent@0.2.4
|
||||
"
|
||||
|
||||
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
|
||||
}
|
||||
@@ -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)),
|
||||
Reference in New Issue
Block a user