svn commit: r460371 - in branches/2018Q1/devel/glib20: . files

Koop Mast kwm at FreeBSD.org
Tue Jan 30 07:04:22 UTC 2018


Author: kwm
Date: Tue Jan 30 07:04:21 2018
New Revision: 460371
URL: https://svnweb.freebsd.org/changeset/ports/460371

Log:
  MFH: r460052 r460230
  
  Update glib to 2.50.3.
  
  Also redo the kqueue patches. Now we patch files only once, and add some
  bits that got lost somewhere (which is probably my fault). Which where
  causing crashes when for example nautilus or thundar where monitoring
  directories and files where added/removed.
  
  PR:		199872
  
  Fix another crash bug in the kqueue backend.
  
  PR:		199872 217946
  
  Approved by:	ports-secteam (swills@)

Added:
  branches/2018Q1/devel/glib20/files/patch-gio_kqueue_gkqueuefilemonitor.c
     - copied unchanged from r460052, head/devel/glib20/files/patch-gio_kqueue_gkqueuefilemonitor.c
  branches/2018Q1/devel/glib20/files/patch-gio_kqueue_kqueue-helper.c
     - copied, changed from r460052, head/devel/glib20/files/patch-gio_kqueue_kqueue-helper.c
Deleted:
  branches/2018Q1/devel/glib20/files/patch-bug739424
  branches/2018Q1/devel/glib20/files/patch-bug778515
Modified:
  branches/2018Q1/devel/glib20/Makefile
  branches/2018Q1/devel/glib20/distinfo
Directory Properties:
  branches/2018Q1/   (props changed)

Modified: branches/2018Q1/devel/glib20/Makefile
==============================================================================
--- branches/2018Q1/devel/glib20/Makefile	Tue Jan 30 06:16:02 2018	(r460370)
+++ branches/2018Q1/devel/glib20/Makefile	Tue Jan 30 07:04:21 2018	(r460371)
@@ -2,8 +2,8 @@
 # $FreeBSD$
 
 PORTNAME=	glib
-PORTVERSION=	2.50.2
-PORTREVISION=	7
+PORTVERSION=	2.50.3
+PORTREVISION=	1
 PORTEPOCH=	1
 CATEGORIES=	devel
 MASTER_SITES=	GNOME
