aboutsummaryrefslogtreecommitdiff
path: root/net-p2p/py-bittorrent
diff options
context:
space:
mode:
authorMario Sergio Fujikawa Ferreira <lioux@FreeBSD.org>2004-12-08 19:19:29 +0000
committerMario Sergio Fujikawa Ferreira <lioux@FreeBSD.org>2004-12-08 19:19:29 +0000
commitbcba0638b2310e8b61476ae6452ae2b673d4523c (patch)
treefebc411a27adfb6333c0d5e01844c0370b35fab0 /net-p2p/py-bittorrent
parent9f8a9a57217527ea97105b05b0533f92e754f806 (diff)
downloadports-bcba0638b2310e8b61476ae6452ae2b673d4523c.tar.gz
ports-bcba0638b2310e8b61476ae6452ae2b673d4523c.zip
Notes
Diffstat (limited to 'net-p2p/py-bittorrent')
-rw-r--r--net-p2p/py-bittorrent/Makefile8
-rw-r--r--net-p2p/py-bittorrent/files/zurllib.py61
2 files changed, 66 insertions, 3 deletions
diff --git a/net-p2p/py-bittorrent/Makefile b/net-p2p/py-bittorrent/Makefile
index 50830269b263..f3ad85dea2a2 100644
--- a/net-p2p/py-bittorrent/Makefile
+++ b/net-p2p/py-bittorrent/Makefile
@@ -7,7 +7,7 @@
PORTNAME= BitTorrent
PORTVERSION= 3.4.2
-PORTREVISION= 1
+PORTREVISION= 2
PORTEPOCH= 1
CATEGORIES?= net python
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE_EXTENDED}
@@ -18,8 +18,6 @@ PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
MAINTAINER= lioux@FreeBSD.org
COMMENT?= A peer-to-peer tool for distributing files written in Python
-BROKEN= Does not work with python 2.4
-
USE_PYTHON= yes
USE_PYDISTUTILS= yes
USE_REINPLACE= yes
@@ -46,6 +44,10 @@ pre-everything::
@${ECHO_MSG} '===> Define WITHOUT_GUI to disable GUI installation'
.endif
+post-extract:
+# patch to work with python 2.4
+ @${CP} ${FILESDIR}/zurllib.py ${WRKSRC}/BitTorrent
+
post-patch:
@${FIND} ${WRKSRC} -type f | \
${XARGS} -x -n 10 \
diff --git a/net-p2p/py-bittorrent/files/zurllib.py b/net-p2p/py-bittorrent/files/zurllib.py
new file mode 100644
index 000000000000..a99ca51142bb
--- /dev/null
+++ b/net-p2p/py-bittorrent/files/zurllib.py
@@ -0,0 +1,61 @@
+# Written by John Hoffman
+# see LICENSE.txt for license information
+
+from httplib import HTTPConnection
+from urlparse import urlparse
+import socket
+from gzip import GzipFile
+from StringIO import StringIO
+from urllib import quote, unquote
+from __init__ import version
+
+MAX_REDIRECTS = 10
+
+class urlopen:
+ def __init__(self, url):
+ self.tries = 0
+ self._open(url)
+
+ def _open(self, url):
+ self.tries += 1
+ if self.tries > MAX_REDIRECTS:
+ raise IOError, ('http error', 500,
+ "Internal Server Error: Redirect Recursion")
+ (scheme, netloc, path, pars, query, fragment) = urlparse(url)
+ if scheme != 'http':
+ raise IOError, ('url error', 'unknown url type', scheme, url)
+ url = path
+ if pars:
+ url += ';'+pars
+ if query:
+ url += '?'+query
+# if fragment:
+ self.connection = HTTPConnection(netloc)
+ self.connection.request('GET', url, None,
+ { 'User-Agent': 'BitTorrent/' + version,
+ 'Accept-Encoding': 'gzip' } )
+ self.response = self.connection.getresponse()
+ status = self.response.status
+ if status in (301,302):
+ try:
+ self.connection.close()
+ except:
+ pass
+ self._open(self.response.getheader('Location'))
+ return
+ if status != 200:
+ raise IOError, ('http error', status, self.response.reason)
+
+ def read(self):
+ data = self.response.read()
+ if self.response.getheader('Content-Encoding','').find('gzip') >= 0:
+ try:
+ compressed = StringIO(data)
+ f = GzipFile(fileobj = compressed)
+ data = f.read()
+ except:
+ raise IOError, ('http error', 'got corrupt response')
+ return data
+
+ def close(self):
+ self.connection.close()