|
6 | 6 | push: |
7 | 7 | branches: [main] |
8 | 8 | schedule: |
9 | | - # nightly full regression — exercises every smoke suite regardless of diff |
| 9 | + # nightly full regression — exercises every workspace member regardless of diff |
10 | 10 | - cron: "0 6 * * *" |
11 | 11 | workflow_dispatch: |
12 | 12 |
|
13 | 13 | env: |
14 | | - # 0.0.96: carries the windows scanner symlink-escape crash fix (mcpp#230), |
15 | | - # so all platforms ride the same version again. Older floors of note: |
16 | | - # 0.0.94 fixed feature-gated `sources` under `mcpp test` (mcpp#218); |
17 | | - # 0.0.91 added standard = "c++fly" to the resolver grammar, so c++fly |
18 | | - # descriptors get the lint WARN below, not a hard grammar-parse rejection. |
19 | | - MCPP_VERSION: "0.0.96" |
| 14 | + # 0.0.97: default-namespace index redirect (`[indices] default = { path }`), |
| 15 | + # which turned the public module packages (imgui/ffmpeg/opencv/tinyhttps) |
| 16 | + # into ordinary workspace members and retired the per-package reseeding |
| 17 | + # smoke shells + their dedicated jobs; also carries the synchronous nasm |
| 18 | + # bootstrap (mcpp#232 — the `mcpp index update` pre-step is gone), obj-path |
| 19 | + # disambiguation (#233), spacey-defines quoting (#234), and purview-include |
| 20 | + # depfile tracking (#235). Older floors of note: 0.0.96 fixed the windows |
| 21 | + # scanner symlink-escape crash (mcpp#230); 0.0.94 fixed feature-gated |
| 22 | + # `sources` under `mcpp test` (mcpp#218); 0.0.91 added standard = "c++fly" |
| 23 | + # to the resolver grammar, so c++fly descriptors get the lint WARN below, |
| 24 | + # not a hard grammar-parse rejection. |
| 25 | + MCPP_VERSION: "0.0.97" |
20 | 26 |
|
21 | 27 | jobs: |
22 | 28 | lint: |
@@ -156,21 +162,21 @@ jobs: |
156 | 162 | ext: tar.gz |
157 | 163 | mcpp: bin/mcpp |
158 | 164 | xlings: registry/bin/xlings |
159 | | - mcpp_version: "0.0.96" # keep in sync with env.MCPP_VERSION |
| 165 | + mcpp_version: "0.0.97" # keep in sync with env.MCPP_VERSION |
160 | 166 | - platform: macos |
161 | 167 | os: macos-15 |
162 | 168 | suffix: macosx-arm64 |
163 | 169 | ext: tar.gz |
164 | 170 | mcpp: bin/mcpp |
165 | 171 | xlings: registry/bin/xlings |
166 | | - mcpp_version: "0.0.96" # keep in sync with env.MCPP_VERSION |
| 172 | + mcpp_version: "0.0.97" # keep in sync with env.MCPP_VERSION |
167 | 173 | - platform: windows |
168 | 174 | os: windows-latest |
169 | 175 | suffix: windows-x86_64 |
170 | 176 | ext: zip |
171 | 177 | mcpp: bin/mcpp.exe |
172 | 178 | xlings: registry/bin/xlings.exe |
173 | | - mcpp_version: "0.0.96" # keep in sync with env.MCPP_VERSION |
| 179 | + mcpp_version: "0.0.97" # keep in sync with env.MCPP_VERSION |
174 | 180 | env: |
175 | 181 | MCPP_EFFECTIVE: ${{ matrix.mcpp_version }} |
176 | 182 | steps: |
@@ -212,23 +218,12 @@ jobs: |
212 | 218 | echo "MCPP_VENDORED_XLINGS=$root/${{ matrix.xlings }}" >> "$GITHUB_ENV" |
213 | 219 | echo "$root/bin" >> "$GITHUB_PATH" |
214 | 220 | fi |
215 | | - # compat.ffmpeg carries NASM .asm sources. No host install needed: |
216 | | - # mcpp >= 0.0.95 resolves nasm itself (PATH → sandbox → auto |
217 | | - # `xlings install nasm`), lazily, only when the plan has .asm units — |
218 | | - # same self-bootstrap contract as the llvm toolchain. The sandbox copy |
219 | | - # lands in ~/.mcpp/registry, so the cache carries it across runs. |
220 | | - # The refresh below is needed because release archives vendor an index |
221 | | - # snapshot and the bootstrap is offline-first: 0.0.96 shipped with a |
222 | | - # nasm.lua deployed engines can't resolve — it "installs" empty |
223 | | - # (mcpp#232; fixed in xim-pkgindex#398 after the release was cut). |
224 | | - # One `mcpp index update` (native wrapper over `xlings update` with |
225 | | - # the sandbox env + transient-network retry) lets the bootstrap see |
226 | | - # the fixed descriptor. Drop once a mcpp release vendors a post-#398 |
227 | | - # index snapshot. |
228 | | - - name: Refresh sandbox package index (nasm bootstrap, mcpp#232) |
229 | | - if: runner.os == 'Linux' |
230 | | - shell: bash |
231 | | - run: '"$MCPP" index update' |
| 221 | + # compat.ffmpeg / compat.opencv5 carry NASM .asm sources. No host |
| 222 | + # install and no index-refresh pre-step needed: mcpp >= 0.0.97 |
| 223 | + # resolves nasm itself through the same synchronous gate as the |
| 224 | + # toolchain (index refresh + install + payload check BEFORE the build |
| 225 | + # plans, mcpp#232). The sandbox copy lands in ~/.mcpp/registry, so |
| 226 | + # the cache carries it across runs. |
232 | 227 |
|
233 | 228 | # ── Selective member testing ────────────────────────────────────── |
234 | 229 | # `mcpp test --workspace` builds every member (opencv, ffmpeg, …) and |
@@ -311,120 +306,4 @@ jobs: |
311 | 306 | done |
312 | 307 | exit $rc |
313 | 308 | fi |
314 | | - - name: tinyhttps module package smoke |
315 | | - shell: bash |
316 | | - env: |
317 | | - MCPP_INDEX_MIRROR: GLOBAL |
318 | | - run: bash tests/smoke_tinyhttps_module.sh |
319 | | - |
320 | | - # ── Exception: the public `imgui` C++23-module package (namespace "") ── |
321 | | - # Not yet a workspace member: its package has an empty namespace (the builtin |
322 | | - # default index), which a workspace member can't point at a local path the way |
323 | | - # namespaced compat.*/nlohmann packages can. Until mcpp can map the default |
324 | | - # namespace to a local index, this one keeps a thin driver that reseeds the |
325 | | - # default index from the repo. Tracked in the rearchitecture design doc. |
326 | | - imgui-module: |
327 | | - runs-on: ubuntu-latest |
328 | | - timeout-minutes: 60 |
329 | | - env: |
330 | | - MCPP_EFFECTIVE: "0.0.96" # keep in sync with env.MCPP_VERSION |
331 | | - steps: |
332 | | - - uses: actions/checkout@v4 |
333 | | - - name: Restore mcpp registry cache |
334 | | - uses: actions/cache@v4 |
335 | | - with: |
336 | | - path: ~/.mcpp/registry |
337 | | - key: mcpp-registry-${{ runner.os }}-${{ env.MCPP_EFFECTIVE }}-${{ hashFiles('pkgs/**/*.lua', 'tests/**', '.github/workflows/validate.yml') }} |
338 | | - restore-keys: | |
339 | | - mcpp-registry-${{ runner.os }}-${{ env.MCPP_EFFECTIVE }}- |
340 | | - - name: Download mcpp |
341 | | - run: | |
342 | | - curl -L -fsS -o mcpp.tar.gz \ |
343 | | - "https://github.com/mcpp-community/mcpp/releases/download/v${MCPP_VERSION}/mcpp-${MCPP_VERSION}-linux-x86_64.tar.gz" |
344 | | - tar -xzf mcpp.tar.gz |
345 | | - root="$PWD/mcpp-${MCPP_VERSION}-linux-x86_64" |
346 | | - mkdir -p "$HOME/.mcpp/registry" |
347 | | - cp -a "$root/registry/." "$HOME/.mcpp/registry/" |
348 | | - echo "MCPP=$root/bin/mcpp" >> "$GITHUB_ENV" |
349 | | - echo "MCPP_VENDORED_XLINGS=$root/registry/bin/xlings" >> "$GITHUB_ENV" |
350 | | - echo "$root/bin" >> "$GITHUB_PATH" |
351 | | - - name: imgui module package smoke |
352 | | - env: |
353 | | - MCPP_INDEX_MIRROR: GLOBAL |
354 | | - run: | |
355 | | - "$MCPP" --version |
356 | | - timeout 1800 bash tests/smoke_imgui_module.sh |
357 | 309 |
|
358 | | - # ── Exception: the public `ffmpeg` C++23-module package (namespace "") ── |
359 | | - # Same default-namespace limitation as imgui-module above — validated via a |
360 | | - # reseeding smoke driver instead of a workspace member. Linux-only: its |
361 | | - # compat.ffmpeg dependency ships a linux-x86_64 configure snapshot (macOS is |
362 | | - # blocked on mcpp#229 dependency cfg-conditional sources). |
363 | | - ffmpeg-module: |
364 | | - runs-on: ubuntu-latest |
365 | | - timeout-minutes: 60 |
366 | | - env: |
367 | | - MCPP_EFFECTIVE: "0.0.96" # keep in sync with env.MCPP_VERSION |
368 | | - steps: |
369 | | - - uses: actions/checkout@v4 |
370 | | - - name: Restore mcpp registry cache |
371 | | - uses: actions/cache@v4 |
372 | | - with: |
373 | | - path: ~/.mcpp/registry |
374 | | - key: mcpp-registry-${{ runner.os }}-${{ env.MCPP_EFFECTIVE }}-${{ hashFiles('pkgs/**/*.lua', 'tests/**', '.github/workflows/validate.yml') }} |
375 | | - restore-keys: | |
376 | | - mcpp-registry-${{ runner.os }}-${{ env.MCPP_EFFECTIVE }}- |
377 | | - - name: Download mcpp |
378 | | - run: | |
379 | | - curl -L -fsS -o mcpp.tar.gz \ |
380 | | - "https://github.com/mcpp-community/mcpp/releases/download/v${MCPP_VERSION}/mcpp-${MCPP_VERSION}-linux-x86_64.tar.gz" |
381 | | - tar -xzf mcpp.tar.gz |
382 | | - root="$PWD/mcpp-${MCPP_VERSION}-linux-x86_64" |
383 | | - mkdir -p "$HOME/.mcpp/registry" |
384 | | - cp -a "$root/registry/." "$HOME/.mcpp/registry/" |
385 | | - echo "MCPP=$root/bin/mcpp" >> "$GITHUB_ENV" |
386 | | - echo "MCPP_VENDORED_XLINGS=$root/registry/bin/xlings" >> "$GITHUB_ENV" |
387 | | - echo "$root/bin" >> "$GITHUB_PATH" |
388 | | - - name: ffmpeg module package smoke |
389 | | - env: |
390 | | - MCPP_INDEX_MIRROR: GLOBAL |
391 | | - run: | |
392 | | - "$MCPP" --version |
393 | | - timeout 2700 bash tests/smoke_ffmpeg_module.sh |
394 | | -
|
395 | | - # ── Exception: the public `opencv` C++23-module package (namespace "") ── |
396 | | - # Same default-namespace limitation as imgui-module above — validated via a |
397 | | - # reseeding smoke driver instead of a workspace member. Linux-only: its |
398 | | - # compat.opencv5 dependency ships a linux-x86_64 config snapshot (macOS is |
399 | | - # blocked on mcpp#229 dependency cfg-conditional sources). |
400 | | - opencv-module: |
401 | | - runs-on: ubuntu-latest |
402 | | - timeout-minutes: 60 |
403 | | - env: |
404 | | - MCPP_EFFECTIVE: "0.0.96" # keep in sync with env.MCPP_VERSION |
405 | | - steps: |
406 | | - - uses: actions/checkout@v4 |
407 | | - - name: Restore mcpp registry cache |
408 | | - uses: actions/cache@v4 |
409 | | - with: |
410 | | - path: ~/.mcpp/registry |
411 | | - key: mcpp-registry-${{ runner.os }}-${{ env.MCPP_EFFECTIVE }}-${{ hashFiles('pkgs/**/*.lua', 'tests/**', '.github/workflows/validate.yml') }} |
412 | | - restore-keys: | |
413 | | - mcpp-registry-${{ runner.os }}-${{ env.MCPP_EFFECTIVE }}- |
414 | | - - name: Download mcpp |
415 | | - run: | |
416 | | - curl -L -fsS -o mcpp.tar.gz \ |
417 | | - "https://github.com/mcpp-community/mcpp/releases/download/v${MCPP_VERSION}/mcpp-${MCPP_VERSION}-linux-x86_64.tar.gz" |
418 | | - tar -xzf mcpp.tar.gz |
419 | | - root="$PWD/mcpp-${MCPP_VERSION}-linux-x86_64" |
420 | | - mkdir -p "$HOME/.mcpp/registry" |
421 | | - cp -a "$root/registry/." "$HOME/.mcpp/registry/" |
422 | | - echo "MCPP=$root/bin/mcpp" >> "$GITHUB_ENV" |
423 | | - echo "MCPP_VENDORED_XLINGS=$root/registry/bin/xlings" >> "$GITHUB_ENV" |
424 | | - echo "$root/bin" >> "$GITHUB_PATH" |
425 | | - - name: opencv module package smoke |
426 | | - env: |
427 | | - MCPP_INDEX_MIRROR: GLOBAL |
428 | | - run: | |
429 | | - "$MCPP" --version |
430 | | - timeout 2700 bash tests/smoke_opencv_module.sh |
0 commit comments