Repository navigation
Conversation
Build fbuild's riscv64 wheel the way upstream's release-auto.yml does for every other platform: cargo-build the fbuild and fbuild-daemon binaries and the PyO3 _native abi3 extension, then assemble the wheel with the checkout's own ci/publish.py, natively inside manylinux_2_39_riscv64. Patch ci/publish.py so the wheel ships the AGPL-3.0-only LICENSE and declares it via License-Expression/License-File.
…ated topk-sdk (#3230), zope-index (#3228), zccache (#3229), kfnetlist (#3231), ligo-skymap (#3233), quantile-forest (#3232), fbuild (#3235), py-ballisticcalc-exts (#3238), resdata (#3237), oxapy (#3239), pyramids-gis (#3240), biscuit-python (#3223), ansys-mapdl-reader (#3227) all had open PRs that queue.yml never reflected (status still queued, pr still null). Verified each PR independently before updating.
Build fbuild 2.5.21 manylinux_riscv64 failed compiling crash-context 0.6.3 (pulled in transitively via zccache/running-process-probe's crash-handler dependency) with "cannot find type ucontext_t in module super" -- that version has no riscv64 branch in its getcontext()/ ucontext_t/fpregset_t cfg-if chains at all. crash-context 0.7.0 added real riscv64 support, but crash-handler 0.6.3 and 0.7.0 (both locked here, neither ours to patch -- external git deps) each pin crash-context = "0.6", rejecting 0.7.0 under semver. Vendors the complete, unmodified 0.7.0 release with just its version string turned back to 0.6.3 so it still satisfies that requirement, wired in via [patch.crates-io] in the top-level Cargo.toml -- no hand-written riscv64 code, it's EmbarkStudios' own tested release.
zccache's crash-handler 0.6.3 pin has no riscv64 branch in its own linux/jmp.rs or linux/state.rs -- a separate crate from crash-context, not fixed by 0002. Vendor the real upstream 0.7.0 release the same way, version string turned back to "0.6.3", wired in via a second [patch.crates-io] entry.
Root causeThe failing job ( 0002 ( FixAdded Validated locally with
Pushed to |
… protoc Fixes PR #3235's riscv64 build failure: zccache-protocol's build.rs calls protoc_bin_vendored::protoc_bin_path().expect(...) unconditionally, which errors on riscv64 (upstream ships no riscv64 binary, for any version) before prost_build gets a chance to fall back to $PROTOC/$PATH. Vendors a same-name shim crate implementing that one function via a third [patch.crates-io] entry (alongside 0002/0003's crash-context/ crash-handler ones), and installs protobuf-compiler/protobuf-devel in the build container so the shim's $PATH fallback resolves to something.
fbuild2.5.21Compiles the Rust
fbuildandfbuild-daemonbinaries and the PyO3_nativeabi3 extension of FastLED's PlatformIO-compatible embedded build tool. Upstream publishes no riscv64 wheel (and no sdist).Mirrors upstream's
template_native_build.ymland thebuild-pypijob ofrelease-auto.yml, assembling the wheel with the checkout's ownci/publish.py.Differs from upstream
-D warnings- lint gate, not packagingMatrix: one
cp310-abi3wheel, tested on 3.12/3.13/3.14; abi3 is not installable on 3.14t.Testing
fbuild --version,import fbuild), plusfind_firmwareand a licence-metadata checkLicense: Upstream wheels ship no licence text for the AGPL-3.0-only project, so the build adds it.
Patches
0001-publish-ship-LICENSE-in-wheels.patch- To upstream [upstream's wheels ship no licence file or licence metadata on any platform]. Without it the wheel carries no LICENSE. Reproduces on every platform.