Tart save oci archive - #1279
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b5253d5e89
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
Replace custom Cirrus Labs layer media types (tart.config.v1, tart.disk.v2, tart.nvram.v1) with a single standard application/vnd.oci.image.layer.v1.tar+gzip layer containing the VM files as a tar+gzip archive. This makes the archive fully compatible with skopeo, Docker, and any OCI-compliant tool, since all layers use standard media types. The OCI config labels still carry tart-specific metadata (disk format, etc.) for round-tripping.
Use the same OCI manifest format and custom Cirrus Labs layer media types (config.v1, disk.v2, nvram.v1) that tart push produces. skopeo copy --format oci already works with images pushed by tart push, so the archive now matches that format exactly.
|
This at least gets to DockerHub. Need to test that pulling the image from there works. |
|
Pulling the image fails with: This happens with both |
100% vibe coded because I'm not familiar with Swift. I have at least spot-checked the code's logic flow; no idea about idiomatic Swift patterns though.
Tested by exporting an image and copying to DockerHub with
skopeo'soci-archive:mechanism for the exported file. The blobs copied, but the config failed due toapplication/vnd.cirruslabs.tart.config.v1being an unknown media type.