diff options
-rw-r--r-- | app/flatpak-builtins-build-bundle.c | 10 | ||||
-rw-r--r-- | common/flatpak-dir.c | 8 | ||||
-rw-r--r-- | common/flatpak-installed-ref.c | 12 | ||||
-rw-r--r-- | common/flatpak-utils.c | 15 |
4 files changed, 34 insertions, 11 deletions
diff --git a/app/flatpak-builtins-build-bundle.c b/app/flatpak-builtins-build-bundle.c index 53df7adc..49a1b968 100644 --- a/app/flatpak-builtins-build-bundle.c +++ b/app/flatpak-builtins-build-bundle.c @@ -127,9 +127,13 @@ get_bundle_appstream_data (GFile *root, *result = NULL; - xmls_dir = g_file_resolve_relative_path (root, "files/share/app-info/xmls"); - appstream_basename = g_strconcat (name, ".xml.gz", NULL); - appstream_file = g_file_get_child (xmls_dir, appstream_basename); + appstream_file = g_file_resolve_relative_path (root, "files/share/swcatalog/xml/flatpak.xml.gz"); + if (!g_file_test (g_file_get_path (appstream_file), G_FILE_TEST_EXISTS)) + { + xmls_dir = g_file_resolve_relative_path (root, "files/share/app-info/xmls"); + appstream_basename = g_strconcat (name, ".xml.gz", NULL); + appstream_file = g_file_get_child (xmls_dir, appstream_basename); + } xml_in = (GInputStream *) g_file_read (appstream_file, cancellable, NULL); if (xml_in) diff --git a/common/flatpak-dir.c b/common/flatpak-dir.c index a9b711ee..927f26b6 100644 --- a/common/flatpak-dir.c +++ b/common/flatpak-dir.c @@ -3365,8 +3365,12 @@ read_appdata_xml_from_deploy_dir (GFile *deploy_dir, const char *id) g_autoptr(GFileInputStream) appdata_in = NULL; gsize size; - appdata_name = g_strconcat (id, ".xml.gz", NULL); - appdata_file = flatpak_build_file (deploy_dir, "files/share/app-info/xmls", appdata_name, NULL); + appdata_file = flatpak_build_file (deploy_dir, "files/share/swcatalog/xml/flatpak.xml.gz", NULL); + if (!g_file_test (g_file_get_path (appdata_file), G_FILE_TEST_EXISTS)) + { + appdata_name = g_strconcat (id, ".xml.gz", NULL); + appdata_file = flatpak_build_file (deploy_dir, "files/share/app-info/xmls", appdata_name, NULL); + } appdata_in = g_file_read (appdata_file, NULL, NULL); if (appdata_in) diff --git a/common/flatpak-installed-ref.c b/common/flatpak-installed-ref.c index 367f5d6a..c3f8048c 100644 --- a/common/flatpak-installed-ref.c +++ b/common/flatpak-installed-ref.c @@ -526,6 +526,8 @@ flatpak_installed_ref_load_appdata (FlatpakInstalledRef *self, gsize length; g_autofree char *path = NULL; g_autofree char *appdata_name = NULL; + g_autofree char *appinfo_path = NULL; + g_autofree char *swcatalog_path = NULL; if (priv->deploy_dir == NULL) { @@ -535,7 +537,15 @@ flatpak_installed_ref_load_appdata (FlatpakInstalledRef *self, } appdata_name = g_strconcat (flatpak_ref_get_name (FLATPAK_REF (self)), ".xml.gz", NULL); - path = g_build_filename (priv->deploy_dir, "files/share/app-info/xmls", appdata_name, NULL); + appinfo_path = g_build_filename (priv->deploy_dir, "files/share/app-info/xmls", appdata_name, NULL); + swcatalog_path = g_build_filename (priv->deploy_dir, "files/share/swcatalog/xml/flatpak.xml.gz", NULL); + + if (g_file_test (appinfo_path, G_FILE_TEST_EXISTS)) + path = appinfo_path; + else if (g_file_test (swcatalog_path, G_FILE_TEST_EXISTS)) + path = swcatalog_path; + else + return NULL; if (!g_file_get_contents (path, &data, &length, error)) return NULL; diff --git a/common/flatpak-utils.c b/common/flatpak-utils.c index 70adf239..e348dcbf 100644 --- a/common/flatpak-utils.c +++ b/common/flatpak-utils.c @@ -5366,14 +5366,19 @@ extract_appstream (OstreeRepo *repo, return FALSE; } - app_info_dir = g_file_resolve_relative_path (root, "files/share/app-info"); + appstream_file = g_file_resolve_relative_path (root, "files/share/swcatalog/xml/flatpak.xml.gz"); + if (g_file_test (g_file_get_path (appstream_file), G_FILE_TEST_EXISTS)) + app_info_dir = g_file_resolve_relative_path (root, "files/share/swcatalog"); + else + { + app_info_dir = g_file_resolve_relative_path (root, "files/share/app-info"); + xmls_dir = g_file_resolve_relative_path (app_info_dir, "xmls"); + appstream_basename = g_strconcat (id, ".xml.gz", NULL); + appstream_file = g_file_get_child (xmls_dir, appstream_basename); + } - xmls_dir = g_file_resolve_relative_path (app_info_dir, "xmls"); icons_dir = g_file_resolve_relative_path (app_info_dir, "icons/flatpak"); - appstream_basename = g_strconcat (id, ".xml.gz", NULL); - appstream_file = g_file_get_child (xmls_dir, appstream_basename); - in = (GInputStream *) g_file_read (appstream_file, cancellable, error); if (!in) return FALSE; |