@@ -39,7 +39,7 @@ INSTALL_TARGET=	install-strip
 
 SHEBANG_FILES=	*/*.pl
 
-LIBVERSION=	0.5000.2
+LIBVERSION=	0.5000.3
 PLIST_SUB+=	LIBVERSION=${LIBVERSION}
 
 glib_MAN=	gtester.1 gtester-report.1 glib-gettextize.1

Modified: branches/2018Q1/devel/glib20/distinfo
==============================================================================
--- branches/2018Q1/devel/glib20/distinfo	Tue Jan 30 06:16:02 2018	(r460370)
+++ branches/2018Q1/devel/glib20/distinfo	Tue Jan 30 07:04:21 2018	(r460371)
@@ -1,3 +1,3 @@
-TIMESTAMP = 1491129093
-SHA256 (gnome2/glib-2.50.2.tar.xz) = be68737c1f268c05493e503b3b654d2b7f43d7d0b8c5556f7e4651b870acfbf5
-SIZE (gnome2/glib-2.50.2.tar.xz) = 7582312
+TIMESTAMP = 1516046336
+SHA256 (gnome2/glib-2.50.3.tar.xz) = 82ee94bf4c01459b6b00cb9db0545c2237921e3060c0b74cff13fbc020cfd999
+SIZE (gnome2/glib-2.50.3.tar.xz) = 7589284

Copied: branches/2018Q1/devel/glib20/files/patch-gio_kqueue_gkqueuefilemonitor.c (from r460052, head/devel/glib20/files/patch-gio_kqueue_gkqueuefilemonitor.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/2018Q1/devel/glib20/files/patch-gio_kqueue_gkqueuefilemonitor.c	Tue Jan 30 07:04:21 2018	(r460371, copy of r460052, head/devel/glib20/files/patch-gio_kqueue_gkqueuefilemonitor.c)
@@ -0,0 +1,45 @@
+https://bugzilla.gnome.org/show_bug.cgi?id=739424
+https://bug739424.bugzilla-attachments.gnome.org/attachment.cgi?id=351191
+
+--- gio/kqueue/gkqueuefilemonitor.c.orig	2018-01-15 21:00:32.535064000 +0100
++++ gio/kqueue/gkqueuefilemonitor.c	2018-01-15 21:07:20.920334000 +0100
+@@ -29,6 +29,15 @@
+ #include <gio/gfile.h>
+ #include <gio/giomodule.h>
+ 
++/*
++ * Because ``kqueue_sub'' are not refcounted, we need
++ * ensure no other thread is getting a reference to
++ * the element we want to free.
++ *
++ * That's why _kh_cancel_sub() must be called with
++ * this lock held to prevent a race.
++ */
++G_LOCK_EXTERN (hash_lock);
+ 
+ struct _GKqueueFileMonitor
+ {
+@@ -80,9 +89,11 @@ g_kqueue_file_monitor_finalize (GObject *object)
+ 
+   if (kqueue_monitor->sub)
+     {
++      G_LOCK (hash_lock);
+       _kh_cancel_sub (kqueue_monitor->sub);
+       _kh_sub_free (kqueue_monitor->sub);
+       kqueue_monitor->sub = NULL;
++      G_UNLOCK (hash_lock);
+     }
+ 
+   if (kqueue_monitor->fallback)
+@@ -181,9 +192,11 @@ g_kqueue_file_monitor_cancel (GFileMonitor *monitor)
+ 
+   if (kqueue_monitor->sub)
+     {
++      G_LOCK (hash_lock);
+       _kh_cancel_sub (kqueue_monitor->sub);
+       _kh_sub_free (kqueue_monitor->sub);
+       kqueue_monitor->sub = NULL;
++      G_UNLOCK (hash_lock);
+     }
+   else if (kqueue_monitor->fallback)
+     {

Copied and modified: branches/2018Q1/devel/glib20/files/patch-gio_kqueue_kqueue-helper.c (from r460052, head/devel/glib20/files/patch-gio_kqueue_kqueue-helper.c)
==============================================================================
--- head/devel/glib20/files/patch-gio_kqueue_kqueue-helper.c	Fri Jan 26 21:26:57 2018	(r460052, copy source)
+++ branches/2018Q1/devel/glib20/files/patch-gio_kqueue_kqueue-helper.c	Tue Jan 30 07:04:21 2018	(r460371)
@@ -4,8 +4,11 @@ and
 https://bugzilla.gnome.org/show_bug.cgi?id=739424
 https://bug739424.bugzilla-attachments.gnome.org/attachment.cgi?id=351191
 
---- gio/kqueue/kqueue-helper.c.orig	2018-01-15 21:22:08.234860000 +0100
-+++ gio/kqueue/kqueue-helper.c	2018-01-15 21:21:54.143656000 +0100
+https://bugzilla.gnome.org/show_bug.cgi?id=776147
+https://git.gnome.org/browse/glib/commit/?id=76072a2dde4a4acc8be8d3c47efbc6811ebe0c1e
+
+--- gio/kqueue/kqueue-helper.c.orig	2018-01-28 21:18:25.213606000 +0100
++++ gio/kqueue/kqueue-helper.c	2018-01-28 21:18:34.964780000 +0100
 @@ -43,7 +43,7 @@ static gboolean kh_debug_enabled = FALSE;
  #define KH_W if (kh_debug_enabled) g_warning
  
@@ -15,7 +18,19 @@ https://bug739424.bugzilla-attachments.gnome.org/attac
  
  static int kqueue_descriptor = -1;
  static int kqueue_socket_pair[] = {-1, -1};
-@@ -291,10 +291,10 @@ process_kqueue_notifications (GIOChannel   *gioc,
+@@ -97,8 +97,10 @@ convert_kqueue_events_to_gio (uint32_t flags, gboolean
+     }
+   if (flags & NOTE_RENAME)
+     {
++      /* Since there’s apparently no way to get the new name of the file out of
++       * kqueue(), all we can do is say that this one has been deleted. */
+       *done = TRUE;
+-      return G_FILE_MONITOR_EVENT_MOVED;
++      return G_FILE_MONITOR_EVENT_DELETED;
+     }
+   if (flags & NOTE_REVOKE)
+     {
+@@ -291,10 +293,10 @@ process_kqueue_notifications (GIOChannel   *gioc,
  
    G_LOCK (hash_lock);
    sub = (kqueue_sub *) g_hash_table_lookup (subs_hash_table, GINT_TO_POINTER (n.fd));
@@ -27,7 +42,7 @@ https://bug739424.bugzilla-attachments.gnome.org/attac
        KH_W ("Got a notification for a deleted or non-existing subscription %d",
               n.fd);
        return TRUE;
-@@ -336,6 +336,7 @@ process_kqueue_notifications (GIOChannel   *gioc,
+@@ -336,6 +338,7 @@ process_kqueue_notifications (GIOChannel   *gioc,
          g_file_monitor_source_handle_event (source, mask, NULL, NULL, NULL, g_get_monotonic_time ());
      }
  
@@ -35,7 +50,7 @@ https://bug739424.bugzilla-attachments.gnome.org/attac
    return TRUE;
  }
  
-@@ -451,13 +452,14 @@ _kh_start_watching (kqueue_sub *sub)
+@@ -451,13 +454,14 @@ _kh_start_watching (kqueue_sub *sub)
  
    G_LOCK (hash_lock);
    g_hash_table_insert (subs_hash_table, GINT_TO_POINTER (sub->fd), sub);
@@ -51,7 +66,7 @@ https://bug739424.bugzilla-attachments.gnome.org/attac
    return TRUE;
  }
  
-@@ -498,22 +500,15 @@ _kh_add_sub (kqueue_sub *sub)
+@@ -498,22 +502,15 @@ _kh_add_sub (kqueue_sub *sub)
  gboolean
  _kh_cancel_sub (kqueue_sub *sub)
  {


More information about the svn-ports-branches mailing list