Compare commits

...
Sign in to create a new pull request.

3 commits

Author SHA1 Message Date
Daniel Han
90724f6dab fix(studio): suppress fatal error when prebuilt manifest is missing
When DEFAULT_PUBLISHED_REPO is ggml-org/llama.cpp, the prebuilt
resolver fails because ggml-org releases do not include a
llama-prebuilt-manifest.json asset. This raised a PrebuiltFallback
exception that was caught by the generic Exception handler and
printed as "fatal helper error" to stderr, which triggers a
NativeCommandError on PowerShell and looks alarming.

Catch PrebuiltFallback separately and exit with EXIT_FALLBACK (code 2)
instead of EXIT_ERROR (code 1). The message is still logged but
without the "fatal helper error" prefix. The shell scripts already
handle non-zero exits gracefully and fall back to source builds.
2026-04-02 19:14:05 +00:00
Daniel Han
b6ffd94918 docs: add comment explaining latest vs master for llama.cpp tag
Document in all three files why "latest" is preferred over "master"
and when "master" should be used as a temporary override.
2026-04-02 18:51:30 +00:00
Daniel Han
1902e83a67 fix(studio): revert llama.cpp default tag to latest
The latest ggml-org/llama.cpp release (b8637) now includes Gemma 4
support. Revert the temporary "b8637" pin from #4796 to "latest" so
the prebuilt resolver always picks the newest release automatically
without needing manual tag bumps.
2026-04-02 18:49:45 +00:00
3 changed files with 22 additions and 3 deletions

View file

@ -60,7 +60,11 @@ def env_int(name: str, default: int, *, minimum: int | None = None) -> int:
return value
DEFAULT_LLAMA_TAG = os.environ.get("UNSLOTH_LLAMA_TAG", "b8637")
# Prefer "latest" over "master" -- "master" bypasses the prebuilt resolver
# (no matching GitHub release), forces a source build, and causes HTTP 422
# errors. Only use "master" temporarily when the latest release is missing
# support for a new model architecture.
DEFAULT_LLAMA_TAG = os.environ.get("UNSLOTH_LLAMA_TAG", "latest")
# Force all installs to use mainline llama.cpp from ggml-org.
# Previously: DEFAULT_PUBLISHED_REPO = os.environ.get("UNSLOTH_LLAMA_RELEASE_REPO", "unslothai/llama.cpp")
DEFAULT_PUBLISHED_REPO = "ggml-org/llama.cpp"
@ -4729,6 +4733,12 @@ if __name__ == "__main__":
f"fatal helper busy conflict: {textwrap.shorten(str(exc), width = 400, placeholder = '...')}"
)
raise SystemExit(EXIT_BUSY)
except PrebuiltFallback as exc:
# Expected when the published repo (e.g. ggml-org/llama.cpp) has no
# prebuilt manifest. Exit quietly with EXIT_FALLBACK so the caller
# falls back to source build without a noisy "fatal helper error".
log(textwrap.shorten(str(exc), width = 400, placeholder = "..."))
raise SystemExit(EXIT_FALLBACK)
except Exception as exc:
message = textwrap.shorten(str(exc), width = 400, placeholder = "...")
log(f"fatal helper error: {message}")

View file

@ -27,9 +27,13 @@ $PackageDir = Split-Path -Parent $ScriptDir
# Change these in the GitHub-hosted script so users get updated defaults.
# User env vars always override these baked-in values.
# --------------------------------------------------------------------------
# Prefer "latest" over "master" -- "master" bypasses the prebuilt resolver
# (no matching GitHub release), forces a source build, and causes HTTP 422
# errors. Only use "master" temporarily when the latest release is missing
# support for a new model architecture.
$DefaultLlamaPrForce = ""
$DefaultLlamaSource = "https://github.com/ggml-org/llama.cpp"
$DefaultLlamaTag = "b8637"
$DefaultLlamaTag = "latest"
# Verbose can be enabled either by CLI flag or by UNSLOTH_VERBOSE=1.
$script:UnslothVerbose = ($env:UNSLOTH_VERBOSE -eq '1')

View file

@ -16,10 +16,15 @@ RULE=$(printf '\342\224\200%.0s' {1..52})
# _DEFAULT_LLAMA_SOURCE : git clone URL for source builds
# _DEFAULT_LLAMA_TAG : llama.cpp ref to build ("latest" = newest release,
# "master" = bleeding-edge, "bNNNN" = specific tag)
# Prefer "latest" over "master" -- "master" bypasses
# the prebuilt resolver (no matching GitHub release),
# forces a source build, and causes HTTP 422 errors.
# Only use "master" temporarily when the latest release
# is missing support for a new model architecture.
# ──────────────────────────────────────────────────────────────────────────
_DEFAULT_LLAMA_PR_FORCE=""
_DEFAULT_LLAMA_SOURCE="https://github.com/ggml-org/llama.cpp"
_DEFAULT_LLAMA_TAG="b8637"
_DEFAULT_LLAMA_TAG="latest"
# ── Colors (same palette as startup_banner / install_python_stack) ──
if [ -n "${NO_COLOR:-}" ]; then