From: Jakub Bogusz Date: Tue, 14 May 2013 14:18:40 +0000 (+0200) Subject: - updated to 2.36.2 X-Git-Tag: auto/th/glib2-2.36.2-1 X-Git-Url: http://git.pld-linux.org/gitweb.cgi?p=packages%2Fglib2.git;a=commitdiff_plain;h=c514dc9d84201b69ee0ef68a5e385f75238bbc8f - updated to 2.36.2 - removed obsolete bug-698081 patch --- diff --git a/bug-698081.patch b/bug-698081.patch deleted file mode 100644 index 31b2fe4..0000000 --- a/bug-698081.patch +++ /dev/null @@ -1,134 +0,0 @@ -From eb860fd898a6a2bd86c11d245294cd0e8cd4304b Mon Sep 17 00:00:00 2001 -From: Ryan Lortie -Date: Tue, 23 Apr 2013 17:26:48 +0000 -Subject: Partially revert "Merge waitpid() from g_spawn_sync into gmain()" - -This partially reverts commit ce0022933c255313e010b27f977f4ae02aad1e7e. - -It used to be safe to use g_spawn_sync() from processes that had their -own SIGCHLD handler because it simply called wait(). When it was -changed to depend on the GLib child watching infrastructure this meant -that GLib had to own the SIGCHLD handler. - -This caused hangs in at least Pidgin. - -The patch contained two other improvements to the child watch code which -we want to keep, so only revert the changes to gspawn itself. - -https://bugzilla.gnome.org/show_bug.cgi?id=698081 ---- -(limited to 'glib/gspawn.c') - -diff --git a/glib/gspawn.c b/glib/gspawn.c -index 381ed5c..01cedf6 100644 ---- a/glib/gspawn.c -+++ b/glib/gspawn.c -@@ -47,7 +47,6 @@ - - #include "genviron.h" - #include "gmem.h" --#include "gmain.h" - #include "gshell.h" - #include "gstring.h" - #include "gstrfuncs.h" -@@ -207,21 +206,6 @@ read_data (GString *str, - } - } - --typedef struct { -- GMainLoop *loop; -- gint *status_p; --} SyncWaitpidData; -- --static void --on_sync_waitpid (GPid pid, -- gint status, -- gpointer user_data) --{ -- SyncWaitpidData *data = user_data; -- *(data->status_p) = status; -- g_main_loop_quit (data->loop); --} -- - /** - * g_spawn_sync: - * @working_directory: (allow-none): child's current working directory, or %NULL to inherit parent's -@@ -277,7 +261,6 @@ g_spawn_sync (const gchar *working_directory, - GString *errstr = NULL; - gboolean failed; - gint status; -- SyncWaitpidData waitpid_data; - - g_return_val_if_fail (argv != NULL, FALSE); - g_return_val_if_fail (!(flags & G_SPAWN_DO_NOT_REAP_CHILD), FALSE); -@@ -410,32 +393,45 @@ g_spawn_sync (const gchar *working_directory, - close_and_invalidate (&outpipe); - if (errpipe >= 0) - close_and_invalidate (&errpipe); -- -- /* Now create a temporary main context and loop, with just one -- * waitpid source. We used to invoke waitpid() directly here, but -- * this way we unify with the worker thread in gmain.c. -+ -+ /* Wait for child to exit, even if we have -+ * an error pending. - */ -- { -- GMainContext *context; -- GMainLoop *loop; -- GSource *source; -- -- context = g_main_context_new (); -- loop = g_main_loop_new (context, TRUE); -+ again: -+ -+ ret = waitpid (pid, &status, 0); - -- waitpid_data.loop = loop; -- waitpid_data.status_p = &status; -- -- source = g_child_watch_source_new (pid); -- g_source_set_callback (source, (GSourceFunc)on_sync_waitpid, &waitpid_data, NULL); -- g_source_attach (source, context); -- g_source_unref (source); -- -- g_main_loop_run (loop); -+ if (ret < 0) -+ { -+ if (errno == EINTR) -+ goto again; -+ else if (errno == ECHILD) -+ { -+ if (exit_status) -+ { -+ g_warning ("In call to g_spawn_sync(), exit status of a child process was requested but ECHILD was received by waitpid(). Most likely the process is ignoring SIGCHLD, or some other thread is invoking waitpid() with a nonpositive first argument; either behavior can break applications that use g_spawn_sync either directly or indirectly."); -+ } -+ else -+ { -+ /* We don't need the exit status. */ -+ } -+ } -+ else -+ { -+ if (!failed) /* avoid error pileups */ -+ { -+ int errsv = errno; - -- g_main_context_unref (context); -- g_main_loop_unref (loop); -- } -+ failed = TRUE; -+ -+ g_set_error (error, -+ G_SPAWN_ERROR, -+ G_SPAWN_ERROR_READ, -+ _("Unexpected error in waitpid() (%s)"), -+ g_strerror (errsv)); -+ } -+ } -+ } - - if (failed) - { --- -cgit v0.9.1 diff --git a/glib2.spec b/glib2.spec index a285c30..e2f4c00 100644 --- a/glib2.spec +++ b/glib2.spec @@ -18,15 +18,14 @@ Summary(pt_BR.UTF-8): Conjunto de funções gráficas utilitárias Summary(tr.UTF-8): Yararlı ufak yordamlar kitaplığı Summary(zh_CN.UTF-8): 实用工具函数库 Name: glib2 -Version: 2.36.1 -Release: 3 +Version: 2.36.2 +Release: 1 Epoch: 1 License: LGPL v2+ Group: Libraries Source0: http://ftp.gnome.org/pub/GNOME/sources/glib/2.36/glib-%{version}.tar.xz -# Source0-md5: a3bbee44a13facb5a3cab18be5ece14c +# Source0-md5: d791774ac49eaf8ba59792427bb74af7 Patch0: %{name}-makefile.patch -Patch1: bug-698081.patch URL: http://www.gtk.org/ BuildRequires: autoconf >= 2.62 BuildRequires: automake >= 1:1.11 @@ -209,7 +208,6 @@ Bashowe uzupełnianie nazw dla narzędzi gio: gdbus i gsettings. %prep %setup -q -n glib-%{version} %patch0 -p1 -%patch1 -p1 %if %{without apidocs} %{__sed} -e '/SUBDIRS/s/docs//' -i Makefile.am