diff --git a/0002-gs-update-monitor_automatically_install_application_updates.patch b/0002-gs-update-monitor_automatically_install_application_updates.patch new file mode 100644 index 0000000..aa98d80 --- /dev/null +++ b/0002-gs-update-monitor_automatically_install_application_updates.patch @@ -0,0 +1,89 @@ +From 69ba099e9d49979a6dacdcd879d98f72744d298a Mon Sep 17 00:00:00 2001 +From: Milan Crha +Date: Tue, 11 May 2021 11:13:52 +0200 +Subject: [PATCH] gs-update-monitor: Automatically install application updates + +The application updates, so called online updates, should be installed immediately +when found, when the user has enabled automatic updates. + +Closes https://gitlab.gnome.org/GNOME/gnome-software/-/issues/1248 +--- + src/gs-update-monitor.c | 47 +++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 45 insertions(+), 2 deletions(-) + +diff --git a/src/gs-update-monitor.c b/src/gs-update-monitor.c +index b3209185d..234c7de95 100644 +--- a/src/gs-update-monitor.c ++++ b/src/gs-update-monitor.c +@@ -475,6 +475,7 @@ get_updates_finished_cb (GObject *object, GAsyncResult *res, gpointer data) + guint64 security_timestamp_old = 0; + g_autoptr(GError) error = NULL; + g_autoptr(GsAppList) apps = NULL; ++ gboolean should_download; + + /* get result */ + apps = gs_plugin_loader_job_process_finish (GS_PLUGIN_LOADER (object), res, &error); +@@ -509,7 +510,9 @@ get_updates_finished_cb (GObject *object, GAsyncResult *res, gpointer data) + + g_debug ("got %u updates", gs_app_list_length (apps)); + +- if (should_download_updates (monitor) && ++ should_download = should_download_updates (monitor); ++ ++ if (should_download && + (security_timestamp_old != security_timestamp || + check_if_timestamp_more_than_days_ago (monitor, "install-timestamp", 14))) { + g_autoptr(GsPluginJob) plugin_job = NULL; +@@ -528,8 +531,48 @@ get_updates_finished_cb (GObject *object, GAsyncResult *res, gpointer data) + download_finished_cb, + monitor); + } else { +- notify_about_pending_updates (monitor, apps); ++ g_autoptr(GsAppList) update_online = NULL; ++ g_autoptr(GsAppList) update_offline = NULL; ++ GsAppList *notify_list; ++ ++ update_online = gs_app_list_new (); ++ update_offline = gs_app_list_new (); ++ for (guint i = 0; i < gs_app_list_length (apps); i++) { ++ GsApp *app = gs_app_list_index (apps, i); ++ if (_should_auto_update (app)) { ++ g_debug ("download for auto-update %s", gs_app_get_unique_id (app)); ++ gs_app_list_add (update_online, app); ++ } else { ++ gs_app_list_add (update_offline, app); ++ } ++ } ++ ++ g_debug ("Received %u apps to update, %u are online and %u offline updates; will%s download online updates", ++ gs_app_list_length (apps), ++ gs_app_list_length (update_online), ++ gs_app_list_length (update_offline), ++ should_download ? "" : " not"); ++ ++ if (should_download && gs_app_list_length (update_online) > 0) { ++ g_autoptr(GsPluginJob) plugin_job = NULL; ++ ++ plugin_job = gs_plugin_job_newv (GS_PLUGIN_ACTION_DOWNLOAD, ++ "list", update_online, ++ NULL); ++ g_debug ("Getting %u online updates", gs_app_list_length (update_online)); ++ gs_plugin_loader_job_process_async (monitor->plugin_loader, ++ plugin_job, ++ monitor->cancellable, ++ download_finished_cb, ++ monitor); ++ } ++ ++ if (should_download) ++ notify_list = update_offline; ++ else ++ notify_list = apps; + ++ notify_about_pending_updates (monitor, notify_list); + reset_update_notification_timestamp (monitor); + } + } +-- +GitLab + diff --git a/gnome-software.spec b/gnome-software.spec index 347fd29..9b1865d 100644 --- a/gnome-software.spec +++ b/gnome-software.spec @@ -12,7 +12,7 @@ Name: gnome-software Version: 40.2 -Release: 1%{?dist} +Release: 2%{?dist} Summary: A software center for GNOME License: GPLv2+ @@ -20,6 +20,7 @@ URL: https://wiki.gnome.org/Apps/Software Source0: https://download.gnome.org/sources/gnome-software/40/%{name}-%{tarball_version}.tar.xz Patch01: 0001-crash-with-broken-theme.patch +Patch02: 0002-gs-update-monitor_automatically_install_application_updates.patch BuildRequires: appstream-devel >= %{appstream_version} BuildRequires: gcc @@ -202,6 +203,9 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/*.desktop %{_datadir}/gtk-doc/html/gnome-software %changelog +* Wed Jun 23 2021 Milan Crha - 40.2-2 +- Add patch to automatically install application updates (i#1248) + * Fri Jun 04 2021 Milan Crha - 40.2-1 - Update to 40.2