Expand description
Applying an oci-delta with the ostree backend.
A tar-diff patch reads the source image by path, so the source does not
have to be a container layer at all - an ostree commit holding the same
filesystem works just as well. OstreeDataSource serves file content out
of a commit, and DeltaLayerSource plugs that into the container importer
in place of the image proxy.
The one wrinkle is that ostree does not store an image’s root filesystem
verbatim: the tar importer moves /etc to /usr/etc, moves /var to
/usr/share/factory/var on ostree older than v2024.3, and drops anything
outside those unless the image was imported with allow_nonusr. See
source_path_candidates.
An ostree-native (chunked) image additionally has its layers made of repo
objects under sysroot/ostree/, which are nowhere to be found in the
commit’s own file tree. That is not a problem here only because oci-delta
passes IgnoreSourcePrefixes=["sysroot/ostree/"] when building a delta, so
no patch ever asks for one.
Structs§
- Delta
Layer 🔒Source - Produces the target image’s layers from an oci-delta and a source commit already in the repository, without any network access.
- Ostree
Data 🔒Source - Serves file content from an ostree commit to a tar-diff patch.
Constants§
- PIPE_
BUFFER 🔒 - How much reconstructed layer data may sit between the worker and the importer before the worker blocks.
Traits§
- Read
Seek 🔒
Functions§
- find_
source_ 🔒commit - Find the ostree commit holding the image this delta was built against.
- source_
path_ 🔒candidates - Where in an ostree commit the content for a source image path may be found.