Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 24 Aug 2010 17:11:06 GMT
From:      Jesse Kempf <jkempf@davisvision.com>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   ports/149944: [maintainer update] devel/py-daemon fix API breakage caused by py-lockfile 0.8 -> 0.9
Message-ID:  <201008241711.o7OHB66p061540@www.freebsd.org>
Resent-Message-ID: <201008241720.o7OHK3es005840@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         149944
>Category:       ports
>Synopsis:       [maintainer update] devel/py-daemon fix API breakage caused by py-lockfile 0.8 -> 0.9
>Confidential:   no
>Severity:       critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          maintainer-update
>Submitter-Id:   current-users
>Arrival-Date:   Tue Aug 24 17:20:03 UTC 2010
>Closed-Date:
>Last-Modified:
>Originator:     Jesse Kempf
>Release:        7.2-STABLE
>Organization:
>Environment:
FreeBSD waffle.davisvision.com 7.2-STABLE FreeBSD 7.2-STABLE #1: Mon Nov 23 08:52:01 EST 2009     jkempf@waffle.davisvision.com:/usr/obj/usr/src/sys/GENERIC  amd64
>Description:
The author of lockfile made API-breaking changes in the 0.9 release. The attached patch fixes py-daemon to use the new API and sets a dependency on py-lockfile >= 0.9.

Without the patch, py-daemon will not work.
>How-To-Repeat:

>Fix:


Patch attached with submission follows:

diff -r 7c4277bef47a -r 2ab0812e456a py-daemon/Makefile
--- a/py-daemon/Makefile	Tue Aug 24 15:39:31 2010 +0000
+++ b/py-daemon/Makefile	Tue Aug 24 17:05:52 2010 +0000
@@ -16,7 +16,7 @@
 COMMENT= Well-behaved daemon framework for Python
 
 BUILD_DEPENDS=\
-	${PYTHON_PKGNAMEPREFIX}lockfile>0:${PORTSDIR}/devel/py-lockfile
+	${PYTHON_PKGNAMEPREFIX}lockfile>=0.9:${PORTSDIR}/devel/py-lockfile
 
 RUN_DEPENDS:=	${BUILD_DEPENDS}
 
diff -r 7c4277bef47a -r 2ab0812e456a py-daemon/files/patch-daemon-pidlockfile.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/py-daemon/files/patch-daemon-pidlockfile.py	Tue Aug 24 17:05:52 2010 +0000
@@ -0,0 +1,72 @@
+--- daemon/pidlockfile.py.orig	2010-08-24 16:57:37.753374406 +0000
++++ daemon/pidlockfile.py	2010-08-24 16:58:57.825989360 +0000
+@@ -22,6 +22,7 @@
+     NotLocked, NotMyLock,
+     )
+ 
++from lockfile.pidlockfile import PIDLockFile
+ 
+ class PIDFileError(Exception):
+     """ Abstract base class for errors specific to PID files. """
+@@ -30,61 +31,6 @@
+     """ Raised when parsing contents of PID file fails. """
+ 
+ 
+-class PIDLockFile(LinkFileLock, object):
+-    """ Lockfile implemented as a Unix PID file.
+-
+-        The PID file is named by the attribute `path`. When locked,
+-        the file will be created with a single line of text,
+-        containing the process ID (PID) of the process that acquired
+-        the lock.
+-
+-        The lock is acquired and maintained as per `LinkFileLock`.
+-
+-        """
+-
+-    def read_pid(self):
+-        """ Get the PID from the lock file.
+-            """
+-        result = read_pid_from_pidfile(self.path)
+-        return result
+-
+-    def acquire(self, *args, **kwargs):
+-        """ Acquire the lock.
+-
+-            Locks the PID file then creates the PID file for this
+-            lock. The `timeout` parameter is used as for the
+-            `LinkFileLock` class.
+-
+-            """
+-        super(PIDLockFile, self).acquire(*args, **kwargs)
+-        try:
+-            write_pid_to_pidfile(self.path)
+-        except OSError, exc:
+-            error = LockFailed("%(exc)s" % vars())
+-            raise error
+-
+-    def release(self):
+-        """ Release the lock.
+-
+-            Removes the PID file then releases the lock, or raises an
+-            error if the current process does not hold the lock.
+-
+-            """
+-        if self.i_am_locking():
+-            remove_existing_pidfile(self.path)
+-        super(PIDLockFile, self).release()
+-
+-    def break_lock(self):
+-        """ Break an existing lock.
+-
+-            If the lock is held, breaks the lock and removes the PID
+-            file.
+-
+-            """
+-        super(PIDLockFile, self).break_lock()
+-        remove_existing_pidfile(self.path)
+-
+-
+ class TimeoutPIDLockFile(PIDLockFile):
+     """ Lockfile with default timeout, implemented as a Unix PID file.
+ 


>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201008241711.o7OHB66p061540>