diff options
author | Alexander Larsson <alexl@redhat.com> | 2019-06-12 17:01:07 +0200 |
---|---|---|
committer | Atomic Bot <atomic-devel@projectatomic.io> | 2019-09-06 12:49:40 +0000 |
commit | afd532bb8bf1b50a3864880f26bc2cea82cfa9b6 (patch) | |
tree | 3aa966f123a6d5546aa67a7c0a8f4993dfe0f4df | |
parent | be9961ecf65a081aac24e2007a0af7be1424eb38 (diff) | |
download | flatpak-afd532bb8bf1b50a3864880f26bc2cea82cfa9b6.tar.gz |
oci: Allow reading metadata from labels too
Closes: #2978
Approved by: alexlarsson
-rw-r--r-- | common/flatpak-oci-registry.c | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/common/flatpak-oci-registry.c b/common/flatpak-oci-registry.c index 89974234..7058cf0d 100644 --- a/common/flatpak-oci-registry.c +++ b/common/flatpak-oci-registry.c @@ -1896,9 +1896,24 @@ flatpak_oci_verify_signature (OstreeRepo *repo, } static const char * +get_image_metadata (FlatpakOciIndexImage *img, const char *key) +{ + if (img->labels != NULL) + { + const char *ref = g_hash_table_lookup (img->labels, key); + if (ref) + return ref; + } + if (img->annotations) + return g_hash_table_lookup (img->annotations, key); + return NULL; +} + + +static const char * get_image_ref (FlatpakOciIndexImage *img) { - return g_hash_table_lookup (img->annotations, "org.flatpak.ref"); + return get_image_metadata (img, "org.flatpak.ref"); } typedef struct @@ -2115,7 +2130,7 @@ flatpak_oci_index_make_summary (GFile *index, if (ref == NULL) continue; - metadata_contents = g_hash_table_lookup (image->annotations, "org.flatpak.metadata"); + metadata_contents = get_image_metadata (image, "org.flatpak.metadata"); if (metadata_contents == NULL && !g_str_has_prefix (ref, "appstream/")) continue; /* Not a flatpak, skip */ @@ -2127,11 +2142,11 @@ flatpak_oci_index_make_summary (GFile *index, fake_commit = image->digest + strlen ("sha256:"); - installed_size_str = g_hash_table_lookup (image->annotations, "org.flatpak.installed-size"); + installed_size_str = get_image_metadata (image, "org.flatpak.installed-size"); if (installed_size_str) installed_size = g_ascii_strtoull (installed_size_str, NULL, 10); - download_size_str = g_hash_table_lookup (image->annotations, "org.flatpak.download-size"); + download_size_str = get_image_metadata (image, "org.flatpak.download-size"); if (download_size_str) download_size = g_ascii_strtoull (download_size_str, NULL, 10); @@ -2266,7 +2281,7 @@ add_image_to_appstream (SoupSession *soup_session, { "org.freedesktop.appstream.icon-128", "128x128" }, }; - ref = g_hash_table_lookup (image->annotations, "org.flatpak.ref"); + ref = get_image_ref (image); if (!ref) return; @@ -2276,7 +2291,7 @@ add_image_to_appstream (SoupSession *soup_session, id = ref_parts[1]; - appdata = g_hash_table_lookup (image->annotations, "org.freedesktop.appstream.appdata"); + appdata = get_image_metadata (image, "org.freedesktop.appstream.appdata"); if (!appdata) return; @@ -2322,8 +2337,7 @@ add_image_to_appstream (SoupSession *soup_session, for (i = 0; i < G_N_ELEMENTS (icon_sizes); i++) { - const char *icon_data = g_hash_table_lookup (image->annotations, - icon_sizes[i].annotation); + const char *icon_data = get_image_metadata (image, icon_sizes[i].annotation); if (icon_data) { if (!add_icon_image (soup_session, |