tstest/tailmac: add customized macOS virtualization tooling (#13146)

updates tailcale/corp#22371

Adds custom macOS vm tooling.  See the README for
the general gist, but this will spin up VMs with unixgram
capable network interfaces listening to a named socket,
and with a virtio socket device for host-guest communication.

We can add other devices like consoles, serial, etc as needed.

The whole things is buildable with a single make command, and
everything is controllable via the command line using the TailMac
utility.

This should all be generally functional but takes a few shortcuts
with error handling and the like.  The virtio socket device support
has not been tested and may require some refinement.

Signed-off-by: Jonathan Nobels <jonathan@tailscale.com>
This commit is contained in:
Jonathan Nobels
2024-08-19 15:01:19 -04:00
committed by GitHub
parent 1e8f8ee5f1
commit 8fad8c4b9b
29 changed files with 2954 additions and 0 deletions

23
tstest/tailmac/Makefile Normal file
View File

@@ -0,0 +1,23 @@
XCPRETTIFIER := xcpretty
ifeq (, $(shell which $(XCPRETTIFIER)))
XCPRETTIFIER := cat
endif
.PHONY: tailmac
tailmac:
xcodebuild -scheme tailmac -destination 'platform=macOS,arch=arm64' -derivedDataPath build -configuration Release build | $(XCPRETTIFIER)
cp -r ./build/Build/Products/Release/tailmac ./bin/tailmac
.PHONY: host
host:
xcodebuild -scheme host -destination 'platform=macOS,arch=arm64' -derivedDataPath build -configuration Release build | $(XCPRETTIFIER)
cp -r ./build/Build/Products/Release/Host.app ./bin/Host.app
.PHONY: clean
clean:
rm -rf ./bin
rm -rf ./build
mkdir -p ./bin
.PHONY: all
all: clean tailmac host