From 97b83e3df9e6849c03fa09c339e4386f068d05d0 Mon Sep 17 00:00:00 2001 From: epalosh Date: Sat, 15 Aug 2026 18:38:58 -0400 Subject: [PATCH] Fix release verification step failing on a missing import The v0.2.2 release build reached the new install-and-verify gate and died with ModuleNotFoundError: No module named 'openfov'. The build job installs requirements-dev.txt but never `pip install -e .` -- only the CI workflow does -- so the package was not importable when the step called ensure_registered(). Set PYTHONPATH for that step rather than adding an editable install to the job. An editable install would land before the ~35 minute Nuitka build and change the environment it resolves imports in; there is no reason to risk that to satisfy one verification step. Worth recording what the gate proved before it broke: the installer built, installed silently, and shipped both NPClient64.dll and TrackIR.exe -- those checks all passed. And it correctly refused to publish, so no broken release went out. Co-Authored-By: Claude Opus 5 --- .github/workflows/release.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 94324bf..35634c4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -137,6 +137,13 @@ jobs: # Register against the *installed* binaries using the same code # path the app runs on launch, then perform a real game's lookup. + # + # PYTHONPATH rather than `pip install -e .`: this job deliberately + # installs only requirements-dev.txt, and adding an editable + # install ahead of the ~35 min Nuitka build would change the + # environment that build resolves imports in. Scope it to this + # step instead. + $env:PYTHONPATH = "$PWD\src" $env:OPENFOV_BIN_DIR = $binDir python -c "from openfov.output.npclient_bootstrap import ensure_registered; ensure_registered()" if ($LASTEXITCODE -ne 0) { throw "ensure_registered failed" }