From 55c1cdda6766a01d6004aa16955ddf59f9f0c6c9 Mon Sep 17 00:00:00 2001 From: Matthias Klumpp Date: Wed, 31 Aug 2016 00:21:11 +0200 Subject: [PATCH] Add support for AppStream 0.10 --- CMakeLists.txt | 2 +- src/li-package.c | 10 ++++++---- src/li-pkg-builder.c | 7 +++++-- src/li-pkg-cache.c | 12 ++++++++---- src/li-repository.c | 17 +++++++++++++---- tools/buildcli/li-build-conf.c | 5 ++++- tools/buildcli/li-build-templates.c | 4 +++- 7 files changed, 40 insertions(+), 17 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 83755bf..0530a9d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -78,7 +78,7 @@ add_custom_target(uninstall # find_package(Gettext REQUIRED) find_package(GLIB 2.44 REQUIRED COMPONENTS "gio" "gobject" "gio-unix") -pkg_check_modules(APPSTREAM REQUIRED appstream>=0.9.0) +pkg_check_modules(APPSTREAM REQUIRED appstream>=0.10) pkg_check_modules(UUID REQUIRED uuid>=2.0) pkg_check_modules (POLKIT REQUIRED polkit-gobject-1>=0.104) pkg_check_modules(LIBCAP REQUIRED libcap>=2.24) diff --git a/src/li-package.c b/src/li-package.c index 7e2bd7d..e78a7f5 100644 --- a/src/li-package.c +++ b/src/li-package.c @@ -417,7 +417,10 @@ li_package_read_component_data (LiPackage *pkg, const gchar *data, GError **erro /* do not filter languages */ as_metadata_set_locale (mdata, "ALL"); - as_metadata_parse_xml (mdata, data, &tmp_error); + as_metadata_parse (mdata, + data, + AS_FORMAT_KIND_XML, + &tmp_error); priv->cpt = g_object_ref (as_metadata_get_component (mdata)); g_object_unref (mdata); if (tmp_error != NULL) { @@ -1416,7 +1419,7 @@ li_package_has_embedded_packages (LiPackage *pkg) gchar* li_package_get_appstream_data (LiPackage *pkg) { - AsMetadata *metad; + g_autoptr(AsMetadata) metad = NULL; gchar *xml; LiPackagePrivate *priv = GET_PRIVATE (pkg); if (priv->cpt == NULL) @@ -1424,8 +1427,7 @@ li_package_get_appstream_data (LiPackage *pkg) metad = as_metadata_new (); as_metadata_add_component (metad, priv->cpt); - xml = as_metadata_component_to_upstream_xml (metad); - g_object_unref (metad); + xml = as_metadata_component_to_metainfo (metad, AS_FORMAT_KIND_XML, NULL); return xml; } diff --git a/src/li-pkg-builder.c b/src/li-pkg-builder.c index 078c93e..1e3c43d 100644 --- a/src/li-pkg-builder.c +++ b/src/li-pkg-builder.c @@ -787,7 +787,10 @@ li_pkg_builder_build_package_with_details (LiPkgBuilder *builder, LiPkgInfo *ctl } as_metadata_add_component (metad, cpt); - as_metadata_save_upstream_xml (metad, asdata_fname, &tmp_error); + as_metadata_save_metainfo (metad, + asdata_fname, + AS_FORMAT_KIND_XML, + &tmp_error); as_component_set_id (cpt, cpt_orig_id); if (tmp_error != NULL) { g_propagate_error (error, tmp_error); @@ -936,7 +939,7 @@ li_pkg_builder_create_package_from_dir (LiPkgBuilder *builder, const gchar *dir, mdata = as_metadata_new (); as_metadata_set_locale (mdata, "ALL"); - as_metadata_parse_file (mdata, asfile, &tmp_error); + as_metadata_parse_file (mdata, asfile, AS_FORMAT_KIND_XML, &tmp_error); if (tmp_error != NULL) { g_propagate_error (error, tmp_error); return FALSE; diff --git a/src/li-pkg-cache.c b/src/li-pkg-cache.c index 290c7dd..32bf484 100644 --- a/src/li-pkg-cache.c +++ b/src/li-pkg-cache.c @@ -560,7 +560,10 @@ li_pkg_cache_download_repodata (LiPkgCache *cache, LiRepoEntry *re, const gchar /* add AppStream metadata to the pool */ asfile = g_file_new_for_path (dest_asfname); - as_metadata_parse_file (metad, asfile, &tmp_error); + as_metadata_parse_file (metad, + asfile, + AS_FORMAT_KIND_XML, + &tmp_error); if (tmp_error != NULL) { g_propagate_prefixed_error (error, tmp_error, "Unable to load AppStream data for: %s", li_repo_entry_get_url (re)); return; @@ -712,9 +715,10 @@ li_pkg_cache_update (LiPkgCache *cache, GError **error) } /* save AppStream XML data */ - as_metadata_save_distro_xml (metad, - li_repo_entry_get_appstream_fname (re), - &tmp_error); + as_metadata_save_collection (metad, + li_repo_entry_get_appstream_fname (re), + AS_FORMAT_KIND_XML, + &tmp_error); if (tmp_error != NULL) { g_propagate_prefixed_error (error, tmp_error, "Unable to save metadata."); return; diff --git a/src/li-repository.c b/src/li-repository.c index 82b6388..f18dfd9 100644 --- a/src/li-repository.c +++ b/src/li-repository.c @@ -238,7 +238,10 @@ li_repository_load_indices (LiRepository *repo, const gchar* dir, GError **error /* we do not want to filter languages */ as_metadata_set_locale (metad, "ALL"); - as_metadata_parse_file (metad, file, &tmp_error); + as_metadata_parse_file (metad, + file, + AS_FORMAT_KIND_XML, + &tmp_error); if (tmp_error == NULL) g_hash_table_insert (priv->asmeta, g_strdup (arch), metad); } @@ -543,7 +546,10 @@ li_repository_save_asmeta (gchar *arch, AsMetadata *metad, LiIndexSaveHelper *he g_mkdir_with_parents (dir, 0755); fname = g_build_filename (dir, "Metadata.xml.gz", NULL); - as_metadata_save_distro_xml (metad, fname, &helper->error); + as_metadata_save_collection (metad, + fname, + AS_FORMAT_KIND_XML, + &helper->error); if (helper->error != NULL) return; @@ -755,6 +761,7 @@ li_repository_add_package (LiRepository *repo, const gchar *pkg_fname, GError ** /* don't add to AppStream index, development packages don't belong there */ if (kind != LI_PACKAGE_KIND_DEVEL) { + g_autoptr(AsBundle) bundle = NULL; AsComponent *cpt; cpt = li_package_get_appstream_cpt (pkg); @@ -773,8 +780,10 @@ li_repository_add_package (LiRepository *repo, const gchar *pkg_fname, GError ** } /* set a unique AppStream bundle name */ - as_component_add_bundle_id (cpt, AS_BUNDLE_KIND_LIMBA, - li_pkg_info_get_id (pki)); + bundle = as_bundle_new (); + as_bundle_set_kind (bundle, AS_BUNDLE_KIND_LIMBA); + as_bundle_set_id (bundle, li_pkg_info_get_id (pki)); + as_component_add_bundle (cpt, bundle); /* remove all package names - just in case */ as_component_set_pkgnames (cpt, NULL); diff --git a/tools/buildcli/li-build-conf.c b/tools/buildcli/li-build-conf.c index 730b95e..ea46bfa 100644 --- a/tools/buildcli/li-build-conf.c +++ b/tools/buildcli/li-build-conf.c @@ -467,7 +467,10 @@ li_build_conf_open_from_dir (LiBuildConf *bconf, const gchar *dir, GError **erro mdata = as_metadata_new (); as_metadata_set_locale (mdata, "C"); - as_metadata_parse_file (mdata, file, &tmp_error); + as_metadata_parse_file (mdata, + file, + AS_FORMAT_KIND_XML, + &tmp_error); g_object_unref (file); if (tmp_error != NULL) { g_propagate_error (error, tmp_error); diff --git a/tools/buildcli/li-build-templates.c b/tools/buildcli/li-build-templates.c index 1acb8e6..2ba4c80 100644 --- a/tools/buildcli/li-build-templates.c +++ b/tools/buildcli/li-build-templates.c @@ -153,7 +153,9 @@ libuild_make_template (const gchar *dir) asfile = g_build_filename (res_dir, "metainfo.xml", NULL); metad = as_metadata_new (); as_metadata_add_component (metad, cpt); - tmp = as_metadata_component_to_upstream_xml (metad); + tmp = as_metadata_component_to_metainfo (metad, + AS_FORMAT_KIND_XML, + NULL); g_object_unref (metad); g_file_set_contents (asfile, tmp, -1, &error); g_free (tmp);