|
14 | 14 | workflow_dispatch: |
15 | 15 |
|
16 | 16 | env: |
17 | | - # 2026.8.5.1 is a FLOOR, not a routine bump: `tools = [...]` — how a consumer |
18 | | - # asks for a dependency's `kind = "bin"` target, which the new |
19 | | - # tests/examples/protobuf-protoc member is built on — does not parse before |
20 | | - # it ("tools must be a string, inline dep table, or nested table"). Note this |
21 | | - # does NOT move index.toml's min_mcpp: exposing compat.protobuf's `protoc` |
| 17 | + # 2026.8.5.3 carries two things this workflow depends on: |
| 18 | + # .5.1 `tools = [...]` — how a consumer asks for a dependency's |
| 19 | + # `kind = "bin"` target, which tests/examples/protobuf-protoc is built |
| 20 | + # on. Before it: "tools must be a string, inline dep table, or nested |
| 21 | + # table". |
| 22 | + # .5.3 link response files separate objects by NEWLINES. link.exe caps a |
| 23 | + # response-file LINE at 128 KiB, and opencv-module / opencv-module-dnn |
| 24 | + # went past it on windows — after 795s / 1166s of compiling: |
| 25 | + # fatal error LNK1170: line in command file contains 135135 or |
| 26 | + # more characters |
| 27 | + # Together with re-enabling the global package cache below, this is |
| 28 | + # what makes a green FULL run possible again: .5.3 removes the |
| 29 | + # windows link failure, the cache removes the 150-minute timeout. |
| 30 | + # |
| 31 | + # Neither of them moves index.toml's min_mcpp: exposing compat.protobuf's `protoc` |
22 | 32 | # target is additive, and 2026.8.3.3 still parses that descriptor with an |
23 | 33 | # empty unknown_keys. The floor an index publishes decides whether older |
24 | 34 | # clients keep working at all (mcpp#349), so it moves only when a descriptor |
|
97 | 107 | # 0.0.94 fixed feature-gated `sources` under `mcpp test` (mcpp#218); 0.0.91 |
98 | 108 | # added standard = "c++fly" to the resolver grammar, so c++fly descriptors |
99 | 109 | # get the lint WARN below, not a hard grammar-parse rejection. |
100 | | - MCPP_VERSION: "2026.8.5.1" |
| 110 | + MCPP_VERSION: "2026.8.5.3" |
101 | 111 |
|
102 | 112 | jobs: |
103 | 113 | lint: |
@@ -262,21 +272,21 @@ jobs: |
262 | 272 | ext: tar.gz |
263 | 273 | mcpp: bin/mcpp |
264 | 274 | xlings: registry/bin/xlings |
265 | | - mcpp_version: "2026.8.5.1" # keep in sync with env.MCPP_VERSION |
| 275 | + mcpp_version: "2026.8.5.3" # keep in sync with env.MCPP_VERSION |
266 | 276 | - platform: macos |
267 | 277 | os: macos-15 |
268 | 278 | suffix: macosx-arm64 |
269 | 279 | ext: tar.gz |
270 | 280 | mcpp: bin/mcpp |
271 | 281 | xlings: registry/bin/xlings |
272 | | - mcpp_version: "2026.8.5.1" # keep in sync with env.MCPP_VERSION |
| 282 | + mcpp_version: "2026.8.5.3" # keep in sync with env.MCPP_VERSION |
273 | 283 | - platform: windows |
274 | 284 | os: windows-latest |
275 | 285 | suffix: windows-x86_64 |
276 | 286 | ext: zip |
277 | 287 | mcpp: bin/mcpp.exe |
278 | 288 | xlings: registry/bin/xlings.exe |
279 | | - mcpp_version: "2026.8.5.1" # keep in sync with env.MCPP_VERSION |
| 289 | + mcpp_version: "2026.8.5.3" # keep in sync with env.MCPP_VERSION |
280 | 290 | env: |
281 | 291 | MCPP_EFFECTIVE: ${{ matrix.mcpp_version }} |
282 | 292 | steps: |
@@ -446,29 +456,30 @@ jobs: |
446 | 456 | shell: bash |
447 | 457 | env: |
448 | 458 | MCPP_INDEX_MIRROR: GLOBAL |
449 | | - # Dependencies build inside each member's own target/ instead of |
450 | | - # through the global package build cache (mcpp >= 2026.7.30.2). |
451 | | - # That cache is unusable here: mcpp#233's object-path disambiguation |
452 | | - # fires on basename collisions across the WHOLE build dir — i.e. on |
453 | | - # which packages the CONSUMER pulls in — while the cache key covers |
454 | | - # only the dependency itself, so one entry can hold two different |
455 | | - # layouts. `tests/examples/archive` pulls zlib AND bzip2 (both ship |
456 | | - # compress.c) and stores obj/compat_zlib/zlib-1.3.2/compress.o; |
457 | | - # every zlib consumer without bzip2 then asks the same key for a |
458 | | - # flat obj/compress.o and ninja dies at graph time with |
459 | | - # "missing and no known rule to make it". Reproduced both ways round |
460 | | - # on 2026.8.3.3 and filed as mcpp-community/mcpp#344. `local` still |
461 | | - # caches the std BMI, which is the expensive one — only package |
462 | | - # entries are bypassed. |
| 459 | + # The GLOBAL package build cache is on (mcpp >= 2026.7.30.2), which |
| 460 | + # is the default — this step used to set `MCPP_BUILD_CACHE: local` |
| 461 | + # and no longer does. |
| 462 | + # |
| 463 | + # That bypass existed for mcpp#344: object-path disambiguation fires |
| 464 | + # on basename collisions across the WHOLE build dir — i.e. on what |
| 465 | + # the CONSUMER pulls in — while the cache key covered only the |
| 466 | + # dependency, so one entry could hold two layouts and ninja died at |
| 467 | + # graph time with "missing and no known rule to make it". #344 |
| 468 | + # landed in 2026.8.3.4 with per-package Merkle keys that cover the |
| 469 | + # consumer-dependent layout, so the reason is gone. |
| 470 | + # |
| 471 | + # Keeping it cost real time, and the full run is where it showed: |
| 472 | + # with `local`, EVERY member recompiles EVERY dependency from |
| 473 | + # scratch. 59 members that mostly share abseil / protobuf / opencv |
| 474 | + # meant the same sources were built over and over — |
| 475 | + # |
| 476 | + # linux 2h30m -> cancelled at the 150-minute timeout |
| 477 | + # windows 2h20m |
| 478 | + # macos 1h26m |
463 | 479 | # |
464 | | - # STATUS: #344 landed in 2026.8.3.4 (per-package Merkle keys that |
465 | | - # cover the consumer-dependent layout), so as of the pin above this |
466 | | - # bypass is no longer required. It is kept here deliberately: |
467 | | - # re-enabling the global package cache changes how EVERY member |
468 | | - # builds, and that deserves its own PR where a failure is |
469 | | - # unambiguous rather than being attributed to whatever else shipped |
470 | | - # alongside it. |
471 | | - MCPP_BUILD_CACHE: local |
| 480 | + # — and a workspace cannot be validated by a job that cannot finish. |
| 481 | + # With the cache on, a given (package, version, features, toolchain) |
| 482 | + # is built once per run and every later member hits it. |
472 | 483 | run: | |
473 | 484 | "$MCPP" --version |
474 | 485 | # No `timeout` wrapper: absent on macOS runners; job-level timeout-minutes bounds it. |
|
0 commit comments