Conversation
PyPI records no project URL for mercurial; upstream lives at mercurial-scm.org/repo/hg (an hg repo, mirrored to foss.heptapod.net/mercurial/mercurial-devel), not git, so this fetches the official mercurial-scm.org/release/ tarball for the tag instead of actions/checkout (byte-identical to the PyPI sdist, confirmed by sha256). Confirmed locally that a plain `pip wheel` of that tarball builds real C extensions (cext/, zstd, sha1dc) with just a C compiler - released wheels use the C flavor, not the optional Rust backend, so no Rust toolchain is needed.
luhenry
added a commit
that referenced
this pull request
Sep 28, 2026
Records the confirmed upstream source (mercurial-scm.org/repo/hg, not git) and the evidence gathered while porting: byte-identical release tarball vs PyPI sdist, C-flavor wheels (no Rust needed), local build validation.
Contributor
|
The vendored contrib/python-zstandard C extension reads PyObject.ob_refcnt directly in safe_pybytes_resize(), which free-threaded CPython builds don't expose that way (Py_GIL_DISABLED changes the PyObject layout) - confirmed the failure is a plain compile error, identical on any platform, not riscv64-specific. indygreg/python-zstandard fixed this upstream by switching to PyUnstable_Object_IsUniquelyReferenced() plus a compat shim for older Pythons, but mercurial's vendored copy predates that fix and mercurial itself publishes no cp314t wheel for any platform, so this drops the build leg rather than carrying a forward-port of vendored third-party code upstream hasn't adopted.
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.
mercurial7.2.4Builds mercurial's C extensions (bdiff, mpatch, osutil, parsers, zstd, sha1dc). Upstream publishes no riscv64 wheel.
Mirrors upstream's own
contrib/build-one-linux-wheel.sh: plainpython -m build, C flavor (no--rust), thenauditwheel repair.Differs from upstream
dnf install -y gettextfor translations - the riscv64 manylinux image ships nomsgfmtMatrix: cp312/cp313/cp314 only, no cp314t - upstream publishes no free-threaded wheel either; the vendored
contrib/python-zstandardreadsPyObject.ob_refcntdirectly, which fails to compile under free-threaded CPython on any platform.Testing
hg version+ C-extension-policy smoke test - upstream skips wheel tests entirely (test-skip = "*")License: OK