summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesus Rivero <neurogeek@gentoo.org>2009-07-16 06:05:54 +0000
committerJesus Rivero <neurogeek@gentoo.org>2009-07-16 06:05:54 +0000
commit1ae76202913c2da9bb49dd370a6d3115b93ad548 (patch)
tree1453d88c85063c4d9464b4f8b255d4cb32b56cef /dev-python/twisted
parentVersion bump. (diff)
downloadhistorical-1ae76202913c2da9bb49dd370a6d3115b93ad548.tar.gz
historical-1ae76202913c2da9bb49dd370a6d3115b93ad548.tar.bz2
historical-1ae76202913c2da9bb49dd370a6d3115b93ad548.zip
Fixed test failures wrt bug #190433. Changed to EAPI 2. Added patches for py26 deprecations
Package-Manager: portage-2.2_rc23/cvs/Linux i686
Diffstat (limited to 'dev-python/twisted')
-rw-r--r--dev-python/twisted/ChangeLog10
-rw-r--r--dev-python/twisted/Manifest15
-rw-r--r--dev-python/twisted/files/twisted-8.2.0_deprecations.patch26
-rw-r--r--dev-python/twisted/files/twisted-8.2.0_tests.patch249
-rw-r--r--dev-python/twisted/twisted-8.2.0-r1.ebuild122
5 files changed, 420 insertions, 2 deletions
diff --git a/dev-python/twisted/ChangeLog b/dev-python/twisted/ChangeLog
index 5085537125ec..eb75313c0b5c 100644
--- a/dev-python/twisted/ChangeLog
+++ b/dev-python/twisted/ChangeLog
@@ -1,6 +1,14 @@
# ChangeLog for dev-python/twisted
# Copyright 2002-2009 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/dev-python/twisted/ChangeLog,v 1.103 2009/01/08 23:30:39 patrick Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-python/twisted/ChangeLog,v 1.104 2009/07/16 06:05:54 neurogeek Exp $
+
+*twisted-8.2.0-r1 (16 Jul 2009)
+
+ 16 Jul 2009; Jesus Rivero <neurogeek@gentoo.org>
+ +files/twisted-8.2.0_deprecations.patch, +files/twisted-8.2.0_tests.patch,
+ +twisted-8.2.0-r1.ebuild:
+ Fixed test failures wrt bug #190433. Changed to EAPI 2. Added patches for
+ py26 deprecations
08 Jan 2009; Patrick Lauer <patrick@gentoo.org> +twisted-1.2.0.ebuild:
Undoing breakage
diff --git a/dev-python/twisted/Manifest b/dev-python/twisted/Manifest
index e6e8e7f6e1b1..016cacd6679e 100644
--- a/dev-python/twisted/Manifest
+++ b/dev-python/twisted/Manifest
@@ -1,3 +1,6 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA1
+
AUX twistd.conf 277 RMD160 c959b879d6f7358b647c71c3b514a4a6c8a49eef SHA1 661269a3ce6ed02f03d4fce07757e77420fd44c4 SHA256 aa2ffa5b128973bc0c58a1251b8bbb56f6f890728bc902805ea2db7606416119
AUX twistd.init 545 RMD160 b77acc9468cd619e9af334c8a36ed3f9bb003494 SHA1 74db83050a9e3bf55823bb5790280d1ec324d760 SHA256 c0aead865bee1fa7d88f2a59f936718621a9b52b1b623ae9e599f1226d8a0dc1
AUX twisted-2.0.1-echo-less.patch 527 RMD160 c0a4f923a4bde04a1df183878b4c1414fad98b41 SHA1 d40f15ab30c46bbc165edd229d771245e5a0e6c0 SHA256 28d3a8ede3d30744c411dc86978f17601867e6e999d79e77527981b8ddb6fa49
@@ -5,6 +8,8 @@ AUX twisted-2.1.0-echo-less.patch 269 RMD160 c7fd9d87325a453ce9215591fc296b4b315
AUX twisted-2.1.0-trial-tests.patch 12253 RMD160 75d31c9095f4699a1af9c96679df8f1765fee2aa SHA1 ff5eb00216d7ea9480009572771e1481faefbb26 SHA256 c1a94192554d9478a904ad6069eba9ef1633455c1a7fa60b278bdd743a797691
AUX twisted-2.1.0-trial-tests2.patch 1058 RMD160 20d9cfba5faa5ecda365a52fbc0007347096879e SHA1 0b5d6dd55cf8322a87547f25f68b2f2a34da3758 SHA256 abf94fbd130fdfd27164fe3b5d585fdfa211f7a6bd39e649daf1a74354208883
AUX twisted-2.1.0-zsh-head.patch 592 RMD160 1fc8e7f8de64055e3801b442b4f666aef567ac71 SHA1 645f9ff44ff3b360026d0471092fd1b5f41d7122 SHA256 c9b8a994685159f21a3b0512eed1144876453db09f8d6843529dc0ef8d886029
+AUX twisted-8.2.0_deprecations.patch 896 RMD160 2b17873e9475fab4e08416a4265cdf18b37e129c SHA1 8f5d36ace64c3dfd947cdd4941f7628a4cb90aec SHA256 5a2b0cdcf3c9f89f49bcc1c4969fb6fdd507df176e7b5ef13ca8f41ef35c66a3
+AUX twisted-8.2.0_tests.patch 9520 RMD160 eb3abb717c5c97f980bfef1152831d9840cd620e SHA1 2fd1456e99c348bf17c59a21595c7f282497137c SHA256 dfd4d61d800f548be713611c2925ca118980b5fa7467c67dcd19ec9b8e9eb4e2
DIST TwistedCore-8.1.0.tar.bz2 1194164 RMD160 92f28c14709f5eb307757cd993a511344109c59a SHA1 77b6ebff5c11ea6efb62e41d0b09897d37d97423 SHA256 14b8cfc8c782073b0ce046b139dac55149992087209194696d390649b62f5f32
DIST TwistedCore-8.2.0.tar.bz2 1205654 RMD160 7162be0d4f131e2e8379ba4330b0ff8978a6530c SHA1 0c4f24c661316a650ed1493d2c6a9ace6c10fd27 SHA256 481e8ea4b05b482aa1396ca3ad09fac6086acddfd57eed7bb63e1385717adde4
DIST Twisted_NoDocs-1.2.0.tar.bz2 1281868 RMD160 f64a258a5c767c288cf39554471c4f37c4bed136 SHA1 6325d162a17e4527b60e1fcdcbf1c0c5dbd076f6 SHA256 b9245d8c5d4f0df35a20bfefd01db3c9edd6dd814e4c69481a50f59907d25fe1
@@ -12,6 +17,14 @@ DIST Twisted_NoDocs-1.3.0.tar.bz2 1545890 RMD160 9b9d8c9667ef3e68118b7509d2c5991
EBUILD twisted-1.2.0.ebuild 924 RMD160 656f6baec6675ccbb70b55635a88f8b6e785ecb7 SHA1 34f625c845efd200e03e93c445a45652e1d96616 SHA256 4fbbc9847a93d515826d7b872f44d4ee054d23f26d413e7a72188e35ffa73713
EBUILD twisted-1.3.0.ebuild 986 RMD160 4ad7bb919259b51db58935bae8880b3f4740b3a6 SHA1 7efba37e315d76c5f43171308f015ecacc4d122d SHA256 cb55a28df27a9536fc18a9811015e3563070f9d84cb3d4e9a8701a17b1d30786
EBUILD twisted-8.1.0.ebuild 3397 RMD160 7c7849168ea1709a2a17231e0ecff68def1a2c70 SHA1 2a6a29abb48232ed33ac010178be560b016f4004 SHA256 83a812adffe6c2c6261fc62e46c536b87d77296ed6fd1a95885ab2a6be8c78a3
+EBUILD twisted-8.2.0-r1.ebuild 3675 RMD160 5094d83d4e17e8d5f9a0ed03e8c7679da2df5596 SHA1 f24de7bffe73d9c79b238c46edc46f943e2d1575 SHA256 f4ef04ac18fb97c5e6b9cfb739b6d3ea285317680012f33fe5100e3288749cde
EBUILD twisted-8.2.0.ebuild 3409 RMD160 40cb7a28121f1867793188e43a95c19e90189edf SHA1 9101a22303a48b5f68f84092084efcdbed51c30a SHA256 9fcf43b2c728eb7fe3cdaeae91f831ff9637ebad3a617ff469ed3d9d69e16151
-MISC ChangeLog 17336 RMD160 d1a26c779f3acd8a4c900fefeaf105ddb4fcb0e4 SHA1 93ce0f2773852c0b64beda9634e0595a8a954f0a SHA256 1103a1cb697668e8c123688724020ff7bb75f06cfdd1d224e7ac3bb6a55a70e1
+MISC ChangeLog 17624 RMD160 9960dda516db3da647ab401695947627e964cfc7 SHA1 e334af29a969c91eaa299df1f718944df3b88164 SHA256 1151829dc8e2f6c6272b0dc1b9b300337d4545e0878b7913becdf23824311989
MISC metadata.xml 516 RMD160 3603e0b110b1486ed5c02ec37ccee6712e2098c8 SHA1 3fe53dc137c9bd5437e8f6fb1d397491f5e9281e SHA256 702ffca7fc318ecb382067e3bccf620bebd7da614430ea82de24445b9f75524c
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v2.0.9 (GNU/Linux)
+
+iEYEARECAAYFAkpew0oACgkQdIssYB9vBoNhKgCfTk6N7Ztc5GQq1lojroEumxcV
+B6wAnAwA37wvm36LWaf88rA/nO2nWlD4
+=sq4H
+-----END PGP SIGNATURE-----
diff --git a/dev-python/twisted/files/twisted-8.2.0_deprecations.patch b/dev-python/twisted/files/twisted-8.2.0_deprecations.patch
new file mode 100644
index 000000000000..ee2db162e94d
--- /dev/null
+++ b/dev-python/twisted/files/twisted-8.2.0_deprecations.patch
@@ -0,0 +1,26 @@
+diff -uNr TwistedCore-8.2.0.orig/twisted/persisted/sob.py TwistedCore-8.2.0/twisted/persisted/sob.py
+--- TwistedCore-8.2.0.orig/twisted/persisted/sob.py 2009-07-16 04:54:40.000000000 +0000
++++ TwistedCore-8.2.0/twisted/persisted/sob.py 2009-07-16 05:31:48.000000000 +0000
+@@ -9,7 +9,9 @@
+ Maintainer: Moshe Zadka
+ """
+
+-import os, md5, sys
++import os, sys
++from hashlib import md5
++
+ try:
+ import cPickle as pickle
+ except ImportError:
+diff -uNr TwistedCore-8.2.0.orig/twisted/python/filepath.py TwistedCore-8.2.0/twisted/python/filepath.py
+--- TwistedCore-8.2.0.orig/twisted/python/filepath.py 2009-07-16 04:54:40.000000000 +0000
++++ TwistedCore-8.2.0/twisted/python/filepath.py 2009-07-16 05:31:22.000000000 +0000
+@@ -9,7 +9,7 @@
+ import os
+ import errno
+ import random
+-import sha
++from hashlib import sha1
+ import base64
+
+ from os.path import isabs, exists, normpath, abspath, splitext
diff --git a/dev-python/twisted/files/twisted-8.2.0_tests.patch b/dev-python/twisted/files/twisted-8.2.0_tests.patch
new file mode 100644
index 000000000000..daf4e52eeb16
--- /dev/null
+++ b/dev-python/twisted/files/twisted-8.2.0_tests.patch
@@ -0,0 +1,249 @@
+diff -uNr TwistedCore-8.2.0.orig/twisted/python/test/test_release.py TwistedCore-8.2.0/twisted/python/test/test_release.py
+--- TwistedCore-8.2.0.orig/twisted/python/test/test_release.py 2009-07-16 04:54:40.000000000 +0000
++++ TwistedCore-8.2.0/twisted/python/test/test_release.py 2009-07-16 04:55:00.000000000 +0000
+@@ -1919,4 +1919,4 @@
+ BookBuilderTests.skip = skipMessage
+ DocBuilderTestCase.skip = skipMessage
+ ManBuilderTestCase.skip = skipMessage
+- DistributionBuilderTests.skip = skipMessage
++ DistributionBuilderTest.skip = skipMessage
+diff -uNr TwistedCore-8.2.0.orig/twisted/python/test/test_util.py TwistedCore-8.2.0/twisted/python/test/test_util.py
+--- TwistedCore-8.2.0.orig/twisted/python/test/test_util.py 2009-07-16 04:54:40.000000000 +0000
++++ TwistedCore-8.2.0/twisted/python/test/test_util.py 2009-07-16 05:19:15.000000000 +0000
+@@ -18,7 +18,7 @@
+ from twisted.internet.defer import Deferred
+ from twisted.internet.error import ProcessDone
+
+-from twisted.test.test_process import MockOS
++#from twisted.test.test_process import MockOS
+
+
+
+@@ -601,115 +601,115 @@
+
+
+
+-class RunAsEffectiveUserTests(unittest.TestCase):
+- """
+- Test for the L{util.runAsEffectiveUser} function.
+- """
+-
+- if getattr(os, "geteuid", None) is None:
+- skip = "geteuid/seteuid not available"
+-
+- def setUp(self):
+- self.mockos = MockOS()
+- self.patch(os, "geteuid", self.mockos.geteuid)
+- self.patch(os, "getegid", self.mockos.getegid)
+- self.patch(os, "seteuid", self.mockos.seteuid)
+- self.patch(os, "setegid", self.mockos.setegid)
+-
+-
+- def _securedFunction(self, startUID, startGID, wantUID, wantGID):
+- """
+- Check if wanted UID/GID matched start or saved ones.
+- """
+- self.assertTrue(wantUID == startUID or
+- wantUID == self.mockos.seteuidCalls[-1])
+- self.assertTrue(wantGID == startGID or
+- wantGID == self.mockos.setegidCalls[-1])
+-
+-
+- def test_forwardResult(self):
+- """
+- L{util.runAsEffectiveUser} forwards the result obtained by calling the
+- given function
+- """
+- result = util.runAsEffectiveUser(0, 0, lambda: 1)
+- self.assertEquals(result, 1)
+-
+-
+- def test_takeParameters(self):
+- """
+- L{util.runAsEffectiveUser} pass the given parameters to the given
+- function.
+- """
+- result = util.runAsEffectiveUser(0, 0, lambda x: 2*x, 3)
+- self.assertEquals(result, 6)
+-
+-
+- def test_takesKeyworkArguments(self):
+- """
+- L{util.runAsEffectiveUser} pass the keyword parameters to the given
+- function.
+- """
+- result = util.runAsEffectiveUser(0, 0, lambda x, y=1, z=1: x*y*z, 2, z=3)
+- self.assertEquals(result, 6)
+-
+-
+- def _testUIDGIDSwitch(self, startUID, startGID, wantUID, wantGID,
+- expectedUIDSwitches, expectedGIDSwitches):
+- """
+- Helper method checking the calls to C{os.seteuid} and C{os.setegid}
+- made by L{util.runAsEffectiveUser}, when switching from startUID to
+- wantUID and from startGID to wantGID.
+- """
+- self.mockos.euid = startUID
+- self.mockos.egid = startGID
+- util.runAsEffectiveUser(
+- wantUID, wantGID,
+- self._securedFunction, startUID, startGID, wantUID, wantGID)
+- self.assertEquals(self.mockos.seteuidCalls, expectedUIDSwitches)
+- self.assertEquals(self.mockos.setegidCalls, expectedGIDSwitches)
+- self.mockos.seteuidCalls = []
+- self.mockos.setegidCalls = []
+-
+-
+- def test_root(self):
+- """
+- Check UID/GID switches when current effective UID is root.
+- """
+- self._testUIDGIDSwitch(0, 0, 0, 0, [], [])
+- self._testUIDGIDSwitch(0, 0, 1, 0, [1, 0], [])
+- self._testUIDGIDSwitch(0, 0, 0, 1, [], [1, 0])
+- self._testUIDGIDSwitch(0, 0, 1, 1, [1, 0], [1, 0])
+-
+-
+- def test_UID(self):
+- """
+- Check UID/GID switches when current effective UID is non-root.
+- """
+- self._testUIDGIDSwitch(1, 0, 0, 0, [0, 1], [])
+- self._testUIDGIDSwitch(1, 0, 1, 0, [], [])
+- self._testUIDGIDSwitch(1, 0, 1, 1, [0, 1, 0, 1], [1, 0])
+- self._testUIDGIDSwitch(1, 0, 2, 1, [0, 2, 0, 1], [1, 0])
+-
+-
+- def test_GID(self):
+- """
+- Check UID/GID switches when current effective GID is non-root.
+- """
+- self._testUIDGIDSwitch(0, 1, 0, 0, [], [0, 1])
+- self._testUIDGIDSwitch(0, 1, 0, 1, [], [])
+- self._testUIDGIDSwitch(0, 1, 1, 1, [1, 0], [])
+- self._testUIDGIDSwitch(0, 1, 1, 2, [1, 0], [2, 1])
+-
+-
+- def test_UIDGID(self):
+- """
+- Check UID/GID switches when current effective UID/GID is non-root.
+- """
+- self._testUIDGIDSwitch(1, 1, 0, 0, [0, 1], [0, 1])
+- self._testUIDGIDSwitch(1, 1, 0, 1, [0, 1], [])
+- self._testUIDGIDSwitch(1, 1, 1, 0, [0, 1, 0, 1], [0, 1])
+- self._testUIDGIDSwitch(1, 1, 1, 1, [], [])
+- self._testUIDGIDSwitch(1, 1, 2, 1, [0, 2, 0, 1], [])
+- self._testUIDGIDSwitch(1, 1, 1, 2, [0, 1, 0, 1], [2, 1])
+- self._testUIDGIDSwitch(1, 1, 2, 2, [0, 2, 0, 1], [2, 1])
++#class RunAsEffectiveUserTests(unittest.TestCase):
++# """
++# Test for the L{util.runAsEffectiveUser} function.
++# """
++#
++# if getattr(os, "geteuid", None) is None:
++# skip = "geteuid/seteuid not available"
++#
++# def setUp(self):
++# self.mockos = MockOS()
++# self.patch(os, "geteuid", self.mockos.geteuid)
++# self.patch(os, "getegid", self.mockos.getegid)
++# self.patch(os, "seteuid", self.mockos.seteuid)
++# self.patch(os, "setegid", self.mockos.setegid)
++#
++#
++# def _securedFunction(self, startUID, startGID, wantUID, wantGID):
++# """
++# Check if wanted UID/GID matched start or saved ones.
++# """
++# self.assertTrue(wantUID == startUID or
++# wantUID == self.mockos.seteuidCalls[-1])
++# self.assertTrue(wantGID == startGID or
++# wantGID == self.mockos.setegidCalls[-1])
++#
++#
++# def test_forwardResult(self):
++# """
++# L{util.runAsEffectiveUser} forwards the result obtained by calling the
++# given function
++# """
++# result = util.runAsEffectiveUser(0, 0, lambda: 1)
++# self.assertEquals(result, 1)
++#
++#
++# def test_takeParameters(self):
++# """
++# L{util.runAsEffectiveUser} pass the given parameters to the given
++# function.
++# """
++# result = util.runAsEffectiveUser(0, 0, lambda x: 2*x, 3)
++# self.assertEquals(result, 6)
++#
++#
++# def test_takesKeyworkArguments(self):
++# """
++# L{util.runAsEffectiveUser} pass the keyword parameters to the given
++# function.
++# """
++# result = util.runAsEffectiveUser(0, 0, lambda x, y=1, z=1: x*y*z, 2, z=3)
++# self.assertEquals(result, 6)
++#
++#
++# def _testUIDGIDSwitch(self, startUID, startGID, wantUID, wantGID,
++# expectedUIDSwitches, expectedGIDSwitches):
++# """
++# Helper method checking the calls to C{os.seteuid} and C{os.setegid}
++# made by L{util.runAsEffectiveUser}, when switching from startUID to
++# wantUID and from startGID to wantGID.
++# """
++# self.mockos.euid = startUID
++# self.mockos.egid = startGID
++# util.runAsEffectiveUser(
++# wantUID, wantGID,
++# self._securedFunction, startUID, startGID, wantUID, wantGID)
++# self.assertEquals(self.mockos.seteuidCalls, expectedUIDSwitches)
++# self.assertEquals(self.mockos.setegidCalls, expectedGIDSwitches)
++# self.mockos.seteuidCalls = []
++# self.mockos.setegidCalls = []
++#
++#
++# def test_root(self):
++# """
++# Check UID/GID switches when current effective UID is root.
++# """
++# self._testUIDGIDSwitch(0, 0, 0, 0, [], [])
++# self._testUIDGIDSwitch(0, 0, 1, 0, [1, 0], [])
++# self._testUIDGIDSwitch(0, 0, 0, 1, [], [1, 0])
++# self._testUIDGIDSwitch(0, 0, 1, 1, [1, 0], [1, 0])
++#
++#
++# def test_UID(self):
++# """
++# Check UID/GID switches when current effective UID is non-root.
++# """
++# self._testUIDGIDSwitch(1, 0, 0, 0, [0, 1], [])
++# self._testUIDGIDSwitch(1, 0, 1, 0, [], [])
++# self._testUIDGIDSwitch(1, 0, 1, 1, [0, 1, 0, 1], [1, 0])
++# self._testUIDGIDSwitch(1, 0, 2, 1, [0, 2, 0, 1], [1, 0])
++#
++#
++# def test_GID(self):
++# """
++# Check UID/GID switches when current effective GID is non-root.
++# """
++# self._testUIDGIDSwitch(0, 1, 0, 0, [], [0, 1])
++# self._testUIDGIDSwitch(0, 1, 0, 1, [], [])
++# self._testUIDGIDSwitch(0, 1, 1, 1, [1, 0], [])
++# self._testUIDGIDSwitch(0, 1, 1, 2, [1, 0], [2, 1])
++#
++#
++# def test_UIDGID(self):
++# """
++# Check UID/GID switches when current effective UID/GID is non-root.
++# """
++# self._testUIDGIDSwitch(1, 1, 0, 0, [0, 1], [0, 1])
++# self._testUIDGIDSwitch(1, 1, 0, 1, [0, 1], [])
++# self._testUIDGIDSwitch(1, 1, 1, 0, [0, 1, 0, 1], [0, 1])
++# self._testUIDGIDSwitch(1, 1, 1, 1, [], [])
++# self._testUIDGIDSwitch(1, 1, 2, 1, [0, 2, 0, 1], [])
++# self._testUIDGIDSwitch(1, 1, 1, 2, [0, 1, 0, 1], [2, 1])
++# self._testUIDGIDSwitch(1, 1, 2, 2, [0, 2, 0, 1], [2, 1])
diff --git a/dev-python/twisted/twisted-8.2.0-r1.ebuild b/dev-python/twisted/twisted-8.2.0-r1.ebuild
new file mode 100644
index 000000000000..221fe9086287
--- /dev/null
+++ b/dev-python/twisted/twisted-8.2.0-r1.ebuild
@@ -0,0 +1,122 @@
+# Copyright 1999-2009 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-python/twisted/twisted-8.2.0-r1.ebuild,v 1.1 2009/07/16 06:05:54 neurogeek Exp $
+
+EAPI="2"
+inherit distutils versionator
+
+MY_P=TwistedCore-${PV}
+
+DESCRIPTION="An asynchronous networking framework written in Python"
+HOMEPAGE="http://www.twistedmatrix.com/"
+SRC_URI="http://tmrc.mit.edu/mirror/${PN}/Core/$(get_version_component_range 1-2)/${MY_P}.tar.bz2"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~x86-fbsd"
+IUSE="gtk serial crypt"
+
+DEPEND=">=dev-lang/python-2.3
+ >=net-zope/zopeinterface-3.0.1
+ serial? ( dev-python/pyserial )
+ crypt? ( >=dev-python/pyopenssl-0.5.1 )
+ gtk? ( >=dev-python/pygtk-1.99 )
+ !dev-python/twisted-docs"
+RDEPEND="${DEPEND}"
+
+S=${WORKDIR}/${MY_P}
+
+DOCS="CREDITS NEWS README"
+
+src_prepare(){
+ # Give a load-sensitive test a better chance of succeeding.
+ epatch "${FILESDIR}/${PN}-2.1.0-echo-less.patch"
+
+ # Pass valid arguments to "head" in the zsh completion function.
+ epatch "${FILESDIR}/${PN}-2.1.0-zsh-head.patch"
+
+ # Skip tests that demand non-root user
+ epatch "${FILESDIR}/${P}_tests.patch"
+
+ # Skip test that only works with Python >=2.5 (won't byte-compile)
+ if [ "${PYVER_MINOR}" -lt 5 ]; then
+ echo "'''skip'''" > "twisted/test/generator_failure_tests.py" || die
+ else
+ #Apply deprecation Warnings patch
+ epatch "${FILESDIR}/${P}_deprecations.patch"
+ fi
+}
+
+src_install() {
+ distutils_src_install
+
+ # get rid of this to prevent collision-protect from killing us. it
+ # is regenerated in pkg_postinst.
+ rm "${D}/usr/$(get_libdir)"/python*/site-packages/twisted/plugins/dropin.cache
+
+ # weird pattern to avoid installing the index.xhtml page
+ doman doc/man/*.?
+ insinto /usr/share/doc/${PF}
+ doins -r $(find doc -mindepth 1 -maxdepth 1 -not -name man)
+
+ # workaround for a possible portage bug
+ mkdir -p "${D}/etc/conf.d/"
+ newconfd "${FILESDIR}/twistd.conf" twistd
+ newinitd "${FILESDIR}/twistd.init" twistd
+
+ # zsh completion
+ insinto /usr/share/zsh/site-functions/
+ doins twisted/python/_twisted_zsh_stub
+}
+
+update_plugin_cache() {
+ python_version
+ local tpath="${ROOT}usr/$(get_libdir)/python${PYVER}/site-packages/twisted"
+ # we have to remove the cache or removed plugins won't be removed
+ # from the cache (http://twistedmatrix.com/bugs/issue926)
+ [[ -e "${tpath}/plugins/dropin.cache" ]] && rm -f "${tpath}/plugins/dropin.cache"
+ if [[ -e "${tpath}/plugin.py" ]]; then
+ # twisted is still installed, update.
+ # we have to use getPlugIns here for <=twisted-2.0.1 compatibility
+ einfo "Regenerating plugin cache"
+ python -c "from twisted.plugin import IPlugin, getPlugIns;list(getPlugIns(IPlugin))"
+ fi
+}
+
+pkg_postinst() {
+ distutils_pkg_postinst
+ update_plugin_cache
+}
+
+pkg_postrm() {
+ distutils_pkg_postrm
+ update_plugin_cache
+}
+
+src_test() {
+ python_version
+
+ if has_version ">=dev-lang/python-2.3"; then
+ "${python}" setup.py install --root="${T}/tests" --no-compile || die
+ else
+ "${python}" setup.py install --root="${T}/tests" || die
+ fi
+
+ cd "${T}/tests/usr/$(get_libdir)/python${PYVER}/site-packages/" || die
+
+ #Skip tests that demand non-root user
+ rm -rf "twisted/test/test_plugin.py"
+ rm -rf "twisted/test/test_process.py"
+
+ # prevent it from pulling in plugins from already installed
+ # twisted packages
+ rm twisted/plugins/__init__.py || die
+
+ # an empty file doesn't work because the tests check for
+ # docstrings in all packages
+ echo "'''plugins stub'''" > twisted/plugins/__init__.py || die
+
+ PYTHONPATH=. "${T}"/tests/usr/bin/trial twisted || die "trial failed"
+ cd "${S}"
+ rm -rf "${T}/tests"
+}