Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package gnome-software for openSUSE:Factory checked in at 2022-03-20 20:54:33 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gnome-software (Old) and /work/SRC/openSUSE:Factory/.gnome-software.new.25692 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gnome-software" Sun Mar 20 20:54:33 2022 rev:89 rq:962637 version:41.5 Changes: -------- --- /work/SRC/openSUSE:Factory/gnome-software/gnome-software.changes 2022-02-11 23:06:53.366519185 +0100 +++ /work/SRC/openSUSE:Factory/.gnome-software.new.25692/gnome-software.changes 2022-03-20 20:54:39.486449586 +0100 @@ -1,0 +2,9 @@ +Fri Mar 18 09:56:37 UTC 2022 - Bj??rn Lie <bjorn....@gmail.com> + +- Update to version 41.5: + + Disable scroll-by-mouse-wheel on featured carousel. + + Ensure details page shows app provided on command line. + + Added several appstream-related fixes. + + Updated translations. + +------------------------------------------------------------------- Old: ---- gnome-software-41.4.tar.xz New: ---- gnome-software-41.5.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gnome-software.spec ++++++ --- /var/tmp/diff_new_pack.KfwrzO/_old 2022-03-20 20:54:40.242450674 +0100 +++ /var/tmp/diff_new_pack.KfwrzO/_new 2022-03-20 20:54:40.250450685 +0100 @@ -19,7 +19,7 @@ %define gs_plugin_api 16 Name: gnome-software -Version: 41.4 +Version: 41.5 Release: 0 Summary: GNOME Software Store License: GPL-2.0-or-later ++++++ gnome-software-41.4.tar.xz -> gnome-software-41.5.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-software-41.4/NEWS new/gnome-software-41.5/NEWS --- old/gnome-software-41.4/NEWS 2022-02-10 16:41:41.335416800 +0100 +++ new/gnome-software-41.5/NEWS 2022-03-18 09:09:27.884578500 +0100 @@ -1,3 +1,15 @@ +Version 41.5 +~~~~~~~~~~~~ +Released: 2022-03-18 + +This is a stable release with the following changes: + * Disable scroll-by-mouse-wheel on featured carousel + * Ensure details page shows app provided on command line + * Added several appstream-related fixes + +This release also updates translation: + * Catalan + Version 41.4 ~~~~~~~~~~~~ Released: 2022-02-10 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-software-41.4/data/appdata/org.gnome.Software.appdata.xml.in new/gnome-software-41.5/data/appdata/org.gnome.Software.appdata.xml.in --- old/gnome-software-41.4/data/appdata/org.gnome.Software.appdata.xml.in 2022-02-10 16:41:41.337417000 +0100 +++ new/gnome-software-41.5/data/appdata/org.gnome.Software.appdata.xml.in 2022-03-18 09:09:27.886578600 +0100 @@ -66,6 +66,20 @@ Validate with `appstreamcli validate *.appdata.xml` --> <releases> + <release date="2022-03-18" version="41.5" type="stable"> + <description> + <p>This is a stable release with the following changes:</p> + <ul> + <li>Disable scroll-by-mouse-wheel on featured carousel</li> + <li>Ensure details page shows app provided on command line</li> + <li>Added several appstream-related fixes</li> + </ul> + <p>This release also updates translation:</p> + <ul> + <li>Catalan</li> + </ul> + </description> + </release> <release date="2022-02-10" version="41.4" type="stable"> <description> <p>This is a stable release which only updates translations:</p> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-software-41.4/lib/gs-appstream.c new/gnome-software-41.5/lib/gs-appstream.c --- old/gnome-software-41.4/lib/gs-appstream.c 2022-02-10 16:41:41.346417000 +0100 +++ new/gnome-software-41.5/lib/gs-appstream.c 2022-03-18 09:09:27.897578500 +0100 @@ -889,6 +889,16 @@ } } + /* set id kind */ + if (gs_app_get_kind (app) == AS_COMPONENT_KIND_UNKNOWN || + gs_app_get_kind (app) == AS_COMPONENT_KIND_GENERIC) { + AsComponentKind kind; + tmp = xb_node_get_attr (component, "type"); + kind = as_component_kind_from_string (tmp); + if (kind != AS_COMPONENT_KIND_UNKNOWN) + gs_app_set_kind (app, kind); + } + /* types we can never launch */ switch (gs_app_get_kind (app)) { case AS_COMPONENT_KIND_ADDON: @@ -938,7 +948,9 @@ gs_app_set_id (app, tmp); /* set source */ - tmp = xb_node_query_text (component, "../info/filename", NULL); + tmp = xb_node_query_text (component, "info/filename", NULL); + if (tmp == NULL) + tmp = xb_node_query_text (component, "../info/filename", NULL); if (tmp != NULL && gs_app_get_metadata_item (app, "appstream::source-file") == NULL) { gs_app_set_metadata (app, "appstream::source-file", tmp); } @@ -1071,16 +1083,6 @@ gs_app_set_developer_name (app, tmp); } - /* set id kind */ - if (gs_app_get_kind (app) == AS_COMPONENT_KIND_UNKNOWN || - gs_app_get_kind (app) == AS_COMPONENT_KIND_GENERIC) { - AsComponentKind kind; - tmp = xb_node_get_attr (component, "type"); - kind = as_component_kind_from_string (tmp); - if (kind != AS_COMPONENT_KIND_UNKNOWN) - gs_app_set_kind (app, kind); - } - /* set the release date */ timestamp = component_get_release_timestamp (component); if (timestamp != G_MAXUINT64) @@ -1824,3 +1826,22 @@ break; } } + +/* Resolve any media URIs which are actually relative + * paths against the media_baseurl property */ +void +gs_appstream_component_fix_url (XbBuilderNode *component, const gchar *baseurl) +{ + const gchar *text = xb_builder_node_get_text (component); + g_autofree gchar *url = NULL; + + if (text == NULL) + return; + + if (g_str_has_prefix (text, "http:") || + g_str_has_prefix (text, "https:")) + return; + + url = g_strconcat (baseurl, "/", text, NULL); + xb_builder_node_set_text (component, url , -1); +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-software-41.4/lib/gs-appstream.h new/gnome-software-41.5/lib/gs-appstream.h --- old/gnome-software-41.4/lib/gs-appstream.h 2022-02-10 16:41:41.347416900 +0100 +++ new/gnome-software-41.5/lib/gs-appstream.h 2022-03-18 09:09:27.897578500 +0100 @@ -72,5 +72,7 @@ const gchar *str); void gs_appstream_component_add_provide (XbBuilderNode *component, const gchar *str); +void gs_appstream_component_fix_url (XbBuilderNode *component, + const gchar *baseurl); G_END_DECLS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-software-41.4/lib/gs-fedora-third-party.c new/gnome-software-41.5/lib/gs-fedora-third-party.c --- old/gnome-software-41.4/lib/gs-fedora-third-party.c 2022-02-10 16:41:41.347416900 +0100 +++ new/gnome-software-41.5/lib/gs-fedora-third-party.c 2022-03-18 09:09:27.899578600 +0100 @@ -465,7 +465,7 @@ } self->last_update = g_get_real_time () / G_USEC_PER_SEC; } - success = self->repos != NULL && g_hash_table_size (self->repos) != 0; + success = self->repos != NULL; if (success && out_repos) *out_repos = g_hash_table_ref (self->repos); g_mutex_unlock (&self->lock); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-software-41.4/meson.build new/gnome-software-41.5/meson.build --- old/gnome-software-41.4/meson.build 2022-02-10 16:41:41.351416800 +0100 +++ new/gnome-software-41.5/meson.build 2022-03-18 09:09:27.903578500 +0100 @@ -1,5 +1,5 @@ project('gnome-software', 'c', - version : '41.4', + version : '41.5', license : 'GPL-2.0+', default_options : ['warning_level=1', 'c_std=c11'], meson_version : '>=0.47.0' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-software-41.4/plugins/core/gs-plugin-appstream.c new/gnome-software-41.5/plugins/core/gs-plugin-appstream.c --- old/gnome-software-41.4/plugins/core/gs-plugin-appstream.c 2022-02-10 16:41:41.351416800 +0100 +++ new/gnome-software-41.5/plugins/core/gs-plugin-appstream.c 2022-03-18 09:09:27.904578400 +0100 @@ -69,6 +69,8 @@ { if (g_strcmp0 (kind, "webapp") == 0) return "web-application"; + if (g_strcmp0 (kind, "desktop") == 0) + return "desktop-application"; return kind; } @@ -133,6 +135,60 @@ return TRUE; } +static void +gs_plugin_appstream_media_baseurl_free (gpointer user_data) +{ + g_string_free ((GString *) user_data, TRUE); +} + +static gboolean +gs_plugin_appstream_media_baseurl_cb (XbBuilderFixup *self, + XbBuilderNode *bn, + gpointer user_data, + GError **error) +{ + GString *baseurl = user_data; + if (g_strcmp0 (xb_builder_node_get_element (bn), "components") == 0) { + const gchar *url = xb_builder_node_get_attr (bn, "media_baseurl"); + if (url == NULL) { + g_string_truncate (baseurl, 0); + return TRUE; + } + g_string_assign (baseurl, url); + return TRUE; + } + + if (baseurl->len == 0) + return TRUE; + + if (g_strcmp0 (xb_builder_node_get_element (bn), "icon") == 0) { + const gchar *type = xb_builder_node_get_attr (bn, "type"); + if (g_strcmp0 (type, "remote") != 0) + return TRUE; + gs_appstream_component_fix_url (bn, baseurl->str); + } else if (g_strcmp0 (xb_builder_node_get_element (bn), "screenshots") == 0) { + GPtrArray *screenshots = xb_builder_node_get_children (bn); + for (guint i = 0; i < screenshots->len; i++) { + XbBuilderNode *screenshot = g_ptr_array_index (screenshots, i); + GPtrArray *children = NULL; + /* Type-check for security */ + if (g_strcmp0 (xb_builder_node_get_element (screenshot), "screenshot") != 0) { + continue; + } + children = xb_builder_node_get_children (screenshot); + for (guint j = 0; j < children->len; j++) { + XbBuilderNode *child = g_ptr_array_index (children, j); + const gchar *element = xb_builder_node_get_element (child); + if (g_strcmp0 (element, "image") != 0 && + g_strcmp0 (element, "video") != 0) + continue; + gs_appstream_component_fix_url (child, baseurl->str); + } + } + } + return TRUE; +} + static gboolean gs_plugin_appstream_load_appdata_fn (GsPlugin *plugin, XbBuilder *builder, @@ -398,6 +454,8 @@ #if LIBXMLB_CHECK_VERSION(0,3,1) g_autoptr(XbBuilderFixup) fixup4 = NULL; #endif + g_autoptr(XbBuilderFixup) fixup5 = NULL; + GString *media_baseurl = g_string_new (NULL); g_autoptr(XbBuilderSource) source = xb_builder_source_new (); /* add support for DEP-11 files */ @@ -453,6 +511,14 @@ xb_builder_source_add_fixup (source, fixup4); #endif + /* prepend media_baseurl to remote relative URLs */ + fixup5 = xb_builder_fixup_new ("MediaBaseUrl", + gs_plugin_appstream_media_baseurl_cb, + media_baseurl, + gs_plugin_appstream_media_baseurl_free); + xb_builder_fixup_set_max_depth (fixup5, 3); + xb_builder_source_add_fixup (source, fixup5); + /* success */ xb_builder_import_source (builder, source); return TRUE; @@ -828,10 +894,10 @@ /* look in AppStream then fall back to AppData */ if (origin && *origin) { xb_string_append_union (xpath, "components[@origin='%s']/component/id[text()='%s']/../pkgname/..", origin, id); - xb_string_append_union (xpath, "components[@origin='%s']/component[@type='webapp']/id[text()='%s']/..", origin, id); + xb_string_append_union (xpath, "components[@origin='%s']/component[@type='web-application']/id[text()='%s']/..", origin, id); } else { xb_string_append_union (xpath, "components/component/id[text()='%s']/../pkgname/..", id); - xb_string_append_union (xpath, "components/component[@type='webapp']/id[text()='%s']/..", id); + xb_string_append_union (xpath, "components/component[@type='web-application']/id[text()='%s']/..", id); } xb_string_append_union (xpath, "component/id[text()='%s']/..", id); components = xb_silo_query (priv->silo, xpath->str, 0, &error_local); @@ -886,9 +952,9 @@ locker = g_rw_lock_reader_locker_new (&priv->silo_lock); /* prefer actual apps and then fallback to anything else */ - xb_string_append_union (xpath, "components/component[@type='desktop']/pkgname[text()='%s']/..", pkgname); - xb_string_append_union (xpath, "components/component[@type='console']/pkgname[text()='%s']/..", pkgname); - xb_string_append_union (xpath, "components/component[@type='webapp']/pkgname[text()='%s']/..", pkgname); + xb_string_append_union (xpath, "components/component[@type='desktop-application']/pkgname[text()='%s']/..", pkgname); + xb_string_append_union (xpath, "components/component[@type='console-application']/pkgname[text()='%s']/..", pkgname); + xb_string_append_union (xpath, "components/component[@type='web-application']/pkgname[text()='%s']/..", pkgname); xb_string_append_union (xpath, "components/component/pkgname[text()='%s']/..", pkgname); component = xb_silo_query_first (priv->silo, xpath->str, &error_local); if (component == NULL) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-software-41.4/src/gs-details-page.c new/gnome-software-41.5/src/gs-details-page.c --- old/gnome-software-41.4/src/gs-details-page.c 2022-02-10 16:41:41.420417300 +0100 +++ new/gnome-software-41.5/src/gs-details-page.c 2022-03-18 09:09:27.983578400 +0100 @@ -1643,6 +1643,7 @@ gs_shell_set_mode (self->shell, GS_SHELL_MODE_OVERVIEW); } else { GsApp *app = gs_app_list_index (list, 0); + g_set_object (&self->app_local_file, app); _set_app (self, app); gs_details_page_load_stage2 (self); } @@ -1690,12 +1691,16 @@ gs_details_page_load_stage1 (GsDetailsPage *self) { g_autoptr(GsPluginJob) plugin_job = NULL; + g_autoptr(GCancellable) cancellable = g_cancellable_new (); /* update UI */ gs_page_switch_to (GS_PAGE (self)); gs_page_scroll_up (GS_PAGE (self)); gs_details_page_set_state (self, GS_DETAILS_PAGE_STATE_LOADING); + g_cancellable_cancel (self->cancellable); + g_set_object (&self->cancellable, cancellable); + /* get extra details about the app */ plugin_job = gs_plugin_job_newv (GS_PLUGIN_ACTION_REFINE, "app", self->app, @@ -2095,7 +2100,7 @@ self->shell = shell; self->plugin_loader = g_object_ref (plugin_loader); - self->cancellable = g_object_ref (cancellable); + self->cancellable = g_cancellable_new (); /* hide some UI when offline */ g_signal_connect_object (self->plugin_loader, "notify::network-available", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-software-41.4/src/gs-featured-carousel.c new/gnome-software-41.5/src/gs-featured-carousel.c --- old/gnome-software-41.4/src/gs-featured-carousel.c 2022-02-10 16:41:41.421417500 +0100 +++ new/gnome-software-41.5/src/gs-featured-carousel.c 2022-03-18 09:09:27.985578500 +0100 @@ -192,6 +192,12 @@ gtk_widget_set_has_window (GTK_WIDGET (self), FALSE); gtk_widget_init_template (GTK_WIDGET (self)); +#if HDY_CHECK_VERSION(1, 3, 0) + /* Disable scrolling through the carousel, as it???s typically used + * in category pages which are themselves scrollable. */ + hdy_carousel_set_allow_scroll_wheel (HDY_CAROUSEL (self->carousel), FALSE); +#endif + /* Ensure the text directions are up to date */ next_button_direction_changed_cb (GTK_WIDGET (self->next_button_image), GTK_TEXT_DIR_NONE, self); previous_button_direction_changed_cb (GTK_WIDGET (self->previous_button_image), GTK_TEXT_DIR_NONE, self);