Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 1 Nov 2009 02:40:03 +0100 (CET)
From:      Tim Niemueller <tim@niemueller.de>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   ports/140157: New port: www/trac-bitten Continuous integration for Trac
Message-ID:  <200911010140.nA11e3X8005122@barbossa.informatik.rwth-aachen.de>
Resent-Message-ID: <200911010200.nA12073i041891@freefall.freebsd.org>

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

>Number:         140157
>Category:       ports
>Synopsis:       New port: www/trac-bitten Continuous integration for Trac
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Sun Nov 01 02:00:07 UTC 2009
>Closed-Date:
>Last-Modified:
>Originator:     Tim Niemueller
>Release:        FreeBSD 7.2-RELEASE-p4 i386
>Organization:
>Environment:
System: FreeBSD barbossa 7.2-RELEASE-p4 FreeBSD 7.2-RELEASE-p4 #0: Fri Oct 2 12:21:39 UTC 2009 root@i386-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC i386


	
>Description:
	New port for the Bitten continuous integration plugin for Trac. It includes the
	Trac master, which runs inside Trac and offers a web interface to manage and
	monitor builds, and a build slave which runs as a daemon on build machines
	which regularly checks for new pending builds and then executes them.
	The slave daemon runs as a specified user, hence the new UID/GID bitten-slave.
	Contains custom startup script and config file and the following patches:
	patch-0.6.x-r785: updates the base revision to tested stable svn version, required
	                  for proper operation
	patch-git: Add git specific recipe commands, patch sent upstream but not yet
	           included
	patch-navtypo: Fixes simple typo, patch sent upstream
	The following extra files specific to FreeBSD are provided:
	bitten-slave.sample: example configuration, will be transformed to config file if
	                     none exists during installation
	bitten-slave.in: startup script for bitten slave daemon

	This is my first port, let me know what needs to be changed.

	
>How-To-Repeat:
	
>Fix:
	

