mirror of
https://github.com/deepseek-ai/deepseek-harness.git
synced 2026-08-29 04:26:38 +00:00
Make the zero-code dsh-python-runtime-closure depend on the real @deepseek-ai/dsh application and every required profile peer, then package apps/cli's built bin instead of the deleted Python carrier. Rename executables to deepseek-harness-sdk-runtime-<platform>-<arch>, update wheel/platform/build workflow discovery, and install a Python dsh console command that requires explicit DSH_HOME before exec. Include profile, bundle, preset, native addon, and shared-library assets needed by the full CLI. Remove the checked-in default cordis.yml and preserve the existing wheel distribution names, Python module names, sidecar validation, and wire identity. Runtime resolution and release tests pin the new artifacts and dev Node carrier.
86 lines
3.6 KiB
Python
86 lines
3.6 KiB
Python
from __future__ import annotations
|
|
|
|
import json
|
|
import os
|
|
import platform
|
|
import stat
|
|
from pathlib import Path
|
|
|
|
from hatchling.builders.hooks.plugin.interface import BuildHookInterface
|
|
|
|
|
|
def _load_platforms() -> dict[str, tuple[str, str]]:
|
|
"""Load and validate the platform manifest inside an isolated wheel build."""
|
|
path = Path(__file__).with_name("platforms.json")
|
|
try:
|
|
payload = json.loads(path.read_text())
|
|
except (OSError, json.JSONDecodeError) as error:
|
|
raise RuntimeError(f"could not read runtime platform manifest from {path}") from error
|
|
if not isinstance(payload, dict) or not payload:
|
|
raise RuntimeError(f"{path} must contain a non-empty platform object")
|
|
platforms: dict[str, tuple[str, str]] = {}
|
|
for name, raw in payload.items():
|
|
if (
|
|
not isinstance(name, str)
|
|
or not isinstance(raw, dict)
|
|
or set(raw) != {"tag", "executable"}
|
|
or not isinstance(raw["tag"], str)
|
|
or not isinstance(raw["executable"], str)
|
|
):
|
|
raise RuntimeError(f"{path} platform entries must contain string tag and executable fields")
|
|
platforms[name] = (raw["tag"], raw["executable"])
|
|
return platforms
|
|
|
|
|
|
_PLATFORMS = _load_platforms()
|
|
|
|
|
|
def _host_platform_tag() -> str:
|
|
machine = platform.machine().lower()
|
|
arch = "arm64" if machine in {"arm64", "aarch64"} else "x64" if machine in {"x86_64", "amd64"} else machine
|
|
system = platform.system().lower()
|
|
key = f"macos-{arch}" if system == "darwin" else f"linux-{arch}" if system == "linux" else system
|
|
try:
|
|
return _PLATFORMS[key][0]
|
|
except KeyError as exc:
|
|
raise RuntimeError(f"unsupported deepseek-harness-runtime-bin build platform: {key}") from exc
|
|
|
|
|
|
class RuntimeBuildHook(BuildHookInterface):
|
|
"""Assign the native wheel tag and reject incomplete or mixed-platform payloads."""
|
|
|
|
def initialize(self, version: str, build_data: dict[str, object]) -> None:
|
|
if version == "editable":
|
|
return
|
|
if self.target_name == "sdist":
|
|
raise RuntimeError(
|
|
"deepseek-harness-runtime-bin is wheel-only; build and publish platform wheels only."
|
|
)
|
|
|
|
platform_tag = os.environ.get("DSH_RUNTIME_PLATFORM_TAG") or _host_platform_tag()
|
|
matches = [value for value in _PLATFORMS.values() if value[0] == platform_tag]
|
|
if len(matches) != 1:
|
|
supported = ", ".join(value[0] for value in _PLATFORMS.values())
|
|
raise RuntimeError(
|
|
f"unsupported DSH_RUNTIME_PLATFORM_TAG {platform_tag!r}; expected one of {supported}"
|
|
)
|
|
expected_executable = matches[0][1]
|
|
runtime_dir = Path(self.root) / "src" / "deepseek_harness_runtime" / "runtime"
|
|
runtime_files = sorted(
|
|
runtime_dir.glob("deepseek-harness-sdk-runtime-*") if runtime_dir.is_dir() else []
|
|
)
|
|
expected_files = [expected_executable, f"{expected_executable}-rg"]
|
|
if "-macos-" in expected_executable:
|
|
expected_files.append(f"{expected_executable}-spawn-helper")
|
|
found_files = [path.name for path in runtime_files]
|
|
if found_files != expected_files:
|
|
raise RuntimeError(
|
|
f"runtime wheel {platform_tag} payload must be {expected_files}; found {found_files}"
|
|
)
|
|
for executable in runtime_files:
|
|
if executable.stat().st_mode & stat.S_IXUSR == 0:
|
|
raise RuntimeError(f"runtime executable is not executable: {executable}")
|
|
build_data["pure_python"] = False
|
|
build_data["infer_tag"] = False
|
|
build_data["tag"] = f"py3-none-{platform_tag}"
|