AlexsJones/llmfit · error · FileNotFoundError
No compiled binary found. Checked: {c} Run 'make build' fi
Error message
No compiled binary found. Checked:
{c}
Run 'make build' first. What it means
Raised by LlmfitBinaryBuildHook._find_local_binary() during an editable install (uv sync / uv run / pip install -e). Editable builds do not use a --target directory; the hook checks target/debug/llmfit (from `make build` / `cargo build`) and then target/release/llmfit (from `make release`). If neither file exists it raises FileNotFoundError with both checked paths and the hint to run 'make build'.
Source
Thrown at llmfit-python/hatch_build.py:133
)
return bin_path
@staticmethod
def _find_local_binary(llmfit_root: Path) -> Path:
"""Find the locally compiled binary in default Cargo output locations.
Checks ``target/debug/`` first (from ``make build``), then
``target/release/`` (from ``make release``).
"""
binary_name = "llmfit.exe" if sys.platform == "win32" else "llmfit"
candidates = [
llmfit_root / "target" / "debug" / binary_name,
llmfit_root / "target" / "release" / binary_name,
]
for candidate in candidates:
if candidate.is_file():
return candidate
raise FileNotFoundError(
"No compiled binary found. Checked:\n"
+ "\n".join(f" {c}" for c in candidates)
+ "\nRun 'make build' first.",
)
@staticmethod
def _check_binary_version(bin_path: Path, expected_version: str) -> None:
"""Run the binary with ``--version`` and verify it matches the expected version.
Raises ``RuntimeError`` on a mismatch — this indicates a stale build.
"""
result = subprocess.run(
[str(bin_path), "--version"],
capture_output=True,
check=True,
text=True,
timeout=5,
)View on GitHub (pinned to acc7e40c3a)
Solutions
- Run `make build` (or `cargo build`) in the repository root, then retry the editable install
- If you want the optimized binary for daily use, run `make release` instead — the release binary is also accepted
- Verify the artifact exists: `ls target/debug/llmfit target/release/llmfit` — one of them must be present (llmfit.exe on Windows)
Example fix
# before uv sync # => FileNotFoundError: No compiled binary found. Checked: target/debug/llmfit, target/release/llmfit # after make build uv sync
Defensive patterns
Strategy: validation
Validate before calling
import sys
from pathlib import Path
name = "llmfit.exe" if sys.platform == "win32" else "llmfit"
candidates = [Path("target/debug") / name, Path("target/release") / name]
if not any(c.is_file() for c in candidates):
raise SystemExit("no local binary — run `make build` (or `cargo build`) before `uv sync`/editable install") Try / catch
try:
bin_path = hook._find_local_binary(root)
except FileNotFoundError as e:
raise SystemExit(f"run `make build` first, then retry: {e}") Prevention
- Document `make build` as step one of the contributor setup, before uv sync
- In CI, make the Rust build step a hard dependency of any editable install step
- Watch for cargo clean in scripts; re-run make build afterwards
When it happens
Trigger: Cloning the repo and running `uv sync` or `uv run --project llmfit-python pytest` before any `cargo build`; after `cargo clean`; or after a fresh checkout in CI where the Rust build step was skipped or failed earlier in the pipeline.
Common situations: New contributor onboarding (installing the Python wrapper before building Rust); CI cache eviction of target/; switching branches after a cargo clean; `make build` failed silently in a previous step and the job continued.
Related errors
- Binary not found at {bin_path}. Expected it to be built for
- Unexpected output from '{bin_path} --version': {output!r}
- Binary version mismatch: binary at {bin_path} reports {binar
- LLMFIT_PYTHON_PLATFORM_TAG is not supported for editable ins
- Binary not found at {bin_path}. The binary selection logic s
AI-assisted analysis of AlexsJones/llmfit@acc7e40c3a (2026-08-17).
Data as JSON: /api/errors/dcbe65be1e37838b.
Report an issue: GitHub.