Build/Build kJams script

From kJams Wiki
Revision as of 00:22, 8 September 2026 by Dave (talk | contribs) (replace WinAppHelper .app stubs with prlexec .command launchers)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

The coordinator (taurus, a Mac VM on sugarbear) cannot SSH into a Windows guest and land in the current GUI login session. On the Parallels hardware host, prlexec runs a .bat inside that host's Windows guest desktop session (a visible cmd window).

Mac wrappers are plain .command scripts in Perforce. They call prlexec_win_gui.sh. Do not copy Command Prompt.app or edit AppParams.pva.

Store the launchers here (this is what Python opens):

xplat/proj/win/_scripts/

prlexec is part of Parallels Desktop Pro/Business (/usr/local/bin/prlexec on bobina and sugarbear).

Machine map

Role Name What it is
Dev workstation pandora Dave's personal Mac. Not a release-build host. Qt Creator / MCP only.
32-bit hardware bobina Intel Mac. Hosts luna + luna-pc. Perpetual only.
32-bit Mac guest luna Mojave VM on bobina. Coordinator SSHes here directly (open publish.command).
32-bit Windows guest luna-pc Windows 10 VM on bobina. Reached only by running prlexec on bobina.
64-bit hardware sugarbear ARM Mac. Hosts taurus + taurus-pc. Perpetual + subscription. USB code-sign token lives on taurus-pc.
Coordinator / 64-bit Mac guest taurus Mac VM on sugarbear. is_initiator() is hardcoded to this host. Launches luna, luna-pc, taurus-pc, and a local Mac worker.
64-bit Windows guest taurus-pc Windows VM on sugarbear. Win64 compile + USB signing for both 32- and 64-bit.

Scripts Python opens

Names are the Windows guest that runs the work. Python builds them in xplat.get_win_build_prlexec_name() / get_win_codesign_prlexec_name().

Launcher (exact) Create / open on Target VM Windows bat
Build kJams luna-pc.command bobina luna-pc Z:\depot\kJams\Development\xplat\proj\win\_scripts\build.bat
Build kJams taurus-pc.command sugarbear taurus-pc Z:\depot\kJams\Development\xplat\proj\win\_scripts\build.bat
code sign taurus-pc.command sugarbear taurus-pc Z:\depot\kJams\Development\xplat\proj\win\_scripts\code_sign_app_taurus.bat
code sign paths taurus-pc.command sugarbear taurus-pc Z:\depot\kJams\Development\xplat\proj\win\_scripts\code_sign_paths_taurus.bat

Shared engine: prlexec_win_gui.sh. It runs:

prlexec --vm "<guest>" cmd /c start cmd /c "<bat>"

build.bat picks VS 2019 on LUNA-PC and VS 2022 elsewhere, then runs win_build.py.

Hop (what taurus actually does)

  • Win32 build: taurus SSHes to bobina and opens Build kJams luna-pc.command → luna-pc runs build.bat.
  • Win64 build: taurus SSHes to sugarbear and opens Build kJams taurus-pc.command → taurus-pc runs build.bat.
  • USB code sign (from luna-pc or taurus Mac): SSH to sugarbear and open code sign taurus-pc.command or code sign paths taurus-pc.command.
  • Mac32: taurus SSHes to luna and opens publish.command / rogue.command (no prlexec).
  • Mac64: taurus spawns a local Terminal worker with KJAMS_WORKER=1.

Manual check from sugarbear:

open "/Volumes/Developer/depot/kJams/Development/xplat/proj/win/_scripts/Build kJams taurus-pc.command"

After a submit on pandora, always p4 sync taurus (and taurus-pc's Z:\depot). sugarbear opens taurus's disk.

See also

  • Depot docs: Development/documentation/01_Infrastructure_Overview.md
  • Development/xplat/proj/win/_scripts/README.md
  • CF/python/xplat.pyguest_to_host(), get_win_build_prlexec_name()