]> git.saurik.com Git - wxWidgets.git/blame - build/buildbot/config/include/testdrive-unix.xml
adapted Julian's new speed improved version
[wxWidgets.git] / build / buildbot / config / include / testdrive-unix.xml
CommitLineData
c005fb28
MW
1<?xml version="1.0" encoding="utf-8"?>
2
3<!--
801be649
MW
4 Name: include/testdrive-unix.xml
5 Purpose: Declarations for the testdrive unix build slave
c005fb28
MW
6 Author: Mike Wetherell
7 RCS-ID: $Id$
8 Copyright: (c) 2007 Mike Wetherell
9 Licence: wxWidgets licence
10-->
11
12<bot xmlns:xi="http://www.w3.org/2001/XInclude"
13 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
c005fb28
MW
14 xsl:version="1.0">
15
801be649 16<xi:include href="testdrive.xml"/>
c005fb28
MW
17
18<!--
801be649 19 post-checkout - post checkout <command> run by <checkout>
c005fb28 20
801be649 21 Usage: <post-checkout/>
c005fb28 22
801be649
MW
23 The command is executed inside the shared checkout dir, and normally it
24 is used to make a private copy.
c005fb28 25-->
c005fb28
MW
26<xsl:template name="post-checkout">
27<command>
28mkdir -p $TOPDIR
29chown $USER $TOPDIR
30rm -rf $BUILDDIR
31cp -pR . $BUILDDIR || { cd; rm -rf $BUILDDIR; exit 1; }
32</command>
33</xsl:template>
34
5a049933
MW
35<!--
36 unarchive - post fetch <command> run by <fetch>
37
38 Usage: <unarchive/>
39
40 The command is executed in the $HOME directory on the remote machine,
41 it is used to extract the fetched archive to the build directory.
42-->
43<xsl:template name="unarchive">
44<command>
45mkdir -p $TOPDIR
46chown $USER $TOPDIR
47rm -rf $BUILDDIR
48SOURCE=`echo $SOURCE | sed "s|^[^/]|$HOME/&amp;|"`
49cd $TOPDIR
50case $SOURCE in
51 *.tar.gz)
52 gunzip -c $SOURCE | tar xf -
53 ;;
54 *.tar.bz2)
55 bunzip2 -c $SOURCE | tar xf -
56 ;;
57 *.zip)
58 unzip $SOURCE
59 ;;
60esac
61mv wx* $BUILDDIR
62</command>
63</xsl:template>
64
c005fb28
MW
65<!--
66 configure - make disable-precomp-headers a default configure option for
67 the testdrive, and post process the Makefiles to use ccache.
68
69 Usage: <configure options="-with-foobar"/>
70-->
71<xsl:template name="configure">
72 <xsl:param name="content"/>
73 <xsl:param name="options"/>
74 <configure>
75 <copy-with-defaults content="{$content}">
801be649 76 <command>./configure --disable-precomp-headers <xsl:value-of select="normalize-space($options)"/></command>
c005fb28
MW
77 </copy-with-defaults>
78 <command>find . -name Makefile | xargs perl -pi -e 's/^(?:CC|CXX) = /$&amp;ccache /'</command>
79 </configure>
80</xsl:template>
81
82<!--
83 setup - a build step that makes sure any prerequisites are set up for
84 the current testdrive build.
85
86 Usage: <setup/>
87 <setup cppunit-options="-host=i686-apple-darwin8"/>
88
89 One of the things it sets up is cppunit. There is more than one compiler
90 available on some of the testdrive machines, and generally speaking
91 cppuint needs to be compiled by the same one that will be used for the
92 build.
93-->
94<xsl:template name="setup">
95<xsl:param name="content"/>
96<xsl:param name="options"/>
97<xsl:param name="ccache-configure" select="'./configure INSTALL=./install-sh\ -c --prefix=$HOME --bindir=$OPTDIR/bin'"/>
98<xsl:param name="ccache-options"/>
99<xsl:param name="cppunit-configure" select="'./configure INSTALL=config/install-sh\ -c --prefix=$HOME --bindir=$OPTDIR/bin --libdir=$OPTDIR/lib --disable-static'"/>
100<xsl:param name="cppunit-options"/>
101<shellcommand>
102<description>setting up</description>
103<descriptionDone>set up</descriptionDone>
104<haltOnFailure/>
105<command>
106MINSPACE=1000000
107DSPACE=`df -Pk $BUILDDIR | tail -1 | awk '{ print $4 }'`
108if [ $DSPACE -lt $MINSPACE ]; then
109 echo "Disk space low, skipping build"
110 exit 1
111fi
112if [ -z "$CCACHE_DIR" ]; then
113 gunzip -c $HOME/src/ccache-*.tar.gz | tar xf -
114 cd ccache-*
115 <xsl:value-of select="concat($ccache-configure, ' ', $ccache-options, ' ', $options)"/>
116 make
117 strip ccache
118 make install
119 cd $BUILDDIR
120 rm -r ccache-*
121fi
122if { cppunit-config --version || "$CPPUNIT_CONFIG" --version; } 2>/dev/null; then
123 HAVE_CPPUNIT=1
124fi
125if [ -z "$HAVE_CPPUNIT" ]; then
126 gunzip -c $HOME/src/cppunit-*.tar.gz | tar xf -
127 cd cppunit-*
128 <xsl:value-of select="concat($cppunit-configure, ' ', $cppunit-options, ' ', $options)"/>
129 make install-strip
130 chmod +x $OPTDIR/bin/cppunit-config
131 cd $BUILDDIR
132 rm -rf cppunit-*
133fi
134</command>
135</shellcommand>
136</xsl:template>
137
138<!--
801be649 139 profile - see <steps>.
c005fb28
MW
140-->
141<xsl:template name="profile">
142<command>
143set -e
144uname -smnr
145umask 022
146LANG=C
801be649 147TOPDIR=<get-builddir/>
c005fb28
MW
148BUILDDIR=$TOPDIR/build
149OPTDIR=$HOME/opt/<basename><get name="builddir"/></basename>
150</command>
151</xsl:template>
152
153<!--
801be649 154 prologue - see <steps>.
c005fb28
MW
155-->
156<xsl:template name="prologue">
157<command>
158INSTALLDIR=$TOPDIR/install
159case `uname -sm` in
160 Linux*86*) PATH=$HOME/linux-x86/bin:$PATH ;;
161esac
162PATH=$OPTDIR/bin:$PATH
163LD_LIBRARY_PATH=$BUILDDIR/lib:$OPTDIR/lib:$LD_LIBRARY_PATH
164export LD_LIBRARY_PATH
165if { ccache -V; } >/dev/null 2>&amp;1; then
166 CCACHE_DIR=$TOPDIR/ccache
167 export CCACHE_DIR
168 ccache -M 90M
169fi
170cd $BUILDDIR
c767a8ee
MW
171if [ -f wx-config ]; then
172 `./wx-config --cxx` --version
173fi
c005fb28
MW
174<if-del-on-fail>trap 'cd; rm -rf $BUILDDIR' EXIT</if-del-on-fail>
175</command>
176</xsl:template>
177
178<!--
801be649 179 epilogue - see <steps>.
c005fb28
MW
180-->
181<xsl:template name="epilogue">
182 <xsl:if test="position() != last()">
183 <if-del-on-fail>
184 <command>trap '' EXIT</command>
185 </if-del-on-fail>
186 </xsl:if>
187</xsl:template>
188
189<!--
801be649
MW
190 builddir - override <builddir> to accept a full path
191
192 Usage: <builddir>/tmp/wx/foobar</builddir>
c005fb28 193
801be649
MW
194 Normally builddir is a single directory name not a full path. Override
195 to allow a working directory to be selected on the remote testdrive
196 machine.
c005fb28 197
801be649
MW
198 The actual builddir (i.e. last part 'foobar') as usual must be unique
199 across all the builds of all the slaves.
c005fb28 200-->
801be649 201<xsl:template name="builddir">
c005fb28 202 <xsl:param name="content"/>
801be649
MW
203 <builddir>
204 <basename><xsl:copy-of select="$content"/></basename>
205 </builddir>
c005fb28
MW
206</xsl:template>
207
208<!--
801be649
MW
209 Put builds under /tmp/wx on the remote machines by default.
210
211 If the <builddir> element specifies a full path then returns that
212 as-is, otherwise prepends '/tmp/wx/'.
c005fb28 213-->
801be649
MW
214<xsl:template name="get-builddir">
215 <xsl:variable name="builddir"><get name="builddir"/></xsl:variable>
216 <xsl:if test="substring($builddir, 1, 1) != '/'">
217 <xsl:text>/tmp/wx/</xsl:text>
c005fb28 218 </xsl:if>
801be649 219 <xsl:value-of select="$builddir"/>
c005fb28
MW
220</xsl:template>
221
222<!--
223 basename - returns the final component of a path
224
225 Usage: <basename>/foo/bar</basename>
226
227 Evaluates to 'bar'.
228-->
229<xsl:template name="basename">
230 <xsl:param name="path"/>
231 <xsl:choose>
232 <xsl:when test="contains($path, '/')">
233 <xsl:call-template name="basename">
234 <xsl:with-param name="path" select="substring-after($path, '/')"/>
235 </xsl:call-template>
236 </xsl:when>
237 <xsl:otherwise>
238 <xsl:value-of select="$path"/>
239 </xsl:otherwise>
240 </xsl:choose>
241</xsl:template>
242
243</bot>