UTM-based servo-macos15-arm profile#64
Draft
delan wants to merge 6 commits intohypervisor-polymorphismfrom
Draft
UTM-based servo-macos15-arm profile#64delan wants to merge 6 commits intohypervisor-polymorphismfrom
delan wants to merge 6 commits intohypervisor-polymorphismfrom
Conversation
74547fd to
d4f6451
Compare
d4f6451 to
21888d7
Compare
delan
added a commit
that referenced
this pull request
Nov 10, 2025
this patch gives us a better foundation for documenting the new images in #64.
d52d04f to
332f544
Compare
332f544 to
5b81c35
Compare
5b81c35 to
5de3aab
Compare
delan
added a commit
that referenced
this pull request
Nov 25, 2025
so far, we’ve managed the lifecycle of an image like servo-ubuntu2204 like this: - rebuild the image by building a new _profile guest_ (libvirt guest named “**servo-ubuntu2204**”) - destroy the guest with that name, if it exists - recreate the guest from profiles/servo-ubuntu2204/guest.xml - set the disk to /path/to/base/servo-ubuntu2204/base.img@[timestamp] - start the guest, so that it can install tooling, bake in cached builds, etc - destroy the libvirt guest - recreate the guest from profiles/servo-ubuntu2204/guest.xml - set the disk to /path/to/base/servo-ubuntu2204/base.img (symlink) - if successful, symlink /path/to/base/servo-ubuntu2204/base.img to base.img@[timestamp] - if unsuccessful, symlink /path/to/base/servo-ubuntu2204/base.img to base.img@[oldTimestamp] - create runners by cloning that guest into each _runner guest_ (“**ci-runner-servo-ubuntu2204.[number]**”) - clone the disks, but not the guests, with the monitor (so it can be parallelised) - clone the guest, but not the disks, with virt-clone that works well enough for our current setup with libvirt and ZFS, but some hypervisors, like UTM (#64), will require us to treat each virtual machine as a self-contained object, with its own configuration and image files. in UTM, it’s hard to destroy a guest without also destroying its disks. this patch moves the monitor closer to that world, by avoiding the destroy-recreate-configure pattern in image rebuilds. the lifecycle for servo-ubuntu2204 images now looks like this: - rebuild the image by building a new _rebuild guest_ (“**ci-rebuild-servo-ubuntu2204@[timestamp]**”) - create the guest from profiles/servo-ubuntu2204/guest.xml - set the disk to /path/to/base/servo-ubuntu2204/base.img@[timestamp] - start the guest, so that it can install tooling, bake in cached builds, etc - if successful, convert that guest to a new _template guest_ (“**ci-template-servo-ubuntu2204@[timestamp]**”) - conversion just means renaming the guest from “ci-rebuild-…” to “ci-template-…” - if unsuccessful, just destroy that guest - create runners by cloning that guest into each _runner guest_ (“**ci-runner-servo-ubuntu2204.[number]**”) - clone the disks, but not the guests, with the monitor (so it can be parallelised) - clone the guest, but not the disks, with virt-clone bonus: with this patch, failed rebuilds will no longer leave the template in an inconsistent state, with the old image data (good) but the new guest configuration (bad because it may be broken). <img width="771" height="519" alt="image" src="https://github.com/user-attachments/assets/21898110-d243-401a-9e0d-8852d2b74a9a" />
284e3c1 to
098484e
Compare
69d099c to
c24ad97
Compare
7686c72 to
bd0dea2
Compare
c24ad97 to
9617642
Compare
bd0dea2 to
d0082d1
Compare
88b61d8 to
c2d5249
Compare
c2d5249 to
02be366
Compare
02be366 to
05de633
Compare
d0082d1 to
724e717
Compare
Member
|
any progress on this? mac is becoming bottleneck again |
Member
Author
i should be able to continue working on this after the monthly update :) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
this seems more viable than #62.