From 85047d6b8d01e1b0b5ded3c751051f24dd179443 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Mon, 11 Sep 2023 13:04:57 -0400 Subject: [PATCH] core: Add composefs digest for local commits too This pairs with https://github.com/coreos/rpm-ostree/pull/4495/commits/dbe78217c0205dad372c84b2cf0a299003787952 where we generate composefs metadata for base images. It's going to be useful to do it for client side builds too, so that we can treat them symmetrically. It doesn't have a very high cost, just a metadata traversal. --- src/libpriv/rpmostree-core.cxx | 14 ++++++++++++++ tests/kolainst/destructive/layering-local | 3 +++ 2 files changed, 17 insertions(+) diff --git a/src/libpriv/rpmostree-core.cxx b/src/libpriv/rpmostree-core.cxx index 3a13b498de..08f4e8222e 100644 --- a/src/libpriv/rpmostree-core.cxx +++ b/src/libpriv/rpmostree-core.cxx @@ -4713,6 +4713,20 @@ rpmostree_context_commit (RpmOstreeContext *self, const char *parent, if (!ostree_commit_metadata_for_bootable (root, metadata_dict, cancellable, error)) return FALSE; } +#if OSTREE_CHECK_VERSION(2023, 4) + { + g_autoptr (GError) local_error = NULL; + g_debug ("Adding composefs metadata"); + if (!ostree_repo_commit_add_composefs_metadata ( + self->ostreerepo, 0, metadata_dict, (OstreeRepoFile *)root, cancellable, &local_error) + && !g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED)) + { + g_propagate_prefixed_error (error, util::move_nullify (local_error), + "Adding composefs metadata"); + return FALSE; + } + } +#endif g_autoptr (GVariant) metadata = g_variant_dict_end (metadata_dict); { diff --git a/tests/kolainst/destructive/layering-local b/tests/kolainst/destructive/layering-local index ca03ceea4c..8ba5a84378 100755 --- a/tests/kolainst/destructive/layering-local +++ b/tests/kolainst/destructive/layering-local @@ -76,6 +76,9 @@ fi ostree show --print-metadata-key=ostree.bootable ${booted_commit} >out.txt assert_file_has_content_literal out.txt 'true' echo "ok bootable metadata" +ostree show --print-metadata-key=ostree.composefs.digest.v0 ${booted_commit} >out.txt +assert_file_has_content_literal out.txt 'byte' +echo "ok composefs metadata on client generated commit" # check we could uninstall the package using either its NEVRA or name rpm-ostree uninstall foo-1.2-3.x86_64