diff options
author | Matrix | 2022-06-14 17:55:26 +0100 |
---|---|---|
committer | Matrix | 2022-06-14 17:55:26 +0100 |
commit | 524d0f0afc522f99a169e10cf9de13c5973b8893 (patch) | |
tree | 551f5f5cc2e7e085a3feea4283b819581badce10 | |
download | aur-524d0f0afc522f99a169e10cf9de13c5973b8893.tar.gz |
made package
-rw-r--r-- | .SRCINFO | 26 | ||||
-rwxr-xr-x | 0001-Poll-files-on-nfs4.patch | 26 | ||||
-rwxr-xr-x | 18_gam_server_deadlocks.patch | 69 | ||||
-rwxr-xr-x | PKGBUILD | 52 | ||||
-rwxr-xr-x | fix-deprecated-const.patch | 56 |
5 files changed, 229 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..82130a49e366 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,26 @@ +pkgbase = gamin-git + pkgdesc = File and directory monitoring system defined to be a subset of the FAM (File Alteration Monitor) [git version] + pkgver = 0.1.10.6.r0.g905a5bf + pkgrel = 1 + url = https://salsa.debian.org/gnome-team/gamin + arch = x86_64 + arch = i686 + license = GPL + makedepends = python2 + makedepends = git + depends = glib2 + optdepends = python2: for the python module + provides = fam + provides = gamin + conflicts = fam + conflicts = gamin + source = git+https://salsa.debian.org/gnome-team/gamin.git + source = fix-deprecated-const.patch + source = 18_gam_server_deadlocks.patch + source = 0001-Poll-files-on-nfs4.patch + sha256sums = SKIP + sha256sums = 33af6c9a94b459506fc48892c169d89cb4ad7c68e160f0c4bc74475f19ce5a2f + sha256sums = 041eb7fb21d83c50ee5ab8b51e7dc81cce352761355a66e89e8fd0617f113b50 + sha256sums = 49806b9788dd3c3f362057f7d2919c956ba88c4750867ebab295e6d678c86e1c + +pkgname = gamin-git diff --git a/0001-Poll-files-on-nfs4.patch b/0001-Poll-files-on-nfs4.patch new file mode 100755 index 000000000000..b1498480698a --- /dev/null +++ b/0001-Poll-files-on-nfs4.patch @@ -0,0 +1,26 @@ +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/18_gam_server_deadlocks.patch b/18_gam_server_deadlocks.patch new file mode 100755 index 000000000000..2b3063d0a5bd --- /dev/null +++ b/18_gam_server_deadlocks.patch @@ -0,0 +1,69 @@ +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/PKGBUILD b/PKGBUILD new file mode 100755 index 000000000000..ef71a8d08934 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,52 @@ +# Maintainer: <thysupremematrix at tuta dot io> +pkgname=gamin-git +pkgver=0.1.10.6.r0.g905a5bf +pkgrel=1 +pkgdesc='File and directory monitoring system defined to be a subset of the FAM (File Alteration Monitor) [git version]' +url="https://salsa.debian.org/gnome-team/gamin" +license=('GPL') +arch=('x86_64' 'i686') +depends=('glib2') +makedepends=('python2' 'git') +optdepends=('python2: for the python module') +provides=('fam' "gamin") +conflicts=('fam' "gamin") +source=("git+${url}.git" + 'fix-deprecated-const.patch' + '18_gam_server_deadlocks.patch' + '0001-Poll-files-on-nfs4.patch') +sha256sums=('SKIP' + '33af6c9a94b459506fc48892c169d89cb4ad7c68e160f0c4bc74475f19ce5a2f' + '041eb7fb21d83c50ee5ab8b51e7dc81cce352761355a66e89e8fd0617f113b50' + '49806b9788dd3c3f362057f7d2919c956ba88c4750867ebab295e6d678c86e1c') +_gitname=gamin + +pkgver(){ + cd $srcdir/$_gitname + git describe --long | sed 's/\([^-]*-g\)/r\1/;s/-/./g;s@.*/@@' +} +prepare() { + cd $srcdir/$_gitname + + # 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 $srcdir/$_gitname + ./configure --prefix=/usr --disable-static --with-threads \ + --disable-debug-api --disable-debug --libexecdir=/usr/lib/gamin \ + --with-python=/usr/bin/python2 + make +} + +package() { + cd $srcdir/$_gitname + make DESTDIR="$pkgdir" install +} diff --git a/fix-deprecated-const.patch b/fix-deprecated-const.patch new file mode 100755 index 000000000000..3d5f6133fdbc --- /dev/null +++ b/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); + |