Repository navigation
[temp][do not merge] probe: Windows SDK outside C:, Termux first run, cl.exe module roles #11
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
| # [temp][do not merge] Probe for .agents/docs/2026-10-10-one-source-one-meaning-design.md | |
| # (O5, O6, O7, O8). Every script prints what it observes and never asserts. | |
| name: probe | |
| on: | |
| pull_request: | |
| workflow_dispatch: | |
| env: | |
| MCPP_VERSION: 2026.10.8.1 | |
| jobs: | |
| # O6 / D17 / D18: a Windows SDK outside the conventional C: paths. | |
| windows-sdk: | |
| if: false | |
| name: windows sdk moved out of the conventional path | |
| runs-on: windows-latest | |
| timeout-minutes: 120 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: probe | |
| shell: pwsh | |
| run: ./.github/probe/windows_sdk.ps1 | |
| - uses: actions/upload-artifact@v4 | |
| if: always() | |
| with: | |
| name: windows-sdk | |
| path: C:\probe\logs | |
| # O5: cl.exe options for each module role. | |
| msvc-module-roles: | |
| if: false | |
| name: cl.exe module roles | |
| runs-on: windows-latest | |
| timeout-minutes: 20 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: ilammy/msvc-dev-cmd@v1 | |
| - name: probe | |
| shell: pwsh | |
| run: ./.github/probe/msvc_module_roles.ps1 | |
| # O7 / O8: the published aarch64 mcpp in a Termux userland (termux-docker). | |
| termux-docker: | |
| if: false | |
| name: termux-docker aarch64 first run | |
| runs-on: ubuntu-24.04-arm | |
| timeout-minutes: 120 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: probe | |
| run: bash .github/probe/termux_docker.sh | |
| - uses: actions/upload-artifact@v4 | |
| if: always() | |
| with: | |
| name: termux-docker | |
| path: ${{ runner.temp }}/termux-logs | |
| # The same on an arm64 runner with an arm64-v8a emulator, if the runner has KVM. | |
| termux-emulator-arm64: | |
| if: false | |
| name: termux app sandbox on an arm64 emulator (if KVM) | |
| runs-on: ubuntu-24.04-arm | |
| timeout-minutes: 120 | |
| continue-on-error: true | |
| env: | |
| EMU_ARCH: aarch64 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: KVM on this runner? | |
| id: kvm | |
| run: | | |
| ls -l /dev/kvm 2>&1 | tee -a "$GITHUB_STEP_SUMMARY" | |
| if [ -e /dev/kvm ]; then echo "ok=1" >> "$GITHUB_OUTPUT"; fi | |
| - name: Enable KVM | |
| if: steps.kvm.outputs.ok == '1' | |
| run: | | |
| echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules | |
| sudo udevadm control --reload-rules | |
| sudo udevadm trigger --name-match=kvm | |
| - name: Download Termux and mcpp | |
| if: steps.kvm.outputs.ok == '1' | |
| run: bash .github/probe/termux_emulator.sh download | |
| - name: probe on an API 34 arm64 emulator | |
| if: steps.kvm.outputs.ok == '1' | |
| uses: reactivecircus/android-emulator-runner@v2 | |
| with: | |
| api-level: 34 | |
| arch: arm64-v8a | |
| target: google_apis | |
| disk-size: 14G | |
| emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none | |
| disable-animations: true | |
| script: bash .github/probe/termux_emulator.sh run | |
| # O8 / D19: the Android app sandbox (SELinux) on an emulator, through the | |
| # debuggable Termux APK and `run-as`. | |
| termux-emulator: | |
| if: false | |
| name: termux app sandbox on an x86_64 emulator | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 120 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Enable KVM | |
| run: | | |
| echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules | |
| sudo udevadm control --reload-rules | |
| sudo udevadm trigger --name-match=kvm | |
| - name: Download Termux and mcpp | |
| run: bash .github/probe/termux_emulator.sh download | |
| - name: probe on an API 34 emulator | |
| uses: reactivecircus/android-emulator-runner@v2 | |
| with: | |
| api-level: 34 | |
| arch: x86_64 | |
| target: google_apis | |
| disk-size: 14G | |
| emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none | |
| disable-animations: true | |
| script: bash .github/probe/termux_emulator.sh run | |
| - uses: actions/upload-artifact@v4 | |
| if: always() | |
| with: | |
| name: termux-emulator | |
| path: ${{ runner.temp }}/termux-emu-logs | |
| # Round 8: the release candidate (mcpp release/2026.10.10.1 + xlings | |
| # 2026.10.10.2) through the fresh-install script the release adds (D27). | |
| candidate: | |
| name: candidate tarballs (release/2026.10.10.1) | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 120 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| ref: release/2026.10.10.1 | |
| - name: Bootstrap | |
| env: | |
| XLINGS_NON_INTERACTIVE: '1' | |
| run: | | |
| sudo apt-get install -y qemu-user-static >/dev/null | |
| XV=2026.10.10.2 | |
| curl -fsSL -o /tmp/xl.tgz "https://github.com/openxlings/xlings/releases/download/v$XV/xlings-$XV-linux-x86_64.tar.gz" | |
| tar -xzf /tmp/xl.tgz -C /tmp | |
| "/tmp/xlings-$XV-linux-x86_64/subos/default/bin/xlings" self install | |
| echo "$HOME/.xlings/subos/current/bin" >> "$GITHUB_PATH" | |
| echo "$HOME/.xlings/bin" >> "$GITHUB_PATH" | |
| echo "XLINGS_BIN=$HOME/.xlings/subos/default/bin/xlings" >> "$GITHUB_ENV" | |
| - name: Build both static binaries | |
| run: | | |
| xlings config --mirror GLOBAL 2>/dev/null || true | |
| xlings update -y 2>/dev/null || true | |
| MCPP=$(bash .github/tools/install_pinned_mcpp.sh "$GITHUB_WORKSPACE") | |
| export MCPP_VENDORED_XLINGS="$XLINGS_BIN" | |
| "$MCPP" build --target x86_64-linux-musl | |
| X=$(find target/x86_64-linux-musl -type f -name mcpp | head -1) | |
| "$X" build --target aarch64-linux-musl | |
| A=$(find target/aarch64-linux-musl -type f -name mcpp | head -1) | |
| file "$X" "$A" | |
| echo "X=$GITHUB_WORKSPACE/$X" >> "$GITHUB_ENV" | |
| echo "A=$GITHUB_WORKSPACE/$A" >> "$GITHUB_ENV" | |
| - name: Assemble the candidates on the 2026.10.8.1 layout | |
| run: | | |
| mkdir -p cand && cd cand | |
| for arch in x86_64 aarch64; do | |
| curl -fsSL -o base.tgz "https://github.com/mcpp-community/mcpp/releases/download/v2026.10.8.1/mcpp-2026.10.8.1-linux-$arch.tar.gz" | |
| curl -fsSL -o xl.tgz "https://github.com/openxlings/xlings/releases/download/v2026.10.10.2/xlings-2026.10.10.2-linux-$arch.tar.gz" | |
| rm -rf w xl && mkdir w xl && tar -xzf base.tgz -C w && tar -xzf xl.tgz -C xl | |
| D=$(ls -d w/mcpp-*) | |
| if [ "$arch" = x86_64 ]; then cp "$X" "$D/bin/mcpp"; else cp "$A" "$D/bin/mcpp"; fi | |
| cp "$(find xl -path '*/bin/xlings' -type f | head -1)" "$D/registry/bin/xlings" | |
| mv "$D" "w/mcpp-2026.10.10.1-linux-$arch" | |
| tar -czf "mcpp-candidate-linux-$arch.tar.gz" -C w "mcpp-2026.10.10.1-linux-$arch" | |
| done | |
| ls -la | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: candidates | |
| path: cand/mcpp-candidate-linux-*.tar.gz | |
| candidate-termux-docker: | |
| needs: [candidate] | |
| name: candidate in termux-docker aarch64 | |
| runs-on: ubuntu-24.04-arm | |
| timeout-minutes: 150 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| ref: release/2026.10.10.1 | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: candidates | |
| path: cand | |
| - run: bash .github/tools/termux_fresh_install.sh docker "$GITHUB_WORKSPACE/cand/mcpp-candidate-linux-aarch64.tar.gz" | |
| - uses: actions/upload-artifact@v4 | |
| if: always() | |
| with: | |
| name: candidate-termux-docker | |
| path: ${{ runner.temp }}/termux-fresh/logs | |
| candidate-termux-emulator: | |
| needs: [candidate] | |
| name: candidate in the Termux app sandbox (x86_64 emulator) | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 150 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| ref: release/2026.10.10.1 | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: candidates | |
| path: cand | |
| - name: Enable KVM | |
| run: | | |
| echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules | |
| sudo udevadm control --reload-rules | |
| sudo udevadm trigger --name-match=kvm | |
| - run: bash .github/tools/termux_fresh_install.sh emulator-download "$GITHUB_WORKSPACE/cand/mcpp-candidate-linux-x86_64.tar.gz" | |
| - uses: reactivecircus/android-emulator-runner@v2 | |
| with: | |
| api-level: 34 | |
| arch: x86_64 | |
| target: google_apis | |
| disk-size: 14G | |
| emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none | |
| disable-animations: true | |
| script: bash .github/tools/termux_fresh_install.sh emulator-run | |
| - uses: actions/upload-artifact@v4 | |
| if: always() | |
| with: | |
| name: candidate-termux-emulator | |
| path: ${{ runner.temp }}/termux-fresh/logs |