You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Fixed
natmod's x86 arch failed to link through natmod_host, on every tag
through v1.28.0, since 0.6.0's own ubuntu:26.04 bump — whenever the
module needs anything from libgcc.docker/natmod_host.Dockerfile pinned gcc-13-multilib by version; once the base image's own build-essential
started resolving to gcc 15, upstream's own -m32 path for x86 (every
MicroPython tag through v1.28.0 — v1.29.0 switched to a separate i686-linux-gnu- cross compiler, unaffected) linked against gcc 15's
64-bit-only libgcc.a and failed outright (LinkError: incompatible arch)
the moment a module actually referenced a libgcc symbol (soft-float,
64-bit arithmetic). Fixed by computing the real, version-specific package
name at build time (gcc-$(gcc -dumpversion | cut -d. -f1)-multilib)
instead of typing one by hand — the unversioned gcc-multilib metapackage
was tried first and does not build, since it conflicts with gcc-i686-linux-gnu, the other package this image has always installed
alongside it. The image build itself now also compiles and links an
explicit 64-bit multiply through both of x86's toolchains before the
layer finishes, so a future regression here fails docker build, not
just a real link somewhere downstream. x64 and every cross-compiled
arch were unaffected. See docs/records/0068's own third correction.
qemu's POWERNV9 board failed to link through ppc64le_linux, since 0.6.0's own ubuntu:26.04 bump — whenever the firmware references a
long-double printf-family call (ports/qemu's own readline.c does). docker/ppc64le_linux.Dockerfile installed a Debian-packaged cross
toolchain (gcc-powerpc64le-linux-gnu + libc6-dev-ppc64el-cross), the
same "paired with whatever gcc the base resolves to" shape natmod_host's
multilib pin turned out to be. The base bump left the two packages out of
step and a real link failed with undefined reference to '__snprintfieee128' — powerpc64le's own glibc long-double ABI transition.
Fixed by replacing the apt toolchain outright with a pinned Bootlin
tarball (powerpc64le-power8--glibc--stable-2025.08-1, gcc 14.3.0, glibc
2.41-70, URL + sha256 — the same model manylinux_2_41_mipsel already
uses), rather than chasing the Ubuntu packaging mismatch: Bootlin's own
gcc and glibc come from one matched Buildroot build, so there is no
separately-packaged "-cross" half left to drift from the compiler's own
version. Verified against the exact failing call shape
(snprintf/%Lf on a long double), statically linked, both directly
through the extracted toolchain and inside a real docker build of the
changed image. See docs/records/0068's own fourth addendum.