Skip to content

fix(ci): green the matrix — importlib.metadata, manylinux_2_28, drop cp38 - #289

Merged
sspickle merged 2 commits into
masterfrom
fix/ci-matrix
Aug 15, 2026
Merged

fix(ci): green the matrix — importlib.metadata, manylinux_2_28, drop cp38#289
sspickle merged 2 commits into
masterfrom
fix/ci-matrix

Conversation

@sspickle

Copy link
Copy Markdown
Contributor

Fixes #288 — the matrix fails on an untouched master. Three failures, three causes, smallest change for each:

1. import vpython is broken on fresh Python 3.12+ — a user bug, not just CI

vpython/__init__.py line 1 imports pkg_resources, and Python 3.12 stopped shipping setuptools into new environments — so on a clean 3.12/3.13 install, import vpython raises ModuleNotFoundError immediately. This is what killed the macos-3.12 leg, and it will be the first thing any new-Python user hits.

Replaced with stdlib importlib.metadata (3.8+), and python_requires bumped 3.7 → 3.8 to match (3.7 has been EOL since 2023).

2. aarch64 cp311/cp312: the container is too old for cbor2's wheels

cbor2 — a hard dependency via autobahn — publishes only manylinux_2_28 aarch64 wheels for cp311+. The workflow's manylinux2014 (glibc 2.17) container can't use them, so pip fell back to compiling the C extension from source under QEMU, which fails. Container moved to quay.io/pypa/manylinux_2_28_aarch64; pip then just downloads the wheel, which is also faster than the emulated build ever was.

3. aarch64 cp38: EOL, fails outright — dropped

Left alone deliberately: the windows 3.8/3.9 legs still pass. Retiring EOL Pythons from the support matrix is a policy decision for the project, not a CI repair, so this PR doesn't make it.

Verification

The pull_request trigger runs the full matrix on this PR — that run is the verification. Locally: both Python files parse, the workflow YAML validates, and the importlib.metadata pattern confirmed against a missing package.

Context for the timing: there's Pyodide/packaging work heading toward this repo (the pyodide-packaging branch), and it needs a trustworthy matrix to land against.

🤖 Generated with Claude Code

https://claude.ai/code/session_01G7y9rTA1r8r8EhEnPSQenR

sspickle and others added 2 commits August 14, 2026 07:46
…cp38

Three failures on an untouched master (#288), three causes:

1. macos-3.12: `import vpython` itself was broken on fresh 3.12+
   environments — vpython/__init__.py imported pkg_resources, and Python
   3.12 no longer ships setuptools into new environments. Replaced with
   stdlib importlib.metadata (3.8+), and python_requires bumped 3.7→3.8
   to match. This is a real user-facing bug, not just a CI one: anyone on
   a clean 3.12 install hits it.

2. aarch64 cp311/cp312: cbor2 — a hard dependency via autobahn — ships
   only manylinux_2_28 aarch64 wheels for cp311+, so the manylinux2014
   (glibc 2.17) container could not use them and fell back to building
   the C extension from source under QEMU, which fails. Container moved
   to quay.io/pypa/manylinux_2_28_aarch64.

3. aarch64 cp38: Python 3.8 is EOL and the leg fails outright. Dropped.

The windows 3.8/3.9 legs still pass and are left alone — retiring them
is a support-policy decision, not a CI repair.

Closes #288.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G7y9rTA1r8r8EhEnPSQenR
The pkg_resources -> importlib.metadata change renamed the imports but
missed the cleanup three lines below, which still did
`del get_distribution` — so `import vpython` raised NameError on every
platform, and the whole matrix went red on the previous push.

Caught by that CI run. The local check that let it through was a syntax
parse, which `del wrong_name` passes; the block is now verified by
executing it, which is what should have happened the first time.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G7y9rTA1r8r8EhEnPSQenR
@sspickle
sspickle merged commit 94a65ec into master Aug 15, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

CI matrix fails on current master with no code change — cp38 EOL, cbor2 source-build breaks under QEMU

1 participant