Repository navigation
Warning
natmod's x86 arch is broken in this release for every MicroPython tag
through v1.28.0 (upstream's own -m32 toolchain path) — the ubuntu:26.04
bump below made natmod_host's pinned gcc-13-multilib mismatch the base
image's actual gcc (15), so any real x86 build referencing libgcc
(soft-float, 64-bit arithmetic) fails with LinkError: incompatible arch.
v1.29.0+ (cross-prefixed toolchain) and every other arch are unaffected.
Fixed in v0.6.1.
Added
- A pre-1.0/alpha warning at the top of
README.md. Nothing said the config
schema and CLI can still change between releases without a deprecation cycle;
this repo has no1.0.0yet and no stability guarantee to imply otherwise. - A
.gitignore(*), dropped intooutput-dirthe first time anything
writes into it, both platforms. A freshmpyhouse/cibuildmp itself
creates should not need a matching entry hand-added to the caller's own
top-level.gitignore— verified live against a reala7pbuild (an
existingoutput-dirthat had never had one gainedmpyhouse/.gitignore
on the next build). Checked by existence, not written unconditionally:
never overwrites one already there, in case a caller wants something else
(e.g. a real!keep-thisexception).
Changed
- BREAKING: the
mipselcell ismanylinux_2_41_mipsel, not
manylinux_2_39_mipsel. Every identifier naming it changes with it
(v1.29.0-manylinux_2_39_mipsel->v1.29.0-manylinux_2_41_mipsel), and a
caller still naming the old one getsmatches no known identifier— there is
no alias. The rename follows its toolchain:docker/manylinux_2_41_mipsel.Dockerfile
no longer installsgcc-mipsel-linux-gnu/libc6-dev-mipsel-crossat all,
because Debian 13 "Trixie" dropped the mipsel port and Ubuntu's archive lost
those packages with it. It pins a Bootlin tarball instead
(mips32el--glibc--stable-2025.08-1, gcc 14.3.0, glibc 2.41-70, URL +
sha256), the same version+URL+sha256 model the four embedded toolchain images
already use — so this image no longer depends on an apt archive for an
architecture upstream has abandoned.2_39was apt's cross-glibc version, so
keeping the name would have made a real PEP 600 tag claim a floor its image no
longer has (record 0031's principle, record 0068's decision).
Verified on real artifacts, not inferred: a fullexamples/usercmodulebuild
(including theMICROPY_STANDALONEstatic-libffideplibsstep) links, and
the result runs underqemu-mipselwith all three upstream modules importing
—ELF 32-bit LSB executable, MIPS, statically linked. One real difference
from the apt toolchain: the ELF is nowmips32(r1) rather thanmips32r2,
which widens the hardware it runs on rather than narrowing it.
The image is published and pinned under the new package name
(ghcr.io/ballistics-lab/manylinux_2_41_mipsel@sha256:eee14e84…), verified by
a real build that pulls it with noCIBMP_UNIX_MANYLINUX_2_41_MIPSEL_DOCKER_IMAGE
override at all. Itsresources/pinned_docker_images.tomlrow was empty
between the rename and that publish — a GHCR digest is per package name, so
the pre-rename digest was never a reference this cell could carry, and an
empty group is the statedockerrun.image_for()already defines as "exists,
nothing published yet". - Every pypa base digest re-pinned, and every image digest with it. The
manylinux_2_28_*bases andpypa-tracker.Dockerfile's nine mirrored
references move to pypa's2026.09.01-1release (Dependabot's own grouped PR),
pinned_pypa_images.toml's 34 pins move with them via
bin/update_docker.py --pypa, and all 15 images were republished and re-pinned
with--images.--checkreports zero drift for the first time in a while:
fourteenghcr.iopins had been one publish behind their own:latestsince a
docker/**push tomainrepublished everything with no repin PR behind it —
the trigger removed above.