diff --git a/.github/scripts/clean-machine-assert.sh b/.github/scripts/clean-machine-assert.sh index d96a6c8540..9a281043d2 100755 --- a/.github/scripts/clean-machine-assert.sh +++ b/.github/scripts/clean-machine-assert.sh @@ -38,6 +38,16 @@ for check in "$@"; do for tool in git cc clang cmake; do command -v "$tool" >/dev/null 2>&1 || { ok "$tool not on PATH"; continue; } if "$tool" --version >/dev/null 2>&1; then + # On Intel runners /usr/bin/git keeps working once the CLT are gone, so it + # is not CLT-provided there and no masking can remove it. cc and clang do + # become stubs, and the consumer path needs no git on macOS, so report it + # rather than calling the simulation broken. + case " ${UNSLOTH_CLEAN_ALLOW_WORKING:-} " in + *" $tool "*) + echo "[assert] NOTE $tool still works ($(command -v "$tool")); allowed on this runner" + continue + ;; + esac fail "toolchain still usable: '$tool --version' succeeded ($(command -v "$tool")); masking failed" else ok "$tool present but non-functional (CLT stub), as on a clean Mac" diff --git a/.github/workflows/clean-machine-install-ci.yml b/.github/workflows/clean-machine-install-ci.yml index acfe56e48f..104bcfed3b 100644 --- a/.github/workflows/clean-machine-install-ci.yml +++ b/.github/workflows/clean-machine-install-ci.yml @@ -83,8 +83,9 @@ jobs: # OS-version dimension. - {os: macos-15, mode: mask, delivery: pipe, flags: '', experimental: false} - {os: macos-26, mode: mask, delivery: file, flags: '', experimental: true} - # Intel pins python 3.12, not 3.13 -- informational only. - - {os: macos-15-intel, mode: mask, delivery: file, flags: '', experimental: true} + # Intel pins python 3.12 and its /usr/bin/git is not CLT-provided, so it + # survives masking. Informational only. + - {os: macos-15-intel, mode: mask, delivery: file, flags: '', experimental: true, allow_working: 'git'} steps: # checkout FIRST: it needs a working git, which masking then takes away. @@ -118,7 +119,8 @@ jobs: if: matrix.mode == 'mask' run: | set -a; . ./clean-machine.env; set +a - bash .github/scripts/clean-machine-assert.sh absent + UNSLOTH_CLEAN_ALLOW_WORKING='${{ matrix.allow_working }}' \ + bash .github/scripts/clean-machine-assert.sh absent - name: Install id: install @@ -189,9 +191,10 @@ jobs: run: | set -a; . ./clean-machine.env; set +a # The tauri leg cannot honour UNSLOTH_STUDIO_HOME (see the Install step), so - # it installed into the legacy root and that is where to look. + # it installed into the legacy root. llama.cpp sits at /llama.cpp and + # the venv at /studio, so this is ~/.unsloth, not ~/.unsloth/studio. if [ "${{ matrix.delivery }}" = "tauri" ]; then - HOME_DIR="$HOME/.unsloth/studio" + HOME_DIR="$HOME/.unsloth" else HOME_DIR="$UNSLOTH_STUDIO_HOME" fi