Skip to content

v0.6.1

Choose a tag to compare

@github-actions github-actions released this 01 Sep 19:52
· 31 commits to main since this release
86f5fff

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.