From fa2df939499a95f59cb9f34ec8af706352197fb9 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Sat, 6 Apr 2019 18:17:51 +0200 Subject: gamin neu --- gamin/0001-Poll-files-on-nfs4.patch | 27 ++++++++++++++ gamin/18_gam_server_deadlocks.patch | 70 +++++++++++++++++++++++++++++++++++++ gamin/PKGBUILD | 52 +++++++++++++++++++++++++++ gamin/fix-deprecated-const.patch | 56 +++++++++++++++++++++++++++++ 4 files changed, 205 insertions(+) create mode 100644 gamin/0001-Poll-files-on-nfs4.patch create mode 100644 gamin/18_gam_server_deadlocks.patch create mode 100644 gamin/PKGBUILD create mode 100644 gamin/fix-deprecated-const.patch (limited to 'gamin') 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 +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 +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 +# Contributor: Abhishek Dasgupta +# Contributor: Pulphix + +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 +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); + -- cgit v1.2.3-54-g00ecf