--- trac-bitten.shar begins here ---
# This is a shell archive.  Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file".  Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
#	/usr/ports/www/trac-bitten
#	/usr/ports/www/trac-bitten/Makefile
#	/usr/ports/www/trac-bitten/distinfo
#	/usr/ports/www/trac-bitten/pkg-descr
#	/usr/ports/www/trac-bitten/pkg-plist
#	/usr/ports/www/trac-bitten/pkg-install
#	/usr/ports/www/trac-bitten/files
#	/usr/ports/www/trac-bitten/files/patch-0.6.x-r785
#	/usr/ports/www/trac-bitten/files/bitten-slave.sample
#	/usr/ports/www/trac-bitten/files/patch-git
#	/usr/ports/www/trac-bitten/files/patch-navtypo
#	/usr/ports/www/trac-bitten/files/bitten-slave.in
#
echo c - /usr/ports/www/trac-bitten
mkdir -p /usr/ports/www/trac-bitten > /dev/null 2>&1
echo x - /usr/ports/www/trac-bitten/Makefile
sed 's/^X//' >/usr/ports/www/trac-bitten/Makefile << '58227838cc4bf460f9feb849c662a44b'
X# New ports collection makefile for: trac-bitten
X# Date created:                      Oct 26 2009
X# Whom:                              Tim Niemueller <tim@niemueller.de>
X#
X# $FreeBSD$
X#
X
XPORTNAME=	bitten
XPORTVERSION=	0.6b2
XCATEGORIES=	www devel python
XMASTER_SITES=	http://ftp.edgewall.com/pub/bitten/
XPKGNAMEPREFIX=	trac-
XDISTNAME=	Bitten-${PORTVERSION}
X
XMAINTAINER=	tim@niemueller.de
XCOMMENT=	Continuous integration for Trac
X
XBITTENVERSION=	0.6
X
XOPTIONS=	BITTEN_MASTER "Build bitten master" ON
X.include <bsd.port.options.mk>
X
XBUILD_DEPENDS+=	easy_install:${PORTSDIR}/devel/py-setuptools
X.if defined(WITH_BITTEN_MASTER)
XRUN_DEPENDS+=	tracd:${PORTSDIR}/www/trac
X.endif
X
XWRKSRC=		${WRKDIR}/Bitten-${PORTVERSION}
XNO_BUILD=	yes
XUSE_PYTHON=	2.3+
XUSE_PYDISTUTILS=yes
XPLIST_SUB+=	PORTVERSION=${BITTENVERSION} PYTHONVERSION=${_PYTHON_VERSION}
XSUB_LIST+=	PYTHON_CMD=${_PYTHON_CMD}
XPYDISTUTILS_NOEGGINFO=	yes
XPYDISTUTILS_PKGNAME=	Bitten
XPATCH_STRIP=	-p1
XUSE_RC_SUBR=	bitten-slave
X
X.if defined(WITHOUT_BITTEN_MASTER)
XPYDISTUTILS_EXTRA_INSTALLARGS=--without-master
XPLIST_SUB+=	MASTER_PORT="@comment " EGG_NAME="BittenSlave"
X.else
XPLIST_SUB+=	EGG_NAME="Bitten"
X.endif
X
Xpre-install:
X	@${SH} ${PKGINSTALL} ${PORTNAME} PRE-INSTALL
X
X# reproduce rule here with added PYDISTUTILS_EXTRA_INSTALLARGS
Xdo-install:
X	@(cd ${INSTALL_WRKSRC}; ${SETENV} ${MAKE_ENV} ${PYTHON_CMD} ${PYSETUP} ${PYDISTUTILS_EXTRA_INSTALLARGS}	${PYDISTUTILS_INSTALL_TARGET} ${PYDISTUTILS_INSTALLARGS})
X
Xpost-install:
X	@if [ ! -f ${ETCDIR}/bitten-slave.conf ]; then \
X		${ECHO} Generating initial configuration in ${ETCDIR}/bitten-slave.conf; \
X		${MKDIR} ${ETCDIR}; \
X		${SED} -e 's/@DISTRO@/${OPSYS}/g' -e 's/@DISTRO_VERSION@/${OSREL}/g' ${FILESDIR}/bitten-slave.sample > ${ETCDIR}/bitten-slave.conf; \
X		${CP} ${FILESDIR}/bitten-slave.sample ${ETCDIR}; \
X	fi
X
X.include <bsd.port.mk>
58227838cc4bf460f9feb849c662a44b
echo x - /usr/ports/www/trac-bitten/distinfo
sed 's/^X//' >/usr/ports/www/trac-bitten/distinfo << '3d8b62971e90c5aaf5cad5fb015c1d1f'
XMD5 (Bitten-0.6b2.tar.gz) = bfc9ba5d723e76fe8492358f86b70a21
XSHA256 (Bitten-0.6b2.tar.gz) = 47f3a4d6031f67ce66edece38d56a9eae26a1b6b57df786b23a89aaa579f710c
XSIZE (Bitten-0.6b2.tar.gz) = 355500
3d8b62971e90c5aaf5cad5fb015c1d1f
echo x - /usr/ports/www/trac-bitten/pkg-descr
sed 's/^X//' >/usr/ports/www/trac-bitten/pkg-descr << 'ab2732dc50d1b47325b519f1902760ba'
XA continuous integration plugin for Trac.
X
XSet bitten_slave_enable to "yes" and bitten_slave_flags to contain one or more
XBitten build URLs. For form authentication add --form-auth to flags.
X
XWWW: http://bitten.edgewall.org
ab2732dc50d1b47325b519f1902760ba
echo x - /usr/ports/www/trac-bitten/pkg-plist
sed 's/^X//' >/usr/ports/www/trac-bitten/pkg-plist << 'a9212d56bf4c0114a8db181a646ee5b8'
X@stopdaemon bitten-slave
Xbin/bitten-slave
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/EGG-INFO/PKG-INFO
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/EGG-INFO/SOURCES.txt
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/EGG-INFO/dependency_links.txt
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/EGG-INFO/entry_points.txt
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/EGG-INFO/not-zip-safe
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/EGG-INFO/top_level.txt
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/__init__.py
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/__init__.pyc
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/__init__.pyo
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/admin.py
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/admin.pyc
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/admin.pyo
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/api.py
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/api.pyc
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/api.pyo
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/__init__.py
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/__init__.pyc
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/__init__.pyo
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/api.py
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/api.pyc
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/api.pyo
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/config.py
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/config.pyc
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/config.pyo
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/ctools.py
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/ctools.pyc
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/ctools.pyo
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/gittools.py
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/gittools.pyc
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/gittools.pyo
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/hgtools.py
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/hgtools.pyc
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/hgtools.pyo
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/javatools.py
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/javatools.pyc
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/javatools.pyo
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/monotools.py
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/monotools.pyc
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/monotools.pyo
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/phptools.py
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/phptools.pyc
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/phptools.pyo
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/pythontools.py
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/pythontools.pyc
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/pythontools.pyo
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/shtools.py
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/shtools.pyc
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/shtools.pyo
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/svntools.py
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/svntools.pyc
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/svntools.pyo
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/xmltools.py
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/xmltools.pyc
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build/xmltools.pyo
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/htdocs/admin.css
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/htdocs/bitten.css
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/htdocs/bitten.css.orig
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/htdocs/bitten_build.png
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/htdocs/bitten_buildf.png
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/htdocs/bitten_coverage.css
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/htdocs/charts.swf
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/htdocs/charts_library/arno.swf
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/htdocs/charts_library/arst.swf
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/htdocs/charts_library/brfl.swf
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/htdocs/charts_library/brno.swf
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/htdocs/charts_library/brst.swf
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/htdocs/charts_library/cl3d.swf
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/htdocs/charts_library/clfl.swf
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/htdocs/charts_library/clno.swf
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/htdocs/charts_library/clp3.swf
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/htdocs/charts_library/cls3.swf
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/htdocs/charts_library/clst.swf
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/htdocs/charts_library/cnno.swf
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/htdocs/charts_library/lnno.swf
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/htdocs/charts_library/mxno.swf
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/htdocs/charts_library/pi3d.swf
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/htdocs/charts_library/pino.swf
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/htdocs/charts_library/scno.swf
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/htdocs/failure.png
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/htdocs/tabset.js
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/main.py
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/main.pyc
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/main.pyo
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/master.py
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/master.pyc
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/master.pyo
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/model.py
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/model.pyc
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/model.pyo
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/notify.py
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/notify.pyc
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/notify.pyo
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/queue.py
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/queue.pyc
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/queue.pyo
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/recipe.py
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/recipe.pyc
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/recipe.pyo
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/report/__init__.py
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/report/__init__.pyc
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/report/__init__.pyo
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/report/coverage.py
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/report/coverage.pyc
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/report/coverage.pyo
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/report/lint.py
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/report/lint.pyc
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/report/lint.pyo
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/report/testing.py
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/report/testing.pyc
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/report/testing.pyo
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/slave.py
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/slave.pyc
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/slave.pyo
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/templates/bitten_admin_configs.html
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/templates/bitten_admin_master.html
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/templates/bitten_build.html
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/templates/bitten_chart_coverage.html
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/templates/bitten_chart_lint.html
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/templates/bitten_chart_tests.html
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/templates/bitten_config.html
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/templates/bitten_notify_email.txt
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/templates/bitten_summary_coverage.html
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/templates/bitten_summary_lint.html
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/templates/bitten_summary_tests.html
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/upgrades.py
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/upgrades.pyc
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/upgrades.pyo
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/util/__init__.py
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/util/__init__.pyc
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/util/__init__.pyo
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/util/loc.py
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/util/loc.pyc
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/util/loc.pyo
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/util/testrunner.py
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/util/testrunner.pyc
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/util/testrunner.pyo
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/util/xmlio.py
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/util/xmlio.pyc
X%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/util/xmlio.pyo
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/web_ui.py
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/web_ui.pyc
X%%MASTER_PORT%%%%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/web_ui.pyo
X%%MASTER_PORT%%@dirrm %%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/templates
X%%MASTER_PORT%%@dirrm %%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/report
X%%MASTER_PORT%%@dirrm %%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/htdocs/charts_library
X%%MASTER_PORT%%@dirrm %%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/htdocs
X@dirrm %%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/util
X@dirrm %%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten/build
X@dirrm %%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/bitten
X@dirrm %%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg/EGG-INFO
X@dirrm %%PYTHON_SITELIBDIR%%/%%EGG_NAME%%-%%PORTVERSION%%-py%%PYTHONVERSION%%.egg
X@unexec echo "Warning: If you will *NOT* use this package anymore, please remove the bitten-slave user and group manually."
a9212d56bf4c0114a8db181a646ee5b8
echo x - /usr/ports/www/trac-bitten/pkg-install
sed 's/^X//' >/usr/ports/www/trac-bitten/pkg-install << '7c6b9eaba04aecb2e5633c8fe6de520c'
X#!/bin/sh
X
XPATH=/bin:/usr/sbin
X
XUSER=bitten-slave
XGROUP=bitten-slave
XUID=212
XGID=212
X
Xcase $2 in
X  PRE-INSTALL)
X  if pw group show "${GROUP}" 2>/dev/null; then
X    echo "You already have a group \"${GROUP}\", so I will use it."
X  else
X    if pw groupadd ${GROUP} -g ${GID}; then
X      echo "Added group \"${GROUP}\"."
X    else
X      echo "Adding group \"${GROUP}\" failed..."
X      exit 1
X    fi
X  fi
X
X  if pw user show "${USER}" 2>/dev/null; then
X    echo "You already have a user \"${USER}\", so I will use it."
X  else
X    if pw useradd ${USER} -u ${UID} -g ${GROUP} -h - \
X      -s /bin/sh -L daemon -m -d /var/lib/bitten-slave -c "bitten slave"
X    then
X      echo "Added user \"${USER}\"."
X    else
X      echo "Adding user \"${USER}\" failed..."
X      exit 1
X    fi
X  fi
X  ;;
Xesac
X
7c6b9eaba04aecb2e5633c8fe6de520c
echo c - /usr/ports/www/trac-bitten/files
mkdir -p /usr/ports/www/trac-bitten/files > /dev/null 2>&1
echo x - /usr/ports/www/trac-bitten/files/patch-0.6.x-r785
sed 's/^X//' >/usr/ports/www/trac-bitten/files/patch-0.6.x-r785 << 'fd0562f82f97a0359e7ac199da5cba0a'
Xdiff -urN --exclude=.svn 0.6b2/ChangeLog 0.6.x/ChangeLog
X--- 0.6b2/ChangeLog	2009-10-26 18:22:30.000000000 +0100
X+++ 0.6.x/ChangeLog	2009-10-26 18:22:22.000000000 +0100
X@@ -1,3 +1,10 @@
X+Version 0.6
X+(???, from 0.6.x branch)
X+http://svn.edgewall.org/repos/bitten/tags/0.6
X+
X+ * ???
X+
X+
X Version 0.6b2
X (12 September, from 0.6.x branch)
X http://svn.edgewall.org/repos/bitten/tags/0.6b2
Xdiff -urN --exclude=.svn 0.6b2/bitten/build/api.py 0.6.x/bitten/build/api.py
X--- 0.6b2/bitten/build/api.py	2009-10-26 18:22:30.000000000 +0100
X+++ 0.6.x/bitten/build/api.py	2009-10-26 18:22:21.000000000 +0100
X@@ -50,7 +50,7 @@
X class CommandLine(object):
X     """Simple helper for executing subprocesses."""
X 
X-    def __init__(self, executable, args, input=None, cwd=None):
X+    def __init__(self, executable, args, input=None, cwd=None, shell=False):
X         """Initialize the CommandLine object.
X         
X         :param executable: the name of the program to execute
X@@ -66,6 +66,7 @@
X         self.cwd = cwd
X         if self.cwd:
X             assert os.path.isdir(self.cwd)
X+        self.shell = shell
X         self.returncode = None
X 
X 
X@@ -102,7 +103,7 @@
X                         stdout=subprocess.PIPE,
X                         stderr=subprocess.PIPE,
X                         cwd=(self.cwd or None),
X-                        shell=False,
X+                        shell=self.shell,
X                         universal_newlines=True,
X                         env=None)
X         except Exception, e:
Xdiff -urN --exclude=.svn 0.6b2/bitten/build/javatools.py 0.6.x/bitten/build/javatools.py
X--- 0.6b2/bitten/build/javatools.py	2009-10-26 18:22:30.000000000 +0100
X+++ 0.6.x/bitten/build/javatools.py	2009-10-26 18:22:21.000000000 +0100
X@@ -60,7 +60,12 @@
X     if target:
X         args.append(target)
X 
X-    cmdline = CommandLine(executable, args, cwd=ctxt.basedir)
X+    shell = False
X+    if os.name == 'nt':
X+        # Need to execute ant.bat through a shell on Windows
X+        shell = True
X+
X+    cmdline = CommandLine(executable, args, cwd=ctxt.basedir, shell=shell)
X     for out, err in cmdline.execute():
X         if out is not None:
X             log.info(out)
Xdiff -urN --exclude=.svn 0.6b2/bitten/build/shtools.py 0.6.x/bitten/build/shtools.py
X--- 0.6b2/bitten/build/shtools.py	2009-10-26 18:22:30.000000000 +0100
X+++ 0.6.x/bitten/build/shtools.py	2009-10-26 18:22:21.000000000 +0100
X@@ -101,6 +101,12 @@
X     if file_ and os.path.isfile(resolve(file_)):
X         file_ = resolve(file_)
X 
X+    shell = False
X+
X+    if file_ and os.name == 'nt':
X+        # Need to execute script files through a shell on Windows
X+        shell = True
X+
X     if executable is None:
X         executable = file_
X     elif file_:
X@@ -109,8 +115,7 @@
X     # Support important Windows CMD.EXE built-ins (and it does its own quoting)
X     if os.name == 'nt' and executable.upper() in ['COPY', 'DIR', 'ECHO',
X                 'ERASE', 'DEL', 'MKDIR', 'MD', 'MOVE', 'RMDIR', 'RD', 'TYPE']:
X-        args = ['/C', executable] + [arg.strip('"') for arg in args]
X-        executable = os.environ['COMSPEC']
X+        shell = True
X 
X     if input_:
X         input_file = file(resolve(input_), 'r')
X@@ -132,7 +137,7 @@
X 
X     try:
X         cmdline = CommandLine(executable, args, input=input_file,
X-                              cwd=dir_)
X+                              cwd=dir_, shell=shell)
X         log_elem = xmlio.Fragment()
X         for out, err in cmdline.execute():
X             if out is not None:
Xdiff -urN --exclude=.svn 0.6b2/bitten/htdocs/bitten.css 0.6.x/bitten/htdocs/bitten.css
X--- 0.6b2/bitten/htdocs/bitten.css	2009-10-26 18:22:29.000000000 +0100
X+++ 0.6.x/bitten/htdocs/bitten.css	2009-10-26 18:22:20.000000000 +0100
X@@ -155,7 +155,6 @@
X #content.build tbody.totals td, #content.build tbody.totals th {
X   font-weight: bold;
X }
X-#content.build table.tests tr.failed { background: #d99; }
X #content.build table.tests tr.failed th,
X #content.build table.tests tr.failed td { font-weight: bold; }
X #content.build table.tests tr.failed :link,
X@@ -167,7 +166,8 @@
X   margin: 0; padding-left: 32px; padding-top: 5px; text-align: left; font-weight: normal;
X }
X #content.build table.tests tr th p.details span {
X-  white-space: pre; font-family: monospace; font-weight: normal; color: #666;
X+  white-space: pre; font-family: monospace; font-weight: normal; font-size: smaller;
X+  color: #666;
X }
X #content.build table.tests .fixture { display: inline; }
X #content.build table.tests tr.failed th .fixture a { 
Xdiff -urN --exclude=.svn 0.6b2/bitten/main.py 0.6.x/bitten/main.py
X--- 0.6b2/bitten/main.py	2009-10-26 18:22:30.000000000 +0100
X+++ 0.6.x/bitten/main.py	2009-10-26 18:22:21.000000000 +0100
X@@ -127,7 +127,7 @@
X                                  **kwargs):
X         config_name, build_id = self._parse_resource(resource.id)
X         config = BuildConfig.fetch(self.env, config_name)
X-        config_label = config.label or config_name
X+        config_label = config and config.label and config.label or config_name
X         if context:
X             if build_id:
X                 return tag.a('Build %d ("%s")' % (build_id, config_label),
Xdiff -urN --exclude=.svn 0.6b2/bitten/master.py 0.6.x/bitten/master.py
X--- 0.6b2/bitten/master.py	2009-10-26 18:22:30.000000000 +0100
X+++ 0.6.x/bitten/master.py	2009-10-26 18:22:21.000000000 +0100
X@@ -138,6 +138,7 @@
X         """ Formats and sends the response, raising ``RequestDone``. """
X         req.send_response(code)
X         headers = headers or {}
X+        headers.setdefault('Content-Length', len(body))
X         for header in headers:
X             req.send_header(header, headers[header])
X         req.write(body)
Xdiff -urN --exclude=.svn 0.6b2/bitten/report/coverage.py 0.6.x/bitten/report/coverage.py
X--- 0.6b2/bitten/report/coverage.py	2009-10-26 18:22:30.000000000 +0100
X+++ 0.6.x/bitten/report/coverage.py	2009-10-26 18:22:21.000000000 +0100
X@@ -187,7 +187,7 @@
X                     title='Annotate file with test coverage '
X                           'data (if available)',
X                     href=req.href.browser(resource.id, 
X-                        annotate='coverage', rev=data.get('rev')))
X+                        annotate='coverage', rev=resource.version))
X         return template, data, content_type
X 
X     # IHTMLPreviewAnnotator methods
Xdiff -urN --exclude=.svn 0.6b2/bitten/report/lint.py 0.6.x/bitten/report/lint.py
X--- 0.6b2/bitten/report/lint.py	2009-10-26 18:22:30.000000000 +0100
X+++ 0.6.x/bitten/report/lint.py	2009-10-26 18:22:21.000000000 +0100
X@@ -45,7 +45,7 @@
X from bitten_report as report
X  left outer join bitten_build as build ON (report.build=build.id)
X where build.config='%s' and report.category='lint'
X-group by build.rev_time, build.rev, build.platform
X+group by build.rev_time, build.rev, build.platform, report.id
X order by build.rev_time;""" % (config.name,)
X 
X         #self.log.debug('sql=\'%s\'' % (query,))
Xdiff -urN --exclude=.svn 0.6b2/bitten/templates/bitten_summary_lint.html 0.6.x/bitten/templates/bitten_summary_lint.html
X--- 0.6b2/bitten/templates/bitten_summary_lint.html	2009-10-26 18:22:30.000000000 +0100
X+++ 0.6.x/bitten/templates/bitten_summary_lint.html	2009-10-26 18:22:20.000000000 +0100
X@@ -2,7 +2,9 @@
X     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
X     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">;
X <html xmlns="http://www.w3.org/1999/xhtml"
X-      xmlns:py="http://genshi.edgewall.org/">;
X+      xmlns:py="http://genshi.edgewall.org/"
X+      py:strip="">
X+<body py:strip="">
X 
X <h3>Code Lint</h3>
X <table class="listing lint">
X@@ -43,4 +45,5 @@
X  </tr></tbody>
X </table>
X 
X+</body>
X </html>
Xdiff -urN --exclude=.svn 0.6b2/bitten/tests/queue.py 0.6.x/bitten/tests/queue.py
X--- 0.6b2/bitten/tests/queue.py	2009-10-26 18:22:30.000000000 +0100
X+++ 0.6.x/bitten/tests/queue.py	2009-10-26 18:22:21.000000000 +0100
X@@ -291,7 +291,9 @@
X 
X         thread1 = threading.Thread(target=build_populator)
X         thread2 = threading.Thread(target=build_populator)
X-        thread1.start(); thread2.start()
X+        # tiny sleep is to avoid odd segementation faults
X+        # (on Linux) and bus errors (on Mac OS X)
X+        thread1.start(); time.sleep(0.01); thread2.start()
X         thread1.join(); thread2.join()
X 
X         # check builds got added
Xdiff -urN --exclude=.svn 0.6b2/doc/recipes.txt 0.6.x/doc/recipes.txt
X--- 0.6b2/doc/recipes.txt	2009-10-26 18:22:30.000000000 +0100
X+++ 0.6.x/doc/recipes.txt	2009-10-26 18:22:21.000000000 +0100
X@@ -125,3 +125,6 @@
X   <sh:exec file="echo" args="o\\ne &quot;4 2&quot; \&quot;hi\ there\&quot;"/>
X 
X This will pass 3 arguments: ``o\ne`` + ``4 2`` + ``"hi there"``.
X+
X+**Note:** On Windows, batch scripts and built-ins will execute through a shell.
X+This may affect quoting of arguments.
Xdiff -urN --exclude=.svn 0.6b2/setup.cfg 0.6.x/setup.cfg
X--- 0.6b2/setup.cfg	2009-10-26 18:22:30.000000000 +0100
X+++ 0.6.x/setup.cfg	2009-10-26 18:22:22.000000000 +0100
X@@ -1,3 +1,7 @@
X+[egg_info]
X+tag_build = dev
X+tag_svn_revision = true
X+
X [unittest]
X xml_output = build/test-results.xml
X coverage_summary = build/test-coverage.txt
Xdiff -urN --exclude=.svn 0.6b2/setup.py 0.6.x/setup.py
X--- 0.6b2/setup.py	2009-10-26 18:22:30.000000000 +0100
X+++ 0.6.x/setup.py	2009-10-26 18:22:22.000000000 +0100
X@@ -110,7 +110,7 @@
X 
X setup(
X     name = 'BittenSlave',
X-    version =  '0.6b2',
X+    version =  '0.6',
X     author = 'Edgewall Software',
X     author_email = 'info@edgewall.org',
X     license = 'BSD',
fd0562f82f97a0359e7ac199da5cba0a
echo x - /usr/ports/www/trac-bitten/files/bitten-slave.sample
sed 's/^X//' >/usr/ports/www/trac-bitten/files/bitten-slave.sample << 'd64adc5ca0a90af51f8f43ecccbf57d0'
X;[authentication]
X; user/pass for login to Trac
X;username = <user>
X;password = <pass>
X
X[os]
Xname = @DISTRO@
Xversion = @DISTRO_VERSION@
X
X;[package:some-package]
X;version = 2.0
X
d64adc5ca0a90af51f8f43ecccbf57d0
echo x - /usr/ports/www/trac-bitten/files/patch-git
sed 's/^X//' >/usr/ports/www/trac-bitten/files/patch-git << 'a012ae9b761fe12c67aa8799093090de'
Xdiff -urN Bitten-0.6dev-r777/bitten/build/gittools.py Bitten-0.6dev-r777.git/bitten/build/gittools.py
X--- Bitten-0.6dev-r777/bitten/build/gittools.py	1970-01-01 01:00:00.000000000 +0100
X+++ Bitten-0.6dev-r777.git/bitten/build/gittools.py	2009-10-24 17:03:02.000000000 +0200
X@@ -0,0 +1,77 @@
X+# -*- coding: utf-8 -*-
X+# Copyright (C) Tim Niemueller [www.niemueller.de]
X+# Copyright (C) 2007 Edgewall Software
X+# based on hgtools.py
X+#
X+# This software is licensed as described in the file COPYING, which
X+# you should have received as part of this distribution. The terms
X+# are also available at http://bitten.edgewall.org/wiki/License.
X+
X+"""Recipe commands for git."""
X+
X+import logging
X+
X+log = logging.getLogger('bitten.build.gittools')
X+
X+__docformat__ = 'restructuredtext en'
X+
X+def clone(ctxt, url, dir_='.'):
X+    """pull and update the local working copy from the git repository.
X+    
X+    :param ctxt: the build context
X+    :type ctxt: `Context`
X+    :param url: the url of the repository to clone
X+    :param dir\_: the name of a local subdirectory containing the working copy
X+    """
X+    args = ['clone', url, dir_]
X+
X+    from bitten.build import shtools
X+    returncode = shtools.execute(ctxt, file_='git', args=args)
X+    if returncode != 0:
X+        ctxt.error('git clone failed (%s)' % returncode)
X+
X+def pull(ctxt, revision, remote='origin', dir_='.'):
X+    """pull and update the local working copy from the git repository.
X+    
X+    :param ctxt: the build context
X+    :type ctxt: `Context`
X+    :param remote: the remote repository to pull from
X+    :param dir\_: the name of a local subdirectory containing the working copy
X+    """
X+    args = ['pull', '-u', remote, revision]
X+
X+    from bitten.build import shtools
X+    returncode = shtools.execute(ctxt, file_='git', dir_=dir_, args=args)
X+    if returncode != 0:
X+        ctxt.error('git pull failed (%s)' % returncode)
X+
X+def checkout(ctxt, branch, dir_='.'):
X+    """checkout specific branch
X+    
X+    :param ctxt: the build context
X+    :type ctxt: `Context`
X+    :param branch: branch to checkout
X+    :param dir\_: the name of a local subdirectory containing the working copy
X+    """
X+    args = ['checkout', branch]
X+
X+    from bitten.build import shtools
X+    returncode = shtools.execute(ctxt, file_='git', dir_=dir_, args=args)
X+    if returncode != 0:
X+        ctxt.error('git branch failed (%s)' % returncode)
X+
X+def reset(ctxt, revision, dir_='.'):
X+    """reset git tree to given revision/commit
X+    
X+    :param ctxt: the build context
X+    :type ctxt: `Context`
X+    :param revision: the revision/commit to reset to
X+    :param dir\_: the name of a local subdirectory containing the working copy
X+    """
X+    args = ['reset', '--hard', revision]
X+
X+    from bitten.build import shtools
X+    returncode = shtools.execute(ctxt, file_='git', dir_=dir_, args=args)
X+    if returncode != 0:
X+        ctxt.error('git reset failed (%s)' % returncode)
X+
Xdiff -urN Bitten-0.6dev-r777/setup.py Bitten-0.6dev-r777.git/setup.py
X--- Bitten-0.6dev-r777/setup.py	2009-10-16 14:15:34.000000000 +0200
X+++ Bitten-0.6dev-r777.git/setup.py	2009-10-24 17:05:22.000000000 +0200
X@@ -55,6 +55,10 @@
X         'svn#export = bitten.build.svntools:export',
X         'svn#update = bitten.build.svntools:update',
X         'hg#pull = bitten.build.hgtools:pull',
X+        'git#clone = bitten.build.gittools:clone',
X+        'git#pull = bitten.build.gittools:pull',
X+        'git#reset = bitten.build.gittools:reset',
X+        'git#checkout = bitten.build.gittools:checkout',
X         'xml#transform = bitten.build.xmltools:transform'
X     ]
X recipe_commands = [NS_old + tool for tool in tools] \
X@@ -133,6 +137,7 @@
X                   "bitten.build.pythontools",
X                   "bitten.build.shtools",
X                   "bitten.build.svntools",
X+                  "bitten.build.gittools",
X                   "bitten.build.xmltools",
X                   "bitten.recipe",
X                   "bitten.slave",
a012ae9b761fe12c67aa8799093090de
echo x - /usr/ports/www/trac-bitten/files/patch-navtypo
sed 's/^X//' >/usr/ports/www/trac-bitten/files/patch-navtypo << '3f06bf672860abb437bf85e39aa05fb6'
Xdiff -urN Bitten-0.6dev-r777/bitten/web_ui.py Bitten-0.6dev-r777.typo/bitten/web_ui.py
X--- Bitten-0.6dev-r777/bitten/web_ui.py	2009-10-16 14:15:34.000000000 +0200
X+++ Bitten-0.6dev-r777.typo/bitten/web_ui.py	2009-10-24 16:49:58.000000000 +0200
X@@ -109,7 +109,7 @@
X                 if not status:
X                     status='bittenpending'
X             yield ('mainnav', 'build',
X-                   tag.a('Builds Status', href=req.href.build(), accesskey=5, 
X+                   tag.a('Build Status', href=req.href.build(), accesskey=5, 
X                          class_=status))
X 
X     # ITemplatesProvider methods
3f06bf672860abb437bf85e39aa05fb6
echo x - /usr/ports/www/trac-bitten/files/bitten-slave.in
sed 's/^X//' >/usr/ports/www/trac-bitten/files/bitten-slave.in << '365fd87f488a5693894e621e1c551ee8'
X#!/bin/sh
X#
X# $FreeBSD$
X#
X# PROVIDE: bitten-slave
X# REQUIRE: DAEMON
X# KEYWORD: FreeBSD
X#
X# Bitten continuous integration build slave
X#
X
X. %%RC_SUBR%%
X
Xname=bitten_slave
Xrcvar=`set_rcvar`
Xlogfile=/var/log/bitten-slave.log
Xconffile=/usr/local/etc/bitten/bitten-slave.conf
Xworkdir=/var/lib/bitten-slave
X
Xload_rc_config ${name}
X
Xcommand=/usr/local/bin/bitten-slave
Xcommand_args="-f ${conffile} -d ${workdir} --log=${logfile} ${bitten_slave_urls} >/dev/null &"
Xcommand_interpreter=%%PYTHON_CMD%%
Xstart_precmd="touch $logfile && chown bitten-slave $logfile"
Xbitten_slave_user=bitten-slave
Xbitten_slave_group=bitten-slave
X
Xrun_rc_command "$1"
X
365fd87f488a5693894e621e1c551ee8
exit
--- trac-bitten.shar ends here ---

--- UIDs.patch begins here ---
--- UIDs	2009-11-01 02:07:56.000000000 +0100
+++ UIDs.bitten	2009-11-01 02:07:44.000000000 +0100
@@ -93,6 +93,7 @@
 dspam:*:202:202::0:0:Dspam:/nonexistent:/usr/sbin/nologin
 shoutcast:*:210:210::0:0:Shoutcast sandbox:/nonexistent:/bin/sh
 git:*:211:211:gitosis user:/usr/local/git:/bin/sh
+bitten-slave:*:212:212:bitten slave:/var/lib/bitten-slave:/bin/sh
 bs:*:220:220::0:0:Big Sister:/usr/local/bigsister:/bin/sh
 postgrey:*:225:225::0:0:Postgrey Owner:/nonexistent:/usr/sbin/nologin
 aprsd:*:240:240::0:0:aprsd:/nonexistent:/bin/sh
--- UIDs.patch ends here ---

--- GIDs.patch begins here ---
--- GIDs	2009-11-01 02:08:01.000000000 +0100
+++ GIDs.bitten	2009-11-01 02:07:50.000000000 +0100
@@ -83,6 +83,7 @@
 sympa:*:200:
 dspam:*:202:
 git:*:211:
+bitten-slave:*:212:
 bs:*:220:
 postgrey:*:225:
 aprsd:*:240:
--- GIDs.patch ends here ---


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



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