Build/Build kJams script: Difference between revisions
No edit summary |
rewrite: host/guest map, _scripts paths, luna-pc/taurus-pc names |
||
| Line 1: | Line 1: | ||
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 <code>.app</code> bundles that, when '''opened on the hardware host''', launch a <code>.bat</code> 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 <code>AppParams.pva</code>; a stub made on the wrong Mac will not talk to the build guest. | ||
# | |||
# | Store finished stubs here (this is what Python opens): | ||
# | |||
# | <pre>xplat/proj/win/_scripts/</pre> | ||
# | |||
# | == Machine map == | ||
# | |||
{| class="wikitable" | |||
# | ! 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 (<code>open publish.command</code>). | |||
|- | |||
| 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. <code>is_initiator()</code> 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 <code>xplat.get_win_build_apphelper_name()</code> / <code>get_win_codesign_apphelper_name()</code>. | |||
{| class="wikitable" | |||
! Bundle name (exact) | |||
! Create / <code>open</code> on | |||
! Target VM | |||
! <code>App Path</code> | |||
|- | |||
| <code>Build kJams luna-pc.app</code> | |||
| bobina | |||
| luna-pc | |||
| <code>Z:\depot\kJams\Development\xplat\proj\win\_scripts\build.bat</code> | |||
|- | |||
| <code>Build kJams taurus-pc.app</code> | |||
| sugarbear | |||
| taurus-pc | |||
| <code>Z:\depot\kJams\Development\xplat\proj\win\_scripts\build.bat</code> | |||
|- | |||
| <code>code sign taurus-pc.app</code> | |||
| sugarbear | |||
| taurus-pc | |||
| <code>Z:\depot\kJams\Development\xplat\proj\win\_scripts\code_sign_taurus.bat</code> | |||
|- | |||
| <code>code sign path taurus-pc.app</code> | |||
| sugarbear | |||
| taurus-pc | |||
| <code>Z:\depot\kJams\Development\xplat\proj\win\_scripts\code_sign_path_taurus.bat</code> | |||
|} | |||
<code>build.bat</code> picks VS 2019 on <code>LUNA-PC</code> and VS 2022 elsewhere, then runs <code>win_build.py</code>. | |||
Old names that Python no longer opens (leave them until the new stubs exist, then delete): <code>Build kJams Luna.app</code>, <code>Build kJams Taurus.app</code>, <code>code sign Taurus.app</code>, <code>code sign path Taurus.app</code>, <code>Build kJams Bobina.app</code>, <code>Build kJams Pandora.app</code>, <code>Build kJams.app</code>, <code>code sign.app</code>. | |||
== Recipe (one stub) == | |||
Do this '''on bobina''' (for luna-pc) or '''on sugarbear''' (for taurus-pc). The Windows guest must be running and logged into the GUI session you want the build to use. | |||
# On the hardware host, open the Parallels "Windows applications" folder for '''that''' guest (bobina: luna-pc Applications; sugarbear: taurus-pc Applications). | |||
## 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 <code>.app</code> if Finder hides it), e.g. <code>Build kJams luna-pc</code>. | |||
# Right-click → Show Package Contents. | |||
# Edit <code>Contents/Info.plist</code>: | |||
#* <code>CFBundleGetInfoString</code> must '''end with''' the <code>App Path</code> from the table (the <code>Z:\...\ _scripts\....bat</code> line). | |||
#* <code>CFBundleName</code> = the exact bundle name without <code>.app</code>. | |||
# Edit <code>Contents/Resources/English.lproj/InfoPlist.strings</code>: set both <code>CFBundleName</code> and <code>CFBundleDisplayName</code> to that same name. | |||
# Edit <code>Contents/Resources/AppParams.pva</code>: set <code>APP Path</code> (or <code>App Path</code>) to the same <code>Z:\...</code> bat path. Confirm <code>VM Name</code> is luna-pc or taurus-pc as appropriate. | |||
# Move the finished <code>.app</code> into <code>/Volumes/Developer/depot/kJams/Development/xplat/proj/win/_scripts/</code> (same path on the host via the Developer share). | |||
# Repeat for each row in the table (four stubs total: one on bobina, three on sugarbear). | |||
# After creating them, add the new bundles to Perforce on the machine where you created them (or copy the bundle onto pandora's depot tree and <code>p4 add</code> there). | |||
== Hop (what taurus actually does) == | |||
* '''Win32 build:''' taurus SSHes to '''bobina''' and <code>open</code>s <code>Build kJams luna-pc.app</code> → luna-pc runs <code>build.bat</code>. | |||
* '''Win64 build:''' taurus SSHes to '''sugarbear''' and <code>open</code>s <code>Build kJams taurus-pc.app</code> → taurus-pc runs <code>build.bat</code>. | |||
* '''USB code sign (from luna-pc or taurus Mac):''' SSH to '''sugarbear''' and <code>open</code> <code>code sign taurus-pc.app</code> or <code>code sign path taurus-pc.app</code>. | |||
* '''Mac32:''' taurus SSHes to '''luna''' and <code>open</code>s <code>publish.command</code> / <code>rogue.command</code> (no WinAppHelper). | |||
* '''Mac64:''' taurus spawns a local Terminal worker with <code>KJAMS_WORKER=1</code>. | |||
== See also == | |||
* Depot docs: <code>Development/documentation/01_Infrastructure_Overview.md</code> | |||
* <code>CF/python/xplat.py</code> — <code>guest_to_host()</code>, <code>get_win_build_apphelper_name()</code> | |||
Revision as of 19:26, 7 September 2026
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_taurus.bat
|
code sign path taurus-pc.app
|
sugarbear | taurus-pc | Z:\depot\kJams\Development\xplat\proj\win\_scripts\code_sign_path_taurus.bat
|
build.bat picks VS 2019 on LUNA-PC and VS 2022 elsewhere, then runs win_build.py.
Old names that Python no longer opens (leave them until the new stubs exist, then delete): Build kJams Luna.app, Build kJams Taurus.app, code sign Taurus.app, code sign path Taurus.app, Build kJams Bobina.app, Build kJams Pandora.app, Build kJams.app, code sign.app.
Recipe (one stub)
Do this on bobina (for luna-pc) or on sugarbear (for taurus-pc). The Windows guest must be running and logged into the GUI session you want the build to use.
- On the hardware host, open the Parallels "Windows applications" folder for that guest (bobina: luna-pc Applications; sugarbear: taurus-pc Applications).
- 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). - Repeat for each row in the table (four stubs total: one on bobina, three on sugarbear).
- After creating them, add the new bundles to Perforce on the machine where you created them (or copy the bundle onto pandora's depot tree and
p4 addthere).
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 path 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 CF/python/xplat.py—guest_to_host(),get_win_build_apphelper_name()