-
Notifications
You must be signed in to change notification settings - Fork 6
UTM-based servo-macos15-arm profile #64
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Draft
delan
wants to merge
6
commits into
hypervisor-polymorphism
Choose a base branch
from
utm-macos15-arm
base: hypervisor-polymorphism
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
+1,070
−38
Conversation
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
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
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.