Skip to content

ci-linux e2e 29/31 fail deterministically: gcc@16.1.0 first-run install — glibc 2.39 xpkg missing linux/limits.h #120

Description

@Sunrisepeak

29_toolchain_partial_versions.sh and 31_transitive_deps.sh fail on main (run 26988545086, plus a rerun) and on unrelated PRs (e.g. #119 run 27007239457) with the same signature — deterministic, not a flake:

/…/.mcpp/registry/data/xpkgs/xim-x-glibc/2.39/include/bits/local_lim.h:38:10:
fatal error: linux/limits.h: No such file or directory

during the std-module precompile right after the tests' first-run install of gcc@16.1.0 (glibc, native ABI).

Observations:

  • The xim-x-glibc/2.39 package ships glibc headers but no Linux kernel headers (linux/limits.h et al.), which bits/local_lim.h includes unconditionally.
  • The injected runtime path pairs xim-x-gcc/16.1.0 with xim-x-gcc-runtime/15.1.0 — the 16.1.0 toolchain package set looks recently published and incompletely paired.
  • Earlier main runs (gcc 15.x default era) passed these tests; the breakage tracks the registry-side default moving to 16.1.0, not any mcpp code change (e2e 65/67 otherwise green on the same runs).

Suggested fixes (registry-side): add kernel headers to the glibc xpkg (or a separate linux-headers xpkg included by the toolchain meta), and pair gcc 16.1.0 with its own runtime package.

Activity

  1. Sunrisepeak commented on Jun 5, 2026

    @Sunrisepeak
    MemberAuthor

    Correction to the original report: the registry packaging is fine — xim:linux-headers intentionally delegates to scode:linux-headers, whose payload was present all along. The bug was mcpp-side payload discovery treating the delegating package's metadata-only husk (.xim-installed + .xpkg.lua) as real content and silently giving up instead of finding the payload under the scode-x- prefix. Also corrected: this was never a flake — it was masked by warm CI caches and surfaced when a cache-key rotation + a bare restore-keys prefix (matching release.yml's sandbox cache) finally exercised the cold first-run path. Full forensics and fix in #121 (cold-path ci-linux green twice: 24m23s / 21m15s runs).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions