summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2019-04-06 18:17:51 +0200
committerErich Eckner <git@eckner.net>2019-04-06 18:17:51 +0200
commitfa2df939499a95f59cb9f34ec8af706352197fb9 (patch)
tree26c05b9f1517f2a09af8722aab5e609af85e0e21
parent04baad73766385556b7a7aa250382f9ff68d8a79 (diff)
downloadarchlinuxewe.git.save-fa2df939499a95f59cb9f34ec8af706352197fb9.tar.xz
gamin neu
-rw-r--r--gamin/0001-Poll-files-on-nfs4.patch27
-rw-r--r--gamin/18_gam_server_deadlocks.patch70
-rw-r--r--gamin/PKGBUILD52
-rw-r--r--gamin/fix-deprecated-const.patch56
4 files changed, 205 insertions, 0 deletions
diff --git a/gamin/0001-Poll-files-on-nfs4.patch b/gamin/0001-Poll-files-on-nfs4.patch
new file mode 100644
index 00000000..f776732c
--- /dev/null
+++ b/gamin/0001-Poll-files-on-nfs4.patch
@@ -0,0 +1,27 @@
+From b92b17ecced6df463da73d6de566740cf5cd00d4 Mon Sep 17 00:00:00 2001
+From: Marek Kasik <mkasik@redhat.com>
+Date: Fri, 1 Feb 2013 15:19:58 +0100
+Subject: [PATCH 1/2] Poll files on nfs4
+
+Add nfs4 among polled filesystems.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=693006
+---
+ server/gam_fs.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/server/gam_fs.c b/server/gam_fs.c
+index c8ca704..143a603 100644
+--- a/server/gam_fs.c
++++ b/server/gam_fs.c
+@@ -178,6 +178,7 @@ gam_fs_init (void)
+ gam_fs_set ("reiserfs", GFS_MT_DEFAULT, 0);
+ gam_fs_set ("novfs", GFS_MT_POLL, 30);
+ gam_fs_set ("nfs", GFS_MT_POLL, 5);
++ gam_fs_set ("nfs4", GFS_MT_POLL, 5);
+ if (stat("/etc/mtab", &mtab_sbuf) != 0)
+ {
+ GAM_DEBUG(DEBUG_INFO, "Could not stat /etc/mtab\n");
+--
+1.8.1.2
+
diff --git a/gamin/18_gam_server_deadlocks.patch b/gamin/18_gam_server_deadlocks.patch
new file mode 100644
index 00000000..ef774967
--- /dev/null
+++ b/gamin/18_gam_server_deadlocks.patch
@@ -0,0 +1,70 @@
+From cc14440eface093548cb3bc7814da11d9a99d283 Mon Sep 17 00:00:00 2001
+From: Anssi Hannula <anssi@mageia.org>
+Date: Wed, 4 Jan 2012 00:23:55 +0200
+Subject: [PATCH] fix possible server deadlock in ih_sub_cancel
+
+ih_sub_foreach() calls ih_sub_cancel() while inotify_lock is locked.
+However, ih_sub_cancel() locks it again, and locking GMutex recursively
+causes undefined behaviour.
+
+Fix that by removing locking from ih_sub_cancel() as ih_sub_foreach()
+is its only user. Also make the function static so that it won't
+accidentally get used by other files without locking (inotify-helper.h
+is an internal server header).
+
+This should fix the intermittent deadlocks I've been experiencing
+causing KDE applications to no longer start, and probably also
+http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=542361
+
+Origin: http://bugzilla-attachments.gnome.org/attachment.cgi?id=204537
+Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gamin/+bug/926862
+Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=542361
+
+---
+ server/inotify-helper.c | 7 ++-----
+ server/inotify-helper.h | 1 -
+ 2 files changed, 2 insertions(+), 6 deletions(-)
+
+diff --git a/server/inotify-helper.c b/server/inotify-helper.c
+index d77203e..0789fa4 100644
+--- a/server/inotify-helper.c
++++ b/server/inotify-helper.c
+@@ -123,13 +123,11 @@ ih_sub_add (ih_sub_t * sub)
+
+ /**
+ * Cancels a subscription which was being monitored.
++ * inotify_lock must be held when calling.
+ */
+-gboolean
++static gboolean
+ ih_sub_cancel (ih_sub_t * sub)
+ {
+- G_LOCK(inotify_lock);
+-
+-
+ if (!sub->cancelled)
+ {
+ IH_W("cancelling %s\n", sub->pathname);
+@@ -140,7 +138,6 @@ ih_sub_cancel (ih_sub_t * sub)
+ sub_list = g_list_remove (sub_list, sub);
+ }
+
+- G_UNLOCK(inotify_lock);
+ return TRUE;
+ }
+
+diff --git a/server/inotify-helper.h b/server/inotify-helper.h
+index 5d3b6d0..d36b5fd 100644
+--- a/server/inotify-helper.h
++++ b/server/inotify-helper.h
+@@ -34,7 +34,6 @@ gboolean ih_startup (event_callback_t ecb,
+ found_callback_t fcb);
+ gboolean ih_running (void);
+ gboolean ih_sub_add (ih_sub_t *sub);
+-gboolean ih_sub_cancel (ih_sub_t *sub);
+
+ /* Return FALSE from 'f' if the subscription should be cancelled */
+ void ih_sub_foreach (void *callerdata, gboolean (*f)(ih_sub_t *sub, void *callerdata));
+--
+1.7.7.2
+
diff --git a/gamin/PKGBUILD b/gamin/PKGBUILD
new file mode 100644
index 00000000..255968e7
--- /dev/null
+++ b/gamin/PKGBUILD
@@ -0,0 +1,52 @@
+# Maintainer: Erich Eckner <arch at eckner dot net>
+# Contributor: Abhishek Dasgupta <abhidg@gmail.com>
+# Contributor: Pulphix <crimea.v@libero.it>
+
+pkgname=gamin
+pkgver=0.1.10
+pkgrel=9
+pkgdesc='File and directory monitoring system defined to be a subset of the FAM (File Alteration Monitor)'
+url='http://www.gnome.org/~veillard/gamin'
+license=('GPL')
+arch=('x86_64' 'i686')
+depends=('glib2')
+makedepends=('python2')
+optdepends=('python2: for the python module')
+provides=('fam')
+conflicts=('fam')
+source=("$url/sources/${pkgname}-${pkgver}.tar.gz"
+ 'fix-deprecated-const.patch'
+ '18_gam_server_deadlocks.patch'
+ '0001-Poll-files-on-nfs4.patch')
+sha512sums=('21bfe6fcf8fb3117cd5a08c8ce3b8d0d1dd23e478e60a95b76c20d02cc29b050dde086578d81037990484ff891c3e104d2cbbf3d294b4a79346b14a0cae075bb'
+ 'c4c10bee70c7231db395cbfe5bdf513ade6be599a11a9d35888ddfaca42d619fe2b5e87c2b2bab469ea98ba718bc01711252313ba5f53c392379b669f5b2902b'
+ 'ae2d3f3cd16e2da05836cbb2f21527896db5d5067ef4b120e943693234a685527eff528955ed80120265ca70e04a88cc28413cc34311d6faa068c620339fad38'
+ 'dcb23fd68e106a1b578235ef0b01b49773908ca6ded706610103f880f77a2aa0b0403cb720b9c6b062bac71e9d66cd2288b489c558839fc23295b18635bf399f')
+
+prepare() {
+ cd $pkgname-$pkgver
+
+ # https://bugs.archlinux.org/task/33642
+ patch -Np1 -i ../18_gam_server_deadlocks.patch
+
+ patch -Np1 -i ../fix-deprecated-const.patch
+ patch -Np1 -i ../0001-Poll-files-on-nfs4.patch
+
+ # python 2
+ sed -i 's_#!/usr/bin/env python_#!/usr/bin/env python2_' python/gamin.py
+}
+
+build() {
+ cd $pkgname-$pkgver
+ ./configure --prefix=/usr --disable-static --with-threads \
+ --disable-debug-api --disable-debug --libexecdir=/usr/lib/gamin \
+ --with-python=/usr/bin/python2
+ make
+}
+
+package() {
+ cd $pkgname-$pkgver
+ make DESTDIR="$pkgdir" install
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/gamin/fix-deprecated-const.patch b/gamin/fix-deprecated-const.patch
new file mode 100644
index 00000000..3d5f6133
--- /dev/null
+++ b/gamin/fix-deprecated-const.patch
@@ -0,0 +1,56 @@
+Description: Don't use deprecated G_CONST_RETURN. Fixes building with newer glib versions.
+Author: Matthias Klose <doko@ubuntu.com>
+Bug-Ubuntu: https://launchpad.net/bugs/829504
+
+Index: gamin/server/gam_node.c
+===================================================================
+--- gamin.orig/server/gam_node.c 2011-10-18 16:09:04.873780685 +0200
++++ gamin/server/gam_node.c 2011-10-18 16:09:01.965780543 +0200
+@@ -122,7 +122,7 @@
+ * it has finished with the string. If it must keep it longer, it
+ * should makes its own copy. The returned string must not be freed.
+ */
+-G_CONST_RETURN char *
++const char *
+ gam_node_get_path(GamNode * node)
+ {
+ g_assert(node);
+Index: gamin/server/gam_node.h
+===================================================================
+--- gamin.orig/server/gam_node.h 2011-10-18 16:09:04.729780677 +0200
++++ gamin/server/gam_node.h 2011-10-18 16:09:01.961780544 +0200
+@@ -58,7 +58,7 @@
+ void gam_node_set_is_dir (GamNode *node,
+ gboolean is_dir);
+
+-G_CONST_RETURN char *gam_node_get_path (GamNode *node);
++const char *gam_node_get_path (GamNode *node);
+
+ GList *gam_node_get_subscriptions (GamNode *node);
+
+Index: gamin/server/gam_subscription.c
+===================================================================
+--- gamin.orig/server/gam_subscription.c 2011-10-18 16:09:04.817780682 +0200
++++ gamin/server/gam_subscription.c 2011-10-18 16:09:01.965780543 +0200
+@@ -141,7 +141,7 @@
+ * @param sub the GamSubscription
+ * @returns The path being monitored. It should not be freed.
+ */
+-G_CONST_RETURN char *
++const char *
+ gam_subscription_get_path(GamSubscription * sub)
+ {
+ if (sub == NULL)
+Index: gamin/server/gam_subscription.h
+===================================================================
+--- gamin.orig/server/gam_subscription.h 2011-10-18 16:09:04.929780687 +0200
++++ gamin/server/gam_subscription.h 2011-10-18 16:09:01.965780543 +0200
+@@ -21,7 +21,7 @@
+
+ int gam_subscription_get_reqno (GamSubscription *sub);
+
+-G_CONST_RETURN char *gam_subscription_get_path (GamSubscription *sub);
++const char *gam_subscription_get_path (GamSubscription *sub);
+
+ GamListener *gam_subscription_get_listener (GamSubscription *sub);
+