Skip to main content

Module delta_ostree

Module delta_ostree 

Source
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§

DeltaLayerSource 🔒
Produces the target image’s layers from an oci-delta and a source commit already in the repository, without any network access.
OstreeDataSource 🔒
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§

ReadSeek 🔒

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.