Merged update from upstream sources

This is an automated DistroBaker update from upstream sources.
If you do not know what this is about or would like to opt out,
contact the OSCI team.

Source: https://src.fedoraproject.org/rpms/gnome-software.git#75366111674a11c45528a9e5224aebdf99452a0e
This commit is contained in:
DistroBaker 2021-03-23 13:45:37 +00:00
parent 504688b143
commit a8cd4bcb75
7 changed files with 7 additions and 184 deletions

1
.gitignore vendored
View File

@ -116,3 +116,4 @@
/gnome-software-3.38.1.tar.xz /gnome-software-3.38.1.tar.xz
/gnome-software-40.beta.tar.xz /gnome-software-40.beta.tar.xz
/gnome-software-40.rc.tar.xz /gnome-software-40.rc.tar.xz
/gnome-software-40.0.tar.xz

View File

@ -1,32 +0,0 @@
From 81a2e01d407fc903a83b4c1a82749d2591397240 Mon Sep 17 00:00:00 2001
From: Philip Withnall <pwithnall@endlessos.org>
Date: Tue, 16 Mar 2021 13:33:40 +0000
Subject: [PATCH 1/4] gs-app: Add additional icon debug information
Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
---
lib/gs-app.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/lib/gs-app.c b/lib/gs-app.c
index 771743330..cb2549d4c 100644
--- a/lib/gs-app.c
+++ b/lib/gs-app.c
@@ -1828,11 +1828,12 @@ gs_app_get_icon_for_size (GsApp *app,
* lazily created. */
for (guint i = 0; priv->icons != NULL && i < priv->icons->len; i++) {
GIcon *icon = priv->icons->pdata[i];
+ g_autofree gchar *icon_str = g_icon_to_string (icon);
guint icon_width = gs_icon_get_width (icon);
guint icon_scale = gs_icon_get_scale (icon);
- g_debug ("\tConsidering icon of type %s, width %u×%u",
- G_OBJECT_TYPE_NAME (icon), icon_width, icon_scale);
+ g_debug ("\tConsidering icon of type %s (%s), width %u×%u",
+ G_OBJECT_TYPE_NAME (icon), icon_str, icon_width, icon_scale);
/* Ignore icons with unknown width and skip over ones which
* are too small. */
--
2.30.2

View File

@ -1,48 +0,0 @@
From 9a63168893a678f97fe6e3bfde2d6e5debf151c3 Mon Sep 17 00:00:00 2001
From: Philip Withnall <pwithnall@endlessos.org>
Date: Tue, 16 Mar 2021 13:34:13 +0000
Subject: [PATCH 2/4] =?UTF-8?q?gs-appstream:=20Fix=20handling=20of=20icons?=
=?UTF-8?q?=20where=20appdata=20doesn=E2=80=99t=20specify=20width?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
If the `<icon>` element in the appdata doesnt specify a `width`
attribute, `xb_node_get_attr_as_uint()` will return `G_MAXUINT64`.
However, its return value was being assigned to `sz`, which is a
`guint`, and hence it was being truncated. This resulted in icons having
their widths set to `G_MAXUINT`, and hence being prioritised for display
when that was not necessarily correct.
Fix that by explicitly handling the failure response from
`xb_node_get_attr_as_uint()`.
Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
Fixes: #1171
---
plugins/core/gs-appstream.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/plugins/core/gs-appstream.c b/plugins/core/gs-appstream.c
index a9cf97270..22fed1154 100644
--- a/plugins/core/gs-appstream.c
+++ b/plugins/core/gs-appstream.c
@@ -149,8 +149,12 @@ gs_appstream_new_icon (XbNode *component, XbNode *n, AsIconKind icon_kind, guint
default:
as_icon_set_name (icon, xb_node_get_text (n));
}
- if (sz == 0)
- sz = xb_node_get_attr_as_uint (n, "width");
+ if (sz == 0) {
+ guint64 width = xb_node_get_attr_as_uint (n, "width");
+ if (width > 0 && width < G_MAXUINT)
+ sz = width;
+ }
+
if (sz > 0) {
as_icon_set_width (icon, sz);
as_icon_set_height (icon, sz);
--
2.30.2

View File

@ -1,61 +0,0 @@
From 3e86354cc5ccffc5ef27fa9e5ce2e99e3e60bc8c Mon Sep 17 00:00:00 2001
From: Philip Withnall <pwithnall@endlessos.org>
Date: Tue, 16 Mar 2021 13:36:23 +0000
Subject: [PATCH 3/4] gs-icon: Work around invalid icon names from some
appstream files
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cached icons are supposed to provide a name (like `krita.png`), `width`
and `height` attributes, and then gnome-software can build the path to
the cached icon file according to
https://www.freedesktop.org/software/appstream/docs/sect-AppStream-IconCache.html#spec-iconcache-location.
Due to a bug in appstream-builder in appstream-glib
(https://github.com/hughsie/appstream-glib/pull/390), some appstream
files for example, rpmfusion-free-33 had invalid cached icon names,
which resulted in those icons not being loadable, and not appearing for
their applications.
As it may take a while for the fix in appstream-builder to be merged and
be used to regenerate all the appstream files for different app
repositories, add a workaround in gnome-software.
Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
Helps: #1171
---
lib/gs-icon.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/lib/gs-icon.c b/lib/gs-icon.c
index a88e62d34..955ab0217 100644
--- a/lib/gs-icon.c
+++ b/lib/gs-icon.c
@@ -200,12 +200,22 @@ gs_icon_load_cached (AsIcon *icon)
{
const gchar *filename = as_icon_get_filename (icon);
const gchar *name = as_icon_get_name (icon);
+ g_autofree gchar *name_allocated = NULL;
g_autofree gchar *full_filename = NULL;
g_autoptr(GFile) file = NULL;
if (filename == NULL || name == NULL)
return NULL;
+ /* FIXME: Work around https://github.com/hughsie/appstream-glib/pull/390
+ * where appstream files generated with appstream-builder from
+ * appstream-glib, with its hidpi option enabled, will contain an
+ * unnecessary size subdirectory in the icon name. */
+ if (g_str_has_prefix (name, "64x64/"))
+ name = name_allocated = g_strdup (name + strlen ("64x64/"));
+ else if (g_str_has_prefix (name, "128x128/"))
+ name = name_allocated = g_strdup (name + strlen ("128x128/"));
+
if (!g_str_has_suffix (filename, name)) {
/* Spec: https://www.freedesktop.org/software/appstream/docs/sect-AppStream-IconCache.html#spec-iconcache-location */
if (as_icon_get_scale (icon) <= 1) {
--
2.30.2

View File

@ -1,29 +0,0 @@
From 80834ed7d336f103cfc7199fa96c6f2a860be438 Mon Sep 17 00:00:00 2001
From: Philip Withnall <pwithnall@endlessos.org>
Date: Thu, 18 Mar 2021 13:11:36 +0000
Subject: [PATCH 4/4] gs-shell-search-provider: Fix crash in variant handling
for icons
Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
Fixes: #1179
---
src/gs-shell-search-provider.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/gs-shell-search-provider.c b/src/gs-shell-search-provider.c
index 8bafc9a8c..27bbb45f7 100644
--- a/src/gs-shell-search-provider.c
+++ b/src/gs-shell-search-provider.c
@@ -254,7 +254,7 @@ handle_get_result_metas (GsShellSearchProvider2 *skeleton,
if (icon != NULL) {
g_autofree gchar *icon_str = g_icon_to_string (icon);
if (icon_str != NULL) {
- g_variant_builder_add (&meta, "{sv}", "gicon", icon_str);
+ g_variant_builder_add (&meta, "{sv}", "gicon", g_variant_new_string (icon_str));
} else {
g_autoptr(GVariant) icon_serialized = g_icon_serialize (icon);
g_variant_builder_add (&meta, "{sv}", "icon", icon_serialized);
--
2.30.2

View File

@ -11,25 +11,14 @@
%global tarball_version %%(echo %{version} | tr '~' '.') %global tarball_version %%(echo %{version} | tr '~' '.')
Name: gnome-software Name: gnome-software
Version: 40~rc Version: 40.0
Release: 2%{?dist} Release: 1%{?dist}
Summary: A software center for GNOME Summary: A software center for GNOME
License: GPLv2+ License: GPLv2+
URL: https://wiki.gnome.org/Apps/Software URL: https://wiki.gnome.org/Apps/Software
Source0: https://download.gnome.org/sources/gnome-software/40/%{name}-%{tarball_version}.tar.xz Source0: https://download.gnome.org/sources/gnome-software/40/%{name}-%{tarball_version}.tar.xz
# Fix display of icons for packages and snaps
# https://gitlab.gnome.org/GNOME/gnome-software/-/issues/1171
# https://gitlab.gnome.org/GNOME/gnome-software/-/merge_requests/653
Patch0001: 0001-gs-app-Add-additional-icon-debug-information.patch
Patch0002: 0002-gs-appstream-Fix-handling-of-icons-where-appdata-doe.patch
Patch0003: 0003-gs-icon-Work-around-invalid-icon-names-from-some-app.patch
# Fix crash that sometimes breaks search provider or stops window appearing
# https://gitlab.gnome.org/GNOME/gnome-software/-/issues/1179
# https://gitlab.gnome.org/GNOME/gnome-software/-/merge_requests/658
Patch0004: 0004-gs-shell-search-provider-Fix-crash-in-variant-handli.patch
BuildRequires: appstream-devel >= %{appstream_version} BuildRequires: appstream-devel >= %{appstream_version}
BuildRequires: gcc BuildRequires: gcc
BuildRequires: gettext BuildRequires: gettext
@ -211,6 +200,9 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/*.desktop
%{_datadir}/gtk-doc/html/gnome-software %{_datadir}/gtk-doc/html/gnome-software
%changelog %changelog
* Mon Mar 22 2021 Kalev Lember <klember@redhat.com> - 40.0-1
- Update to 40.0
* Thu Mar 18 2021 Adam Williamson <awilliam@redhat.com> - 40~rc-2 * Thu Mar 18 2021 Adam Williamson <awilliam@redhat.com> - 40~rc-2
- Backport a couple of bug fixes from upstream (icon display, crash bug) - Backport a couple of bug fixes from upstream (icon display, crash bug)

View File

@ -1 +1 @@
SHA512 (gnome-software-40.rc.tar.xz) = caea26e84641f5db9dbacdec32e9f2039433e60fbb4548f48a33958eb1bd61415ab35e515100b29cb98a655bcf40ee8e2ea3cee4dd80d3777c2a81cf33848f8a SHA512 (gnome-software-40.0.tar.xz) = 052c520ab25af4257bb978aaa9e1c7a555f8d24dbd782d9f12f3c3def22e65588d3c76d16e4b3dc26f034a762c2ee3e773026b158d468e9e169369dc3d156a2a