aboutsummaryrefslogtreecommitdiffstats
path: root/devel
diff options
context:
space:
mode:
authorglarkin <glarkin@FreeBSD.org>2011-10-14 07:22:22 +0800
committerglarkin <glarkin@FreeBSD.org>2011-10-14 07:22:22 +0800
commitcbc248f3a2f33ce69bf7437b6d133c3608677432 (patch)
treec3b925fce1ca7a18a538629f324a60d5e83e61e9 /devel
parentaf42021c5bc6937937e12c7f95666fdcb084f6e6 (diff)
downloadfreebsd-ports-gnome-cbc248f3a2f33ce69bf7437b6d133c3608677432.tar.gz
freebsd-ports-gnome-cbc248f3a2f33ce69bf7437b6d133c3608677432.tar.zst
freebsd-ports-gnome-cbc248f3a2f33ce69bf7437b6d133c3608677432.zip
A continuous integration plugin for Trac.
Bitten is a Python-based framework for collecting various software metrics via continuous integration. It builds on Trac to provide an integrated web-based user interface. Build slaves are usually installed and run on multiple different systems to compile and test the software on these platforms on new checkins. Set bitten_slave_enable to "yes" and bitten_slave_urls to contain one or more Bitten build URLs. For form authentication add --form-auth to flags. WWW: http://bitten.edgewall.org/ PR: ports/140157 Submitted by: Tim Niemueller <tim@niemueller.de>
Diffstat (limited to 'devel')
-rw-r--r--devel/Makefile1
-rw-r--r--devel/trac-bitten/Makefile69
-rw-r--r--devel/trac-bitten/distinfo2
-rw-r--r--devel/trac-bitten/files/bitten-slave.in42
-rw-r--r--devel/trac-bitten/files/bitten-slave.sample12
-rw-r--r--devel/trac-bitten/files/patch-git103
-rw-r--r--devel/trac-bitten/files/pkg-message.in12
-rw-r--r--devel/trac-bitten/pkg-descr13
-rw-r--r--devel/trac-bitten/pkg-plist139
9 files changed, 393 insertions, 0 deletions
diff --git a/devel/Makefile b/devel/Makefile
index 5d0f5c05bc9b..b1301dce08cc 100644
--- a/devel/Makefile
+++ b/devel/Makefile
@@ -3627,6 +3627,7 @@
SUBDIR += tortoisehg1
SUBDIR += tortoisehg2
SUBDIR += tpasm
+ SUBDIR += trac-bitten
SUBDIR += trio
SUBDIR += truc
SUBDIR += u-boot
diff --git a/devel/trac-bitten/Makefile b/devel/trac-bitten/Makefile
new file mode 100644
index 000000000000..b25e00e6dc65
--- /dev/null
+++ b/devel/trac-bitten/Makefile
@@ -0,0 +1,69 @@
+# New ports collection makefile for: trac-bitten
+# Date created: Oct 26 2009
+# Whom: Tim Niemueller <tim@niemueller.de>
+#
+# $FreeBSD$
+#
+
+PORTNAME= bitten
+PORTVERSION= 0.6
+CATEGORIES= devel www python
+MASTER_SITES= http://ftp.edgewall.com/pub/bitten/ \
+ LOCAL/glarkin
+PKGNAMEPREFIX= trac-
+DISTNAME= Bitten-${PORTVERSION}
+
+MAINTAINER= tim@niemueller.de
+COMMENT= Continuous integration for Trac
+
+.if defined(MAINTAINER_MODE)
+UID_FILES+= ../../UIDs
+GID_FILES+= ../../GIDs
+.endif
+USERS= bitten-slave
+GROUPS= bitten-slave
+BITTEN_UID= 952
+BITTEN_GID= 952
+
+OPTIONS= BITTEN_MASTER "Build bitten master" ON
+.include <bsd.port.options.mk>
+
+BUILD_DEPENDS+= easy_install:${PORTSDIR}/devel/py-setuptools
+.if defined(WITH_BITTEN_MASTER)
+RUN_DEPENDS+= tracd:${PORTSDIR}/www/trac
+.endif
+
+WRKSRC= ${WRKDIR}/Bitten-${PORTVERSION}
+NO_BUILD= yes
+USE_PYTHON= 2.3+
+USE_PYDISTUTILS=yes
+PLIST_SUB+= PORTVERSION=${PORTVERSION} PYTHONVERSION=${_PYTHON_VERSION} \
+ ECHO_MSG=${ECHO_MSG}
+SUB_LIST+= PYTHON_CMD=${_PYTHON_CMD} TOUCH=${TOUCH} CHOWN=${CHOWN} \
+ RM=${RM} USERS=${USERS}
+SUB_FILES+= pkg-message
+PYDISTUTILS_NOEGGINFO= yes
+PYDISTUTILS_PKGNAME= Bitten
+PATCH_STRIP= -p1
+USE_RC_SUBR= bitten-slave
+
+.if defined(WITHOUT_BITTEN_MASTER)
+PYDISTUTILS_EXTRA_INSTALLARGS=--without-master
+PLIST_SUB+= MASTER_PORT="@comment " EGG_NAME="BittenSlave"
+.else
+PLIST_SUB+= MASTER_PORT="" EGG_NAME="Bitten"
+.endif
+
+# reproduce rule here with added PYDISTUTILS_EXTRA_INSTALLARGS
+do-install:
+ @(cd ${INSTALL_WRKSRC}; ${SETENV} ${MAKE_ENV} ${PYTHON_CMD} ${PYSETUP} ${PYDISTUTILS_EXTRA_INSTALLARGS} ${PYDISTUTILS_INSTALL_TARGET} ${PYDISTUTILS_INSTALLARGS})
+
+post-install:
+ @if [ ! -f ${ETCDIR}/bitten-slave.conf ]; then \
+ ${ECHO} Generating initial configuration in ${ETCDIR}/bitten-slave.conf; \
+ ${MKDIR} ${ETCDIR}; \
+ ${SED} -e 's/@DISTRO@/${OPSYS}/g' -e 's/@DISTRO_VERSION@/${OSREL}/g' ${FILESDIR}/bitten-slave.sample > ${ETCDIR}/bitten-slave.conf; \
+ ${CP} ${FILESDIR}/bitten-slave.sample ${ETCDIR}; \
+ fi
+
+.include <bsd.port.mk>
diff --git a/devel/trac-bitten/distinfo b/devel/trac-bitten/distinfo
new file mode 100644
index 000000000000..fcb91a3ccedb
--- /dev/null
+++ b/devel/trac-bitten/distinfo
@@ -0,0 +1,2 @@
+SHA256 (Bitten-0.6.tar.gz) = 0ccbe1c6c798d980d2b9024a86cd04710b58c9a129f02b82bf72d96efd6e7026
+SIZE (Bitten-0.6.tar.gz) = 340031
diff --git a/devel/trac-bitten/files/bitten-slave.in b/devel/trac-bitten/files/bitten-slave.in
new file mode 100644
index 000000000000..c4e5406b6199
--- /dev/null
+++ b/devel/trac-bitten/files/bitten-slave.in
@@ -0,0 +1,42 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+# PROVIDE: bitten_slave
+# REQUIRE: LOGIN
+# KEYWORD: shutdown
+#
+# Bitten continuous integration build slave
+#
+
+. /etc/rc.subr
+
+name=bitten_slave
+rcvar=`set_rcvar`
+logfile=/var/log/bitten-slave.log
+conffile=%%ETCDIR%%/bitten-slave.conf
+workdir=/var/lib/bitten-slave
+
+load_rc_config ${name}
+
+command=%%PREFIX%%/bin/bitten-slave
+command_args="-f ${conffile} -d ${workdir} --log=${logfile} ${bitten_slave_urls}"
+command_interpreter=%%PYTHON_CMD%%
+bitten_slave_user=%%USERS%%
+pidfile=/var/lib/bitten-slave/bitten-slave.pid
+
+start_cmd=bitten_start
+stop_postcmd=bitten_cleanup
+
+bitten_start()
+{
+ echo "Starting ${name}."
+ %%TOUCH%% $logfile && %%CHOWN%% ${bitten_slave_user} $logfile
+ /usr/sbin/daemon -cf -p ${pidfile} -u ${bitten_slave_user} ${command} ${command_args}
+}
+
+bitten_cleanup() {
+ [ -f ${pidfile} ] && %%RM%% ${pidfile}
+}
+
+run_rc_command "$1"
diff --git a/devel/trac-bitten/files/bitten-slave.sample b/devel/trac-bitten/files/bitten-slave.sample
new file mode 100644
index 000000000000..182ce235ca27
--- /dev/null
+++ b/devel/trac-bitten/files/bitten-slave.sample
@@ -0,0 +1,12 @@
+;[authentication]
+; user/pass for login to Trac
+;username = <user>
+;password = <pass>
+
+[os]
+name = @DISTRO@
+version = @DISTRO_VERSION@
+
+;[package:some-package]
+;version = 2.0
+
diff --git a/devel/trac-bitten/files/patch-git b/devel/trac-bitten/files/patch-git
new file mode 100644
index 000000000000..60c240f7ed2a
--- /dev/null
+++ b/devel/trac-bitten/files/patch-git
@@ -0,0 +1,103 @@
+diff -urN Bitten-0.6dev-r777/bitten/build/gittools.py Bitten-0.6dev-r777.git/bitten/build/gittools.py
+--- Bitten-0.6dev-r777/bitten/build/gittools.py 1970-01-01 01:00:00.000000000 +0100
++++ Bitten-0.6dev-r777.git/bitten/build/gittools.py 2009-10-24 17:03:02.000000000 +0200
+@@ -0,0 +1,77 @@
++# -*- coding: utf-8 -*-
++# Copyright (C) Tim Niemueller [www.niemueller.de]
++# Copyright (C) 2007 Edgewall Software
++# based on hgtools.py
++#
++# This software is licensed as described in the file COPYING, which
++# you should have received as part of this distribution. The terms
++# are also available at http://bitten.edgewall.org/wiki/License.
++
++"""Recipe commands for git."""
++
++import logging
++
++log = logging.getLogger('bitten.build.gittools')
++
++__docformat__ = 'restructuredtext en'
++
++def clone(ctxt, url, dir_='.'):
++ """pull and update the local working copy from the git repository.
++
++ :param ctxt: the build context
++ :type ctxt: `Context`
++ :param url: the url of the repository to clone
++ :param dir\_: the name of a local subdirectory containing the working copy
++ """
++ args = ['clone', url, dir_]
++
++ from bitten.build import shtools
++ returncode = shtools.execute(ctxt, file_='git', args=args)
++ if returncode != 0:
++ ctxt.error('git clone failed (%s)' % returncode)
++
++def pull(ctxt, revision, remote='origin', dir_='.'):
++ """pull and update the local working copy from the git repository.
++
++ :param ctxt: the build context
++ :type ctxt: `Context`
++ :param remote: the remote repository to pull from
++ :param dir\_: the name of a local subdirectory containing the working copy
++ """
++ args = ['pull', '-u', remote, revision]
++
++ from bitten.build import shtools
++ returncode = shtools.execute(ctxt, file_='git', dir_=dir_, args=args)
++ if returncode != 0:
++ ctxt.error('git pull failed (%s)' % returncode)
++
++def checkout(ctxt, branch, dir_='.'):
++ """checkout specific branch
++
++ :param ctxt: the build context
++ :type ctxt: `Context`
++ :param branch: branch to checkout
++ :param dir\_: the name of a local subdirectory containing the working copy
++ """
++ args = ['checkout', branch]
++
++ from bitten.build import shtools
++ returncode = shtools.execute(ctxt, file_='git', dir_=dir_, args=args)
++ if returncode != 0:
++ ctxt.error('git branch failed (%s)' % returncode)
++
++def reset(ctxt, revision, dir_='.'):
++ """reset git tree to given revision/commit
++
++ :param ctxt: the build context
++ :type ctxt: `Context`
++ :param revision: the revision/commit to reset to
++ :param dir\_: the name of a local subdirectory containing the working copy
++ """
++ args = ['reset', '--hard', revision]
++
++ from bitten.build import shtools
++ returncode = shtools.execute(ctxt, file_='git', dir_=dir_, args=args)
++ if returncode != 0:
++ ctxt.error('git reset failed (%s)' % returncode)
++
+diff -urN Bitten-0.6dev-r777/setup.py Bitten-0.6dev-r777.git/setup.py
+--- Bitten-0.6dev-r777/setup.py 2009-10-16 14:15:34.000000000 +0200
++++ Bitten-0.6dev-r777.git/setup.py 2009-10-24 17:05:22.000000000 +0200
+@@ -55,6 +55,10 @@
+ 'svn#export = bitten.build.svntools:export',
+ 'svn#update = bitten.build.svntools:update',
+ 'hg#pull = bitten.build.hgtools:pull',
++ 'git#clone = bitten.build.gittools:clone',
++ 'git#pull = bitten.build.gittools:pull',
++ 'git#reset = bitten.build.gittools:reset',
++ 'git#checkout = bitten.build.gittools:checkout',
+ 'xml#transform = bitten.build.xmltools:transform'
+ ]
+ recipe_commands = [NS_old + tool for tool in tools] \
+@@ -133,6 +137,7 @@
+ "bitten.build.pythontools",
+ "bitten.build.shtools",
+ "bitten.build.svntools",
++ "bitten.build.gittools",
+ "bitten.build.xmltools",
+ "bitten.recipe",
+ "bitten.slave",
diff --git a/devel/trac-bitten/files/pkg-message.in b/devel/trac-bitten/files/pkg-message.in
new file mode 100644
index 000000000000..4505d999f444
--- /dev/null
+++ b/devel/trac-bitten/files/pkg-message.in
@@ -0,0 +1,12 @@
+If your system is the build master, i.e. it is the system that runs
+the Trac instance and integrates with the SCM, you need to configure
+Trac to load the Bitten plugin and give permissions to the build
+slaves.
+
+To run a build slave (which can also be on the same host), you need
+to configure it by editing %%ETCDIR%%/bitten-slave.conf.
+It is recommended to use a password secured Trac instance and set
+username and password appropriately for the build slaves.
+
+For more detailed instructions please have a look at the documentation
+at http://bitten.edgewall.org/wiki/Documentation/install.html
diff --git a/devel/trac-bitten/pkg-descr b/devel/trac-bitten/pkg-descr
new file mode 100644
index 000000000000..4f9743ac27f5
--- /dev/null
+++ b/devel/trac-bitten/pkg-descr
@@ -0,0 +1,13 @@
+A continuous integration plugin for Trac.
+
+Bitten is a Python-based framework for collecting various software
+metrics via continuous integration. It builds on Trac to provide
+an integrated web-based user interface. Build slaves are usually
+installed and run on multiple different systems to compile and test
+the software on these platforms on new checkins.
+
+Set bitten_slave_enable to "yes" and bitten_slave_urls to contain
+one or more Bitten build URLs. For form authentication add --form-auth
+to flags.
+
+WWW: http://bitten.edgewall.org/
diff --git a/devel/trac-bitten/pkg-plist b/devel/trac-bitten/pkg-plist
new file mode 100644
index 000000000000..3efe038c7e63
--- /dev/null
+++ b/devel/trac-bitten/pkg-plist
@@ -0,0 +1,139 @@
+bin/bitten-slave
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/EGG-INFO/PKG-INFO
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/EGG-INFO/SOURCES.txt
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/EGG-INFO/dependency_links.txt
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/EGG-INFO/entry_points.txt
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/EGG-INFO/not-zip-safe
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/EGG-INFO/top_level.txt
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/__init__.py
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/__init__.pyc
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/__init__.pyo
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/admin.py
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/admin.pyc
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/admin.pyo
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/api.py
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/api.pyc
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/api.pyo
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/__init__.py
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/__init__.pyc
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/__init__.pyo
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/api.py
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/api.pyc
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/api.pyo
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/config.py
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/config.pyc
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/config.pyo
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/ctools.py
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/ctools.pyc
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/ctools.pyo
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/gittools.py
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/gittools.pyc
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/gittools.pyo
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/hgtools.py
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/hgtools.pyc
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/hgtools.pyo
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/javatools.py
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/javatools.pyc
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/javatools.pyo
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/monotools.py
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/monotools.pyc
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/monotools.pyo
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/phptools.py
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/phptools.pyc
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/phptools.pyo
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/pythontools.py
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/pythontools.pyc
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/pythontools.pyo
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/shtools.py
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/shtools.pyc
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/shtools.pyo
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/svntools.py
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/svntools.pyc
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/svntools.pyo
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/xmltools.py
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/xmltools.pyc
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/xmltools.pyo
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/htdocs/admin.css
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/htdocs/bitten.css
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/htdocs/bitten_build.png
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/htdocs/bitten_buildf.png
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/htdocs/bitten_coverage.css
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/htdocs/excanvas.js
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/htdocs/failure.png
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/htdocs/jquery.flot.js
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/htdocs/tabset.js
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/main.py
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/main.pyc
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/main.pyo
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/master.py
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/master.pyc
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/master.pyo
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/model.py
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/model.pyc
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/model.pyo
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/notify.py
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/notify.pyc
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/notify.pyo
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/queue.py
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/queue.pyc
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/queue.pyo
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/recipe.py
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/recipe.pyc
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/recipe.pyo
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/report/__init__.py
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/report/__init__.pyc
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/report/__init__.pyo
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/report/coverage.py
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/report/coverage.pyc
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/report/coverage.pyo
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/report/lint.py
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/report/lint.pyc
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/report/lint.pyo
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/report/testing.py
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/report/testing.pyc
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/report/testing.pyo
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/slave.py
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/slave.pyc
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/slave.pyo
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/templates/bitten_admin_configs.html
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/templates/bitten_admin_master.html
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/templates/bitten_build.html
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/templates/bitten_config.html
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/templates/bitten_notify_email.txt
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/templates/bitten_summary_coverage.html
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/templates/bitten_summary_lint.html
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/templates/bitten_summary_tests.html
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/templates/json.txt
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/upgrades.py
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/upgrades.pyc
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/upgrades.pyo
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/util/__init__.py
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/util/__init__.pyc
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/util/__init__.pyo
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/util/compat.py
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/util/compat.pyc
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/util/compat.pyo
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/util/json.py
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/util/json.pyc
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/util/json.pyo
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/util/loc.py
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/util/loc.pyc
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/util/loc.pyo
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/util/testrunner.py
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/util/testrunner.pyc
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/util/testrunner.pyo
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/util/xmlio.py
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/util/xmlio.pyc
+%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/util/xmlio.pyo
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/web_ui.py
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/web_ui.pyc
+%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/web_ui.pyo
+%%MASTER_PORT%%@dirrm %%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/templates
+%%MASTER_PORT%%@dirrm %%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/report
+%%MASTER_PORT%%@dirrm %%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/htdocs
+@dirrm %%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/util
+@dirrm %%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build
+@dirrm %%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten
+@dirrm %%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/EGG-INFO
+@dirrm %%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg
+@unexec %%ECHO_MSG%% "===> If you will *NOT* use this package anymore, please remove the bitten-slave user and group manually."