Core Bundles and local builds
Each Launchpad machine runs with one installed VPhone.bundle version, its Core Bundle. This page shows how to install a local build, move a machine to it, and compare two builds side by side.
Test a VPhone.bundle build
-
Build the bundle from the repository root:
-
Install it. It installs as
<version>-local.<hash>, becomes the default, gets the execution policy exception, has the newvphone-vmcdhash allowed, and runs host preflight:The exact version is in the install result and in
bundle list. -
Move an existing machine to it.
--update-environmentalso redeploys the new vphoned and hook dylibs, and needs the machine to be stopped: -
Start the machine and check it:
The helper's authorization lasts five minutes. The first step that needs the helper after it expires asks for an administrator password on the Mac, as the window does.
For the one-time kernel and guest update that enables persistent shader caches on an existing VM, see Persistent shader caches.
Compare two builds
Install both without moving the default, then give each its own machine:
Machines created this way differ in all three layers (see below). To compare only host programs and guest environment on one boot chain, clone a machine in the window and rebind the copy:
vm list shows which bundle each layer came from. bundle remove refuses a version while a machine is bound to it; rebind or delete those machines first.
How machines are bound to bundles
Every machine is bound to one installed version, chosen when it is created and kept in launchpad.json in the machine folder. Installing a bundle never changes a machine's binding.
A machine is made of three layers, each taken from a bundle at a different time:
Changing boot-chain patches later
vphone-cli fw set-patches changes the patch choice, and vphone-cli fw patches <vm> lists what has not reached the guest yet. Launchpad shows the count in the inspector. Each kind of patch reaches the guest a different way:
The default bundle
The default bundle (formerly "active") decides only:
- which version
vm createbinds when--bundleis not given; - what
execand library-wide commands run with.
A new install becomes the default unless you pass --keep-default. The first start of a machine in a Launchpad session checks its bundle once (execution policy exception, AMFI, host preflight).
Version names
Local builds install as <version>-local.<hash>, with the hash taken from the bundle's code-signature seal, so two builds of one version sit side by side. Older stores may still hold <version>-local or <version>-ci.<commit>.