Deploy: freeze the render bridge to renderer.exe -- archive is now complete
render-bridge/freeze.ps1: PyInstaller onefile of live_bridge.py + Dave's vrboard/vrview/vrview_gl (+glcontext collected for moderngl) -> dist\ renderer.exe (~33 MB). GL backend live-verified from a pure-dist launch (no --root/--renderer overrides) on 2026-07-10. package.ps1 bundles the frozen exe automatically when present; DEPLOYMENT-PLAN's renderer OPEN item is resolved. Ignore the build-artifact dirs. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -5,3 +5,10 @@
|
||||
/emulator/dbx_*.txt
|
||||
/emulator/screen*.png
|
||||
__pycache__/
|
||||
|
||||
# Deployment build artifacts (rebuild: deploy/package.ps1 + render-bridge/freeze.ps1)
|
||||
/emulator/dist/
|
||||
/emulator/render-bridge/dist/
|
||||
/emulator/pod-launch/publish/
|
||||
/emulator/pod-launch/bin/pkg/
|
||||
/emulator/bld*.log
|
||||
|
||||
@@ -134,8 +134,10 @@ Single root folder + `postinstall.bat`. Everything the install needs is inside:
|
||||
affair that survives game updates. postinstall detects an existing install
|
||||
and only warns when absent (a bundled `deploy\npcap.exe` is still honored
|
||||
if shipped)
|
||||
- The renderer (**OPEN:** freeze to one exe vs bundle embeddable Python -- decide
|
||||
with David; "decide later")
|
||||
- The renderer -- **RESOLVED 2026-07-10: frozen to one exe** (PyInstaller
|
||||
onefile, `render-bridge\freeze.ps1` -> `dist\renderer.exe`, ~33 MB, GL
|
||||
backend live-verified from a pure-dist launch). `package.ps1` bundles it
|
||||
automatically when present.
|
||||
- `net_*.conf` **templates** with `@@ROOT@@` / `@@REALNIC@@` tokens, launch
|
||||
dispatcher, `postinstall.bat`
|
||||
|
||||
|
||||
@@ -74,9 +74,13 @@ if ($NoContent) {
|
||||
Copy-Item (Join-Path $Emu 'net-boot') $root -Recurse
|
||||
}
|
||||
|
||||
# renderer (frozen exe) -- else flagged
|
||||
if ($Renderer) { Copy-Item $Renderer (Join-Path $root 'renderer.exe'); Log "bundled renderer -> renderer.exe" }
|
||||
else { Warn "no -Renderer: renderer NOT bundled (freeze pending). pod-launch needs --renderer or a bundled render-bridge at runtime." }
|
||||
# renderer (frozen exe): default to render-bridge\freeze.ps1's output -- else flagged
|
||||
if (-not $Renderer) {
|
||||
$frozen = Join-Path $Emu 'render-bridge\dist\renderer.exe'
|
||||
if (Test-Path $frozen) { $Renderer = $frozen }
|
||||
}
|
||||
if ($Renderer) { Copy-Item $Renderer (Join-Path $root 'renderer.exe'); Log "bundled renderer -> renderer.exe ($Renderer)" }
|
||||
else { Warn "no renderer: run render-bridge\freeze.ps1 (or pass -Renderer). pod-launch needs --renderer or a render bridge at runtime." }
|
||||
|
||||
# Npcap installer -- optional: policy (2026-07-10) is a one-time MANUAL install
|
||||
# per cockpit; postinstall detects it and only warns when absent.
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
# freeze.ps1 -- PyInstaller onefile of live_bridge.py -> dist\renderer.exe,
|
||||
# the deployable render bridge (package.ps1 bundles it automatically when
|
||||
# present). pod-launch invokes it as: renderer.exe tcp:8621 <live.fifodump>.
|
||||
#
|
||||
# Needs the Windows CPython (py -3.13) with the render-bridge wheels plus
|
||||
# pyinstaller: py -3.13 -m pip install numpy pygame-ce moderngl pillow pyinstaller
|
||||
#
|
||||
# Dave's modules (vrboard/vrview/vrview_gl) come from ..\..\dpl3-revive\patha
|
||||
# and are baked into the exe; _backend's runtime sys.path insert becomes a
|
||||
# harmless no-op in the frozen build. glcontext is moderngl's dynamically
|
||||
# imported binary backend -- PyInstaller misses it without --collect-all.
|
||||
# First frozen + live-verified (GL backend) 2026-07-10.
|
||||
$ErrorActionPreference = 'Stop'
|
||||
Set-Location $PSScriptRoot
|
||||
py -3.13 -m PyInstaller --onefile --noconsole --name renderer `
|
||||
--paths ..\..\dpl3-revive\patha `
|
||||
--hidden-import vrview_gl --hidden-import vrview --hidden-import vrboard `
|
||||
--collect-all glcontext `
|
||||
--distpath .\dist `
|
||||
--workpath (Join-Path $env:TEMP 'pyi-renderer') `
|
||||
--specpath (Join-Path $env:TEMP 'pyi-renderer') `
|
||||
live_bridge.py
|
||||
if ($LASTEXITCODE -ne 0) { throw "PyInstaller failed" }
|
||||
Write-Host "[freeze] dist\renderer.exe ready ($('{0:N1} MB' -f ((Get-Item .\dist\renderer.exe).Length / 1MB)))"
|
||||
Reference in New Issue
Block a user