Refresh GDesktopAppInfo patchset

Resolves: #1951126

(cherry picked from Fedora commit a1b323b04a3442cfe9762e684505bfa4446d0fac)
This commit is contained in:
Michael Catanzaro 2021-04-28 10:02:04 -05:00 committed by Kalev Lember
parent 7f0a2ae49a
commit 64b41c01a2
5 changed files with 39 additions and 46 deletions

View File

@ -1,4 +1,4 @@
From 156ddbc49bc432262fd022efd9831f789fa32e64 Mon Sep 17 00:00:00 2001 From 5e42384cc4499293259a8a37a737014a56de34df Mon Sep 17 00:00:00 2001
From: Benjamin Berg <bberg@redhat.com> From: Benjamin Berg <bberg@redhat.com>
Date: Fri, 23 Oct 2020 18:20:01 +0200 Date: Fri, 23 Oct 2020 18:20:01 +0200
Subject: [PATCH 1/4] tests: Iterate mainloop during launch test Subject: [PATCH 1/4] tests: Iterate mainloop during launch test
@ -14,7 +14,7 @@ session bus.
1 file changed, 1 insertion(+) 1 file changed, 1 insertion(+)
diff --git a/gio/tests/desktop-app-info.c b/gio/tests/desktop-app-info.c diff --git a/gio/tests/desktop-app-info.c b/gio/tests/desktop-app-info.c
index 98601de4f..fb87bf2c2 100644 index fcc29c579..743230cbb 100644
--- a/gio/tests/desktop-app-info.c --- a/gio/tests/desktop-app-info.c
+++ b/gio/tests/desktop-app-info.c +++ b/gio/tests/desktop-app-info.c
@@ -334,6 +334,7 @@ wait_for_file (const gchar *want_this, @@ -334,6 +334,7 @@ wait_for_file (const gchar *want_this,
@ -26,5 +26,5 @@ index 98601de4f..fb87bf2c2 100644
g_assert_cmpuint (retries, >, 0); g_assert_cmpuint (retries, >, 0);
retries--; retries--;
-- --
2.29.2 2.31.1

View File

@ -1,4 +1,4 @@
From 1e4e58a73f12cded2d67f58571ea42906f3c3f94 Mon Sep 17 00:00:00 2001 From ba3b85a8fea0151e74de50e841a7f16f9b077a56 Mon Sep 17 00:00:00 2001
From: Benjamin Berg <bberg@redhat.com> From: Benjamin Berg <bberg@redhat.com>
Date: Mon, 27 Jul 2020 22:22:32 +0200 Date: Mon, 27 Jul 2020 22:22:32 +0200
Subject: [PATCH 2/4] gdesktopappinfo: Move launched applications into Subject: [PATCH 2/4] gdesktopappinfo: Move launched applications into
@ -25,11 +25,11 @@ forget" manner, which is fine in most cases, but means that "gio open"
will fail to move the child into the new scope as gio quits before the will fail to move the child into the new scope as gio quits before the
DBus call finishes. DBus call finishes.
--- ---
gio/gdesktopappinfo.c | 263 ++++++++++++++++++++++++++++++++++++------ gio/gdesktopappinfo.c | 264 ++++++++++++++++++++++++++++++++++++------
1 file changed, 228 insertions(+), 35 deletions(-) 1 file changed, 227 insertions(+), 37 deletions(-)
diff --git a/gio/gdesktopappinfo.c b/gio/gdesktopappinfo.c diff --git a/gio/gdesktopappinfo.c b/gio/gdesktopappinfo.c
index 1a4b97918..2f1e6828b 100644 index 1a4b97918..afdcd42ac 100644
--- a/gio/gdesktopappinfo.c --- a/gio/gdesktopappinfo.c
+++ b/gio/gdesktopappinfo.c +++ b/gio/gdesktopappinfo.c
@@ -2730,6 +2730,148 @@ notify_desktop_launch (GDBusConnection *session_bus, @@ -2730,6 +2730,148 @@ notify_desktop_launch (GDBusConnection *session_bus,
@ -250,7 +250,7 @@ index 1a4b97918..2f1e6828b 100644
if (launch_context) if (launch_context)
{ {
GList *launched_files = create_files_for_uris (launched_uris); GList *launched_files = create_files_for_uris (launched_uris);
@@ -2837,38 +2971,96 @@ g_desktop_app_info_launch_uris_with_spawn (GDesktopAppInfo *info, @@ -2837,38 +2971,93 @@ g_desktop_app_info_launch_uris_with_spawn (GDesktopAppInfo *info,
* with a wrapper program (grep the GLib git history for * with a wrapper program (grep the GLib git history for
* `gio-launch-desktop` for an example of this which could be * `gio-launch-desktop` for an example of this which could be
* resurrected). */ * resurrected). */
@ -269,10 +269,7 @@ index 1a4b97918..2f1e6828b 100644
for (i = 0; i < argc; i++) for (i = 0; i < argc; i++)
- wrapped_argv[i + G_N_ELEMENTS (wrapper_argv)] = g_steal_pointer (&argv[i]); - wrapped_argv[i + G_N_ELEMENTS (wrapper_argv)] = g_steal_pointer (&argv[i]);
+ wrapped_argv[i + 6] = g_steal_pointer (&argv[i]); + wrapped_argv[i + 6] = g_steal_pointer (&argv[i]);
+
- wrapped_argv[i + G_N_ELEMENTS (wrapper_argv)] = NULL;
- g_free (argv);
- argv = NULL;
+ wrapped_argv[i + 6] = NULL; + wrapped_argv[i + 6] = NULL;
+ g_clear_pointer (&argv, g_free); + g_clear_pointer (&argv, g_free);
+ +
@ -288,7 +285,10 @@ index 1a4b97918..2f1e6828b 100644
+ +
+ /* Set CLOEXEC on the write pipe, so we don't need to deal with it in the child. */ + /* Set CLOEXEC on the write pipe, so we don't need to deal with it in the child. */
+ fcntl (wrapper_data.pipe[1], F_SETFD, FD_CLOEXEC); + fcntl (wrapper_data.pipe[1], F_SETFD, FD_CLOEXEC);
+
- wrapped_argv[i + G_N_ELEMENTS (wrapper_argv)] = NULL;
- g_free (argv);
- argv = NULL;
+ if (!(spawn_flags & G_SPAWN_LEAVE_DESCRIPTORS_OPEN)) + if (!(spawn_flags & G_SPAWN_LEAVE_DESCRIPTORS_OPEN))
+ { + {
+ /* In this case, we use a setup function (which could probably also + /* In this case, we use a setup function (which could probably also
@ -332,11 +332,10 @@ index 1a4b97918..2f1e6828b 100644
if (sn_id) if (sn_id)
g_app_launch_context_launch_failed (launch_context, sn_id); g_app_launch_context_launch_failed (launch_context, sn_id);
g_free (sn_id); - g_free (sn_id);
g_list_free (launched_uris); - g_list_free (launched_uris);
-
- goto out; goto out;
+ goto err;
} }
+#if defined(__linux__) && !defined(__BIONIC__) +#if defined(__linux__) && !defined(__BIONIC__)
@ -357,7 +356,7 @@ index 1a4b97918..2f1e6828b 100644
if (pid_callback != NULL) if (pid_callback != NULL)
pid_callback (info, pid, pid_callback_data); pid_callback (info, pid, pid_callback_data);
@@ -2893,19 +3085,20 @@ g_desktop_app_info_launch_uris_with_spawn (GDesktopAppInfo *info, @@ -2893,19 +3082,20 @@ g_desktop_app_info_launch_uris_with_spawn (GDesktopAppInfo *info,
sn_id, sn_id,
launched_uris); launched_uris);
@ -385,5 +384,5 @@ index 1a4b97918..2f1e6828b 100644
return completed; return completed;
} }
-- --
2.29.2 2.31.1

View File

@ -1,4 +1,4 @@
From d13a15a0c569348cfd5aa207ee219b73117e938c Mon Sep 17 00:00:00 2001 From cd67a1b0256d2397dac0836e154f3449b63a6b19 Mon Sep 17 00:00:00 2001
From: Benjamin Berg <bberg@redhat.com> From: Benjamin Berg <bberg@redhat.com>
Date: Tue, 28 Jul 2020 12:11:13 +0200 Date: Tue, 28 Jul 2020 12:11:13 +0200
Subject: [PATCH 3/4] gdesktopappinfo: Handle task completion from spawn Subject: [PATCH 3/4] gdesktopappinfo: Handle task completion from spawn
@ -11,11 +11,11 @@ This fixes the behaviour of the previous commit which would not
correctly move the process into the scope if the application exited correctly move the process into the scope if the application exited
right after the task returned. right after the task returned.
--- ---
gio/gdesktopappinfo.c | 214 +++++++++++++++++++++++++++++------------- gio/gdesktopappinfo.c | 212 +++++++++++++++++++++++++++++-------------
1 file changed, 147 insertions(+), 67 deletions(-) 1 file changed, 146 insertions(+), 66 deletions(-)
diff --git a/gio/gdesktopappinfo.c b/gio/gdesktopappinfo.c diff --git a/gio/gdesktopappinfo.c b/gio/gdesktopappinfo.c
index 2f1e6828b..743027422 100644 index afdcd42ac..8d0f1688e 100644
--- a/gio/gdesktopappinfo.c --- a/gio/gdesktopappinfo.c
+++ b/gio/gdesktopappinfo.c +++ b/gio/gdesktopappinfo.c
@@ -2849,11 +2849,17 @@ create_systemd_scope (GDBusConnection *session_bus, @@ -2849,11 +2849,17 @@ create_systemd_scope (GDBusConnection *session_bus,
@ -160,16 +160,7 @@ index 2f1e6828b..743027422 100644
{ {
#if defined(__linux__) && !defined(__BIONIC__) #if defined(__linux__) && !defined(__BIONIC__)
close (wrapper_data.pipe[0]); close (wrapper_data.pipe[0]);
@@ -3043,7 +3091,7 @@ g_desktop_app_info_launch_uris_with_spawn (GDesktopAppInfo *info, @@ -3049,11 +3097,29 @@ g_desktop_app_info_launch_uris_with_spawn (GDesktopAppInfo *info,
g_free (sn_id);
g_list_free (launched_uris);
- goto err;
+ goto out;
}
#if defined(__linux__) && !defined(__BIONIC__)
@@ -3052,11 +3100,29 @@ g_desktop_app_info_launch_uris_with_spawn (GDesktopAppInfo *info,
close (wrapper_data.pipe[0]); close (wrapper_data.pipe[0]);
if (session_bus) if (session_bus)
@ -204,7 +195,7 @@ index 2f1e6828b..743027422 100644
else else
close (wrapper_data.pipe[1]); close (wrapper_data.pipe[1]);
#endif #endif
@@ -3091,8 +3157,6 @@ g_desktop_app_info_launch_uris_with_spawn (GDesktopAppInfo *info, @@ -3088,8 +3154,6 @@ g_desktop_app_info_launch_uris_with_spawn (GDesktopAppInfo *info,
} }
while (dup_uris != NULL); while (dup_uris != NULL);
@ -213,7 +204,7 @@ index 2f1e6828b..743027422 100644
out: out:
g_strfreev (argv); g_strfreev (argv);
g_strfreev (envp); g_strfreev (envp);
@@ -3100,7 +3164,52 @@ out: @@ -3097,7 +3161,52 @@ out:
g_list_free (launched_uris); g_list_free (launched_uris);
g_free (sn_id); g_free (sn_id);
@ -267,7 +258,7 @@ index 2f1e6828b..743027422 100644
} }
static gchar * static gchar *
@@ -3249,17 +3358,9 @@ g_desktop_app_info_launch_uris_internal (GAppInfo *appinfo, @@ -3246,17 +3355,9 @@ g_desktop_app_info_launch_uris_internal (GAppInfo *appinfo,
success = g_desktop_app_info_launch_uris_with_spawn (info, session_bus, info->exec, uris, launch_context, success = g_desktop_app_info_launch_uris_with_spawn (info, session_bus, info->exec, uris, launch_context,
spawn_flags, user_setup, user_setup_data, spawn_flags, user_setup, user_setup_data,
pid_callback, pid_callback_data, pid_callback, pid_callback_data,
@ -287,7 +278,7 @@ index 2f1e6828b..743027422 100644
return success; return success;
} }
@@ -3313,18 +3414,6 @@ launch_uris_with_dbus_cb (GObject *object, @@ -3310,18 +3411,6 @@ launch_uris_with_dbus_cb (GObject *object,
g_object_unref (task); g_object_unref (task);
} }
@ -306,7 +297,7 @@ index 2f1e6828b..743027422 100644
static void static void
launch_uris_bus_get_cb (GObject *object, launch_uris_bus_get_cb (GObject *object,
GAsyncResult *result, GAsyncResult *result,
@@ -3333,12 +3422,20 @@ launch_uris_bus_get_cb (GObject *object, @@ -3330,12 +3419,20 @@ launch_uris_bus_get_cb (GObject *object,
GTask *task = G_TASK (user_data); GTask *task = G_TASK (user_data);
GDesktopAppInfo *info = G_DESKTOP_APP_INFO (g_task_get_source_object (task)); GDesktopAppInfo *info = G_DESKTOP_APP_INFO (g_task_get_source_object (task));
LaunchUrisData *data = g_task_get_task_data (task); LaunchUrisData *data = g_task_get_task_data (task);
@ -328,7 +319,7 @@ index 2f1e6828b..743027422 100644
if (session_bus && info->app_id) if (session_bus && info->app_id)
{ {
/* FIXME: The g_document_portal_add_documents() function, which is called /* FIXME: The g_document_portal_add_documents() function, which is called
@@ -3346,34 +3443,21 @@ launch_uris_bus_get_cb (GObject *object, @@ -3343,34 +3440,21 @@ launch_uris_bus_get_cb (GObject *object,
* uses blocking calls. * uses blocking calls.
*/ */
g_desktop_app_info_launch_uris_with_dbus (info, session_bus, g_desktop_app_info_launch_uris_with_dbus (info, session_bus,
@ -367,7 +358,7 @@ index 2f1e6828b..743027422 100644
g_clear_object (&session_bus); g_clear_object (&session_bus);
} }
@@ -5189,16 +5273,12 @@ g_desktop_app_info_launch_action (GDesktopAppInfo *info, @@ -5186,16 +5270,12 @@ g_desktop_app_info_launch_action (GDesktopAppInfo *info,
if (exec_line) if (exec_line)
g_desktop_app_info_launch_uris_with_spawn (info, session_bus, exec_line, NULL, launch_context, g_desktop_app_info_launch_uris_with_spawn (info, session_bus, exec_line, NULL, launch_context,
_SPAWN_FLAGS_DEFAULT, NULL, NULL, NULL, NULL, _SPAWN_FLAGS_DEFAULT, NULL, NULL, NULL, NULL,
@ -387,5 +378,5 @@ index 2f1e6828b..743027422 100644
/* Epilogue {{{1 */ /* Epilogue {{{1 */
-- --
2.29.2 2.31.1

View File

@ -1,4 +1,4 @@
From 67d764ecd52b4f7e972eb355a41cd90b8dcca10c Mon Sep 17 00:00:00 2001 From 8da8a3ef6df8af6de8bd388192bebe8b51b3e782 Mon Sep 17 00:00:00 2001
From: Benjamin Berg <bberg@redhat.com> From: Benjamin Berg <bberg@redhat.com>
Date: Thu, 17 Sep 2020 17:35:58 +0200 Date: Thu, 17 Sep 2020 17:35:58 +0200
Subject: [PATCH 4/4] gdesktopappinfo: Add SourcePath= to transient systemd Subject: [PATCH 4/4] gdesktopappinfo: Add SourcePath= to transient systemd
@ -14,7 +14,7 @@ See https://invent.kde.org/frameworks/kio/-/merge_requests/124
1 file changed, 13 insertions(+) 1 file changed, 13 insertions(+)
diff --git a/gio/gdesktopappinfo.c b/gio/gdesktopappinfo.c diff --git a/gio/gdesktopappinfo.c b/gio/gdesktopappinfo.c
index 743027422..1b763b76c 100644 index 8d0f1688e..a833de4e6 100644
--- a/gio/gdesktopappinfo.c --- a/gio/gdesktopappinfo.c
+++ b/gio/gdesktopappinfo.c +++ b/gio/gdesktopappinfo.c
@@ -2777,6 +2777,7 @@ create_systemd_scope (GDBusConnection *session_bus, @@ -2777,6 +2777,7 @@ create_systemd_scope (GDBusConnection *session_bus,
@ -52,5 +52,5 @@ index 743027422..1b763b76c 100644
"(sv)", "(sv)",
"PIDs", "PIDs",
-- --
2.29.2 2.31.1

View File

@ -1,6 +1,6 @@
Name: glib2 Name: glib2
Version: 2.68.1 Version: 2.68.1
Release: 1%{?dist} Release: 2%{?dist}
Summary: A library of handy utility functions Summary: A library of handy utility functions
License: LGPLv2+ License: LGPLv2+
@ -241,6 +241,9 @@ glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || :
%{_datadir}/installed-tests %{_datadir}/installed-tests
%changelog %changelog
* Wed Apr 28 2021 Michael Catanzaro <mcatanzaro@redhat.com> - 2.68.1-2
- Refresh GDesktopAppInfo patchset
* Thu Apr 08 2021 Kalev Lember <klember@redhat.com> - 2.68.1-1 * Thu Apr 08 2021 Kalev Lember <klember@redhat.com> - 2.68.1-1
- Update to 2.68.1 - Update to 2.68.1