From d2ade8ad1e068856e277258ab0229487b111ef83 Mon Sep 17 00:00:00 2001 From: Daniel Han Date: Tue, 28 Jul 2026 12:23:35 +0000 Subject: [PATCH] Point the llama assert at the right root, and name the Intel limitation The tauri leg installs to the legacy root because --tauri refuses a custom UNSLOTH_STUDIO_HOME. Its install succeeds end to end, but llama.cpp lives at /llama.cpp while the venv is at /studio, so the assert was pointed one level too deep. On macos-15-intel /usr/bin/git keeps working once the CLT are gone, so it is not CLT-provided there and no masking can remove it, while cc and clang do become stubs. Calling that 'masking failed' was wrong. That leg allowlists git explicitly and says why, so the assert stays strict everywhere else. --- .github/scripts/clean-machine-assert.sh | 10 ++++++++++ .github/workflows/clean-machine-install-ci.yml | 13 ++++++++----- 2 files changed, 18 insertions(+), 5 deletions(-) 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