diff --git a/SOURCES/be-able-to-disable-odrs.patch b/SOURCES/be-able-to-disable-odrs.patch new file mode 100644 index 0000000..68a992a --- /dev/null +++ b/SOURCES/be-able-to-disable-odrs.patch @@ -0,0 +1,27 @@ +From b50003ed83cab2c6cf6654e5972d6ee3e2303eb6 Mon Sep 17 00:00:00 2001 +From: Milan Crha +Date: Tue, 16 Feb 2021 16:09:08 +0100 +Subject: [PATCH] odrs: Cannot be disabled by filling empty 'review-server' + setting + +Closes https://gitlab.gnome.org/GNOME/gnome-software/-/issues/1143 +--- + plugins/odrs/gs-plugin-odrs.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/plugins/odrs/gs-plugin-odrs.c b/plugins/odrs/gs-plugin-odrs.c +index f0c0c3b91..2c9bd878d 100644 +--- a/plugins/odrs/gs-plugin-odrs.c ++++ b/plugins/odrs/gs-plugin-odrs.c +@@ -175,6 +175,8 @@ gs_plugin_initialize (GsPlugin *plugin) + + /* set name of MetaInfo file */ + gs_plugin_set_appstream_id (plugin, "org.gnome.Software.Plugin.Odrs"); ++ ++ gs_plugin_set_enabled (plugin, priv->review_server && *priv->review_server); + } + + static GArray * +-- +GitLab + diff --git a/SOURCES/crash-when-run-as-root.patch b/SOURCES/crash-when-run-as-root.patch new file mode 100644 index 0000000..8ea4921 --- /dev/null +++ b/SOURCES/crash-when-run-as-root.patch @@ -0,0 +1,57 @@ +From 98dbef8b5a547d3d920d377022e20d2e63519b2f Mon Sep 17 00:00:00 2001 +From: Milan Crha +Date: Tue, 16 Feb 2021 12:58:19 +0100 +Subject: [PATCH 1/2] GsApplication: Crash when run as root + +The `search_provider` is not initialized in this case, leading +to NULL dereference. Skip the call in such cases, because the search +provider is not that important. + +Closes https://gitlab.gnome.org/GNOME/gnome-software/-/issues/1142 +--- + src/gs-application.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/gs-application.c b/src/gs-application.c +index 48f0c6aac..fdb5f55c4 100644 +--- a/src/gs-application.c ++++ b/src/gs-application.c +@@ -912,7 +912,8 @@ static void + gs_application_setup_search_provider (GsApplication *app) + { + gs_application_initialize_plugins (app); +- gs_shell_search_provider_setup (app->search_provider, app->plugin_loader); ++ if (app->search_provider) ++ gs_shell_search_provider_setup (app->search_provider, app->plugin_loader); + } + + static void +-- +GitLab + + +From 0055bfa8535bb7c5ccd9ace244d71b2885a47daa Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Mon, 22 Feb 2021 11:41:05 +0000 +Subject: [PATCH 2/2] Apply 1 suggestion(s) to 1 file(s) + +--- + src/gs-application.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/gs-application.c b/src/gs-application.c +index fdb5f55c4..f05f6f718 100644 +--- a/src/gs-application.c ++++ b/src/gs-application.c +@@ -49,7 +49,7 @@ struct _GsApplication { + #ifdef HAVE_PACKAGEKIT + GsDbusHelper *dbus_helper; + #endif +- GsShellSearchProvider *search_provider; ++ GsShellSearchProvider *search_provider; /* (nullable) (owned) */ + GSettings *settings; + GSimpleActionGroup *action_map; + guint shell_loaded_handler_id; +-- +GitLab + diff --git a/SOURCES/devel-install-headers.patch b/SOURCES/devel-install-headers.patch new file mode 100644 index 0000000..5059bfd --- /dev/null +++ b/SOURCES/devel-install-headers.patch @@ -0,0 +1,36 @@ +From 5b0e476a17129be0d8b451467aded9c8ae861218 Mon Sep 17 00:00:00 2001 +From: Rasmus Thomsen +Date: Fri, 17 Apr 2020 18:55:21 +0200 +Subject: [PATCH] build: install more headers + +These are required for building out of tree plugins +--- + lib/meson.build | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/lib/meson.build b/lib/meson.build +index 1c00d4f3e..6a2e803e5 100644 +--- a/lib/meson.build ++++ b/lib/meson.build +@@ -4,12 +4,18 @@ cargs += ['-DLOCALPLUGINDIR=""'] + install_headers([ + 'gnome-software.h', + 'gs-app.h', ++ 'gs-app-collation.h', + 'gs-app-list.h', ++ 'gs-autocleanups.h', + 'gs-category.h', ++ 'gs-ioprio.h', + 'gs-metered.h', + 'gs-os-release.h', + 'gs-plugin.h', + 'gs-plugin-event.h', ++ 'gs-plugin-job.h', ++ 'gs-plugin-loader.h', ++ 'gs-plugin-loader-sync.h', + 'gs-plugin-types.h', + 'gs-plugin-vfuncs.h', + 'gs-utils.h' +-- +GitLab + diff --git a/SOURCES/flatpak-same-runtime-origin.patch b/SOURCES/flatpak-same-runtime-origin.patch new file mode 100644 index 0000000..3ef4ed5 --- /dev/null +++ b/SOURCES/flatpak-same-runtime-origin.patch @@ -0,0 +1,117 @@ +diff -up gnome-software-3.36.1/plugins/flatpak/gs-flatpak.c.10 gnome-software-3.36.1/plugins/flatpak/gs-flatpak.c +--- gnome-software-3.36.1/plugins/flatpak/gs-flatpak.c.10 2020-05-22 16:51:19.868380300 +0200 ++++ gnome-software-3.36.1/plugins/flatpak/gs-flatpak.c 2021-06-21 21:24:00.233689928 +0200 +@@ -1844,12 +1844,13 @@ gs_flatpak_refine_app_state (GsFlatpak * + } + + static GsApp * +-gs_flatpak_create_runtime (GsFlatpak *self, GsApp *parent, const gchar *runtime) ++gs_flatpak_create_runtime (GsFlatpak *self, GsApp *parent, const gchar *runtime, GCancellable *cancellable) + { + g_autofree gchar *source = NULL; + g_auto(GStrv) split = NULL; + g_autoptr(GsApp) app_cache = NULL; + g_autoptr(GsApp) app = NULL; ++ const gchar *origin; + + /* get the name/arch/branch */ + split = g_strsplit (runtime, "/", -1); +@@ -1864,6 +1865,24 @@ gs_flatpak_create_runtime (GsFlatpak *se + gs_app_set_kind (app, AS_APP_KIND_RUNTIME); + gs_app_set_branch (app, split[2]); + ++ origin = gs_app_get_origin (parent); ++ if (origin != NULL) { ++ g_autoptr(FlatpakRemoteRef) xref = NULL; ++ ++ xref = flatpak_installation_fetch_remote_ref_sync (self->installation, ++ origin, ++ FLATPAK_REF_KIND_RUNTIME, ++ gs_app_get_id (app), ++ gs_flatpak_app_get_ref_arch (parent), ++ gs_app_get_branch (app), ++ cancellable, ++ NULL); ++ ++ /* Prefer runtime from the same origin as the parent application */ ++ if (xref) ++ gs_app_set_origin (app, origin); ++ } ++ + /* search in the cache */ + app_cache = gs_plugin_cache_lookup (self->plugin, gs_app_get_unique_id (app)); + if (app_cache != NULL) { +@@ -1898,6 +1917,7 @@ gs_flatpak_set_app_metadata (GsFlatpak * + GsApp *app, + const gchar *data, + gsize length, ++ GCancellable *cancellable, + GError **error) + { + gboolean secure = TRUE; +@@ -1951,7 +1971,7 @@ gs_flatpak_set_app_metadata (GsFlatpak * + gs_app_add_kudo (app, GS_APP_KUDO_SANDBOXED_SECURE); + + /* create runtime */ +- app_runtime = gs_flatpak_create_runtime (self, app, runtime); ++ app_runtime = gs_flatpak_create_runtime (self, app, runtime, cancellable); + if (app_runtime != NULL) { + gs_plugin_refine_item_scope (self, app_runtime); + gs_app_set_runtime (app, app_runtime); +@@ -2046,7 +2066,7 @@ gs_plugin_refine_item_metadata (GsFlatpa + } + + /* parse key file */ +- if (!gs_flatpak_set_app_metadata (self, app, str, len, error)) ++ if (!gs_flatpak_set_app_metadata (self, app, str, len, cancellable, error)) + return FALSE; + return TRUE; + } +@@ -2506,6 +2526,7 @@ gs_flatpak_file_to_app_bundle (GsFlatpak + if (!gs_flatpak_set_app_metadata (self, app, + g_bytes_get_data (metadata, NULL), + g_bytes_get_size (metadata), ++ cancellable, + error)) + return NULL; + +diff -up gnome-software-3.36.1/plugins/flatpak/gs-plugin-flatpak.c.10 gnome-software-3.36.1/plugins/flatpak/gs-plugin-flatpak.c +--- gnome-software-3.36.1/plugins/flatpak/gs-plugin-flatpak.c.10 2021-06-21 20:38:42.585590510 +0200 ++++ gnome-software-3.36.1/plugins/flatpak/gs-plugin-flatpak.c 2021-06-21 21:23:00.977665979 +0200 +@@ -852,6 +852,36 @@ gs_plugin_app_install (GsPlugin *plugin, + ref, NULL, error)) { + gs_flatpak_error_convert (error); + return FALSE; ++ } else { ++ GsApp *runtime; ++ ++ runtime = gs_app_get_runtime (app); ++ if (runtime != NULL && gs_app_get_origin (runtime) != NULL) { ++ g_autoptr(FlatpakInstalledRef) runtime_ref = NULL; ++ ++ runtime_ref = flatpak_installation_get_installed_ref (gs_flatpak_get_installation (flatpak), ++ gs_flatpak_app_get_ref_kind (runtime), ++ gs_flatpak_app_get_ref_name (runtime), ++ gs_flatpak_app_get_ref_arch (runtime), ++ gs_app_get_branch (runtime), ++ cancellable, ++ NULL); ++ if (runtime_ref == NULL) { ++ g_autoptr(GError) error_local = NULL; ++ ++ g_clear_pointer (&ref, g_free); ++ ref = gs_flatpak_app_get_ref_display (runtime); ++ if (!flatpak_transaction_add_install (transaction, gs_app_get_origin (runtime), ref, NULL, &error_local)) { ++ if (g_error_matches (error_local, FLATPAK_ERROR, FLATPAK_ERROR_ALREADY_INSTALLED)) { ++ g_clear_error (&error_local); ++ } else { ++ g_propagate_error (error, g_steal_pointer (&error_local)); ++ gs_flatpak_error_convert (error); ++ return FALSE; ++ } ++ } ++ } ++ } + } + } + diff --git a/SOURCES/gs-updates-page-keep-showing-installing-apps.patch b/SOURCES/gs-updates-page-keep-showing-installing-apps.patch new file mode 100644 index 0000000..c077eeb --- /dev/null +++ b/SOURCES/gs-updates-page-keep-showing-installing-apps.patch @@ -0,0 +1,97 @@ +diff -up gnome-software-3.36.1/lib/gs-plugin.c.1888404 gnome-software-3.36.1/lib/gs-plugin.c +--- gnome-software-3.36.1/lib/gs-plugin.c.1888404 2021-05-24 13:50:34.302612057 +0200 ++++ gnome-software-3.36.1/lib/gs-plugin.c 2021-05-24 13:50:39.160609728 +0200 +@@ -1398,6 +1398,44 @@ gs_plugin_cache_lookup (GsPlugin *plugin + } + + /** ++ * gs_plugin_cache_lookup_by_state: ++ * @plugin: a #GsPlugin ++ * @list: a #GsAppList to add applications to ++ * @state: a #AsAppState ++ * ++ * Adds each cached #GsApp with state @state into the @list. ++ * When the state is %AS_APP_STATE_UNKNOWN, then adds all ++ * cached applications. ++ * ++ * Since: 3.36.1-8 ++ **/ ++void ++gs_plugin_cache_lookup_by_state (GsPlugin *plugin, ++ GsAppList *list, ++ AsAppState state) ++{ ++ GsPluginPrivate *priv; ++ GHashTableIter iter; ++ gpointer value; ++ g_autoptr(GMutexLocker) locker = NULL; ++ ++ g_return_if_fail (GS_IS_PLUGIN (plugin)); ++ g_return_if_fail (GS_IS_APP_LIST (list)); ++ ++ priv = gs_plugin_get_instance_private (plugin); ++ locker = g_mutex_locker_new (&priv->cache_mutex); ++ ++ g_hash_table_iter_init (&iter, priv->cache); ++ while (g_hash_table_iter_next (&iter, NULL, &value)) { ++ GsApp *app = value; ++ ++ if (state == AS_APP_STATE_UNKNOWN || ++ state == gs_app_get_state (app)) ++ gs_app_list_add (list, app); ++ } ++} ++ ++/** + * gs_plugin_cache_remove: + * @plugin: a #GsPlugin + * @key: a key which matches +diff -up gnome-software-3.36.1/lib/gs-plugin.h.1888404 gnome-software-3.36.1/lib/gs-plugin.h +--- gnome-software-3.36.1/lib/gs-plugin.h.1888404 2021-05-24 13:50:34.302612057 +0200 ++++ gnome-software-3.36.1/lib/gs-plugin.h 2021-05-24 13:50:39.160609728 +0200 +@@ -102,6 +102,9 @@ gboolean gs_plugin_check_distro_id (Gs + const gchar *distro_id); + GsApp *gs_plugin_cache_lookup (GsPlugin *plugin, + const gchar *key); ++void gs_plugin_cache_lookup_by_state (GsPlugin *plugin, ++ GsAppList *list, ++ AsAppState state); + void gs_plugin_cache_add (GsPlugin *plugin, + const gchar *key, + GsApp *app); +diff -up gnome-software-3.36.1/lib/gs-plugin-loader.c.1888404 gnome-software-3.36.1/lib/gs-plugin-loader.c +--- gnome-software-3.36.1/lib/gs-plugin-loader.c.1888404 2021-05-24 13:50:34.302612057 +0200 ++++ gnome-software-3.36.1/lib/gs-plugin-loader.c 2021-05-24 13:50:39.159609728 +0200 +@@ -1273,7 +1273,7 @@ static gboolean + gs_plugin_loader_app_is_valid_updatable (GsApp *app, gpointer user_data) + { + return gs_plugin_loader_app_is_valid (app, user_data) && +- gs_app_is_updatable (app); ++ (gs_app_is_updatable (app) || gs_app_get_state (app) == AS_APP_STATE_INSTALLING); + } + + static gboolean +diff -up gnome-software-3.36.1/plugins/flatpak/gs-plugin-flatpak.c.1888404 gnome-software-3.36.1/plugins/flatpak/gs-plugin-flatpak.c +--- gnome-software-3.36.1/plugins/flatpak/gs-plugin-flatpak.c.1888404 2021-05-24 13:50:34.310612054 +0200 ++++ gnome-software-3.36.1/plugins/flatpak/gs-plugin-flatpak.c 2021-05-24 13:50:39.161609727 +0200 +@@ -218,6 +218,7 @@ gs_plugin_add_updates (GsPlugin *plugin, + if (!gs_flatpak_add_updates (flatpak, list, cancellable, error)) + return FALSE; + } ++ gs_plugin_cache_lookup_by_state (plugin, list, AS_APP_STATE_INSTALLING); + return TRUE; + } + +diff -up gnome-software-3.36.1/src/gs-updates-page.c.1888404 gnome-software-3.36.1/src/gs-updates-page.c +--- gnome-software-3.36.1/src/gs-updates-page.c.1888404 2021-05-24 13:50:39.161609727 +0200 ++++ gnome-software-3.36.1/src/gs-updates-page.c 2021-05-24 13:51:00.211599638 +0200 +@@ -139,7 +139,8 @@ gs_updates_page_invalidate (GsUpdatesPag + static GsUpdatesSectionKind + _get_app_section (GsApp *app) + { +- if (gs_app_get_state (app) == AS_APP_STATE_UPDATABLE_LIVE) { ++ if (gs_app_get_state (app) == AS_APP_STATE_UPDATABLE_LIVE || ++ gs_app_get_state (app) == AS_APP_STATE_INSTALLING) { + if (gs_app_get_kind (app) == AS_APP_KIND_FIRMWARE) + return GS_UPDATES_SECTION_KIND_ONLINE_FIRMWARE; + return GS_UPDATES_SECTION_KIND_ONLINE; diff --git a/SPECS/gnome-software.spec b/SPECS/gnome-software.spec index 56a923e..273f8bc 100644 --- a/SPECS/gnome-software.spec +++ b/SPECS/gnome-software.spec @@ -14,7 +14,7 @@ Name: gnome-software Version: 3.36.1 -Release: 5%{?dist} +Release: 10%{?dist} Summary: A software center for GNOME License: GPLv2+ @@ -35,6 +35,12 @@ Patch4: 0001-Improve-the-heuristic-for-detecting-old-style-AppStr.patch # Fix flatpak updates and removals when same ref occurs in multiple remotes Patch5: gnome-software-3.36.1-unrelated-refs.patch +Patch6: be-able-to-disable-odrs.patch +Patch7: crash-when-run-as-root.patch +Patch8: gs-updates-page-keep-showing-installing-apps.patch +Patch9: flatpak-same-runtime-origin.patch +Patch10: devel-install-headers.patch + BuildRequires: gcc BuildRequires: gettext BuildRequires: libxslt @@ -221,6 +227,21 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/*.desktop %{_datadir}/gtk-doc/html/gnome-software %changelog +* Thu Jul 08 2021 Milan Crha - 3.36.1-10 +- Resolves: #1978505 (Development package is missing important header files) + +* Mon Jun 21 2021 Milan Crha - 3.36.1-9 +- Resolves: #1972545 (flatpak: Prefer runtime from the same origin as the application) + +* Mon May 24 2021 Milan Crha - 3.36.1-8 +- Resolves: #1888404 (Updates page hides ongoing updates on refresh) + +* Mon May 24 2021 Milan Crha - 3.36.1-7 +- Resolves: #1873297 (Crash when run as root) + +* Mon May 24 2021 Milan Crha - 3.36.1-6 +- Resolves: #1791478 (Cannot completely disable ODRS (GNOME Ratings)) + * Wed Feb 17 2021 Milan Crha - 3.36.1-5 - Fix flatpak updates and removals when same ref occurs in multiple remotes - Resolves: #1888407