From 7be0056ec0a779b0e9c3dfeaf012a6a7a6e6b74b 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 | 13 +++++++++++++ tests/kolainst/destructive/layering-local | 5 ++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/libpriv/rpmostree-core.cxx b/src/libpriv/rpmostree-core.cxx index 3a13b498de..965d58091a 100644 --- a/src/libpriv/rpmostree-core.cxx +++ b/src/libpriv/rpmostree-core.cxx @@ -4713,6 +4713,19 @@ 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; + 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..0bfb746db7 100755 --- a/tests/kolainst/destructive/layering-local +++ b/tests/kolainst/destructive/layering-local @@ -74,8 +74,11 @@ if ostree ls "${booted_commit}" /run/ostree-booted 2>/dev/null; then fi ostree show --print-metadata-key=ostree.bootable ${booted_commit} >out.txt -assert_file_has_content_literal out.txt 'true' +assert_file_has_content_literal out.txt 'byte' echo "ok bootable metadata" +ostree show --print-metadata-key=ostree.composefs.digest.v0 ${booted_commit} >out.txt +assert_file_has_content_literal out.txt 'true' +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