fix: remove subos sysroot override, use payload paths for toolchain sysroot #7
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: ci-fresh-install | |
| # Fresh install CI — validates the first-time user experience on all platforms. | |
| # No sandbox/target caches: simulates a user who just installed mcpp. | |
| # | |
| # Flow: bootstrap mcpp via xlings → build this PR's mcpp from source → | |
| # use the freshly-built mcpp to: new → run | |
| on: | |
| push: | |
| branches: [ main ] | |
| pull_request: | |
| branches: [ main ] | |
| workflow_dispatch: | |
| concurrency: | |
| group: ci-fresh-install-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| linux-fresh: | |
| name: Linux fresh install | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 45 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Bootstrap xlings + mcpp | |
| env: | |
| XLINGS_NON_INTERACTIVE: '1' | |
| run: | | |
| curl -fsSL https://github.com/d2learn/xlings/releases/download/v0.4.30/xlings-0.4.30-linux-x86_64.tar.gz -o /tmp/xlings.tar.gz | |
| tar -xzf /tmp/xlings.tar.gz -C /tmp | |
| /tmp/xlings-0.4.30-linux-x86_64/subos/default/bin/xlings self install | |
| export PATH="$HOME/.xlings/subos/default/bin:$PATH" | |
| xlings install mcpp -y | |
| echo "$HOME/.xlings/subos/default/bin" >> "$GITHUB_PATH" | |
| - name: Build this PR's mcpp | |
| run: | | |
| mcpp build | |
| MCPP=$(realpath "$(find target -type f -name mcpp -printf '%T@ %p\n' | sort -rn | head -1 | cut -d' ' -f2)") | |
| echo "MCPP=$MCPP" >> "$GITHUB_ENV" | |
| - name: "Fresh: mcpp new hello → mcpp run (GCC)" | |
| run: | | |
| cd "$(mktemp -d)" | |
| "$MCPP" new hello | |
| cd hello | |
| "$MCPP" run | |
| - name: "Fresh: install LLVM → mcpp new → mcpp run" | |
| run: | | |
| "$MCPP" toolchain install llvm 20.1.7 | |
| "$MCPP" toolchain default llvm@20.1.7 | |
| cd "$(mktemp -d)" | |
| "$MCPP" new hello_llvm | |
| cd hello_llvm | |
| "$MCPP" run | |
| macos-fresh: | |
| name: macOS fresh install | |
| runs-on: macos-15 | |
| timeout-minutes: 30 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Bootstrap xlings + mcpp | |
| env: | |
| XLINGS_NON_INTERACTIVE: '1' | |
| run: | | |
| curl -fsSL https://github.com/d2learn/xlings/releases/download/v0.4.30/xlings-0.4.30-macosx-arm64.tar.gz -o /tmp/xlings.tar.gz | |
| tar -xzf /tmp/xlings.tar.gz -C /tmp | |
| /tmp/xlings-0.4.30-macosx-arm64/subos/default/bin/xlings self install | |
| export PATH="$HOME/.xlings/subos/default/bin:$PATH" | |
| xlings install mcpp -y | |
| echo "$HOME/.xlings/subos/default/bin" >> "$GITHUB_PATH" | |
| - name: Build this PR's mcpp | |
| run: | | |
| mcpp build | |
| MCPP=$(find target -type f -name mcpp ! -name '*.o' | head -1) | |
| echo "MCPP=$(cd "$(dirname "$MCPP")" && pwd)/$(basename "$MCPP")" >> "$GITHUB_ENV" | |
| - name: "Fresh: mcpp new hello → mcpp run (LLVM)" | |
| run: | | |
| cd "$(mktemp -d)" | |
| "$MCPP" new hello | |
| cd hello | |
| "$MCPP" run | |
| windows-fresh: | |
| name: Windows fresh install | |
| runs-on: windows-latest | |
| timeout-minutes: 30 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Bootstrap xlings + mcpp | |
| shell: pwsh | |
| env: | |
| XLINGS_NON_INTERACTIVE: '1' | |
| run: | | |
| Invoke-WebRequest -Uri "https://github.com/d2learn/xlings/releases/download/v0.4.30/xlings-0.4.30-windows-x86_64.zip" -OutFile "$env:TEMP\xlings.zip" | |
| Expand-Archive -Path "$env:TEMP\xlings.zip" -DestinationPath "$env:TEMP\xlings-extract" -Force | |
| & "$env:TEMP\xlings-extract\xlings-0.4.30-windows-x86_64\subos\default\bin\xlings.exe" self install | |
| $env:PATH = "$env:USERPROFILE\.xlings\subos\default\bin;$env:PATH" | |
| xlings install mcpp -y | |
| "$env:USERPROFILE\.xlings\subos\default\bin" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8 | |
| - name: Build this PR's mcpp | |
| shell: bash | |
| run: | | |
| mcpp build | |
| MCPP=$(find target -type f -name 'mcpp.exe' | head -1) | |
| echo "MCPP=$(realpath "$MCPP")" >> "$GITHUB_ENV" | |
| - name: "Fresh: mcpp new hello → mcpp run" | |
| shell: bash | |
| run: | | |
| cd "$(mktemp -d)" | |
| "$MCPP" new hello | |
| cd hello | |
| "$MCPP" run |