6d5756ad
build: the Makefile names the gates' boxes and provisions a guest
a73x 2026-09-04 12:50
Commit message
Makefile
| Old | New | ||
|---|---|---|---|
| @@ -22,7 +22,7 @@ MUX_TARGET ?= native | |||
| 22 | endif | 22 | endif |
| 23 | MUX_TARGET ?= x86_64-linux-musl | 23 | MUX_TARGET ?= x86_64-linux-musl |
| 24 | 24 | ||
| 25 | .PHONY: build check ci test e2e soak bench agent throughput vm coverage deps clean clean-deps xversion xversion-build install release mac-sdk mac xos | 25 | .PHONY: build check ci test e2e soak bench agent throughput vm coverage deps clean clean-deps xversion xversion-build install release mac-sdk mac xos provision-mac |
| 26 | 26 | ||
| 27 | # The QUIC stack (deps/quic) is built on demand by build.zig, so no target | 27 | # The QUIC stack (deps/quic) is built on demand by build.zig, so no target |
| 28 | # here needs to depend on this one. It exists to make the one-time cost | 28 | # here needs to depend on this one. It exists to make the one-time cost |
| @@ -170,14 +170,36 @@ throughput: mac-sdk | |||
| 170 | mac-sdk: | 170 | mac-sdk: |
| 171 | sh ./deps/mac-sdk.sh | 171 | sh ./deps/mac-sdk.sh |
| 172 | 172 | ||
| 173 | # The `make vm` of the macOS port: user journeys on the Mac, over ssh. | 173 | # The `make vm` of the macOS port: user journeys on a real macOS, over ssh. |
| 174 | # | ||
| 175 | # Both macOS gates take their boxes BY NAME in the environment, and neither | ||
| 176 | # has a default for one — a gate that guessed a box would eventually guess | ||
| 177 | # somebody's laptop (test/box_lib.sh): | ||
| 178 | # | ||
| 179 | # MAC_BOX the macOS box under test, with no toolchain on it. Both | ||
| 180 | # gates may SCRUB it, so make it a VM: provision-mac below. | ||
| 181 | # MAC_BUILDER a Mac holding this repo with zig and deps/mac-sdk. It | ||
| 182 | # builds and is never scrubbed. Defaults to $MAC_BOX. | ||
| 183 | # LINUX_BOX (xos only) an x86_64 Linux VM both this box and MAC_BOX can | ||
| 184 | # reach, also scrubbed. | ||
| 185 | # | ||
| 186 | # eval "$(test/provision-mac.sh)" # export MAC_BOX=admin@... | ||
| 187 | # MAC_BUILDER=squirtle make mac | ||
| 174 | mac: build | 188 | mac: build |
| 175 | sh ./test/mac.sh | 189 | sh ./test/mac.sh |
| 176 | 190 | ||
| 191 | # The pristine macOS guest the two gates run against: clone the hand-made | ||
| 192 | # base image on a tart host, boot it bridged onto the LAN, key it to this | ||
| 193 | # box, and print the one `export MAC_BOX=...` line to eval. `--down` when | ||
| 194 | # the run is over. The base image is a human action; this is not. | ||
| 195 | provision-mac: | ||
| 196 | @sh ./test/provision-mac.sh | ||
| 197 | |||
| 177 | # The cross-OS gate (test/xos.sh): a macOS client on a Linux daemon and a | 198 | # The cross-OS gate (test/xos.sh): a macOS client on a Linux daemon and a |
| 178 | # Linux client on a macOS daemon, over ssh and over QUIC. A hand gate beside | 199 | # Linux client on a macOS daemon, over ssh and over QUIC. A hand gate beside |
| 179 | # vm and mac, never inside ci — it needs two other machines, and ci stays | 200 | # vm and mac, never inside ci — it needs three other machines (MAC_BOX, |
| 180 | # hermetic and offline. | 201 | # LINUX_BOX and MAC_BUILDER, documented above), and ci stays hermetic and |
| 202 | # offline. | ||
| 181 | # | 203 | # |
| 182 | # Two builds, because the two sides of the seam are two architectures. The | 204 | # Two builds, because the two sides of the seam are two architectures. The |
| 183 | # musl one is what gets installed on the Linux box: static, for vm's reason | 205 | # musl one is what gets installed on the Linux box: static, for vm's reason |