From e1f46ff43eef97dea51339fc2d13d0d006a2c231 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Tue, 3 Sep 2019 16:00:25 +0200 Subject: [PATCH] OCI: Handle manifests without annotations in index.json When we export a manifest to the index, always pass the ref we're targeting instead of relying on the org.opencontainers.image.ref.name annotation, because that may not be set if we're using labels instead. This is no big deal, because we know what ref we're handling anyway. --- app/flatpak-builtins-build-bundle.c | 2 +- common/flatpak-dir.c | 2 +- common/flatpak-json-oci-private.h | 1 + common/flatpak-json-oci.c | 11 ++++------- common/flatpak-utils-private.h | 1 + common/flatpak-utils.c | 3 ++- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/flatpak-builtins-build-bundle.c b/app/flatpak-builtins-build-bundle.c index b11a68c1..22aa18d6 100644 --- a/app/flatpak-builtins-build-bundle.c +++ b/app/flatpak-builtins-build-bundle.c @@ -553,7 +553,7 @@ build_oci (OstreeRepo *repo, const char *commit_checksum, GFile *dir, if (index == NULL) index = flatpak_oci_index_new (); - flatpak_oci_index_add_manifest (index, manifest_desc); + flatpak_oci_index_add_manifest (index, ref, manifest_desc); if (!flatpak_oci_registry_save_index (registry, index, cancellable, error)) return FALSE; diff --git a/common/flatpak-dir.c b/common/flatpak-dir.c index 37deefd3..bdaea272 100644 --- a/common/flatpak-dir.c +++ b/common/flatpak-dir.c @@ -5025,7 +5025,7 @@ flatpak_dir_mirror_oci (FlatpakDir *self, g_debug ("Mirroring OCI image %s", oci_digest); - res = flatpak_mirror_image_from_oci (dst_registry, registry, oci_repository, oci_digest, oci_pull_progress_cb, + res = flatpak_mirror_image_from_oci (dst_registry, registry, oci_repository, oci_digest, ref, oci_pull_progress_cb, progress, cancellable, error); if (progress) diff --git a/common/flatpak-json-oci-private.h b/common/flatpak-json-oci-private.h index 1dda1af4..63a2205b 100644 --- a/common/flatpak-json-oci-private.h +++ b/common/flatpak-json-oci-private.h @@ -152,6 +152,7 @@ struct _FlatpakOciIndexClass FlatpakOciIndex * flatpak_oci_index_new (void); void flatpak_oci_index_add_manifest (FlatpakOciIndex *self, + const char *ref, FlatpakOciDescriptor *desc); gboolean flatpak_oci_index_remove_manifest (FlatpakOciIndex *self, const char *ref); diff --git a/common/flatpak-json-oci.c b/common/flatpak-json-oci.c index bf5a03f5..feef1eaf 100644 --- a/common/flatpak-json-oci.c +++ b/common/flatpak-json-oci.c @@ -448,21 +448,18 @@ flatpak_oci_index_get_n_manifests (FlatpakOciIndex *self) void flatpak_oci_index_add_manifest (FlatpakOciIndex *self, + const char *ref, FlatpakOciDescriptor *desc) { FlatpakOciManifestDescriptor *m; - const char *m_ref = NULL; int count; - if (desc->annotations != NULL) - m_ref = g_hash_table_lookup (desc->annotations, "org.flatpak.ref"); - - if (m_ref != NULL) - flatpak_oci_index_remove_manifest (self, m_ref); + if (ref != NULL) + flatpak_oci_index_remove_manifest (self, ref); count = flatpak_oci_index_get_n_manifests (self); - m = manifest_desc_for_desc (desc, m_ref); + m = manifest_desc_for_desc (desc, ref); self->manifests = g_renew (FlatpakOciManifestDescriptor *, self->manifests, count + 2); self->manifests[count] = m; self->manifests[count + 1] = NULL; diff --git a/common/flatpak-utils-private.h b/common/flatpak-utils-private.h index c7360dd4..85102aa2 100644 --- a/common/flatpak-utils-private.h +++ b/common/flatpak-utils-private.h @@ -526,6 +526,7 @@ gboolean flatpak_mirror_image_from_oci (FlatpakOciRegistry *dst_registry, FlatpakOciRegistry *registry, const char *oci_repository, const char *digest, + const char *ref, FlatpakOciPullProgress progress_cb, gpointer progress_data, GCancellable *cancellable, diff --git a/common/flatpak-utils.c b/common/flatpak-utils.c index 01621ed8..d12e0bee 100644 --- a/common/flatpak-utils.c +++ b/common/flatpak-utils.c @@ -5426,6 +5426,7 @@ flatpak_mirror_image_from_oci (FlatpakOciRegistry *dst_registry, FlatpakOciRegistry *registry, const char *oci_repository, const char *digest, + const char *ref, FlatpakOciPullProgress progress_cb, gpointer progress_user_data, GCancellable *cancellable, @@ -5491,7 +5492,7 @@ flatpak_mirror_image_from_oci (FlatpakOciRegistry *dst_registry, flatpak_oci_export_annotations (manifest->annotations, manifest_desc->annotations); - flatpak_oci_index_add_manifest (index, manifest_desc); + flatpak_oci_index_add_manifest (index, ref, manifest_desc); if (!flatpak_oci_registry_save_index (dst_registry, index, cancellable, error)) return FALSE;