First NixOS attempt: pip wheel PySide6 cannot load libgthread-2.0.so.0
because NixOS has no FHS library paths. Nothing inside the venv can
fix that (KiCad installs wheels only) - but the plugin made it worse
twice over:
- The backend probe imported bare PySide6, whose pure-Python __init__
succeeds even when QtCore's .so cannot load - so matplotlib was
promised QtAgg and the error figure died at switch_backend, taking
the failure report with it. The probe now imports <binding>.QtCore
and falls through to Tk/Agg on a broken Qt.
- The user got a raw ImportError traceback. A cannot-open-shared-object
failure during the kipy/dialog imports now raises a UserFacingError
that names the actual fixes: run KiCad in an FHS environment
(steam-run) or enable nix-ld with Qt runtime libraries. The README
Linux notes carry the same guidance.
141 passed on the dev stack and the Python 3.9 mac-equivalent stack.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Second Mac run (KiCad demo board opened from the mounted installer
image) got past the dialog and died twice:
1. make_output_dir crashed with OSError 30: the demos volume is a
read-only filesystem. Now falls back to a temp directory named
after the board, with the path printed (the Messages panel showed
it is actually read there).
2. The error figure - and every other figure - could never render:
matplotlib refused with Cannot load backend TkAgg ... as qt is
currently running. macOS bundled Python ships tkinter, so the
old tk-first probe picked TkAgg while the PySide6 dialog and
progress window had already made this a Qt process. Windows never
saw it because KiCad Python there has no tkinter. Qt now comes
first - PySide6 is a hard dependency, so it is always there.
Both covered by tests that fail on the old code: the dev env has both
toolkits installed, so the backend-order assertion is exercised for
real, and the RO fallback is simulated by denying mkdir under the
board dir. 140 passed on the dev stack and on the Python 3.9 +
numpy 2.0 / scipy 1.13 / matplotlib 3.9 / PySide6 6.10 stack that a
Mac venv resolves.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>