Conversation
libuuu is NXP's ctypes wrapper around libuuu.so, the library half of mfgtools' uuu flashing tool. Upstream's wheels are py3-none-<platform> because the only native code is that shared library, compiled from the mfgtools C++ sources by cibuildwheel's before-all. Mirror upstream's build_wrapper.yaml, narrowed to riscv64: the same cibuildwheel build of ./wrapper on cp39 from the uuu_<version> tag. The vcpkg dependency build is replaced by the image's libusb1, bzip2, zstd, OpenSSL and zlib packages plus a static tinyxml2 10.0.0 (the version upstream's vcpkg baseline resolves; not packaged in Rocky 10). The wheel ships the mfgtools and tinyxml2 licences and those of every library auditwheel vendors, and the copyleft ones' sources are collected for the release. Upstream's tests run on cp39 inside cibuildwheel and on cp310-cp314 afterwards, minus test_get_platform_info, which asserts the architecture is one of upstream's four.
luhenry
added a commit
that referenced
this pull request
Sep 26, 2026
Contributor
|
The cp39 wheel build crashes in egg_info with "TypeError: expected string or bytes-like object" from importlib_metadata's normalize(). This is not riscv64-specific: it reproduces on x86_64 CPython 3.9 with the same sdist-less checkout. setuptools-scm 10.2.0 (the first 10.x to allow Python 3.9 again) makes its egg_info run() create libuuu.egg-info and write scm_*.json into it before calling setuptools' run(), which is exactly the window setuptools closed by preloading the egg_info.writers entry points (pypa/pyproject-hooks#206). libuuu's in-tree backend declares backend-path = ["."], so pyproject_hooks' _BackendPathFinder yields the wrapper directory's distributions through the stdlib importlib.metadata. On 3.9 a stdlib PathDistribution has no _normalized_name and the half-written egg-info has no Name, so the entry-point scan fails. Python 3.10+ derives the name from the directory and builds fine; setuptools-scm 9.2.2 and 10.2.0-10.3.4 were bisected on cp39 as good and bad respectively. Upstream released 1.5.243 in December 2025 with setuptools-scm 9.2.2, so constrain to <10.2 via PIP_CONSTRAINT and PIP_BUILD_CONSTRAINT.
A venv on the image's cp310 is seeded with pip 23.0.1, whose vendored packaging lists no riscv64 in _have_compatible_abi, so it rejects the manylinux_2_39_riscv64 wheel as unsupported on this platform.
luhenry
added a commit
that referenced
this pull request
Sep 26, 2026
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
libuuu1.5.243Compiles
libuuu.so, the C++ core of NXP's uuu flashing tool, into apy3-nonewheel loaded through ctypes. Upstream publishes no riscv64 wheel.Mirrors upstream's
build_wrapper.yaml.Differs from upstream
dnflibusb1, bzip2, zstd, OpenSSL, zlib - vcpkg has no riscv64 binaries.setuptools-scm<10.2- 10.2+ crashesegg_infoon cp39 with an in-tree backend (any arch); 1.5.243 shipped with 9.2.2.Matrix: one cp39 build, as upstream; the wheel is interpreter-agnostic.
Testing
test_get_platform_infodeselected - it asserts the architecture is one of upstream's four.License: Wheel bundles libusb and libudev (LGPL-2.1), libcap, OpenSSL (Apache-2.0), zstd, bzip2 and a static tinyxml2 (Zlib); the build adds their licence texts.
Built on cp39; 25 passed, 1 deselected on each of cp39-cp314.