aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--net-p2p/py-bittorrent-devel/Makefile59
-rw-r--r--net-p2p/py-bittorrent-devel/distinfo1
-rw-r--r--net-p2p/py-bittorrent-devel/files/extra-nogui-patch-setup.py14
-rw-r--r--net-p2p/py-bittorrent-devel/pkg-descr11
-rw-r--r--net-p2p/py-bittorrent-devel/pkg-plist105
-rw-r--r--net-p2p/py-bittorrent/Makefile59
-rw-r--r--net-p2p/py-bittorrent/distinfo1
-rw-r--r--net-p2p/py-bittorrent/files/extra-nogui-patch-setup.py14
-rw-r--r--net-p2p/py-bittorrent/pkg-descr11
-rw-r--r--net-p2p/py-bittorrent/pkg-plist105
-rw-r--r--net-p2p/py-kenosis-bittorrent/Makefile59
-rw-r--r--net-p2p/py-kenosis-bittorrent/distinfo1
-rw-r--r--net-p2p/py-kenosis-bittorrent/files/extra-nogui-patch-setup.py14
-rw-r--r--net-p2p/py-kenosis-bittorrent/pkg-descr11
-rw-r--r--net-p2p/py-kenosis-bittorrent/pkg-plist105
-rw-r--r--net/Makefile1
-rw-r--r--net/py-bittorrent-devel/Makefile59
-rw-r--r--net/py-bittorrent-devel/distinfo1
-rw-r--r--net/py-bittorrent-devel/files/extra-nogui-patch-setup.py14
-rw-r--r--net/py-bittorrent-devel/pkg-descr11
-rw-r--r--net/py-bittorrent-devel/pkg-plist105
-rw-r--r--net/py-bittorrent/Makefile59
-rw-r--r--net/py-bittorrent/distinfo1
-rw-r--r--net/py-bittorrent/files/extra-nogui-patch-setup.py14
-rw-r--r--net/py-bittorrent/pkg-descr11
-rw-r--r--net/py-bittorrent/pkg-plist105
-rw-r--r--net/py-kenosis-bittorrent/Makefile59
-rw-r--r--net/py-kenosis-bittorrent/distinfo1
-rw-r--r--net/py-kenosis-bittorrent/files/extra-nogui-patch-setup.py14
-rw-r--r--net/py-kenosis-bittorrent/pkg-descr11
-rw-r--r--net/py-kenosis-bittorrent/pkg-plist105
-rw-r--r--net/py-shadowclient/Makefile59
-rw-r--r--net/py-shadowclient/distinfo1
-rw-r--r--net/py-shadowclient/files/extra-nogui-patch-setup.py14
-rw-r--r--net/py-shadowclient/pkg-descr11
-rw-r--r--net/py-shadowclient/pkg-plist105
36 files changed, 1331 insertions, 0 deletions
diff --git a/net-p2p/py-bittorrent-devel/Makefile b/net-p2p/py-bittorrent-devel/Makefile
new file mode 100644
index 000000000000..4cf12ca9fbfc
--- /dev/null
+++ b/net-p2p/py-bittorrent-devel/Makefile
@@ -0,0 +1,59 @@
+# New ports collection makefile for: BitTorrent
+# Date created: Sun Mar 16 06:34:12 UTC 2003
+# Whom: Mario Sergio Fujikawa Ferreira <lioux@FreeBSD.org>
+#
+# $FreeBSD$
+#
+
+PORTNAME= BitTorrent
+PORTVERSION= 3.2.1.b
+CATEGORIES= net python
+MASTER_SITES= http://bitconjurer.org/BitTorrent/
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+DISTNAME= ${PORTNAME}-${PORTVERSION:C/\.(.)$/\1/}
+
+MAINTAINER= lioux@FreeBSD.org
+COMMENT= A peer-to-peer tool for distributing files written in Python
+
+USE_PYTHON= yes
+USE_PYDISTUTILS= yes
+USE_REINPLACE= yes
+
+DOC_FILES= FAQ.txt INSTALL.unix.txt LICENSE.txt README.txt \
+ credits.txt todo.txt
+
+# required for GUI
+.ifndef(WITHOUT_GUI)
+RUN_DEPENDS+= ${PYTHON_SITELIBDIR}/wxPython/__init__.py:${PORTSDIR}/x11-toolkits/py-wxPython
+
+PLIST_SUB+= GUI=''
+.else
+EXTRA_PATCHES+= ${FILESDIR}/extra-nogui-patch-setup.py
+PLIST_SUB+= GUI='@comment '
+.endif
+
+pre-everything::
+.ifndef(WITHOUT_GUI)
+ @${ECHO_MSG} '===> Define WITHOUT_GUI to disable GUI installation'
+.endif
+
+post-patch:
+ @${FIND} ${WRKSRC} -type f | \
+ ${XARGS} -x -n 10 \
+ ${REINPLACE_CMD} -E \
+ -e 's|/usr/bin/env python2|${LOCALBASE}/bin/python|'
+.ifdef(WITHOUT_GUI)
+ @${REINPLACE_CMD} -E \
+ -e 's|btdownloadgui.py|btdownloadcurses.py|' \
+ ${WRKSRC}/INSTALL.unix.txt
+.endif
+
+post-install:
+.ifndef(PORTDOCS)
+ @${MKDIR} ${DOCSDIR}
+.for file in ${DOC_FILES}
+ @${INSTALL_DATA} ${WRKSRC}/${file} ${DOCSDIR}
+.endfor
+.endif
+
+.include <bsd.port.mk>
diff --git a/net-p2p/py-bittorrent-devel/distinfo b/net-p2p/py-bittorrent-devel/distinfo
new file mode 100644
index 000000000000..035c08eeac2b
--- /dev/null
+++ b/net-p2p/py-bittorrent-devel/distinfo
@@ -0,0 +1 @@
+MD5 (BitTorrent-3.2.1b.tar.gz) = 9e0cc346a4bfa3904380ed119d8bac90
diff --git a/net-p2p/py-bittorrent-devel/files/extra-nogui-patch-setup.py b/net-p2p/py-bittorrent-devel/files/extra-nogui-patch-setup.py
new file mode 100644
index 000000000000..7461547d430a
--- /dev/null
+++ b/net-p2p/py-bittorrent-devel/files/extra-nogui-patch-setup.py
@@ -0,0 +1,14 @@
+--- setup.py.orig Sun Mar 30 17:01:05 2003
++++ setup.py Sun Mar 30 17:01:20 2003
+@@ -18,9 +18,9 @@
+
+ packages = ["BitTorrent"],
+
+- scripts = ["btdownloadgui.py", "btdownloadheadless.py", "btdownloadlibrary.py",
++ scripts = ["btdownloadheadless.py", "btdownloadlibrary.py",
+ "bttrack.py", "btmakemetafile.py", "btlaunchmany.py", "btcompletedir.py",
+- "btdownloadcurses.py", "btcompletedirgui.py", "btlaunchmanycurses.py",
++ "btdownloadcurses.py", "btlaunchmanycurses.py",
+ "btmakemetafile.py", "btreannounce.py", "btrename.py", "btshowmetainfo.py",
+ "bttest.py"]
+ )
diff --git a/net-p2p/py-bittorrent-devel/pkg-descr b/net-p2p/py-bittorrent-devel/pkg-descr
new file mode 100644
index 000000000000..4ca529f824ef
--- /dev/null
+++ b/net-p2p/py-bittorrent-devel/pkg-descr
@@ -0,0 +1,11 @@
+[ excerpt from distribution's README.txt ]
+
+BitTorrent is a tool for distributing files. It's extremely easy
+to use - downloads are started by clicking on hyperlinks. Whenever
+more than one person is downloading at once they send pieces of the
+file(s) to each other, thus relieving the central server's bandwidth
+burden. Even with many simultaneous downloads, the upload burden
+on the central server remains quite small, since each new downloader
+introduces new upload capacity.
+
+WWW: http://bitconjurer.org/BitTorrent/
diff --git a/net-p2p/py-bittorrent-devel/pkg-plist b/net-p2p/py-bittorrent-devel/pkg-plist
new file mode 100644
index 000000000000..be4df3d0f832
--- /dev/null
+++ b/net-p2p/py-bittorrent-devel/pkg-plist
@@ -0,0 +1,105 @@
+bin/btcompletedir.py
+%%GUI%%bin/btcompletedirgui.py
+bin/btdownloadcurses.py
+%%GUI%%bin/btdownloadgui.py
+bin/btdownloadheadless.py
+bin/btdownloadlibrary.py
+bin/btlaunchmany.py
+bin/btlaunchmanycurses.py
+bin/btmakemetafile.py
+bin/btreannounce.py
+bin/btrename.py
+bin/btshowmetainfo.py
+bin/bttest.py
+bin/bttrack.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Choker.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Choker.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Choker.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Connecter.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Connecter.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Connecter.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/CurrentRateMeasure.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/CurrentRateMeasure.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/CurrentRateMeasure.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Downloader.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Downloader.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Downloader.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/DownloaderFeedback.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/DownloaderFeedback.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/DownloaderFeedback.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Encrypter.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Encrypter.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Encrypter.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/EndgameDownloader.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/EndgameDownloader.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/EndgameDownloader.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/HTTPHandler.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/HTTPHandler.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/HTTPHandler.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/NatCheck.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/NatCheck.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/NatCheck.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/PiecePicker.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/PiecePicker.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/PiecePicker.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/RateMeasure.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/RateMeasure.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/RateMeasure.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/RawServer.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/RawServer.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/RawServer.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Rerequester.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Rerequester.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Rerequester.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Storage.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Storage.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Storage.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/StorageWrapper.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/StorageWrapper.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/StorageWrapper.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Uploader.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Uploader.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Uploader.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/__init__.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/__init__.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/__init__.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/bencode.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/bencode.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/bencode.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/bitfield.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/bitfield.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/bitfield.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/btformats.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/btformats.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/btformats.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/download.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/download.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/download.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/fakeopen.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/fakeopen.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/fakeopen.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/parseargs.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/parseargs.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/parseargs.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/selectpoll.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/selectpoll.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/selectpoll.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/testtest.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/testtest.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/testtest.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/track.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/track.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/track.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/zurllib.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/zurllib.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/zurllib.pyo
+%%PORTDOCS%%%%DOCSDIR%%/FAQ.txt
+%%PORTDOCS%%%%DOCSDIR%%/INSTALL.unix.txt
+%%PORTDOCS%%%%DOCSDIR%%/LICENSE.txt
+%%PORTDOCS%%%%DOCSDIR%%/README.txt
+%%PORTDOCS%%%%DOCSDIR%%/credits.txt
+%%PORTDOCS%%%%DOCSDIR%%/todo.txt
+%%PORTDOCS%%@dirrm %%DOCSDIR%%
+@dirrm %%PYTHON_SITELIBDIR%%/BitTorrent
+@unexec rmdir %D/%%PYTHON_SITELIBDIR%% 2>/dev/null || true
+@unexec rmdir %D/lib/python2.2 2>/dev/null || true
diff --git a/net-p2p/py-bittorrent/Makefile b/net-p2p/py-bittorrent/Makefile
new file mode 100644
index 000000000000..4cf12ca9fbfc
--- /dev/null
+++ b/net-p2p/py-bittorrent/Makefile
@@ -0,0 +1,59 @@
+# New ports collection makefile for: BitTorrent
+# Date created: Sun Mar 16 06:34:12 UTC 2003
+# Whom: Mario Sergio Fujikawa Ferreira <lioux@FreeBSD.org>
+#
+# $FreeBSD$
+#
+
+PORTNAME= BitTorrent
+PORTVERSION= 3.2.1.b
+CATEGORIES= net python
+MASTER_SITES= http://bitconjurer.org/BitTorrent/
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+DISTNAME= ${PORTNAME}-${PORTVERSION:C/\.(.)$/\1/}
+
+MAINTAINER= lioux@FreeBSD.org
+COMMENT= A peer-to-peer tool for distributing files written in Python
+
+USE_PYTHON= yes
+USE_PYDISTUTILS= yes
+USE_REINPLACE= yes
+
+DOC_FILES= FAQ.txt INSTALL.unix.txt LICENSE.txt README.txt \
+ credits.txt todo.txt
+
+# required for GUI
+.ifndef(WITHOUT_GUI)
+RUN_DEPENDS+= ${PYTHON_SITELIBDIR}/wxPython/__init__.py:${PORTSDIR}/x11-toolkits/py-wxPython
+
+PLIST_SUB+= GUI=''
+.else
+EXTRA_PATCHES+= ${FILESDIR}/extra-nogui-patch-setup.py
+PLIST_SUB+= GUI='@comment '
+.endif
+
+pre-everything::
+.ifndef(WITHOUT_GUI)
+ @${ECHO_MSG} '===> Define WITHOUT_GUI to disable GUI installation'
+.endif
+
+post-patch:
+ @${FIND} ${WRKSRC} -type f | \
+ ${XARGS} -x -n 10 \
+ ${REINPLACE_CMD} -E \
+ -e 's|/usr/bin/env python2|${LOCALBASE}/bin/python|'
+.ifdef(WITHOUT_GUI)
+ @${REINPLACE_CMD} -E \
+ -e 's|btdownloadgui.py|btdownloadcurses.py|' \
+ ${WRKSRC}/INSTALL.unix.txt
+.endif
+
+post-install:
+.ifndef(PORTDOCS)
+ @${MKDIR} ${DOCSDIR}
+.for file in ${DOC_FILES}
+ @${INSTALL_DATA} ${WRKSRC}/${file} ${DOCSDIR}
+.endfor
+.endif
+
+.include <bsd.port.mk>
diff --git a/net-p2p/py-bittorrent/distinfo b/net-p2p/py-bittorrent/distinfo
new file mode 100644
index 000000000000..035c08eeac2b
--- /dev/null
+++ b/net-p2p/py-bittorrent/distinfo
@@ -0,0 +1 @@
+MD5 (BitTorrent-3.2.1b.tar.gz) = 9e0cc346a4bfa3904380ed119d8bac90
diff --git a/net-p2p/py-bittorrent/files/extra-nogui-patch-setup.py b/net-p2p/py-bittorrent/files/extra-nogui-patch-setup.py
new file mode 100644
index 000000000000..7461547d430a
--- /dev/null
+++ b/net-p2p/py-bittorrent/files/extra-nogui-patch-setup.py
@@ -0,0 +1,14 @@
+--- setup.py.orig Sun Mar 30 17:01:05 2003
++++ setup.py Sun Mar 30 17:01:20 2003
+@@ -18,9 +18,9 @@
+
+ packages = ["BitTorrent"],
+
+- scripts = ["btdownloadgui.py", "btdownloadheadless.py", "btdownloadlibrary.py",
++ scripts = ["btdownloadheadless.py", "btdownloadlibrary.py",
+ "bttrack.py", "btmakemetafile.py", "btlaunchmany.py", "btcompletedir.py",
+- "btdownloadcurses.py", "btcompletedirgui.py", "btlaunchmanycurses.py",
++ "btdownloadcurses.py", "btlaunchmanycurses.py",
+ "btmakemetafile.py", "btreannounce.py", "btrename.py", "btshowmetainfo.py",
+ "bttest.py"]
+ )
diff --git a/net-p2p/py-bittorrent/pkg-descr b/net-p2p/py-bittorrent/pkg-descr
new file mode 100644
index 000000000000..4ca529f824ef
--- /dev/null
+++ b/net-p2p/py-bittorrent/pkg-descr
@@ -0,0 +1,11 @@
+[ excerpt from distribution's README.txt ]
+
+BitTorrent is a tool for distributing files. It's extremely easy
+to use - downloads are started by clicking on hyperlinks. Whenever
+more than one person is downloading at once they send pieces of the
+file(s) to each other, thus relieving the central server's bandwidth
+burden. Even with many simultaneous downloads, the upload burden
+on the central server remains quite small, since each new downloader
+introduces new upload capacity.
+
+WWW: http://bitconjurer.org/BitTorrent/
diff --git a/net-p2p/py-bittorrent/pkg-plist b/net-p2p/py-bittorrent/pkg-plist
new file mode 100644
index 000000000000..be4df3d0f832
--- /dev/null
+++ b/net-p2p/py-bittorrent/pkg-plist
@@ -0,0 +1,105 @@
+bin/btcompletedir.py
+%%GUI%%bin/btcompletedirgui.py
+bin/btdownloadcurses.py
+%%GUI%%bin/btdownloadgui.py
+bin/btdownloadheadless.py
+bin/btdownloadlibrary.py
+bin/btlaunchmany.py
+bin/btlaunchmanycurses.py
+bin/btmakemetafile.py
+bin/btreannounce.py
+bin/btrename.py
+bin/btshowmetainfo.py
+bin/bttest.py
+bin/bttrack.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Choker.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Choker.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Choker.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Connecter.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Connecter.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Connecter.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/CurrentRateMeasure.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/CurrentRateMeasure.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/CurrentRateMeasure.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Downloader.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Downloader.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Downloader.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/DownloaderFeedback.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/DownloaderFeedback.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/DownloaderFeedback.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Encrypter.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Encrypter.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Encrypter.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/EndgameDownloader.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/EndgameDownloader.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/EndgameDownloader.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/HTTPHandler.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/HTTPHandler.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/HTTPHandler.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/NatCheck.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/NatCheck.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/NatCheck.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/PiecePicker.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/PiecePicker.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/PiecePicker.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/RateMeasure.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/RateMeasure.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/RateMeasure.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/RawServer.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/RawServer.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/RawServer.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Rerequester.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Rerequester.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Rerequester.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Storage.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Storage.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Storage.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/StorageWrapper.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/StorageWrapper.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/StorageWrapper.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Uploader.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Uploader.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Uploader.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/__init__.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/__init__.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/__init__.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/bencode.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/bencode.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/bencode.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/bitfield.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/bitfield.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/bitfield.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/btformats.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/btformats.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/btformats.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/download.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/download.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/download.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/fakeopen.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/fakeopen.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/fakeopen.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/parseargs.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/parseargs.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/parseargs.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/selectpoll.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/selectpoll.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/selectpoll.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/testtest.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/testtest.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/testtest.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/track.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/track.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/track.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/zurllib.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/zurllib.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/zurllib.pyo
+%%PORTDOCS%%%%DOCSDIR%%/FAQ.txt
+%%PORTDOCS%%%%DOCSDIR%%/INSTALL.unix.txt
+%%PORTDOCS%%%%DOCSDIR%%/LICENSE.txt
+%%PORTDOCS%%%%DOCSDIR%%/README.txt
+%%PORTDOCS%%%%DOCSDIR%%/credits.txt
+%%PORTDOCS%%%%DOCSDIR%%/todo.txt
+%%PORTDOCS%%@dirrm %%DOCSDIR%%
+@dirrm %%PYTHON_SITELIBDIR%%/BitTorrent
+@unexec rmdir %D/%%PYTHON_SITELIBDIR%% 2>/dev/null || true
+@unexec rmdir %D/lib/python2.2 2>/dev/null || true
diff --git a/net-p2p/py-kenosis-bittorrent/Makefile b/net-p2p/py-kenosis-bittorrent/Makefile
new file mode 100644
index 000000000000..4cf12ca9fbfc
--- /dev/null
+++ b/net-p2p/py-kenosis-bittorrent/Makefile
@@ -0,0 +1,59 @@
+# New ports collection makefile for: BitTorrent
+# Date created: Sun Mar 16 06:34:12 UTC 2003
+# Whom: Mario Sergio Fujikawa Ferreira <lioux@FreeBSD.org>
+#
+# $FreeBSD$
+#
+
+PORTNAME= BitTorrent
+PORTVERSION= 3.2.1.b
+CATEGORIES= net python
+MASTER_SITES= http://bitconjurer.org/BitTorrent/
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+DISTNAME= ${PORTNAME}-${PORTVERSION:C/\.(.)$/\1/}
+
+MAINTAINER= lioux@FreeBSD.org
+COMMENT= A peer-to-peer tool for distributing files written in Python
+
+USE_PYTHON= yes
+USE_PYDISTUTILS= yes
+USE_REINPLACE= yes
+
+DOC_FILES= FAQ.txt INSTALL.unix.txt LICENSE.txt README.txt \
+ credits.txt todo.txt
+
+# required for GUI
+.ifndef(WITHOUT_GUI)
+RUN_DEPENDS+= ${PYTHON_SITELIBDIR}/wxPython/__init__.py:${PORTSDIR}/x11-toolkits/py-wxPython
+
+PLIST_SUB+= GUI=''
+.else
+EXTRA_PATCHES+= ${FILESDIR}/extra-nogui-patch-setup.py
+PLIST_SUB+= GUI='@comment '
+.endif
+
+pre-everything::
+.ifndef(WITHOUT_GUI)
+ @${ECHO_MSG} '===> Define WITHOUT_GUI to disable GUI installation'
+.endif
+
+post-patch:
+ @${FIND} ${WRKSRC} -type f | \
+ ${XARGS} -x -n 10 \
+ ${REINPLACE_CMD} -E \
+ -e 's|/usr/bin/env python2|${LOCALBASE}/bin/python|'
+.ifdef(WITHOUT_GUI)
+ @${REINPLACE_CMD} -E \
+ -e 's|btdownloadgui.py|btdownloadcurses.py|' \
+ ${WRKSRC}/INSTALL.unix.txt
+.endif
+
+post-install:
+.ifndef(PORTDOCS)
+ @${MKDIR} ${DOCSDIR}
+.for file in ${DOC_FILES}
+ @${INSTALL_DATA} ${WRKSRC}/${file} ${DOCSDIR}
+.endfor
+.endif
+
+.include <bsd.port.mk>
diff --git a/net-p2p/py-kenosis-bittorrent/distinfo b/net-p2p/py-kenosis-bittorrent/distinfo
new file mode 100644
index 000000000000..035c08eeac2b
--- /dev/null
+++ b/net-p2p/py-kenosis-bittorrent/distinfo
@@ -0,0 +1 @@
+MD5 (BitTorrent-3.2.1b.tar.gz) = 9e0cc346a4bfa3904380ed119d8bac90
diff --git a/net-p2p/py-kenosis-bittorrent/files/extra-nogui-patch-setup.py b/net-p2p/py-kenosis-bittorrent/files/extra-nogui-patch-setup.py
new file mode 100644
index 000000000000..7461547d430a
--- /dev/null
+++ b/net-p2p/py-kenosis-bittorrent/files/extra-nogui-patch-setup.py
@@ -0,0 +1,14 @@
+--- setup.py.orig Sun Mar 30 17:01:05 2003
++++ setup.py Sun Mar 30 17:01:20 2003
+@@ -18,9 +18,9 @@
+
+ packages = ["BitTorrent"],
+
+- scripts = ["btdownloadgui.py", "btdownloadheadless.py", "btdownloadlibrary.py",
++ scripts = ["btdownloadheadless.py", "btdownloadlibrary.py",
+ "bttrack.py", "btmakemetafile.py", "btlaunchmany.py", "btcompletedir.py",
+- "btdownloadcurses.py", "btcompletedirgui.py", "btlaunchmanycurses.py",
++ "btdownloadcurses.py", "btlaunchmanycurses.py",
+ "btmakemetafile.py", "btreannounce.py", "btrename.py", "btshowmetainfo.py",
+ "bttest.py"]
+ )
diff --git a/net-p2p/py-kenosis-bittorrent/pkg-descr b/net-p2p/py-kenosis-bittorrent/pkg-descr
new file mode 100644
index 000000000000..4ca529f824ef
--- /dev/null
+++ b/net-p2p/py-kenosis-bittorrent/pkg-descr
@@ -0,0 +1,11 @@
+[ excerpt from distribution's README.txt ]
+
+BitTorrent is a tool for distributing files. It's extremely easy
+to use - downloads are started by clicking on hyperlinks. Whenever
+more than one person is downloading at once they send pieces of the
+file(s) to each other, thus relieving the central server's bandwidth
+burden. Even with many simultaneous downloads, the upload burden
+on the central server remains quite small, since each new downloader
+introduces new upload capacity.
+
+WWW: http://bitconjurer.org/BitTorrent/
diff --git a/net-p2p/py-kenosis-bittorrent/pkg-plist b/net-p2p/py-kenosis-bittorrent/pkg-plist
new file mode 100644
index 000000000000..be4df3d0f832
--- /dev/null
+++ b/net-p2p/py-kenosis-bittorrent/pkg-plist
@@ -0,0 +1,105 @@
+bin/btcompletedir.py
+%%GUI%%bin/btcompletedirgui.py
+bin/btdownloadcurses.py
+%%GUI%%bin/btdownloadgui.py
+bin/btdownloadheadless.py
+bin/btdownloadlibrary.py
+bin/btlaunchmany.py
+bin/btlaunchmanycurses.py
+bin/btmakemetafile.py
+bin/btreannounce.py
+bin/btrename.py
+bin/btshowmetainfo.py
+bin/bttest.py
+bin/bttrack.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Choker.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Choker.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Choker.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Connecter.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Connecter.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Connecter.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/CurrentRateMeasure.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/CurrentRateMeasure.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/CurrentRateMeasure.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Downloader.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Downloader.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Downloader.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/DownloaderFeedback.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/DownloaderFeedback.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/DownloaderFeedback.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Encrypter.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Encrypter.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Encrypter.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/EndgameDownloader.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/EndgameDownloader.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/EndgameDownloader.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/HTTPHandler.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/HTTPHandler.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/HTTPHandler.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/NatCheck.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/NatCheck.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/NatCheck.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/PiecePicker.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/PiecePicker.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/PiecePicker.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/RateMeasure.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/RateMeasure.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/RateMeasure.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/RawServer.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/RawServer.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/RawServer.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Rerequester.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Rerequester.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Rerequester.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Storage.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Storage.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Storage.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/StorageWrapper.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/StorageWrapper.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/StorageWrapper.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Uploader.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Uploader.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Uploader.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/__init__.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/__init__.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/__init__.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/bencode.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/bencode.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/bencode.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/bitfield.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/bitfield.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/bitfield.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/btformats.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/btformats.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/btformats.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/download.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/download.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/download.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/fakeopen.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/fakeopen.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/fakeopen.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/parseargs.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/parseargs.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/parseargs.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/selectpoll.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/selectpoll.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/selectpoll.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/testtest.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/testtest.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/testtest.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/track.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/track.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/track.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/zurllib.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/zurllib.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/zurllib.pyo
+%%PORTDOCS%%%%DOCSDIR%%/FAQ.txt
+%%PORTDOCS%%%%DOCSDIR%%/INSTALL.unix.txt
+%%PORTDOCS%%%%DOCSDIR%%/LICENSE.txt
+%%PORTDOCS%%%%DOCSDIR%%/README.txt
+%%PORTDOCS%%%%DOCSDIR%%/credits.txt
+%%PORTDOCS%%%%DOCSDIR%%/todo.txt
+%%PORTDOCS%%@dirrm %%DOCSDIR%%
+@dirrm %%PYTHON_SITELIBDIR%%/BitTorrent
+@unexec rmdir %D/%%PYTHON_SITELIBDIR%% 2>/dev/null || true
+@unexec rmdir %D/lib/python2.2 2>/dev/null || true
diff --git a/net/Makefile b/net/Makefile
index 89e83da61ae4..4a73255ee08f 100644
--- a/net/Makefile
+++ b/net/Makefile
@@ -502,6 +502,7 @@
SUBDIR += pvm++
SUBDIR += pxe
SUBDIR += py-adns
+ SUBDIR += py-bittorrent
SUBDIR += py-dns
SUBDIR += py-fngrab
SUBDIR += py-google
diff --git a/net/py-bittorrent-devel/Makefile b/net/py-bittorrent-devel/Makefile
new file mode 100644
index 000000000000..4cf12ca9fbfc
--- /dev/null
+++ b/net/py-bittorrent-devel/Makefile
@@ -0,0 +1,59 @@
+# New ports collection makefile for: BitTorrent
+# Date created: Sun Mar 16 06:34:12 UTC 2003
+# Whom: Mario Sergio Fujikawa Ferreira <lioux@FreeBSD.org>
+#
+# $FreeBSD$
+#
+
+PORTNAME= BitTorrent
+PORTVERSION= 3.2.1.b
+CATEGORIES= net python
+MASTER_SITES= http://bitconjurer.org/BitTorrent/
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+DISTNAME= ${PORTNAME}-${PORTVERSION:C/\.(.)$/\1/}
+
+MAINTAINER= lioux@FreeBSD.org
+COMMENT= A peer-to-peer tool for distributing files written in Python
+
+USE_PYTHON= yes
+USE_PYDISTUTILS= yes
+USE_REINPLACE= yes
+
+DOC_FILES= FAQ.txt INSTALL.unix.txt LICENSE.txt README.txt \
+ credits.txt todo.txt
+
+# required for GUI
+.ifndef(WITHOUT_GUI)
+RUN_DEPENDS+= ${PYTHON_SITELIBDIR}/wxPython/__init__.py:${PORTSDIR}/x11-toolkits/py-wxPython
+
+PLIST_SUB+= GUI=''
+.else
+EXTRA_PATCHES+= ${FILESDIR}/extra-nogui-patch-setup.py
+PLIST_SUB+= GUI='@comment '
+.endif
+
+pre-everything::
+.ifndef(WITHOUT_GUI)
+ @${ECHO_MSG} '===> Define WITHOUT_GUI to disable GUI installation'
+.endif
+
+post-patch:
+ @${FIND} ${WRKSRC} -type f | \
+ ${XARGS} -x -n 10 \
+ ${REINPLACE_CMD} -E \
+ -e 's|/usr/bin/env python2|${LOCALBASE}/bin/python|'
+.ifdef(WITHOUT_GUI)
+ @${REINPLACE_CMD} -E \
+ -e 's|btdownloadgui.py|btdownloadcurses.py|' \
+ ${WRKSRC}/INSTALL.unix.txt
+.endif
+
+post-install:
+.ifndef(PORTDOCS)
+ @${MKDIR} ${DOCSDIR}
+.for file in ${DOC_FILES}
+ @${INSTALL_DATA} ${WRKSRC}/${file} ${DOCSDIR}
+.endfor
+.endif
+
+.include <bsd.port.mk>
diff --git a/net/py-bittorrent-devel/distinfo b/net/py-bittorrent-devel/distinfo
new file mode 100644
index 000000000000..035c08eeac2b
--- /dev/null
+++ b/net/py-bittorrent-devel/distinfo
@@ -0,0 +1 @@
+MD5 (BitTorrent-3.2.1b.tar.gz) = 9e0cc346a4bfa3904380ed119d8bac90
diff --git a/net/py-bittorrent-devel/files/extra-nogui-patch-setup.py b/net/py-bittorrent-devel/files/extra-nogui-patch-setup.py
new file mode 100644
index 000000000000..7461547d430a
--- /dev/null
+++ b/net/py-bittorrent-devel/files/extra-nogui-patch-setup.py
@@ -0,0 +1,14 @@
+--- setup.py.orig Sun Mar 30 17:01:05 2003
++++ setup.py Sun Mar 30 17:01:20 2003
+@@ -18,9 +18,9 @@
+
+ packages = ["BitTorrent"],
+
+- scripts = ["btdownloadgui.py", "btdownloadheadless.py", "btdownloadlibrary.py",
++ scripts = ["btdownloadheadless.py", "btdownloadlibrary.py",
+ "bttrack.py", "btmakemetafile.py", "btlaunchmany.py", "btcompletedir.py",
+- "btdownloadcurses.py", "btcompletedirgui.py", "btlaunchmanycurses.py",
++ "btdownloadcurses.py", "btlaunchmanycurses.py",
+ "btmakemetafile.py", "btreannounce.py", "btrename.py", "btshowmetainfo.py",
+ "bttest.py"]
+ )
diff --git a/net/py-bittorrent-devel/pkg-descr b/net/py-bittorrent-devel/pkg-descr
new file mode 100644
index 000000000000..4ca529f824ef
--- /dev/null
+++ b/net/py-bittorrent-devel/pkg-descr
@@ -0,0 +1,11 @@
+[ excerpt from distribution's README.txt ]
+
+BitTorrent is a tool for distributing files. It's extremely easy
+to use - downloads are started by clicking on hyperlinks. Whenever
+more than one person is downloading at once they send pieces of the
+file(s) to each other, thus relieving the central server's bandwidth
+burden. Even with many simultaneous downloads, the upload burden
+on the central server remains quite small, since each new downloader
+introduces new upload capacity.
+
+WWW: http://bitconjurer.org/BitTorrent/
diff --git a/net/py-bittorrent-devel/pkg-plist b/net/py-bittorrent-devel/pkg-plist
new file mode 100644
index 000000000000..be4df3d0f832
--- /dev/null
+++ b/net/py-bittorrent-devel/pkg-plist
@@ -0,0 +1,105 @@
+bin/btcompletedir.py
+%%GUI%%bin/btcompletedirgui.py
+bin/btdownloadcurses.py
+%%GUI%%bin/btdownloadgui.py
+bin/btdownloadheadless.py
+bin/btdownloadlibrary.py
+bin/btlaunchmany.py
+bin/btlaunchmanycurses.py
+bin/btmakemetafile.py
+bin/btreannounce.py
+bin/btrename.py
+bin/btshowmetainfo.py
+bin/bttest.py
+bin/bttrack.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Choker.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Choker.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Choker.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Connecter.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Connecter.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Connecter.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/CurrentRateMeasure.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/CurrentRateMeasure.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/CurrentRateMeasure.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Downloader.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Downloader.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Downloader.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/DownloaderFeedback.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/DownloaderFeedback.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/DownloaderFeedback.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Encrypter.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Encrypter.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Encrypter.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/EndgameDownloader.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/EndgameDownloader.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/EndgameDownloader.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/HTTPHandler.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/HTTPHandler.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/HTTPHandler.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/NatCheck.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/NatCheck.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/NatCheck.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/PiecePicker.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/PiecePicker.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/PiecePicker.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/RateMeasure.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/RateMeasure.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/RateMeasure.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/RawServer.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/RawServer.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/RawServer.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Rerequester.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Rerequester.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Rerequester.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Storage.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Storage.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Storage.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/StorageWrapper.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/StorageWrapper.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/StorageWrapper.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Uploader.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Uploader.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Uploader.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/__init__.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/__init__.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/__init__.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/bencode.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/bencode.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/bencode.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/bitfield.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/bitfield.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/bitfield.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/btformats.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/btformats.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/btformats.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/download.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/download.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/download.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/fakeopen.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/fakeopen.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/fakeopen.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/parseargs.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/parseargs.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/parseargs.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/selectpoll.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/selectpoll.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/selectpoll.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/testtest.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/testtest.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/testtest.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/track.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/track.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/track.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/zurllib.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/zurllib.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/zurllib.pyo
+%%PORTDOCS%%%%DOCSDIR%%/FAQ.txt
+%%PORTDOCS%%%%DOCSDIR%%/INSTALL.unix.txt
+%%PORTDOCS%%%%DOCSDIR%%/LICENSE.txt
+%%PORTDOCS%%%%DOCSDIR%%/README.txt
+%%PORTDOCS%%%%DOCSDIR%%/credits.txt
+%%PORTDOCS%%%%DOCSDIR%%/todo.txt
+%%PORTDOCS%%@dirrm %%DOCSDIR%%
+@dirrm %%PYTHON_SITELIBDIR%%/BitTorrent
+@unexec rmdir %D/%%PYTHON_SITELIBDIR%% 2>/dev/null || true
+@unexec rmdir %D/lib/python2.2 2>/dev/null || true
diff --git a/net/py-bittorrent/Makefile b/net/py-bittorrent/Makefile
new file mode 100644
index 000000000000..4cf12ca9fbfc
--- /dev/null
+++ b/net/py-bittorrent/Makefile
@@ -0,0 +1,59 @@
+# New ports collection makefile for: BitTorrent
+# Date created: Sun Mar 16 06:34:12 UTC 2003
+# Whom: Mario Sergio Fujikawa Ferreira <lioux@FreeBSD.org>
+#
+# $FreeBSD$
+#
+
+PORTNAME= BitTorrent
+PORTVERSION= 3.2.1.b
+CATEGORIES= net python
+MASTER_SITES= http://bitconjurer.org/BitTorrent/
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+DISTNAME= ${PORTNAME}-${PORTVERSION:C/\.(.)$/\1/}
+
+MAINTAINER= lioux@FreeBSD.org
+COMMENT= A peer-to-peer tool for distributing files written in Python
+
+USE_PYTHON= yes
+USE_PYDISTUTILS= yes
+USE_REINPLACE= yes
+
+DOC_FILES= FAQ.txt INSTALL.unix.txt LICENSE.txt README.txt \
+ credits.txt todo.txt
+
+# required for GUI
+.ifndef(WITHOUT_GUI)
+RUN_DEPENDS+= ${PYTHON_SITELIBDIR}/wxPython/__init__.py:${PORTSDIR}/x11-toolkits/py-wxPython
+
+PLIST_SUB+= GUI=''
+.else
+EXTRA_PATCHES+= ${FILESDIR}/extra-nogui-patch-setup.py
+PLIST_SUB+= GUI='@comment '
+.endif
+
+pre-everything::
+.ifndef(WITHOUT_GUI)
+ @${ECHO_MSG} '===> Define WITHOUT_GUI to disable GUI installation'
+.endif
+
+post-patch:
+ @${FIND} ${WRKSRC} -type f | \
+ ${XARGS} -x -n 10 \
+ ${REINPLACE_CMD} -E \
+ -e 's|/usr/bin/env python2|${LOCALBASE}/bin/python|'
+.ifdef(WITHOUT_GUI)
+ @${REINPLACE_CMD} -E \
+ -e 's|btdownloadgui.py|btdownloadcurses.py|' \
+ ${WRKSRC}/INSTALL.unix.txt
+.endif
+
+post-install:
+.ifndef(PORTDOCS)
+ @${MKDIR} ${DOCSDIR}
+.for file in ${DOC_FILES}
+ @${INSTALL_DATA} ${WRKSRC}/${file} ${DOCSDIR}
+.endfor
+.endif
+
+.include <bsd.port.mk>
diff --git a/net/py-bittorrent/distinfo b/net/py-bittorrent/distinfo
new file mode 100644
index 000000000000..035c08eeac2b
--- /dev/null
+++ b/net/py-bittorrent/distinfo
@@ -0,0 +1 @@
+MD5 (BitTorrent-3.2.1b.tar.gz) = 9e0cc346a4bfa3904380ed119d8bac90
diff --git a/net/py-bittorrent/files/extra-nogui-patch-setup.py b/net/py-bittorrent/files/extra-nogui-patch-setup.py
new file mode 100644
index 000000000000..7461547d430a
--- /dev/null
+++ b/net/py-bittorrent/files/extra-nogui-patch-setup.py
@@ -0,0 +1,14 @@
+--- setup.py.orig Sun Mar 30 17:01:05 2003
++++ setup.py Sun Mar 30 17:01:20 2003
+@@ -18,9 +18,9 @@
+
+ packages = ["BitTorrent"],
+
+- scripts = ["btdownloadgui.py", "btdownloadheadless.py", "btdownloadlibrary.py",
++ scripts = ["btdownloadheadless.py", "btdownloadlibrary.py",
+ "bttrack.py", "btmakemetafile.py", "btlaunchmany.py", "btcompletedir.py",
+- "btdownloadcurses.py", "btcompletedirgui.py", "btlaunchmanycurses.py",
++ "btdownloadcurses.py", "btlaunchmanycurses.py",
+ "btmakemetafile.py", "btreannounce.py", "btrename.py", "btshowmetainfo.py",
+ "bttest.py"]
+ )
diff --git a/net/py-bittorrent/pkg-descr b/net/py-bittorrent/pkg-descr
new file mode 100644
index 000000000000..4ca529f824ef
--- /dev/null
+++ b/net/py-bittorrent/pkg-descr
@@ -0,0 +1,11 @@
+[ excerpt from distribution's README.txt ]
+
+BitTorrent is a tool for distributing files. It's extremely easy
+to use - downloads are started by clicking on hyperlinks. Whenever
+more than one person is downloading at once they send pieces of the
+file(s) to each other, thus relieving the central server's bandwidth
+burden. Even with many simultaneous downloads, the upload burden
+on the central server remains quite small, since each new downloader
+introduces new upload capacity.
+
+WWW: http://bitconjurer.org/BitTorrent/
diff --git a/net/py-bittorrent/pkg-plist b/net/py-bittorrent/pkg-plist
new file mode 100644
index 000000000000..be4df3d0f832
--- /dev/null
+++ b/net/py-bittorrent/pkg-plist
@@ -0,0 +1,105 @@
+bin/btcompletedir.py
+%%GUI%%bin/btcompletedirgui.py
+bin/btdownloadcurses.py
+%%GUI%%bin/btdownloadgui.py
+bin/btdownloadheadless.py
+bin/btdownloadlibrary.py
+bin/btlaunchmany.py
+bin/btlaunchmanycurses.py
+bin/btmakemetafile.py
+bin/btreannounce.py
+bin/btrename.py
+bin/btshowmetainfo.py
+bin/bttest.py
+bin/bttrack.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Choker.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Choker.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Choker.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Connecter.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Connecter.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Connecter.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/CurrentRateMeasure.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/CurrentRateMeasure.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/CurrentRateMeasure.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Downloader.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Downloader.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Downloader.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/DownloaderFeedback.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/DownloaderFeedback.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/DownloaderFeedback.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Encrypter.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Encrypter.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Encrypter.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/EndgameDownloader.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/EndgameDownloader.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/EndgameDownloader.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/HTTPHandler.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/HTTPHandler.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/HTTPHandler.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/NatCheck.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/NatCheck.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/NatCheck.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/PiecePicker.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/PiecePicker.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/PiecePicker.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/RateMeasure.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/RateMeasure.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/RateMeasure.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/RawServer.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/RawServer.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/RawServer.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Rerequester.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Rerequester.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Rerequester.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Storage.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Storage.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Storage.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/StorageWrapper.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/StorageWrapper.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/StorageWrapper.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Uploader.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Uploader.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Uploader.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/__init__.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/__init__.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/__init__.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/bencode.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/bencode.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/bencode.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/bitfield.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/bitfield.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/bitfield.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/btformats.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/btformats.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/btformats.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/download.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/download.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/download.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/fakeopen.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/fakeopen.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/fakeopen.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/parseargs.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/parseargs.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/parseargs.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/selectpoll.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/selectpoll.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/selectpoll.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/testtest.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/testtest.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/testtest.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/track.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/track.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/track.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/zurllib.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/zurllib.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/zurllib.pyo
+%%PORTDOCS%%%%DOCSDIR%%/FAQ.txt
+%%PORTDOCS%%%%DOCSDIR%%/INSTALL.unix.txt
+%%PORTDOCS%%%%DOCSDIR%%/LICENSE.txt
+%%PORTDOCS%%%%DOCSDIR%%/README.txt
+%%PORTDOCS%%%%DOCSDIR%%/credits.txt
+%%PORTDOCS%%%%DOCSDIR%%/todo.txt
+%%PORTDOCS%%@dirrm %%DOCSDIR%%
+@dirrm %%PYTHON_SITELIBDIR%%/BitTorrent
+@unexec rmdir %D/%%PYTHON_SITELIBDIR%% 2>/dev/null || true
+@unexec rmdir %D/lib/python2.2 2>/dev/null || true
diff --git a/net/py-kenosis-bittorrent/Makefile b/net/py-kenosis-bittorrent/Makefile
new file mode 100644
index 000000000000..4cf12ca9fbfc
--- /dev/null
+++ b/net/py-kenosis-bittorrent/Makefile
@@ -0,0 +1,59 @@
+# New ports collection makefile for: BitTorrent
+# Date created: Sun Mar 16 06:34:12 UTC 2003
+# Whom: Mario Sergio Fujikawa Ferreira <lioux@FreeBSD.org>
+#
+# $FreeBSD$
+#
+
+PORTNAME= BitTorrent
+PORTVERSION= 3.2.1.b
+CATEGORIES= net python
+MASTER_SITES= http://bitconjurer.org/BitTorrent/
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+DISTNAME= ${PORTNAME}-${PORTVERSION:C/\.(.)$/\1/}
+
+MAINTAINER= lioux@FreeBSD.org
+COMMENT= A peer-to-peer tool for distributing files written in Python
+
+USE_PYTHON= yes
+USE_PYDISTUTILS= yes
+USE_REINPLACE= yes
+
+DOC_FILES= FAQ.txt INSTALL.unix.txt LICENSE.txt README.txt \
+ credits.txt todo.txt
+
+# required for GUI
+.ifndef(WITHOUT_GUI)
+RUN_DEPENDS+= ${PYTHON_SITELIBDIR}/wxPython/__init__.py:${PORTSDIR}/x11-toolkits/py-wxPython
+
+PLIST_SUB+= GUI=''
+.else
+EXTRA_PATCHES+= ${FILESDIR}/extra-nogui-patch-setup.py
+PLIST_SUB+= GUI='@comment '
+.endif
+
+pre-everything::
+.ifndef(WITHOUT_GUI)
+ @${ECHO_MSG} '===> Define WITHOUT_GUI to disable GUI installation'
+.endif
+
+post-patch:
+ @${FIND} ${WRKSRC} -type f | \
+ ${XARGS} -x -n 10 \
+ ${REINPLACE_CMD} -E \
+ -e 's|/usr/bin/env python2|${LOCALBASE}/bin/python|'
+.ifdef(WITHOUT_GUI)
+ @${REINPLACE_CMD} -E \
+ -e 's|btdownloadgui.py|btdownloadcurses.py|' \
+ ${WRKSRC}/INSTALL.unix.txt
+.endif
+
+post-install:
+.ifndef(PORTDOCS)
+ @${MKDIR} ${DOCSDIR}
+.for file in ${DOC_FILES}
+ @${INSTALL_DATA} ${WRKSRC}/${file} ${DOCSDIR}
+.endfor
+.endif
+
+.include <bsd.port.mk>
diff --git a/net/py-kenosis-bittorrent/distinfo b/net/py-kenosis-bittorrent/distinfo
new file mode 100644
index 000000000000..035c08eeac2b
--- /dev/null
+++ b/net/py-kenosis-bittorrent/distinfo
@@ -0,0 +1 @@
+MD5 (BitTorrent-3.2.1b.tar.gz) = 9e0cc346a4bfa3904380ed119d8bac90
diff --git a/net/py-kenosis-bittorrent/files/extra-nogui-patch-setup.py b/net/py-kenosis-bittorrent/files/extra-nogui-patch-setup.py
new file mode 100644
index 000000000000..7461547d430a
--- /dev/null
+++ b/net/py-kenosis-bittorrent/files/extra-nogui-patch-setup.py
@@ -0,0 +1,14 @@
+--- setup.py.orig Sun Mar 30 17:01:05 2003
++++ setup.py Sun Mar 30 17:01:20 2003
+@@ -18,9 +18,9 @@
+
+ packages = ["BitTorrent"],
+
+- scripts = ["btdownloadgui.py", "btdownloadheadless.py", "btdownloadlibrary.py",
++ scripts = ["btdownloadheadless.py", "btdownloadlibrary.py",
+ "bttrack.py", "btmakemetafile.py", "btlaunchmany.py", "btcompletedir.py",
+- "btdownloadcurses.py", "btcompletedirgui.py", "btlaunchmanycurses.py",
++ "btdownloadcurses.py", "btlaunchmanycurses.py",
+ "btmakemetafile.py", "btreannounce.py", "btrename.py", "btshowmetainfo.py",
+ "bttest.py"]
+ )
diff --git a/net/py-kenosis-bittorrent/pkg-descr b/net/py-kenosis-bittorrent/pkg-descr
new file mode 100644
index 000000000000..4ca529f824ef
--- /dev/null
+++ b/net/py-kenosis-bittorrent/pkg-descr
@@ -0,0 +1,11 @@
+[ excerpt from distribution's README.txt ]
+
+BitTorrent is a tool for distributing files. It's extremely easy
+to use - downloads are started by clicking on hyperlinks. Whenever
+more than one person is downloading at once they send pieces of the
+file(s) to each other, thus relieving the central server's bandwidth
+burden. Even with many simultaneous downloads, the upload burden
+on the central server remains quite small, since each new downloader
+introduces new upload capacity.
+
+WWW: http://bitconjurer.org/BitTorrent/
diff --git a/net/py-kenosis-bittorrent/pkg-plist b/net/py-kenosis-bittorrent/pkg-plist
new file mode 100644
index 000000000000..be4df3d0f832
--- /dev/null
+++ b/net/py-kenosis-bittorrent/pkg-plist
@@ -0,0 +1,105 @@
+bin/btcompletedir.py
+%%GUI%%bin/btcompletedirgui.py
+bin/btdownloadcurses.py
+%%GUI%%bin/btdownloadgui.py
+bin/btdownloadheadless.py
+bin/btdownloadlibrary.py
+bin/btlaunchmany.py
+bin/btlaunchmanycurses.py
+bin/btmakemetafile.py
+bin/btreannounce.py
+bin/btrename.py
+bin/btshowmetainfo.py
+bin/bttest.py
+bin/bttrack.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Choker.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Choker.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Choker.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Connecter.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Connecter.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Connecter.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/CurrentRateMeasure.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/CurrentRateMeasure.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/CurrentRateMeasure.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Downloader.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Downloader.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Downloader.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/DownloaderFeedback.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/DownloaderFeedback.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/DownloaderFeedback.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Encrypter.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Encrypter.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Encrypter.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/EndgameDownloader.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/EndgameDownloader.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/EndgameDownloader.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/HTTPHandler.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/HTTPHandler.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/HTTPHandler.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/NatCheck.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/NatCheck.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/NatCheck.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/PiecePicker.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/PiecePicker.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/PiecePicker.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/RateMeasure.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/RateMeasure.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/RateMeasure.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/RawServer.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/RawServer.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/RawServer.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Rerequester.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Rerequester.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Rerequester.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Storage.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Storage.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Storage.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/StorageWrapper.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/StorageWrapper.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/StorageWrapper.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Uploader.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Uploader.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Uploader.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/__init__.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/__init__.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/__init__.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/bencode.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/bencode.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/bencode.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/bitfield.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/bitfield.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/bitfield.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/btformats.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/btformats.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/btformats.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/download.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/download.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/download.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/fakeopen.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/fakeopen.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/fakeopen.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/parseargs.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/parseargs.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/parseargs.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/selectpoll.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/selectpoll.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/selectpoll.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/testtest.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/testtest.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/testtest.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/track.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/track.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/track.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/zurllib.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/zurllib.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/zurllib.pyo
+%%PORTDOCS%%%%DOCSDIR%%/FAQ.txt
+%%PORTDOCS%%%%DOCSDIR%%/INSTALL.unix.txt
+%%PORTDOCS%%%%DOCSDIR%%/LICENSE.txt
+%%PORTDOCS%%%%DOCSDIR%%/README.txt
+%%PORTDOCS%%%%DOCSDIR%%/credits.txt
+%%PORTDOCS%%%%DOCSDIR%%/todo.txt
+%%PORTDOCS%%@dirrm %%DOCSDIR%%
+@dirrm %%PYTHON_SITELIBDIR%%/BitTorrent
+@unexec rmdir %D/%%PYTHON_SITELIBDIR%% 2>/dev/null || true
+@unexec rmdir %D/lib/python2.2 2>/dev/null || true
diff --git a/net/py-shadowclient/Makefile b/net/py-shadowclient/Makefile
new file mode 100644
index 000000000000..4cf12ca9fbfc
--- /dev/null
+++ b/net/py-shadowclient/Makefile
@@ -0,0 +1,59 @@
+# New ports collection makefile for: BitTorrent
+# Date created: Sun Mar 16 06:34:12 UTC 2003
+# Whom: Mario Sergio Fujikawa Ferreira <lioux@FreeBSD.org>
+#
+# $FreeBSD$
+#
+
+PORTNAME= BitTorrent
+PORTVERSION= 3.2.1.b
+CATEGORIES= net python
+MASTER_SITES= http://bitconjurer.org/BitTorrent/
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+DISTNAME= ${PORTNAME}-${PORTVERSION:C/\.(.)$/\1/}
+
+MAINTAINER= lioux@FreeBSD.org
+COMMENT= A peer-to-peer tool for distributing files written in Python
+
+USE_PYTHON= yes
+USE_PYDISTUTILS= yes
+USE_REINPLACE= yes
+
+DOC_FILES= FAQ.txt INSTALL.unix.txt LICENSE.txt README.txt \
+ credits.txt todo.txt
+
+# required for GUI
+.ifndef(WITHOUT_GUI)
+RUN_DEPENDS+= ${PYTHON_SITELIBDIR}/wxPython/__init__.py:${PORTSDIR}/x11-toolkits/py-wxPython
+
+PLIST_SUB+= GUI=''
+.else
+EXTRA_PATCHES+= ${FILESDIR}/extra-nogui-patch-setup.py
+PLIST_SUB+= GUI='@comment '
+.endif
+
+pre-everything::
+.ifndef(WITHOUT_GUI)
+ @${ECHO_MSG} '===> Define WITHOUT_GUI to disable GUI installation'
+.endif
+
+post-patch:
+ @${FIND} ${WRKSRC} -type f | \
+ ${XARGS} -x -n 10 \
+ ${REINPLACE_CMD} -E \
+ -e 's|/usr/bin/env python2|${LOCALBASE}/bin/python|'
+.ifdef(WITHOUT_GUI)
+ @${REINPLACE_CMD} -E \
+ -e 's|btdownloadgui.py|btdownloadcurses.py|' \
+ ${WRKSRC}/INSTALL.unix.txt
+.endif
+
+post-install:
+.ifndef(PORTDOCS)
+ @${MKDIR} ${DOCSDIR}
+.for file in ${DOC_FILES}
+ @${INSTALL_DATA} ${WRKSRC}/${file} ${DOCSDIR}
+.endfor
+.endif
+
+.include <bsd.port.mk>
diff --git a/net/py-shadowclient/distinfo b/net/py-shadowclient/distinfo
new file mode 100644
index 000000000000..035c08eeac2b
--- /dev/null
+++ b/net/py-shadowclient/distinfo
@@ -0,0 +1 @@
+MD5 (BitTorrent-3.2.1b.tar.gz) = 9e0cc346a4bfa3904380ed119d8bac90
diff --git a/net/py-shadowclient/files/extra-nogui-patch-setup.py b/net/py-shadowclient/files/extra-nogui-patch-setup.py
new file mode 100644
index 000000000000..7461547d430a
--- /dev/null
+++ b/net/py-shadowclient/files/extra-nogui-patch-setup.py
@@ -0,0 +1,14 @@
+--- setup.py.orig Sun Mar 30 17:01:05 2003
++++ setup.py Sun Mar 30 17:01:20 2003
+@@ -18,9 +18,9 @@
+
+ packages = ["BitTorrent"],
+
+- scripts = ["btdownloadgui.py", "btdownloadheadless.py", "btdownloadlibrary.py",
++ scripts = ["btdownloadheadless.py", "btdownloadlibrary.py",
+ "bttrack.py", "btmakemetafile.py", "btlaunchmany.py", "btcompletedir.py",
+- "btdownloadcurses.py", "btcompletedirgui.py", "btlaunchmanycurses.py",
++ "btdownloadcurses.py", "btlaunchmanycurses.py",
+ "btmakemetafile.py", "btreannounce.py", "btrename.py", "btshowmetainfo.py",
+ "bttest.py"]
+ )
diff --git a/net/py-shadowclient/pkg-descr b/net/py-shadowclient/pkg-descr
new file mode 100644
index 000000000000..4ca529f824ef
--- /dev/null
+++ b/net/py-shadowclient/pkg-descr
@@ -0,0 +1,11 @@
+[ excerpt from distribution's README.txt ]
+
+BitTorrent is a tool for distributing files. It's extremely easy
+to use - downloads are started by clicking on hyperlinks. Whenever
+more than one person is downloading at once they send pieces of the
+file(s) to each other, thus relieving the central server's bandwidth
+burden. Even with many simultaneous downloads, the upload burden
+on the central server remains quite small, since each new downloader
+introduces new upload capacity.
+
+WWW: http://bitconjurer.org/BitTorrent/
diff --git a/net/py-shadowclient/pkg-plist b/net/py-shadowclient/pkg-plist
new file mode 100644
index 000000000000..be4df3d0f832
--- /dev/null
+++ b/net/py-shadowclient/pkg-plist
@@ -0,0 +1,105 @@
+bin/btcompletedir.py
+%%GUI%%bin/btcompletedirgui.py
+bin/btdownloadcurses.py
+%%GUI%%bin/btdownloadgui.py
+bin/btdownloadheadless.py
+bin/btdownloadlibrary.py
+bin/btlaunchmany.py
+bin/btlaunchmanycurses.py
+bin/btmakemetafile.py
+bin/btreannounce.py
+bin/btrename.py
+bin/btshowmetainfo.py
+bin/bttest.py
+bin/bttrack.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Choker.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Choker.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Choker.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Connecter.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Connecter.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Connecter.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/CurrentRateMeasure.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/CurrentRateMeasure.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/CurrentRateMeasure.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Downloader.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Downloader.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Downloader.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/DownloaderFeedback.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/DownloaderFeedback.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/DownloaderFeedback.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Encrypter.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Encrypter.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Encrypter.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/EndgameDownloader.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/EndgameDownloader.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/EndgameDownloader.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/HTTPHandler.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/HTTPHandler.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/HTTPHandler.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/NatCheck.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/NatCheck.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/NatCheck.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/PiecePicker.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/PiecePicker.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/PiecePicker.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/RateMeasure.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/RateMeasure.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/RateMeasure.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/RawServer.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/RawServer.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/RawServer.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Rerequester.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Rerequester.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Rerequester.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Storage.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Storage.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Storage.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/StorageWrapper.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/StorageWrapper.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/StorageWrapper.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/Uploader.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/Uploader.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/Uploader.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/__init__.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/__init__.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/__init__.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/bencode.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/bencode.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/bencode.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/bitfield.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/bitfield.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/bitfield.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/btformats.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/btformats.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/btformats.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/download.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/download.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/download.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/fakeopen.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/fakeopen.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/fakeopen.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/parseargs.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/parseargs.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/parseargs.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/selectpoll.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/selectpoll.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/selectpoll.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/testtest.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/testtest.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/testtest.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/track.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/track.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/track.pyo
+%%PYTHON_SITELIBDIR%%/BitTorrent/zurllib.py
+%%PYTHON_SITELIBDIR%%/BitTorrent/zurllib.pyc
+%%PYTHON_SITELIBDIR%%/BitTorrent/zurllib.pyo
+%%PORTDOCS%%%%DOCSDIR%%/FAQ.txt
+%%PORTDOCS%%%%DOCSDIR%%/INSTALL.unix.txt
+%%PORTDOCS%%%%DOCSDIR%%/LICENSE.txt
+%%PORTDOCS%%%%DOCSDIR%%/README.txt
+%%PORTDOCS%%%%DOCSDIR%%/credits.txt
+%%PORTDOCS%%%%DOCSDIR%%/todo.txt
+%%PORTDOCS%%@dirrm %%DOCSDIR%%
+@dirrm %%PYTHON_SITELIBDIR%%/BitTorrent
+@unexec rmdir %D/%%PYTHON_SITELIBDIR%% 2>/dev/null || true
+@unexec rmdir %D/lib/python2.2 2>/dev/null || true