65 lines
2.0 KiB
Plaintext
65 lines
2.0 KiB
Plaintext
|
|
#!/usr/bin/env bash
|
||
|
|
# install-kicad-toolkit — install circuit_toolkit into KiCad's bundled Python
|
||
|
|
# so pcbnew-dependent builders (pcb.py) can import it.
|
||
|
|
#
|
||
|
|
# Usage: ./install-kicad-toolkit.sh
|
||
|
|
#
|
||
|
|
# This is a one-time setup. After KiCad updates, re-run to pick up changes.
|
||
|
|
|
||
|
|
set -euo pipefail
|
||
|
|
|
||
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||
|
|
TOOLKIT_SRC="$PROJECT_ROOT/kicad-claude-toolkit/python/circuit_toolkit"
|
||
|
|
|
||
|
|
# Find KiCad Python
|
||
|
|
KICAD_APP="/Applications/KiCad/KiCad.app"
|
||
|
|
KICAD_PYTHON="${KICAD_APP}/Contents/Frameworks/Python.framework/Versions/3.9/bin/python3"
|
||
|
|
|
||
|
|
if [ ! -x "$KICAD_PYTHON" ]; then
|
||
|
|
echo "ERROR: KiCad Python not found at $KICAD_PYTHON" >&2
|
||
|
|
echo "Install KiCad from kicad.org, then re-run." >&2
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo "KiCad Python: $KICAD_PYTHON"
|
||
|
|
echo "circuit_toolkit source: $TOOLKIT_SRC"
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# Verify pcbnew works
|
||
|
|
echo "Checking pcbnew..."
|
||
|
|
if ! "$KICAD_PYTHON" -c "import pcbnew" 2>/dev/null; then
|
||
|
|
echo "ERROR: pcbnew not importable. Run KiCad.app at least once." >&2
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
echo " pcbnew OK"
|
||
|
|
|
||
|
|
# Install circuit_toolkit in development mode
|
||
|
|
echo ""
|
||
|
|
echo "Installing circuit_toolkit (editable)..."
|
||
|
|
pushd "$TOOLKIT_SRC" >/dev/null
|
||
|
|
# KiCad ships Python 3.9; toolkit pyproject requires >=3.10. Use --no-build-isolation
|
||
|
|
# to bypass the version check (the code only needs 3.9 features).
|
||
|
|
"$KICAD_PYTHON" -m pip install --no-build-isolation -e . 2>&1
|
||
|
|
echo " installed"
|
||
|
|
|
||
|
|
# Also install optional sim deps
|
||
|
|
echo ""
|
||
|
|
echo "Installing optional sim deps (matplotlib, numpy)..."
|
||
|
|
"$KICAD_PYTHON" -m pip install matplotlib numpy 2>&1 || echo " (non-fatal: sim deps skipped)"
|
||
|
|
|
||
|
|
# Verify
|
||
|
|
echo ""
|
||
|
|
echo "Verifying..."
|
||
|
|
"$KICAD_PYTHON" -c "
|
||
|
|
import pcbnew
|
||
|
|
import circuit_toolkit
|
||
|
|
from circuit_toolkit.core.board import Board
|
||
|
|
from circuit_toolkit.builders.pcb import build_pcb
|
||
|
|
print(f' circuit_toolkit {circuit_toolkit.__version__} OK (pcbnew {pcbnew.__file__})')
|
||
|
|
"
|
||
|
|
|
||
|
|
echo ""
|
||
|
|
echo "Done. circuit_toolkit is now available inside KiCad's Python."
|
||
|
|
echo "Use ./tools/kicad-python to run scripts with pcbnew access."
|