From 3ccca16aacd41dfd28e2d5922f54c40b5a21f0cd Mon Sep 17 00:00:00 2001 From: Daniel Han Date: Fri, 3 Apr 2026 14:50:08 +0000 Subject: [PATCH] Fix null-to-None conversion and skip macOS llama.cpp override - Handle JSON null values correctly in manifest parsing: convert to empty string instead of literal "None" which could be treated as a valid value downstream. - Skip llama_cpp_source manifest override on macOS since unslothai/llama.cpp does not publish macOS binaries. macOS must always use ggml-org/llama.cpp for prebuilt assets. --- studio/setup.sh | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/studio/setup.sh b/studio/setup.sh index 87d989382b..2061bbbc12 100755 --- a/studio/setup.sh +++ b/studio/setup.sh @@ -52,18 +52,21 @@ try: m = json.load(sys.stdin) except Exception: sys.exit(0) +def s(v, default=''): + '''Convert to string, treating None/null as empty.''' + return str(v) if v is not None else default a = m.get('announcement') or {} for k, v in [ - ('MANIFEST_UNSLOTH_SOURCE', m.get('unsloth_source', '')), - ('MANIFEST_UNSLOTH_GITHUB_REF', m.get('unsloth_github_ref', 'main')), - ('MANIFEST_LLAMA_CPP_SOURCE', m.get('llama_cpp_source', '')), - ('MANIFEST_LLAMA_CPP_TAG', m.get('llama_cpp_tag', '')), - ('MANIFEST_CRITICAL_TIME', m.get('CRITICAL_TIME', '') or ''), - ('MANIFEST_ANNOUNCEMENT_MESSAGE', a.get('message', '')), - ('MANIFEST_ANNOUNCEMENT_BADGE', a.get('badge', '')), - ('MANIFEST_ANNOUNCEMENT_URL', a.get('url', '')), + ('MANIFEST_UNSLOTH_SOURCE', s(m.get('unsloth_source'))), + ('MANIFEST_UNSLOTH_GITHUB_REF', s(m.get('unsloth_github_ref'), 'main')), + ('MANIFEST_LLAMA_CPP_SOURCE', s(m.get('llama_cpp_source'))), + ('MANIFEST_LLAMA_CPP_TAG', s(m.get('llama_cpp_tag'))), + ('MANIFEST_CRITICAL_TIME', s(m.get('CRITICAL_TIME'))), + ('MANIFEST_ANNOUNCEMENT_MESSAGE', s(a.get('message'))), + ('MANIFEST_ANNOUNCEMENT_BADGE', s(a.get('badge'))), + ('MANIFEST_ANNOUNCEMENT_URL', s(a.get('url'))), ]: - print(f'{k}={shlex.quote(str(v))}') + print(f'{k}={shlex.quote(v)}') " 2>/dev/null)" || true substep "manifest: source=${MANIFEST_UNSLOTH_SOURCE:-pypi} llama=${MANIFEST_LLAMA_CPP_SOURCE:-default}@${MANIFEST_LLAMA_CPP_TAG:-default}" } @@ -590,8 +593,9 @@ else _HELPER_RELEASE_REPO="unslothai/llama.cpp" fi -# Apply manifest overrides for llama.cpp (only if user hasn't set env vars) -if [ -n "$MANIFEST_LLAMA_CPP_SOURCE" ] && [ -z "${UNSLOTH_LLAMA_PUBLISHED_REPO:-}" ]; then +# Apply manifest overrides for llama.cpp (only if user hasn't set env vars). +# Skip on macOS -- macOS must use ggml-org (unslothai/llama.cpp has no macOS assets). +if [ -n "$MANIFEST_LLAMA_CPP_SOURCE" ] && [ -z "${UNSLOTH_LLAMA_PUBLISHED_REPO:-}" ] && [ "$_HOST_SYSTEM" != "Darwin" ]; then if [ "$MANIFEST_LLAMA_CPP_SOURCE" = "ggml-org" ]; then _HELPER_RELEASE_REPO="ggml-org/llama.cpp" elif [ "$MANIFEST_LLAMA_CPP_SOURCE" = "unslothai" ]; then