Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package AppStream for openSUSE:Factory checked in at 2023-08-30 10:19:10 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/AppStream (Old) and /work/SRC/openSUSE:Factory/.AppStream.new.1766 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "AppStream" Wed Aug 30 10:19:10 2023 rev:37 rq:1106082 version:0.16.3 Changes: -------- --- /work/SRC/openSUSE:Factory/AppStream/AppStream.changes 2023-06-19 22:50:11.957434578 +0200 +++ /work/SRC/openSUSE:Factory/.AppStream.new.1766/AppStream.changes 2023-08-30 10:21:29.902321813 +0200 @@ -1,0 +2,16 @@ +Sat Aug 26 13:12:31 UTC 2023 - Christophe Marin <christo...@krop.fr> + +- Update to 0.16.3: + Features: + * compose: Allow creating metadata with complete URLs and no base URL + Bugfixes: + * Fix tweaking of appstream.pc when building as subproject + * Do not override default-priority when parsing multiple metadata files + * Ensure stemmer always has the right locale and token-search works + * Require a more recent libxmlb to avoid crashes + Miscellaneous: + * Work around invalid null-dereference warning in GCC 13 +- Drop patch, merged upstream: + * 0001-Do-not-override-default-priority-when-parsing-multip.patch + +------------------------------------------------------------------- Old: ---- 0001-Do-not-override-default-priority-when-parsing-multip.patch AppStream-0.16.2.tar.xz AppStream-0.16.2.tar.xz.asc New: ---- AppStream-0.16.3.tar.xz AppStream-0.16.3.tar.xz.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ AppStream.spec ++++++ --- /var/tmp/diff_new_pack.rbVRi4/_old 2023-08-30 10:21:31.110364933 +0200 +++ /var/tmp/diff_new_pack.rbVRi4/_new 2023-08-30 10:21:31.118365218 +0200 @@ -23,7 +23,7 @@ %bcond_without vala %endif Name: AppStream -Version: 0.16.2 +Version: 0.16.3 Release: 0 Summary: Tools and libraries to work with AppStream metadata License: LGPL-2.1-or-later @@ -33,8 +33,6 @@ Source1: http://www.freedesktop.org/software/appstream/releases/%{name}-%{version}.tar.xz.asc Source2: %{name}.keyring Patch0: support-meson0.59.patch -# PATCH-FIX-UPSTREAM -Patch1: 0001-Do-not-override-default-priority-when-parsing-multip.patch BuildRequires: cairo-devel BuildRequires: docbook-xsl-stylesheets BuildRequires: gdk-pixbuf-loader-rsvg @@ -55,7 +53,7 @@ BuildRequires: pkgconfig(libsystemd) BuildRequires: pkgconfig(libxml-2.0) BuildRequires: pkgconfig(pango) -BuildRequires: pkgconfig(xmlb) >= 0.3.6 +BuildRequires: pkgconfig(xmlb) >= 0.3.13 BuildRequires: pkgconfig(yaml-0.1) Recommends: curl %if %{with vala} ++++++ AppStream-0.16.2.tar.xz -> AppStream-0.16.3.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AppStream-0.16.2/NEWS new/AppStream-0.16.3/NEWS --- old/AppStream-0.16.2/NEWS 2023-04-26 21:09:34.000000000 +0200 +++ new/AppStream-0.16.3/NEWS 2023-08-22 23:52:32.000000000 +0200 @@ -1,3 +1,22 @@ +Version 0.16.3 +~~~~~~~~~~~~~~ +Released: 2023-08-22 + +Features: + * compose: Allow creating metadata with complete URLs and no base URL + +Bugfixes: + * Fix tweaking of appstream.pc when building as subproject + * Do not override default-priority when parsing multiple metadata files + * Ensure stemmer always has the right locale and token-search works + * Require a more recent libxmlb to avoid crashes + +Miscellaneous: + * Work around invalid null-dereference warning in GCC 13 + +Contributors: + Daniel Drake, Matthias Klumpp + Version 0.16.2 ~~~~~~~~~~~~~~ Released: 2023-04-26 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AppStream-0.16.2/RELEASE new/AppStream-0.16.3/RELEASE --- old/AppStream-0.16.2/RELEASE 2023-04-26 21:09:34.000000000 +0200 +++ new/AppStream-0.16.3/RELEASE 2023-08-22 23:52:32.000000000 +0200 @@ -2,15 +2,15 @@ 1. Set variables -OLD_VERSION="0.16.1" -NEW_VERSION="0.16.2" +OLD_VERSION="0.16.2" +NEW_VERSION="0.16.3" 2. Write NEWS entries for AppStream in the same format as usual. git shortlog v$OLD_VERSION.. | grep -i -v trivial | grep -v Merge > NEWS.new -------------------------------------------------------------------------------- -Version 0.16.2 +Version 0.16.3 ~~~~~~~~~~~~~~ Released: 2023-xx-xx @@ -53,7 +53,7 @@ 10. Send an email to appstr...@lists.freedesktop.org ================================================= -AppStream 0.16.2 released! +AppStream 0.16.3 released! Tarballs available here: https://www.freedesktop.org/software/appstream/releases/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AppStream-0.16.2/compose/asc-compose.c new/AppStream-0.16.3/compose/asc-compose.c --- old/AppStream-0.16.2/compose/asc-compose.c 2023-04-26 21:09:34.000000000 +0200 +++ new/AppStream-0.16.3/compose/asc-compose.c 2023-08-22 23:52:32.000000000 +0200 @@ -309,7 +309,7 @@ * @compose: an #AscCompose instance. * * Get the media base URL to be used for the generated data, - * or %NULL if this feature is not used. + * or %NULL if no media is cached. */ const gchar* asc_compose_get_media_baseurl (AscCompose *compose) @@ -323,7 +323,8 @@ * @compose: an #AscCompose instance. * @url: (nullable): the media base URL. * - * Set the media base URL for the generated metadata. Can be %NULL. + * Set the media base URL for the generated metadata. Can be %NULL if no media + * should be cached and the original URLs should be kept. */ void asc_compose_set_media_baseurl (AscCompose *compose, const gchar *url) @@ -1124,7 +1125,8 @@ /* We can only make use of the media-baseurl-using partial URLs if screenshot storage * is also enabled, because otherwise screenshots will use full URLs which conflicts * with the media baseurl (as it is unconditionally prefixed to *all* media URLs */ - if (as_flags_contains (priv->flags, ASC_COMPOSE_FLAG_STORE_SCREENSHOTS)) { + if (as_flags_contains (priv->flags, ASC_COMPOSE_FLAG_STORE_SCREENSHOTS) + && !as_flags_contains (priv->flags, ASC_COMPOSE_FLAG_NO_PARTIAL_URLS)) { as_icon_set_url (remote_icon, icon_media_urlpart_fname); } else { g_autofree gchar *icon_remote_url = g_strconcat (priv->media_baseurl, "/", icon_media_urlpart_fname, NULL); @@ -1664,6 +1666,7 @@ cpt, acurl, priv->media_result_dir, + as_flags_contains (priv->flags, ASC_COMPOSE_FLAG_NO_PARTIAL_URLS)? priv->media_baseurl : NULL, priv->max_scr_size_bytes, as_flags_contains (priv->flags, ASC_COMPOSE_FLAG_ALLOW_SCREENCASTS), as_flags_contains (priv->flags, ASC_COMPOSE_FLAG_STORE_SCREENSHOTS)); @@ -1979,8 +1982,11 @@ as_metadata_set_format_version (mdata, AS_FORMAT_VERSION_CURRENT); /* Set baseurl only if one is set and we actually store any screenshot media. If no screenshot media - * is stored, upstream's URLs are used and having a media base URL makes no sense */ - if (priv->media_baseurl != NULL && as_flags_contains (priv->flags, ASC_COMPOSE_FLAG_STORE_SCREENSHOTS)) + * is stored, upstream's URLs are used and having a media base URL makes no sense. + * In addition, we *must not* set a media-baseurl if *any* represented component uses full URLs. */ + if (priv->media_baseurl != NULL + && as_flags_contains (priv->flags, ASC_COMPOSE_FLAG_STORE_SCREENSHOTS) + && !as_flags_contains (priv->flags, ASC_COMPOSE_FLAG_NO_PARTIAL_URLS)) as_metadata_set_media_baseurl (mdata, priv->media_baseurl); if (priv->format == AS_FORMAT_KIND_YAML) @@ -2087,6 +2093,14 @@ return NULL; } + if (as_flags_contains (priv->flags, ASC_COMPOSE_FLAG_NO_PARTIAL_URLS) && priv->media_baseurl == NULL) { + g_set_error_literal (error, + ASC_COMPOSE_ERROR, + ASC_COMPOSE_ERROR_FAILED, + _("Partial URLs are not allowed, but no base URL is set to create full URLs.")); + return NULL; + } + if (priv->media_result_dir == NULL) { AscIconPolicyIter ip_iter; guint icon_size; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AppStream-0.16.2/compose/asc-compose.h new/AppStream-0.16.3/compose/asc-compose.h --- old/AppStream-0.16.2/compose/asc-compose.h 2023-04-26 21:09:34.000000000 +0200 +++ new/AppStream-0.16.3/compose/asc-compose.h 2023-08-22 23:52:32.000000000 +0200 @@ -60,6 +60,7 @@ * @ASC_COMPOSE_FLAG_PROPAGATE_CUSTOM: Whether all custom entries should be passed on to the output, ignoring the allowlist. * @ASC_COMPOSE_FLAG_PROPAGATE_ARTIFACTS: Whether artifact data should be passed through to the generated output. * @ASC_COMPOSE_FLAG_NO_FINAL_CHECK: Disable the automatic finalization check to perform it manually at a later time. + * @ASC_COMPOSE_FLAG_NO_PARTIAL_URLS: Do not use `media_baseurl` and always embed complete URLs in generated metadata. * * Flags that affect the compose process. **/ @@ -77,6 +78,7 @@ ASC_COMPOSE_FLAG_PROPAGATE_CUSTOM = 1 << 9, ASC_COMPOSE_FLAG_PROPAGATE_ARTIFACTS = 1 << 10, ASC_COMPOSE_FLAG_NO_FINAL_CHECK = 1 << 11, + ASC_COMPOSE_FLAG_NO_PARTIAL_URLS = 1 << 12, } AscComposeFlags; /** diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AppStream-0.16.2/compose/asc-utils-screenshots.c new/AppStream-0.16.3/compose/asc-utils-screenshots.c --- old/AppStream-0.16.2/compose/asc-utils-screenshots.c 2023-04-26 21:09:34.000000000 +0200 +++ new/AppStream-0.16.3/compose/asc-utils-screenshots.c 2023-08-22 23:52:32.000000000 +0200 @@ -724,6 +724,7 @@ AsComponent *cpt, AsCurl *acurl, const gchar *media_export_root, + const gchar *media_url_prefix, const gssize max_size_bytes, gboolean process_videos, gboolean store_screenshots) @@ -758,8 +759,13 @@ else scr_export_dir = g_build_filename (asc_globals_get_tmp_dir (), gcid, NULL); - scr_base_url = g_build_path (G_DIR_SEPARATOR_S, gcid, "screenshots", NULL); + /* the media URL prefix is used to embed absolute URLs for screenshots, if needed */ + if (media_url_prefix == NULL) + scr_base_url = g_build_path (G_DIR_SEPARATOR_S, gcid, "screenshots", NULL); + else + scr_base_url = g_build_path (G_DIR_SEPARATOR_S, media_url_prefix, gcid, "screenshots", NULL); + /* process screenshots */ valid_scrs = g_ptr_array_new_with_free_func (g_object_unref); for (guint i = 0; i < screenshots->len; i++) { AsScreenshot *scr = AS_SCREENSHOT (g_ptr_array_index (screenshots, i)); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AppStream-0.16.2/compose/asc-utils-screenshots.h new/AppStream-0.16.3/compose/asc-utils-screenshots.h --- old/AppStream-0.16.2/compose/asc-utils-screenshots.h 2023-04-26 21:09:34.000000000 +0200 +++ new/AppStream-0.16.3/compose/asc-utils-screenshots.h 2023-08-22 23:52:32.000000000 +0200 @@ -58,6 +58,7 @@ AsComponent *cpt, AsCurl *acurl, const gchar *media_export_root, + const gchar *media_url_prefix, const gssize max_size_bytes, gboolean process_videos, gboolean store_screenshots); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AppStream-0.16.2/docs/html/index.html new/AppStream-0.16.3/docs/html/index.html --- old/AppStream-0.16.2/docs/html/index.html 2023-04-26 21:09:29.000000000 +0200 +++ new/AppStream-0.16.3/docs/html/index.html 2023-08-22 23:52:27.000000000 +0200 @@ -27,7 +27,7 @@ <a class="ulink" href="https://www.freedesktop.org/software/appstream/metainfocreator/#/" target="_blank">freedesktop.org/software/appstream/metainfocreator<span class="ulink-url"> (https://www.freedesktop.org/software/appstream/metainfocreator/#/)</span></a>. </p></div><div><h3 class="corpauthor"> <a href="images/appstream-logo.svg"><img src="images/appstream-logo.svg" width="64" /></a> - </h3></div><div class="authorgroup"><div><span class="imprint-label">Authors: </span><span class="firstname">Matthias</span> <span class="surname">Klumpp</span>, <span class="firstname">Michael</span> <span class="surname">Vogt</span>, <span class="firstname">Richard</span> <span class="surname">Hughes</span>, and <span class="firstname">Vincent</span> <span class="surname">Untz</span></div></div><div class="date"><span class="imprint-label">Publication Date: </span>2023-04-26</div></div></div><div class="toc"><dl><dt><span class="chapter"><a href="chap-AppStream-About.html"><span class="number">1 </span><span class="name">About AppStream</span></a></span></dt><dd><dl><dt><span class="section"><a href="chap-AppStream-About.html#about-whatis"><span class="number">1.1 </span><span class="name">What is AppStream?</span></a></span></dt></dl></dd><dt><span class="chapter"><a href="chap-Metadata.html"><span class="number">2 </span><span class="name">Upstream Metadata</span></a></span></d t><dd><dl><dt><span class="section"><a href="chap-Metadata.html#sect-Metadata-GenericComponent"><span class="number">2.1 </span><span class="name">Generic Component</span></a></span></dt><dt><span class="section"><a href="sect-Metadata-Releases.html"><span class="number">2.2 </span><span class="name">Release Information</span></a></span></dt><dt><span class="section"><a href="sect-Metadata-Application.html"><span class="number">2.3 </span><span class="name">Desktop Applications</span></a></span></dt><dt><span class="section"><a href="sect-Metadata-ConsoleApplication.html"><span class="number">2.4 </span><span class="name">Console Applications</span></a></span></dt><dt><span class="section"><a href="sect-Metadata-WebApplication.html"><span class="number">2.5 </span><span class="name">Web Applications</span></a></span></dt><dt><span class="section"><a href="sect-Metadata-Service.html"><span class="number">2.6 </span><span class="name">Services</span></a></span></dt><dt><span class="se ction"><a href="sect-Metadata-Addon.html"><span class="number">2.7 </span><span class="name">Addons</span></a></span></dt><dt><span class="section"><a href="sect-Metadata-Fonts.html"><span class="number">2.8 </span><span class="name">Fonts</span></a></span></dt><dt><span class="section"><a href="sect-Metadata-IconTheme.html"><span class="number">2.9 </span><span class="name">Icon Themes</span></a></span></dt><dt><span class="section"><a href="sect-Metadata-Codec.html"><span class="number">2.10 </span><span class="name">Codecs</span></a></span></dt><dt><span class="section"><a href="sect-Metadata-InputMethod.html"><span class="number">2.11 </span><span class="name">Input Methods</span></a></span></dt><dt><span class="section"><a href="sect-Metadata-Firmware.html"><span class="number">2.12 </span><span class="name">Firmware</span></a></span></dt><dt><span class="section"><a href="sect-Metadata-Driver.html"><span class="number">2.13 </span><span class="name">Driver</span></a></span></d t><dt><span class="section"><a href="sect-Metadata-Localization.html"><span class="number">2.14 </span><span class="name">Localization</span></a></span></dt><dt><span class="section"><a href="sect-Metadata-Repository.html"><span class="number">2.15 </span><span class="name">Repositories</span></a></span></dt><dt><span class="section"><a href="sect-Metadata-OS.html"><span class="number">2.16 </span><span class="name">Operating System</span></a></span></dt><dt><span class="section"><a href="sect-Metadata-Runtime.html"><span class="number">2.17 </span><span class="name">Runtime</span></a></span></dt></dl></dd><dt><span class="chapter"><a href="chap-CatalogData.html"><span class="number">3 </span><span class="name">Catalog Metadata</span></a></span></dt><dd><dl><dt><span class="section"><a href="chap-CatalogData.html#sect-AppStream-XML"><span class="number">3.1 </span><span class="name">AppStream Catalog XML</span></a></span></dt><dt><span class="section"><a href="sect-AppStream-YAML.ht ml"><span class="number">3.2 </span><span class="name">AppStream Catalog YAML</span></a></span></dt><dt><span class="section"><a href="sect-AppStream-IconCache.html"><span class="number">3.3 </span><span class="name">Icon Cache</span></a></span></dt></dl></dd><dt><span class="chapter"><a href="chap-AppStream-Misc.html"><span class="number">4 </span><span class="name">Miscellaneous</span></a></span></dt><dd><dl><dt><span class="section"><a href="chap-AppStream-Misc.html#sect-AppStream-Misc-VerCmp"><span class="number">4.1 </span><span class="name">Version Comparison Algorithm</span></a></span></dt><dt><span class="section"><a href="sect-AppStream-Misc-URIHandler.html"><span class="number">4.2 </span><span class="name">URI Handler</span></a></span></dt></dl></dd><dt><span class="chapter"><a href="chap-Quickstart.html"><span class="number">5 </span><span class="name">Metadata Quickstart</span></a></span></dt><dd><dl><dt><span class="section"><a href="chap-Quickstart.html#sect-Quickstar t-DesktopApps"><span class="number">5.1 </span><span class="name">For GUI application upstream maintainers</span></a></span></dt><dt><span class="section"><a href="sect-Quickstart-Addons.html"><span class="number">5.2 </span><span class="name">For upstream projects providing addons</span></a></span></dt><dt><span class="section"><a href="sect-Quickstart-Distros.html"><span class="number">5.3 </span><span class="name">For distributors packaging Appstream metadata</span></a></span></dt><dt><span class="section"><a href="sect-Quickstart-Translation.html"><span class="number">5.4 </span><span class="name">Translating Metadata</span></a></span></dt></dl></dd><dt><span class="chapter"><a href="chap-AppStream-ManualPages.html"><span class="number">6 </span><span class="name">Manual pages</span></a></span></dt><dt><span class="chapter"><a href="chap-AppStream-API.html"><span class="number">7 </span><span class="name">AppStream API Reference</span></a></span></dt><dt><span class="index"><a h ref="ix01.html"><span class="number"> </span><span class="name">Index</span></a></span></dt></dl></div><div><div class="legalnotice" id="id-1.1.9"><p> + </h3></div><div class="authorgroup"><div><span class="imprint-label">Authors: </span><span class="firstname">Matthias</span> <span class="surname">Klumpp</span>, <span class="firstname">Michael</span> <span class="surname">Vogt</span>, <span class="firstname">Richard</span> <span class="surname">Hughes</span>, and <span class="firstname">Vincent</span> <span class="surname">Untz</span></div></div><div class="date"><span class="imprint-label">Publication Date: </span>2023-08-22</div></div></div><div class="toc"><dl><dt><span class="chapter"><a href="chap-AppStream-About.html"><span class="number">1 </span><span class="name">About AppStream</span></a></span></dt><dd><dl><dt><span class="section"><a href="chap-AppStream-About.html#about-whatis"><span class="number">1.1 </span><span class="name">What is AppStream?</span></a></span></dt></dl></dd><dt><span class="chapter"><a href="chap-Metadata.html"><span class="number">2 </span><span class="name">Upstream Metadata</span></a></span></d t><dd><dl><dt><span class="section"><a href="chap-Metadata.html#sect-Metadata-GenericComponent"><span class="number">2.1 </span><span class="name">Generic Component</span></a></span></dt><dt><span class="section"><a href="sect-Metadata-Releases.html"><span class="number">2.2 </span><span class="name">Release Information</span></a></span></dt><dt><span class="section"><a href="sect-Metadata-Application.html"><span class="number">2.3 </span><span class="name">Desktop Applications</span></a></span></dt><dt><span class="section"><a href="sect-Metadata-ConsoleApplication.html"><span class="number">2.4 </span><span class="name">Console Applications</span></a></span></dt><dt><span class="section"><a href="sect-Metadata-WebApplication.html"><span class="number">2.5 </span><span class="name">Web Applications</span></a></span></dt><dt><span class="section"><a href="sect-Metadata-Service.html"><span class="number">2.6 </span><span class="name">Services</span></a></span></dt><dt><span class="se ction"><a href="sect-Metadata-Addon.html"><span class="number">2.7 </span><span class="name">Addons</span></a></span></dt><dt><span class="section"><a href="sect-Metadata-Fonts.html"><span class="number">2.8 </span><span class="name">Fonts</span></a></span></dt><dt><span class="section"><a href="sect-Metadata-IconTheme.html"><span class="number">2.9 </span><span class="name">Icon Themes</span></a></span></dt><dt><span class="section"><a href="sect-Metadata-Codec.html"><span class="number">2.10 </span><span class="name">Codecs</span></a></span></dt><dt><span class="section"><a href="sect-Metadata-InputMethod.html"><span class="number">2.11 </span><span class="name">Input Methods</span></a></span></dt><dt><span class="section"><a href="sect-Metadata-Firmware.html"><span class="number">2.12 </span><span class="name">Firmware</span></a></span></dt><dt><span class="section"><a href="sect-Metadata-Driver.html"><span class="number">2.13 </span><span class="name">Driver</span></a></span></d t><dt><span class="section"><a href="sect-Metadata-Localization.html"><span class="number">2.14 </span><span class="name">Localization</span></a></span></dt><dt><span class="section"><a href="sect-Metadata-Repository.html"><span class="number">2.15 </span><span class="name">Repositories</span></a></span></dt><dt><span class="section"><a href="sect-Metadata-OS.html"><span class="number">2.16 </span><span class="name">Operating System</span></a></span></dt><dt><span class="section"><a href="sect-Metadata-Runtime.html"><span class="number">2.17 </span><span class="name">Runtime</span></a></span></dt></dl></dd><dt><span class="chapter"><a href="chap-CatalogData.html"><span class="number">3 </span><span class="name">Catalog Metadata</span></a></span></dt><dd><dl><dt><span class="section"><a href="chap-CatalogData.html#sect-AppStream-XML"><span class="number">3.1 </span><span class="name">AppStream Catalog XML</span></a></span></dt><dt><span class="section"><a href="sect-AppStream-YAML.ht ml"><span class="number">3.2 </span><span class="name">AppStream Catalog YAML</span></a></span></dt><dt><span class="section"><a href="sect-AppStream-IconCache.html"><span class="number">3.3 </span><span class="name">Icon Cache</span></a></span></dt></dl></dd><dt><span class="chapter"><a href="chap-AppStream-Misc.html"><span class="number">4 </span><span class="name">Miscellaneous</span></a></span></dt><dd><dl><dt><span class="section"><a href="chap-AppStream-Misc.html#sect-AppStream-Misc-VerCmp"><span class="number">4.1 </span><span class="name">Version Comparison Algorithm</span></a></span></dt><dt><span class="section"><a href="sect-AppStream-Misc-URIHandler.html"><span class="number">4.2 </span><span class="name">URI Handler</span></a></span></dt></dl></dd><dt><span class="chapter"><a href="chap-Quickstart.html"><span class="number">5 </span><span class="name">Metadata Quickstart</span></a></span></dt><dd><dl><dt><span class="section"><a href="chap-Quickstart.html#sect-Quickstar t-DesktopApps"><span class="number">5.1 </span><span class="name">For GUI application upstream maintainers</span></a></span></dt><dt><span class="section"><a href="sect-Quickstart-Addons.html"><span class="number">5.2 </span><span class="name">For upstream projects providing addons</span></a></span></dt><dt><span class="section"><a href="sect-Quickstart-Distros.html"><span class="number">5.3 </span><span class="name">For distributors packaging Appstream metadata</span></a></span></dt><dt><span class="section"><a href="sect-Quickstart-Translation.html"><span class="number">5.4 </span><span class="name">Translating Metadata</span></a></span></dt></dl></dd><dt><span class="chapter"><a href="chap-AppStream-ManualPages.html"><span class="number">6 </span><span class="name">Manual pages</span></a></span></dt><dt><span class="chapter"><a href="chap-AppStream-API.html"><span class="number">7 </span><span class="name">AppStream API Reference</span></a></span></dt><dt><span class="index"><a h ref="ix01.html"><span class="number"> </span><span class="name">Index</span></a></span></dt></dl></div><div><div class="legalnotice" id="id-1.1.9"><p> Copyright <span class="trademark"></span>© 2012-2022 Matthias Klumpp. This documentation is dual-licensed under the <a class="ulink" href="https://www.gnu.org/licenses/fdl.txt" target="_blank">GNU Free Documentation License (GFDL), v1.3<span class="ulink-url"> (https://www.gnu.org/licenses/fdl.txt)</span></a> with no invariant sections or later or the <a class="ulink" href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank">CC Attribution-ShareAlike 4.0 International<span class="ulink-url"> (https://creativecommons.org/licenses/by-sa/4.0/)</span></a> license diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AppStream-0.16.2/meson.build new/AppStream-0.16.3/meson.build --- old/AppStream-0.16.2/meson.build 2023-04-26 21:09:34.000000000 +0200 +++ new/AppStream-0.16.3/meson.build 2023-08-22 23:52:32.000000000 +0200 @@ -3,7 +3,7 @@ default_options: ['c_std=c11', 'cpp_std=gnu++14'], license: 'LGPL-2.1+', - version: '0.16.2', + version: '0.16.3', ) cc = meson.get_compiler('c') @@ -157,8 +157,8 @@ curl_dep = dependency('libcurl', version: '>= 7.62') xml2_dep = dependency('libxml-2.0') yaml_dep = dependency('yaml-0.1') -xmlb_dep = dependency('xmlb', version: '>= 0.3.6', - fallback: ['libxmlb', 'libxmlb_dep'], default_options: ['gtkdoc=false']) +xmlb_dep = dependency('xmlb', version: '>= 0.3.13', + fallback: ['libxmlb', 'libxmlb_dep'], default_options: ['gtkdoc=false', 'introspection=false']) libsystemd_dep = dependency('libsystemd', required: get_option('systemd')) if get_option ('gir') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AppStream-0.16.2/src/as-cache.c new/AppStream-0.16.3/src/as-cache.c --- old/AppStream-0.16.2/src/as-cache.c 2023-04-26 21:09:34.000000000 +0200 +++ new/AppStream-0.16.3/src/as-cache.c 2023-08-22 23:52:32.000000000 +0200 @@ -646,7 +646,6 @@ for (guint i = 0; i < cpts->len; i++) { xmlNode *cnode; g_autoptr(XbBuilderNode) xbnode = NULL; - g_autoptr(XbBuilderNode) tmp_node = NULL; AsComponent *cpt = AS_COMPONENT (g_ptr_array_index (cpts, i)); /* refine component data */ @@ -1910,8 +1909,8 @@ } typedef struct { - AsSearchTokenMatch match_value; - XbQuery *query; + AsSearchTokenMatch match_value; + XbQuery *query; } AsFTSearchHelper; static void @@ -1932,7 +1931,10 @@ g_auto(XbQueryContext) context = XB_QUERY_CONTEXT_INIT (); AsFTSearchHelper *helper = g_ptr_array_index (array, i); - xb_value_bindings_bind_str (xb_query_context_get_bindings (&context), 0, term, NULL); + xb_value_bindings_bind_str (xb_query_context_get_bindings (&context), + 0, + term, + NULL); n = xb_node_query_with_context (cpt_node, helper->query, &context, NULL); if (n != NULL) match_value |= helper->match_value; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AppStream-0.16.2/src/as-component.c new/AppStream-0.16.3/src/as-component.c --- old/AppStream-0.16.2/src/as-component.c 2023-04-26 21:09:34.000000000 +0200 +++ new/AppStream-0.16.3/src/as-component.c 2023-08-22 23:52:32.000000000 +0200 @@ -2997,7 +2997,7 @@ GPtrArray *tokens_out) { /* get global stemmer instance (it's threadsafe and should survive this invocation) */ - AsStemmer *stemmer = as_stemmer_get (); + AsStemmer *stemmer = as_stemmer_get (as_component_get_active_locale (cpt)); /* add extra tokens for names like x-plane or half-life */ if (allow_split && g_strstr_len (value, -1, "-") != NULL) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AppStream-0.16.2/src/as-metadata.c new/AppStream-0.16.3/src/as-metadata.c --- old/AppStream-0.16.2/src/as-metadata.c 2023-04-26 21:09:34.000000000 +0200 +++ new/AppStream-0.16.3/src/as-metadata.c 2023-08-22 23:52:32.000000000 +0200 @@ -213,10 +213,9 @@ /* catalog metadata allows setting a priority for components */ priority_str = as_xml_get_prop_value (node, "priority"); if (priority_str != NULL) { - gint default_priority; - default_priority = g_ascii_strtoll (priority_str, NULL, 10); - as_context_set_priority (context, default_priority); - priv->default_priority = default_priority; + gint priority; + priority = g_ascii_strtoll (priority_str, NULL, 10); + as_context_set_priority (context, priority); } g_free (priority_str); @@ -354,7 +353,6 @@ if (value != NULL) { gint priority = g_ascii_strtoll (value, NULL, 10); as_context_set_priority (context, priority); - priv->default_priority = priority; } } else if (g_strcmp0 (key, "MediaBaseUrl") == 0) { if (value != NULL && diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AppStream-0.16.2/src/as-news-convert.c new/AppStream-0.16.3/src/as-news-convert.c --- old/AppStream-0.16.2/src/as-news-convert.c 2023-04-26 21:09:34.000000000 +0200 +++ new/AppStream-0.16.3/src/as-news-convert.c 2023-08-22 23:52:32.000000000 +0200 @@ -220,17 +220,14 @@ g_string_append (str, "</ul>"); } else { - /* we only have one list entry, or no list at all and a freeform text instead. Convert to paragraphs */ g_auto(GStrv) paras = g_strsplit (value, "\n\n", -1); for (guint i = 0; paras[i] != NULL; i++) { g_auto(GStrv) lines = NULL; - g_autoptr(GString) para = NULL; gboolean in_listing = FALSE; gboolean in_paragraph = FALSE; g_autofree gchar *escaped = g_markup_escape_text (paras[i], -1); - para = g_string_new (""); lines = g_strsplit (escaped, "\n", -1); for (guint j = 0; lines[j] != NULL; j++) { if (g_str_has_prefix (lines[j], " -") || g_str_has_prefix (lines[j], " *")) { @@ -271,6 +268,10 @@ } } + /* FIXME: Silences an invalid null-dereference warning in GCC 13 which happens when + * GString is used in g_autoptr() */ + g_assert (str != NULL); + as_release_set_description (rel, str->str, "C"); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AppStream-0.16.2/src/as-pool.c new/AppStream-0.16.3/src/as-pool.c --- old/AppStream-0.16.2/src/as-pool.c 2023-04-26 21:09:34.000000000 +0200 +++ new/AppStream-0.16.3/src/as-pool.c 2023-08-22 23:52:32.000000000 +0200 @@ -2395,7 +2395,7 @@ terms = g_new0 (gchar *, g_strv_length (strv) + 1); idx = 0; - stemmer = g_object_ref (as_stemmer_get ()); + stemmer = g_object_ref (as_stemmer_get (priv->locale_posix)); for (guint i = 0; strv[i] != NULL; i++) { gchar *token; if (!as_user_search_term_valid (strv[i])) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AppStream-0.16.2/src/as-stemmer.c new/AppStream-0.16.3/src/as-stemmer.c --- old/AppStream-0.16.2/src/as-stemmer.c 2023-04-26 21:09:34.000000000 +0200 +++ new/AppStream-0.16.3/src/as-stemmer.c 2023-08-22 23:52:32.000000000 +0200 @@ -40,6 +40,7 @@ GObject parent_instance; struct sb_stemmer *sb; + gchar *current_lang; GMutex mutex; }; @@ -71,37 +72,49 @@ { #ifdef HAVE_STEMMING g_autofree gchar *locale = NULL; - g_autofree gchar *lang = NULL; g_mutex_init (&stemmer->mutex); /* we don't use the locale in XML, so it can be POSIX */ locale = as_get_current_locale_posix (); - lang = as_utils_locale_to_language (locale); + stemmer->current_lang = as_utils_locale_to_language (locale); - as_stemmer_reload (stemmer, lang); + as_stemmer_reload (stemmer, stemmer->current_lang); #endif } /** * as_stemmer_reload: * @stemmer: A #AsStemmer - * @lang: The stemming language. + * @locale: The stemming language as POSIX locale. * * Allows realoading the #AsStemmer with a different language. */ void -as_stemmer_reload (AsStemmer *stemmer, const gchar *lang) +as_stemmer_reload (AsStemmer *stemmer, const gchar *locale) { #ifdef HAVE_STEMMING - GMutexLocker *locker = g_mutex_locker_new (&stemmer->mutex); + g_autofree gchar *lang = NULL; + GMutexLocker *locker = NULL; + + /* check if we need to reload */ + lang = as_utils_locale_to_language (locale); + locker = g_mutex_locker_new (&stemmer->mutex); + if (as_str_equal0 (lang, stemmer->current_lang)) { + g_mutex_locker_free (locker); + return; + } + + g_free (stemmer->current_lang); + stemmer->current_lang = g_steal_pointer (&lang); + /* reload stemmer */ sb_stemmer_delete (stemmer->sb); - stemmer->sb = sb_stemmer_new (lang, NULL); + stemmer->sb = sb_stemmer_new (stemmer->current_lang, NULL); if (stemmer->sb == NULL) - g_debug ("Language %s can not be stemmed.", lang); + g_debug ("Language %s can not be stemmed.", stemmer->current_lang); else - g_debug ("Stemming language is: %s", lang); + g_debug ("Stemming language is now: %s", stemmer->current_lang); g_mutex_locker_free (locker); #endif @@ -158,18 +171,33 @@ /** * as_stemmer_get: + * @locale: The stemming language as POSIX locale. * * Gets the global #AsStemmer instance. * * Returns: (transfer none): an #AsStemmer **/ -AsStemmer* -as_stemmer_get (void) +AsStemmer * +as_stemmer_get (const gchar *locale) { + AsStemmer *stemmer; if (as_stemmer_object == NULL) { as_stemmer_object = g_object_new (AS_TYPE_STEMMER, NULL); g_object_add_weak_pointer (as_stemmer_object, &as_stemmer_object); } + stemmer = AS_STEMMER (as_stemmer_object); - return AS_STEMMER (as_stemmer_object); + /* load current locale if locale was NULL */ + if (locale == NULL) { + g_autofree gchar *sys_locale = as_get_current_locale_posix (); + as_stemmer_reload (stemmer, sys_locale); + return stemmer; + } + + /* load English for standard C locale */ + if (g_str_has_prefix (locale, "C")) + as_stemmer_reload (stemmer, "en"); + else + as_stemmer_reload (stemmer, locale); + return stemmer; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AppStream-0.16.2/src/as-stemmer.h new/AppStream-0.16.3/src/as-stemmer.h --- old/AppStream-0.16.2/src/as-stemmer.h 2023-04-26 21:09:34.000000000 +0200 +++ new/AppStream-0.16.3/src/as-stemmer.h 2023-08-22 23:52:32.000000000 +0200 @@ -32,7 +32,7 @@ #define AS_TYPE_STEMMER (as_stemmer_get_type ()) G_DECLARE_FINAL_TYPE (AsStemmer, as_stemmer, AS, STEMMER, GObject) -AsStemmer *as_stemmer_get (void); +AsStemmer *as_stemmer_get (const gchar *locale); void as_stemmer_reload (AsStemmer *stemmer, const gchar *lang); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AppStream-0.16.2/src/meson.build new/AppStream-0.16.3/src/meson.build --- old/AppStream-0.16.2/src/meson.build 2023-04-26 21:09:34.000000000 +0200 +++ new/AppStream-0.16.3/src/meson.build 2023-08-22 23:52:32.000000000 +0200 @@ -224,7 +224,7 @@ pc_fixup = run_command(sed_prog, '-i', '/^Requires.private\|^Libs.private/ d', - join_paths(meson.project_build_root(), 'meson-private', 'appstream.pc'), + join_paths(meson.global_build_root(), 'meson-private', 'appstream.pc'), check: false) if pc_fixup.returncode() != 0 error('Unable to fix up the .pc file:\n' + pc_fixup.stderr()) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AppStream-0.16.2/tests/ci/Dockerfile-fedora-latest new/AppStream-0.16.3/tests/ci/Dockerfile-fedora-latest --- old/AppStream-0.16.2/tests/ci/Dockerfile-fedora-latest 2023-04-26 21:09:34.000000000 +0200 +++ new/AppStream-0.16.3/tests/ci/Dockerfile-fedora-latest 2023-08-22 23:52:32.000000000 +0200 @@ -10,8 +10,5 @@ COPY install-deps-rpm.sh /build/ci/ RUN chmod +x /build/ci/install-deps-rpm.sh && /build/ci/install-deps-rpm.sh -RUN dnf --assumeyes --quiet --setopt=install_weak_deps=False install python3-pip -RUN pip install 'meson~=0.62' - # finish WORKDIR /build diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AppStream-0.16.2/tests/ci/Dockerfile-fedora-rawhide new/AppStream-0.16.3/tests/ci/Dockerfile-fedora-rawhide --- old/AppStream-0.16.2/tests/ci/Dockerfile-fedora-rawhide 2023-04-26 21:09:34.000000000 +0200 +++ new/AppStream-0.16.3/tests/ci/Dockerfile-fedora-rawhide 2023-08-22 23:52:32.000000000 +0200 @@ -10,8 +10,5 @@ COPY install-deps-rpm.sh /build/ci/ RUN chmod +x /build/ci/install-deps-rpm.sh && /build/ci/install-deps-rpm.sh -RUN dnf --assumeyes --quiet --setopt=install_weak_deps=False install python3-pip -RUN pip install 'meson~=0.62' - # finish WORKDIR /build diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AppStream-0.16.2/tests/ci/install-deps-rpm.sh new/AppStream-0.16.3/tests/ci/install-deps-rpm.sh --- old/AppStream-0.16.2/tests/ci/install-deps-rpm.sh 2023-04-26 21:09:34.000000000 +0200 +++ new/AppStream-0.16.3/tests/ci/install-deps-rpm.sh 2023-08-22 23:52:32.000000000 +0200 @@ -22,6 +22,11 @@ libasan \ libstemmer-devel \ libubsan \ + diffutils \ + gcovr \ + xz-devel \ + libzstd-devel \ + libuuid-devel \ 'pkgconfig(gio-2.0)' \ 'pkgconfig(gobject-introspection-1.0)' \ 'pkgconfig(xmlb)' \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AppStream-0.16.2/tests/test-pool.c new/AppStream-0.16.3/tests/test-pool.c --- old/AppStream-0.16.2/tests/test-pool.c 2023-04-26 21:09:34.000000000 +0200 +++ new/AppStream-0.16.3/tests/test-pool.c 2023-08-22 23:52:32.000000000 +0200 @@ -654,8 +654,7 @@ test_search_stemming (void) { gchar *tmp; - AsStemmer *stemmer = as_stemmer_get (); - as_stemmer_reload (stemmer, "en"); + AsStemmer *stemmer = as_stemmer_get ("en"); tmp = as_stemmer_stem (stemmer, "calculator"); g_assert_cmpstr (tmp, ==, "calcul"); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AppStream-0.16.2/tools/appstream-compose.c new/AppStream-0.16.3/tools/appstream-compose.c --- old/AppStream-0.16.2/tools/appstream-compose.c 2023-04-26 21:09:34.000000000 +0200 +++ new/AppStream-0.16.3/tools/appstream-compose.c 2023-08-22 23:52:32.000000000 +0200 @@ -160,7 +160,6 @@ gboolean verbose = FALSE; gboolean no_color = FALSE; gboolean show_version = FALSE; - g_autoptr(GError) error = NULL; gboolean no_net = FALSE; AscReportMode report_mode; g_autofree gchar *report_mode_str = NULL; @@ -173,6 +172,8 @@ g_autofree gchar *media_baseurl = NULL; g_autofree gchar *prefix = NULL; g_autofree gchar *components_str = NULL; + gboolean no_partial_urls = FALSE; + g_autoptr(GError) error = NULL; g_autoptr(AscCompose) compose = NULL; AscComposeFlags compose_flags; GPtrArray *results; @@ -191,7 +192,7 @@ /* TRANSLATORS: ascompose flag description for: --no-net */ _("Do not use the network at all, not even for URL validity checks."), NULL }, { "print-report", '\0', 0, G_OPTION_ARG_STRING, &report_mode_str, - /* TRANSLATORS: ascompose flag description for: --full-report */ + /* TRANSLATORS: ascompose flag description for: --print-report */ _("Set mode of the issue report that is printed to the console"), "MODE" }, { "prefix", '\0', 0, G_OPTION_ARG_FILENAME, &prefix, /* TRANSLATORS: ascompose flag description for: --prefix */ @@ -217,6 +218,9 @@ { "media-baseurl", '\0', 0, G_OPTION_ARG_STRING, &media_baseurl, /* TRANSLATORS: ascompose flag description for: --media-baseurl */ _("Set the URL where the exported media content will be hosted"), "NAME" }, + { "no-partial-urls", '\0', 0, G_OPTION_ARG_NONE, &no_partial_urls, + /* TRANSLATORS: ascompose flag description for: --no-partial-urls */ + _("Makes all URLs in output data complete URLs and avoids the use of a shared URL prefix for all metadata."), NULL }, { "components", '\0', 0, G_OPTION_ARG_STRING, &components_str, /* TRANSLATORS: ascompose flag description for: --components */ _("A comma-separated list of component-IDs to accept"), "COMPONENT-IDs" }, @@ -282,6 +286,8 @@ compose_flags = asc_compose_get_flags (compose); if (no_net) as_flags_remove (compose_flags, ASC_COMPOSE_FLAG_ALLOW_NET); + if (no_partial_urls) + as_flags_add (compose_flags, ASC_COMPOSE_FLAG_NO_PARTIAL_URLS); asc_compose_set_flags (compose, compose_flags); /* sanity checks & defaults */