chore(python): prepare the bindings for wheel distribution #321
No reviewers
Labels
No labels
area/ci-release
area/cli
area/docs
area/dungeon
area/ftl
area/graphics
area/gui
area/music
area/saves
area/tooling
port/amiga
port/dos
port/fm-towns
port/mac
port/pc98
port/sega-cd
priority/high
priority/low
priority/medium
type/bug
type/chore
type/docs
type/feature
type/research
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
jqueuniet/dm2-tools!321
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "chore/python-packaging"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Makes the Python bindings distributable as wheels. They worked from a checkout,
but the package version had drifted from the workspace, the wheel carried the
wrong tag and no license files, and nothing in CI touched them.
What's in it
pyproject.tomlsaid 0.1.1 against a 0.2.0 workspace,so the wheel's pip metadata disagreed with the cdylib it bundles, and the
suite's assertion was pinned to the stale literal and failed. Both sides now
derive from the manifests.
requires-pythonmoves to>=3.11: 3.9 is EOL,3.10 nearly so, and one test could not even be imported below 3.11 for want
of a
__future__import.infer_tagstamped the building interpreter's ABI, demandinga wheel per Python minor. Nothing links the CPython C API — the cdylib is
reached through ctypes — so the tag is now
py3-none-<platform>. The hookalso wipes its staging directory, which previously let a cross-built wheel
ship a second, wrong-platform library.
licenses (PEP 639 globs cannot reach outside the package directory, so CI
diffs the copies against the originals).
bindings/pythonalone cannot build, since thecdylib it compiles lives in the workspace above it.
pythonjob that installs the package on a standalone 3.11and runs its suite.
publishjob through Forgejo'supload-artifact: manylinux and Windows wheels attached alongside the CLIarchives,
SHA256SUMScovering them too, and nothing published unless everybuild succeeded.
Verification
One manylinux wheel was installed into 3.11, 3.12 and 3.14 and ran a byte-exact
save round-trip on each, which is the point of the tag change. Both wheel builds
were exercised in their real container images, as was the
publishjob'stooling and changelog extraction.
cargo fmt,cargo test --workspaceandcargo docpass locally.macOS and aarch64 Linux wheels are not built (no runner, no SDK); with no sdist
to fall back on, those platforms install from a checkout.