diff --git a/.github/workflows/build-brotlicffi.yml b/.github/workflows/build-brotlicffi.yml index ad0d7ce99405..287f4b55acba 100644 --- a/.github/workflows/build-brotlicffi.yml +++ b/.github/workflows/build-brotlicffi.yml @@ -102,6 +102,12 @@ jobs: # cffi, needed to build and to import the extension, has no riscv64 # wheel on PyPI. CIBW_ENVIRONMENT: PIP_EXTRA_INDEX_URL=https://pypi.riseproject.dev/simple/ + # Recent hypothesis releases are compiled (Rust) and ship no + # py3-none-any wheel; their riscv64 wheel is cp311-abi3 only, so on + # cp314t pip falls back to the sdist, which needs a Rust toolchain + # rustup cannot install on riscv64. Wheel-only makes pip back off to + # the newest release that still has a usable (pure-Python) wheel. + CIBW_TEST_ENVIRONMENT: PIP_ONLY_BINARY=hypothesis # Upstream tests its wheels in a separate tox job; test_requirements.txt # minus pytest-cov, which measures nothing on an installed wheel. CIBW_TEST_REQUIRES: pytest hypothesis diff --git a/docs/packages/brotlicffi.yaml b/docs/packages/brotlicffi.yaml index d55047931876..7570e5bf3f82 100644 --- a/docs/packages/brotlicffi.yaml +++ b/docs/packages/brotlicffi.yaml @@ -12,3 +12,4 @@ versions: - filename: brotlicffi-1.2.0.2-cp39-abi3-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl sha256: 5c571498e2d3ede2e5709359aab2270e967adef49833db5fa0eec492e78537ee requires-python: '>=3.8' +- version: 1.2.1.0 diff --git a/patches/brotlicffi/1.2.1.0/0001-ship-libbrotli-s-licence-alongside-brotlicffi-s-own.patch b/patches/brotlicffi/1.2.1.0/0001-ship-libbrotli-s-licence-alongside-brotlicffi-s-own.patch new file mode 100644 index 000000000000..6be435d1efe3 --- /dev/null +++ b/patches/brotlicffi/1.2.1.0/0001-ship-libbrotli-s-licence-alongside-brotlicffi-s-own.patch @@ -0,0 +1,33 @@ +From 978d784581efd36b294bd0d20dc7a3b9d7acb4bb Mon Sep 17 00:00:00 2001 +From: Ludovic Henry +Date: Fri, 28 Aug 2026 08:32:01 +0200 +Subject: [PATCH] ship libbrotli's licence alongside brotlicffi's own + +Upstream-Status: To upstream [not yet submitted; the same gap exists in every brotlicffi wheel on PyPI, so this needs a maintainer discussion rather than a drive-by PR] + +The extension statically links the bundled libbrotli C sources +(libbrotli/c, compiled as the "libbrotli" static library by setup.py), which +carry their own MIT notice from the Brotli Authors. Those terms require the +copyright notice to travel with binary redistributions, but setup.cfg's +explicit license_files list names only brotlicffi's LICENSE, so the built +wheel ships a single notice covering the wrapper alone. + +Naming the vendored file in place keeps the patch to one line and lets it +track the submodule: setuptools preserves each license_files entry's path +relative to the project root, so it lands in the wheel as +dist-info/licenses/libbrotli/LICENSE. + +Signed-off-by: Ludovic Henry +--- + setup.cfg | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/setup.cfg b/setup.cfg +index 8b7eaaf..d3d94fa 100644 +--- a/setup.cfg ++++ b/setup.cfg +@@ -6,3 +6,4 @@ markers = + [metadata] + license_files = + LICENSE ++ libbrotli/LICENSE