From e59fb2572ad0ede6a129a6e36a0ec12a24982422 Mon Sep 17 00:00:00 2001 From: sunrisepeak Date: Fri, 5 Jun 2026 23:46:31 +0800 Subject: [PATCH 1/6] ci: fresh-install macOS lane on macos-14 (support floor); workspace mcpp -> 0.0.51 --- .github/workflows/ci-fresh-install.yml | 9 +++++++-- .xlings.json | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci-fresh-install.yml b/.github/workflows/ci-fresh-install.yml index d5cf6ca5..848164e1 100644 --- a/.github/workflows/ci-fresh-install.yml +++ b/.github/workflows/ci-fresh-install.yml @@ -112,7 +112,10 @@ jobs: # ────────────────────────────────────────────────────────────────── macos-fresh: name: macOS fresh install - runs-on: macos-15 + # macos-14: the support floor (mcpp ≥0.0.50 / xlings ≥0.4.50 ship + # minos=14.0 static-libc++ binaries). A fresh install passing here + # is the continuous proof of the macOS 14 floor. + runs-on: macos-14 timeout-minutes: 30 steps: - uses: actions/checkout@v4 @@ -121,7 +124,9 @@ jobs: env: XLINGS_NON_INTERACTIVE: '1' run: | - curl -fsSL https://raw.githubusercontent.com/openxlings/xlings/main/tools/other/quick_install.sh | bash -s v0.4.38 + # v0.4.50+: first xlings release whose macosx binary runs on + # macOS 14 (older ones carry minos=15 and refuse to start). + curl -fsSL https://raw.githubusercontent.com/openxlings/xlings/main/tools/other/quick_install.sh | bash -s v0.4.50 echo "$HOME/.xlings/subos/current/bin" >> "$GITHUB_PATH" - name: Install mcpp and config mirror diff --git a/.xlings.json b/.xlings.json index 940017aa..33e4606e 100644 --- a/.xlings.json +++ b/.xlings.json @@ -1,5 +1,5 @@ { "workspace": { - "mcpp": "0.0.20" + "mcpp": "0.0.51" } } From c085de5d3ab36d300a1c0b5cf677e94d311b98f2 Mon Sep 17 00:00:00 2001 From: sunrisepeak Date: Fri, 5 Jun 2026 23:55:05 +0800 Subject: [PATCH 2/6] =?UTF-8?q?ci(fresh-install):=20xlings=20update=20befo?= =?UTF-8?q?re=20install=20=E2=80=94=20bundled=20index=20snapshot=20predate?= =?UTF-8?q?s=20latest=20mcpp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci-fresh-install.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/workflows/ci-fresh-install.yml b/.github/workflows/ci-fresh-install.yml index 848164e1..ac98a652 100644 --- a/.github/workflows/ci-fresh-install.yml +++ b/.github/workflows/ci-fresh-install.yml @@ -42,6 +42,10 @@ jobs: - name: Install mcpp and config mirror run: | + # The release tarball bundles a pkgindex snapshot frozen at + # build time; refresh it so the workspace pin in .xlings.json + # (latest mcpp) resolves. + xlings update xlings install mcpp -y -g # install to global mcpp --version mcpp self config --mirror GLOBAL @@ -131,6 +135,9 @@ jobs: - name: Install mcpp and config mirror run: | + # Refresh the bundled pkgindex snapshot so the workspace pin + # in .xlings.json (latest mcpp) resolves. + xlings update xlings install mcpp -y -g # install to global mcpp --version mcpp self config --mirror GLOBAL @@ -175,6 +182,9 @@ jobs: - name: Install mcpp and config mirror shell: pwsh run: | + # Refresh the bundled pkgindex snapshot so the workspace pin + # in .xlings.json (latest mcpp) resolves. + xlings update xlings install mcpp -y -g --verbose cat "$env:USERPROFILE\.xlings\.xlings.json" From 9fdb2222d803cd0825e02cd175e79c75db1dc5e9 Mon Sep 17 00:00:00 2001 From: sunrisepeak Date: Sat, 6 Jun 2026 01:40:35 +0800 Subject: [PATCH 3/6] ci: workspace mcpp -> 0.0.52 (portable-by-default macOS floor) --- .xlings.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.xlings.json b/.xlings.json index 33e4606e..0d32bea3 100644 --- a/.xlings.json +++ b/.xlings.json @@ -1,5 +1,5 @@ { "workspace": { - "mcpp": "0.0.51" + "mcpp": "0.0.52" } } From dce88aaa55476aee01fa1f48d5c776fcb4315d92 Mon Sep 17 00:00:00 2001 From: sunrisepeak Date: Sat, 6 Jun 2026 02:06:28 +0800 Subject: [PATCH 4/6] ci(temp): cmdline fetch forensics on macos-14 (adaptive mirror suspect) --- .github/workflows/ci-fresh-install.yml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/.github/workflows/ci-fresh-install.yml b/.github/workflows/ci-fresh-install.yml index ac98a652..054eb489 100644 --- a/.github/workflows/ci-fresh-install.yml +++ b/.github/workflows/ci-fresh-install.yml @@ -153,6 +153,26 @@ jobs: cd hello_mac mcpp run + # TEMPORARY forensics — mcpplibs.cmdline fetch dies at 0 B on + # macos-14 (R5/R6) while linux passes the same step. Hypothesis: + # the xlings 0.4.50 adaptive mirror (sha256-pinned URLs may try a + # third-party mirror BEFORE the author URL) picks a dead mirror + # host on this runner. Probe A = raw connectivity control, + # B = exact failing flow (control), C = adaptive mirror off. + - name: "Debug: cmdline fetch forensics (temporary)" + run: | + echo "=== probe A: direct curl of the author URL ===" + curl -fsSL -o /tmp/c.tgz https://github.com/mcpplibs/cmdline/archive/refs/tags/0.0.1.tar.gz \ + && shasum -a 256 /tmp/c.tgz || echo "A: curl FAILED" + echo "=== probe B: control — exact failing flow ===" + mcpp clean + mcpp run && echo "B: PASSED (flake?)" || echo "B: failed (expected)" + echo "=== probe C: XLINGS_ADAPTIVE_MIRROR=off ===" + mcpp clean + XLINGS_ADAPTIVE_MIRROR=off mcpp run \ + && echo "C: PASSED — adaptive mirror is the culprit" \ + || echo "C: failed — culprit elsewhere" + - name: "LLVM: build mcpp" run: | mcpp clean From d9aac1fa320ae3c8f458d43f23e3411cceb79f45 Mon Sep 17 00:00:00 2001 From: sunrisepeak Date: Sat, 6 Jun 2026 02:20:03 +0800 Subject: [PATCH 5/6] ci(temp): verbose forensics + macos-15 control matrix --- .github/workflows/ci-fresh-install.yml | 29 ++++++++++++++++---------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci-fresh-install.yml b/.github/workflows/ci-fresh-install.yml index 054eb489..91df9a68 100644 --- a/.github/workflows/ci-fresh-install.yml +++ b/.github/workflows/ci-fresh-install.yml @@ -119,7 +119,13 @@ jobs: # macos-14: the support floor (mcpp ≥0.0.50 / xlings ≥0.4.50 ship # minos=14.0 static-libc++ binaries). A fresh install passing here # is the continuous proof of the macOS 14 floor. - runs-on: macos-14 + # TEMP: macos-15 added to isolate whether the cmdline fetch failure + # is macos-14-specific or affects the new stack on any macOS. + strategy: + fail-fast: false + matrix: + os: [macos-14, macos-15] + runs-on: ${{ matrix.os }} timeout-minutes: 30 steps: - uses: actions/checkout@v4 @@ -161,17 +167,18 @@ jobs: # B = exact failing flow (control), C = adaptive mirror off. - name: "Debug: cmdline fetch forensics (temporary)" run: | - echo "=== probe A: direct curl of the author URL ===" - curl -fsSL -o /tmp/c.tgz https://github.com/mcpplibs/cmdline/archive/refs/tags/0.0.1.tar.gz \ - && shasum -a 256 /tmp/c.tgz || echo "A: curl FAILED" - echo "=== probe B: control — exact failing flow ===" + echo "=== probe D: failing flow, mcpp --verbose ===" mcpp clean - mcpp run && echo "B: PASSED (flake?)" || echo "B: failed (expected)" - echo "=== probe C: XLINGS_ADAPTIVE_MIRROR=off ===" - mcpp clean - XLINGS_ADAPTIVE_MIRROR=off mcpp run \ - && echo "C: PASSED — adaptive mirror is the culprit" \ - || echo "C: failed — culprit elsewhere" + mcpp run --verbose 2>&1 | tail -60 || true + echo "=== probe E: xlings direct install from the mcpp sandbox ===" + SANDBOX_XLINGS=$(find "$HOME/.mcpp" -name xlings -type f 2>/dev/null | head -1) + echo "sandbox xlings: $SANDBOX_XLINGS" + env XLINGS_HOME="$HOME/.mcpp/registry" "$SANDBOX_XLINGS" \ + install mcpplibs.cmdline@0.0.1 -y --verbose 2>&1 | tail -40 || true + echo "=== probe F: any xlings/mcpp logs ===" + find "$HOME/.mcpp" -name '*.log' -newer /tmp -mmin -10 2>/dev/null | head -5 + for f in $(find "$HOME/.mcpp" "$HOME/.xlings" -name '*.log' -mmin -10 2>/dev/null | head -3); do + echo "--- $f"; tail -30 "$f"; done - name: "LLVM: build mcpp" run: | From 7c621a294e45dde6ca3efb094f0e35bc8140d867 Mon Sep 17 00:00:00 2001 From: sunrisepeak Date: Sat, 6 Jun 2026 03:01:31 +0800 Subject: [PATCH 6/6] ci(fresh-install): imgui template fetch coverage on all platforms; macos bootstrap -> v0.4.51; drop temp forensics/matrix --- .github/workflows/ci-fresh-install.yml | 63 ++++++++++++++------------ 1 file changed, 35 insertions(+), 28 deletions(-) diff --git a/.github/workflows/ci-fresh-install.yml b/.github/workflows/ci-fresh-install.yml index 91df9a68..d65023b4 100644 --- a/.github/workflows/ci-fresh-install.yml +++ b/.github/workflows/ci-fresh-install.yml @@ -61,6 +61,15 @@ jobs: cd hello_gcc mcpp run + # Template packages exercise the sha256-pinned mcpp-index fetch + # path (user report: `mcpp new ... --template imgui` failed with + # fetch 'imgui@0.0.6' exit 1 on hosts without a sha256sum binary). + - name: "Template: mcpp new --template imgui (fetch path)" + run: | + cd "$(mktemp -d)" + mcpp new abc1 --template imgui + test -f abc1/mcpp.toml + - name: "Default: build mcpp" run: | mcpp clean @@ -118,14 +127,9 @@ jobs: name: macOS fresh install # macos-14: the support floor (mcpp ≥0.0.50 / xlings ≥0.4.50 ship # minos=14.0 static-libc++ binaries). A fresh install passing here - # is the continuous proof of the macOS 14 floor. - # TEMP: macos-15 added to isolate whether the cmdline fetch failure - # is macos-14-specific or affects the new stack on any macOS. - strategy: - fail-fast: false - matrix: - os: [macos-14, macos-15] - runs-on: ${{ matrix.os }} + # is the continuous proof of the macOS 14 floor — and of host-tool + # independence (this image has no sha256sum; macos-15 does). + runs-on: macos-14 timeout-minutes: 30 steps: - uses: actions/checkout@v4 @@ -136,7 +140,9 @@ jobs: run: | # v0.4.50+: first xlings release whose macosx binary runs on # macOS 14 (older ones carry minos=15 and refuse to start). - curl -fsSL https://raw.githubusercontent.com/openxlings/xlings/main/tools/other/quick_install.sh | bash -s v0.4.50 + # v0.4.51: in-process sha256 — required on this image, which + # has no sha256sum binary (pinned fetches failed before). + curl -fsSL https://raw.githubusercontent.com/openxlings/xlings/main/tools/other/quick_install.sh | bash -s v0.4.51 echo "$HOME/.xlings/subos/current/bin" >> "$GITHUB_PATH" - name: Install mcpp and config mirror @@ -159,26 +165,15 @@ jobs: cd hello_mac mcpp run - # TEMPORARY forensics — mcpplibs.cmdline fetch dies at 0 B on - # macos-14 (R5/R6) while linux passes the same step. Hypothesis: - # the xlings 0.4.50 adaptive mirror (sha256-pinned URLs may try a - # third-party mirror BEFORE the author URL) picks a dead mirror - # host on this runner. Probe A = raw connectivity control, - # B = exact failing flow (control), C = adaptive mirror off. - - name: "Debug: cmdline fetch forensics (temporary)" + # Template packages exercise the sha256-pinned mcpp-index fetch + # path — this is what broke on hosts without a sha256sum binary + # (stock macOS / bare Windows) before xlings 0.4.51 hashed + # in-process. + - name: "Template: mcpp new --template imgui (fetch path)" run: | - echo "=== probe D: failing flow, mcpp --verbose ===" - mcpp clean - mcpp run --verbose 2>&1 | tail -60 || true - echo "=== probe E: xlings direct install from the mcpp sandbox ===" - SANDBOX_XLINGS=$(find "$HOME/.mcpp" -name xlings -type f 2>/dev/null | head -1) - echo "sandbox xlings: $SANDBOX_XLINGS" - env XLINGS_HOME="$HOME/.mcpp/registry" "$SANDBOX_XLINGS" \ - install mcpplibs.cmdline@0.0.1 -y --verbose 2>&1 | tail -40 || true - echo "=== probe F: any xlings/mcpp logs ===" - find "$HOME/.mcpp" -name '*.log' -newer /tmp -mmin -10 2>/dev/null | head -5 - for f in $(find "$HOME/.mcpp" "$HOME/.xlings" -name '*.log' -mmin -10 2>/dev/null | head -3); do - echo "--- $f"; tail -30 "$f"; done + cd "$(mktemp -d)" + mcpp new abc1 --template imgui + test -f abc1/mcpp.toml - name: "LLVM: build mcpp" run: | @@ -227,6 +222,18 @@ jobs: Set-Location hello_win mcpp run + # Template packages exercise the sha256-pinned mcpp-index fetch + # path (user report: `mcpp new abc1 --template imgui` failed with + # fetch 'imgui@0.0.6' exit 1 on bare Windows — no sha256sum binary + # outside git-bash; fixed by xlings 0.4.51 in-process hashing). + - name: "Template: mcpp new --template imgui (fetch path)" + shell: pwsh + run: | + $tmp = New-TemporaryFile | ForEach-Object { Remove-Item $_; New-Item -ItemType Directory -Path $_ } + Set-Location $tmp + mcpp new abc1 --template imgui + if (!(Test-Path abc1/mcpp.toml)) { exit 1 } + - name: "LLVM: build mcpp" shell: pwsh run: |