Skip to content

ci: name the build tool in one place, and remove a pin that resolved to 2026-05 - #13

Merged
Sunrisepeak merged 2 commits into
masterfrom
ci/refresh-mcpp-pin
Aug 29, 2026
Merged

ci: name the build tool in one place, and remove a pin that resolved to 2026-05#13
Sunrisepeak merged 2 commits into
masterfrom
ci/refresh-mcpp-pin

Conversation

@Sunrisepeak

Copy link
Copy Markdown
Member

Every pull request opened after 2026-07-11 fails at mcpp build with

[error] package 'xim:glibc@>=2.39' not found
[error] package 'xim:gcc-runtime@>=15' not found
error: auto-installing default toolchain gcc@16.1.0 failed

before a line is compiled, so the failure belongs to no change under review. #12 is red for this reason alone.

Cause

.xlings.json declared workspace.mcpp = 0.0.13. That file is read from the current directory, and actions/checkout places it there before any step runs, so every mcpp invocation in this repository resolved to a build tool from 2026-05 rather than to the one the job had installed. The index no longer serves the toolchain packages a tool of that age asks for.

Reproduced outside CI. In a clean worktree of master:

$ mcpp --version
[warn] mcpp@0.0.13 is the version this project asks for, and it is not installed yet
         from                  ./.xlings.json  ->  workspace.mcpp
$ rm .xlings.json && mcpp --version
mcpp 2026.8.28.2

What changes

  • The pin file is removed and the version becomes env.MCPP_VERSION, read by both the install and the cache key. They named different versions before, which is why Cache not found for input keys: mcpp-sandbox-Linux-mcpp0.0.13 appears in every log: that cache had never once been hit.
  • mcpp --version is printed. The version a job runs is now the version it reports.
  • mcpp self config --mirror GLOBAL, which is what a runner outside China needs.
  • A weekly schedule. The breakage occurred between 2026-07-11 and 2026-08-29 and nothing reported it, because master received no pushes in that window. The first run to meet it was a contributor's, who had no way to distinguish a broken environment from a broken change.
  • compile_commands.json is ignored. mcpp build writes it beside the manifest.

Measured

Locally against mcpp 2026.8.28.2, in a clean worktree of master:

   Compiling tinyhttps v0.2.9 (.)
   Compiling compat.mbedtls v3.6.1
    Finished dev [unoptimized + debuginfo] in 2.46s

[==========] 9 tests from 3 test suites ran. (18958 ms total)
[  PASSED  ] 9 tests.
 test result ok. 2 passed; 0 failed

CI on this branch is the criterion for the pinned version, 2026.8.29.1, which is not the one measured above.

…to 2026-05

`mcpp build` ended at `package 'xim:glibc@>=2.39' not found` on every pull
request opened after 2026-07-11, before compiling a line. The change under
review was not involved.

`.xlings.json` declared `workspace.mcpp = 0.0.13`. That file is read from the
current directory, and `actions/checkout` places it there before any step runs,
so every `mcpp` invocation in this repository resolved to a build tool from
2026-05 rather than to the one the job installed. The index no longer serves the
toolchain packages a tool of that age asks for.

Reproduced outside CI: in a checkout of this repository, `mcpp --version`
reports

    [warn] mcpp@0.0.13 is the version this project asks for, and it is not
           installed yet
             from  ./.xlings.json  ->  workspace.mcpp

and reports 2026.8.28.2 once the file is removed.

The version is now an environment variable, so the install and the cache key
cannot drift apart; the cache path named 0.0.13 while the job installed
something else, so that cache had never once been hit.

A weekly schedule is added. The breakage occurred between 2026-07-11 and
2026-08-29 and nothing reported it, because master received no pushes in that
window: the first run to meet it was a contributor's, who had no way to
distinguish a broken environment from a broken change.

Measured locally against mcpp 2026.8.28.2: `mcpp build` resolves and completes,
`mcpp test` reports 9 tests from 3 suites passed.
`--retry` covers a transient HTTP status and a timeout and does not cover a
failure of the transport. `curl: (35) Recv failure: Connection reset by peer`
is what this ecosystem's runners actually meet, and it produces a red job that
names no defect.
@Sunrisepeak
Sunrisepeak merged commit 4aabaae into master Aug 29, 2026
1 check passed
@Sunrisepeak
Sunrisepeak deleted the ci/refresh-mcpp-pin branch August 29, 2026 18:20
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.

1 participant