Files
rpicarrierboard/tools/install-kicad-toolkit

65 lines
2.0 KiB
Plaintext
Raw Permalink Normal View History

2026-06-29 16:31:02 -04:00
#!/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."