Build/Build kJams script
The coordinator (taurus, a Mac VM on sugarbear) cannot SSH into a Windows guest and land in the current GUI login session. Parallels "Windows Apps" (WinAppHelper stubs) are Mac .app bundles that, when opened on the hardware host, launch a .bat inside that host's Windows guest session.
Create each stub on the hardware that owns the VM (bobina for luna-pc, sugarbear for taurus-pc). Do not create them on pandora. The VM UUID is baked into AppParams.pva; a stub made on the wrong Mac will not talk to the build guest.
Store finished stubs here (this is what Python opens):
xplat/proj/win/_scripts/
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 opening a WinAppHelper 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. |
Apps Python opens
Names are the Windows guest that runs the work. Python builds them in xplat.get_win_build_apphelper_name() / get_win_codesign_apphelper_name().
| Bundle name (exact) | Create / open on
|
Target VM | App Path
|
|---|---|---|---|
Build kJams luna-pc.app
|
bobina | luna-pc | Z:\depot\kJams\Development\xplat\proj\win\_scripts\build.bat
|
Build kJams taurus-pc.app
|
sugarbear | taurus-pc | Z:\depot\kJams\Development\xplat\proj\win\_scripts\build.bat
|
code sign taurus-pc.app
|
sugarbear | taurus-pc | Z:\depot\kJams\Development\xplat\proj\win\_scripts\code_sign_app_taurus.bat
|
code sign paths taurus-pc.app
|
sugarbear | taurus-pc | Z:\depot\kJams\Development\xplat\proj\win\_scripts\code_sign_paths_taurus.bat
|
build.bat picks VS 2019 on LUNA-PC and VS 2022 elsewhere, then runs win_build.py.
Sugarbear (taurus-pc, scripted)
The three taurus-pc stubs are created on sugarbear by:
/bin/bash /Volumes/Developer/depot/kJams/Development/xplat/python/create_sugarbear_winapphelpers.sh --dry-run /bin/bash /Volumes/Developer/depot/kJams/Development/xplat/python/create_sugarbear_winapphelpers.sh
That copies the live Parallels Command Prompt app for taurus-pc (Helper Version 27 as of 2026-09) and points APP Path at the bats in the table. Precise recipe: depot xplat/python/create_sugarbear_winapphelpers.md.
taurus-pc must be running. Do not run the script on taurus, pandora, or bobina. After creating the stubs, copy them into the depot xplat/proj/win/_scripts/ tree and submit — they belong in Perforce. open on sugarbear still uses that host's copy of the same path. Always p4 sync taurus after submit (self-contained workspace, not pandora's disk).
Bobina is not scripted: Parallels there is version-locked for luna.
Recipe (bobina / luna-pc, one stub, manual)
Do this on bobina for Build kJams luna-pc.app. luna-pc must be running and logged into the GUI session you want the build to use.
- On bobina, open the Parallels "Windows applications" folder for luna-pc.
- If you cannot find it: Parallels → Configure → Options → Applications → enable "Show Windows applications folder in Dock". Dock icon → Reveal in Finder.
- Copy Command Prompt to the Desktop.
- Rename the copy to the exact bundle name from the table (without
.appif Finder hides it), e.g.Build kJams luna-pc. - Right-click → Show Package Contents.
- Edit
Contents/Info.plist:CFBundleGetInfoStringmust end with theApp Pathfrom the table (theZ:\...\ _scripts\....batline).CFBundleName= the exact bundle name without.app.
- Edit
Contents/Resources/English.lproj/InfoPlist.strings: set bothCFBundleNameandCFBundleDisplayNameto that same name. - Edit
Contents/Resources/AppParams.pva: setAPP Path(orApp Path) to the sameZ:\...bat path. ConfirmVM Nameis luna-pc or taurus-pc as appropriate. - Move the finished
.appinto/Volumes/Developer/depot/kJams/Development/xplat/proj/win/_scripts/(same path on the host via the Developer share). - You only need this once on bobina (
Build kJams luna-pc.app). sugarbear's three stubs come from the script above, not from this copy-Command-Prompt list.
Hop (what taurus actually does)
- Win32 build: taurus SSHes to bobina and
opensBuild kJams luna-pc.app→ luna-pc runsbuild.bat. - Win64 build: taurus SSHes to sugarbear and
opensBuild kJams taurus-pc.app→ taurus-pc runsbuild.bat. - USB code sign (from luna-pc or taurus Mac): SSH to sugarbear and
opencode sign taurus-pc.apporcode sign paths taurus-pc.app. - Mac32: taurus SSHes to luna and
openspublish.command/rogue.command(no WinAppHelper). - Mac64: taurus spawns a local Terminal worker with
KJAMS_WORKER=1.
See also
- Depot docs:
Development/documentation/01_Infrastructure_Overview.md Development/xplat/python/create_sugarbear_winapphelpers.mdCF/python/xplat.py—guest_to_host(),get_win_build_apphelper_name()