Add buildbot tools and config include files.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49042 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -19,12 +19,12 @@
|
|||||||
<!--
|
<!--
|
||||||
Quick schedulers. Builds using these are triggered after each change to
|
Quick schedulers. Builds using these are triggered after each change to
|
||||||
the sources on the given branch.
|
the sources on the given branch.
|
||||||
|
|
||||||
name: unique
|
name: unique
|
||||||
branch: branch to watch
|
branch: branch to watch
|
||||||
treeStableTimer: wait until the tree has stopped changing for the
|
treeStableTimer: wait until the tree has stopped changing for the
|
||||||
given number of seconds before firing
|
given number of seconds before firing
|
||||||
fileNotImportant: files matching these patterns do not trigger a build
|
fileNotImportant: files matching these patterns do not trigger a build
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<scheduler>
|
<scheduler>
|
||||||
|
@@ -11,6 +11,9 @@
|
|||||||
There is one xml file such as this per build slave containing a <build>
|
There is one xml file such as this per build slave containing a <build>
|
||||||
element for each build the slave runs. Each <build> corresponds to a
|
element for each build the slave runs. Each <build> corresponds to a
|
||||||
column in the waterfall display.
|
column in the waterfall display.
|
||||||
|
|
||||||
|
For full documentation see:
|
||||||
|
http://www.wxwidgets.org/wiki/index.php/Development:_Buildbot
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<bot xmlns:xi="http://www.w3.org/2001/XInclude"
|
<bot xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||||
@@ -51,7 +54,7 @@
|
|||||||
The name of a scheduler that will trigger this build. The schedulers
|
The name of a scheduler that will trigger this build. The schedulers
|
||||||
are usually defined in common.xml, look in there to see if there is
|
are usually defined in common.xml, look in there to see if there is
|
||||||
already one you can use, and add a new one if not.
|
already one you can use, and add a new one if not.
|
||||||
|
|
||||||
The 'trunk_quick' and 'stable_quick' schedulers currently in
|
The 'trunk_quick' and 'stable_quick' schedulers currently in
|
||||||
common.xml trigger a build after every source change on the trunk
|
common.xml trigger a build after every source change on the trunk
|
||||||
and stable branches respectively. There are also daily and weekly
|
and stable branches respectively. There are also daily and weekly
|
||||||
|
337
build/buildbot/config/include.xml
Normal file
337
build/buildbot/config/include.xml
Normal file
@@ -0,0 +1,337 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Name: include.xml
|
||||||
|
Purpose: Common declarations for buildbot
|
||||||
|
Author: Mike Wetherell
|
||||||
|
RCS-ID: $Id$
|
||||||
|
Copyright: (c) 2007 Mike Wetherell
|
||||||
|
Licence: wxWidgets licence
|
||||||
|
-->
|
||||||
|
|
||||||
|
<bot xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||||
|
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||||
|
xmlns:exsl="http://exslt.org/common"
|
||||||
|
xsl:version="1.0">
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Constants
|
||||||
|
-->
|
||||||
|
<xsl:template name="SVN_URL">http://svn.wxwidgets.org/svn/wx/wxWidgets/</xsl:template>
|
||||||
|
<xsl:template name="STABLE_BRANCH">branches/WX_2_8_BRANCH</xsl:template>
|
||||||
|
<xsl:variable name="STABLE_BRANCH"><STABLE_BRANCH/></xsl:variable>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
checkout - build step for source checkout.
|
||||||
|
|
||||||
|
Usage: as <svn> with defaults for <baseURL> and <defaultBranch>
|
||||||
|
|
||||||
|
Typically just:
|
||||||
|
<checkout/>
|
||||||
|
for the trunk, or:
|
||||||
|
<checkout branch="branches/WX_2_8_BRANCH"/>
|
||||||
|
to checkout a branch.
|
||||||
|
-->
|
||||||
|
<xsl:template name="checkout">
|
||||||
|
<xsl:param name="content"/>
|
||||||
|
<xsl:param name="branch" select="'trunk'"/>
|
||||||
|
<xsl:variable name="nodes" select="exsl:node-set($content)"/>
|
||||||
|
<svn>
|
||||||
|
<xsl:if test="not($nodes/svnurl)">
|
||||||
|
<xsl:if test="not($nodes/baseURL)">
|
||||||
|
<baseURL><SVN_URL/></baseURL>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:if test="not($nodes/defaultBranch)">
|
||||||
|
<defaultBranch><xsl:value-of select="$branch"/></defaultBranch>
|
||||||
|
</xsl:if>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:copy-of select="$content"/>
|
||||||
|
</svn>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
configure - add the options attribute to <configure>
|
||||||
|
|
||||||
|
Usage: <configure options="-with-foobar"/>
|
||||||
|
-->
|
||||||
|
<xsl:template name="configure">
|
||||||
|
<xsl:param name="content"/>
|
||||||
|
<xsl:param name="options"/>
|
||||||
|
<configure>
|
||||||
|
<copy-with-defaults content="{$content}">
|
||||||
|
<command>./configure <xsl:value-of select="$options"/></command>
|
||||||
|
</copy-with-defaults>
|
||||||
|
</configure>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
make - specify the make command.
|
||||||
|
|
||||||
|
Usage: <make>nmake -f makefile.vc SHARED=1</make>
|
||||||
|
|
||||||
|
Used as a child of <build> to specify the make command used by the
|
||||||
|
<compile> elements below, if omitted 'make' is used.
|
||||||
|
-->
|
||||||
|
<xsl:template name="make"/>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
compile - modifiy <compile> to default to the command given by <make>
|
||||||
|
|
||||||
|
Usage: as <compile>
|
||||||
|
|
||||||
|
The <make> element of <build> spcecifies the make command used by all
|
||||||
|
compile build steps in the build. If <make> is not given 'make' is used.
|
||||||
|
|
||||||
|
The command for a particular compile build step can be further overridden
|
||||||
|
using its <command> element:
|
||||||
|
<compile>
|
||||||
|
<command>myscript</command>
|
||||||
|
</compile>
|
||||||
|
-->
|
||||||
|
<xsl:template name="compile">
|
||||||
|
<xsl:param name="content"/>
|
||||||
|
<compile>
|
||||||
|
<copy-with-defaults content="{$content}">
|
||||||
|
<command><get name="make" default="make"/></command>
|
||||||
|
</copy-with-defaults>
|
||||||
|
</compile>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Compile build steps for the usual subdirectories.
|
||||||
|
|
||||||
|
Usage: as <compile>
|
||||||
|
|
||||||
|
Typically just:
|
||||||
|
<compile-msw/>
|
||||||
|
<compile-samples/>
|
||||||
|
<compile-utils/>
|
||||||
|
<compile-contrib/>
|
||||||
|
<compile-tests/>
|
||||||
|
|
||||||
|
By default the compile command produced is:
|
||||||
|
cd foobar && make
|
||||||
|
As above, the 'make' part can be overridden using the <make> element or
|
||||||
|
the whole command line can be replaced using <command>.
|
||||||
|
|
||||||
|
<compile-msw> and <compile-tests> halt the build on failure, the others
|
||||||
|
continue with the next step (can be overridden by <haltOnFailure>).
|
||||||
|
-->
|
||||||
|
<xsl:template name="compile-msw">
|
||||||
|
<xsl:param name="content"/>
|
||||||
|
<compile-subdir dir="build\msw" halt="true">
|
||||||
|
<xsl:copy-of select="$content"/>
|
||||||
|
</compile-subdir>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template name="compile-samples">
|
||||||
|
<xsl:param name="content"/>
|
||||||
|
<compile-subdir dir="samples">
|
||||||
|
<xsl:copy-of select="$content"/>
|
||||||
|
</compile-subdir>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template name="compile-utils">
|
||||||
|
<xsl:param name="content"/>
|
||||||
|
<compile-subdir dir="utils">
|
||||||
|
<xsl:copy-of select="$content"/>
|
||||||
|
</compile-subdir>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template name="compile-contrib">
|
||||||
|
<xsl:param name="content"/>
|
||||||
|
<compile-subdir dir="contrib">
|
||||||
|
<xsl:copy-of select="$content"/>
|
||||||
|
</compile-subdir>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template name="compile-tests">
|
||||||
|
<xsl:param name="content"/>
|
||||||
|
<compile-subdir dir="tests" halt="true">
|
||||||
|
<xsl:copy-of select="$content"/>
|
||||||
|
</compile-subdir>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
compile-subdir - build step to compile a subdirectory.
|
||||||
|
|
||||||
|
Usage: as <compile> plus the following attributes,
|
||||||
|
<compile-subdir dir="foobar" [ halt="true" ]/>
|
||||||
|
|
||||||
|
Compiles the named subdirectory 'foobar'. Continues with the next build
|
||||||
|
step on failure, unless the optional attibute 'halt="true"' is given.
|
||||||
|
The make command used is as described for the compile steps above.
|
||||||
|
-->
|
||||||
|
<xsl:template name="compile-subdir">
|
||||||
|
<xsl:param name="content"/>
|
||||||
|
<xsl:param name="dir"/>
|
||||||
|
<xsl:param name="halt" select="'false'"/>
|
||||||
|
<compile>
|
||||||
|
<defaults content="{$content}">
|
||||||
|
<description>
|
||||||
|
compiling <xsl:value-of select="$dir"/>
|
||||||
|
</description>
|
||||||
|
<descriptionDone>
|
||||||
|
compile <xsl:value-of select="$dir"/>
|
||||||
|
</descriptionDone>
|
||||||
|
<haltOnFailure>
|
||||||
|
<xsl:value-of select="$halt"/>
|
||||||
|
</haltOnFailure>
|
||||||
|
<warnOnFailure/>
|
||||||
|
</defaults>
|
||||||
|
<copy-with-defaults content="{$content}">
|
||||||
|
<command>cd <xsl:value-of select="$dir"/> && <get name="make" default="make"/></command>
|
||||||
|
</copy-with-defaults>
|
||||||
|
</compile>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
run-tests - build step to run the test suites.
|
||||||
|
|
||||||
|
Usage: as <test>
|
||||||
|
|
||||||
|
For unix builds typically just:
|
||||||
|
<run-tests/>
|
||||||
|
or for Windows builds, e.g.:
|
||||||
|
<run-tests>
|
||||||
|
<command>PATH=..\lib\vc_lib;%PATH%</command>
|
||||||
|
<command>cd tests && vc_msw\test</command>
|
||||||
|
</run-tests>
|
||||||
|
-->
|
||||||
|
<xsl:template name="run-tests">
|
||||||
|
<xsl:param name="content"/>
|
||||||
|
<test>
|
||||||
|
<defaults content="{$content}">
|
||||||
|
<description>running tests</description>
|
||||||
|
<descriptionDone>run tests</descriptionDone>
|
||||||
|
<warnOnFailure/>
|
||||||
|
</defaults>
|
||||||
|
<copy-with-defaults content="{$content}">
|
||||||
|
<command><xi:include href="run-tests.sh" parse="text"/></command>
|
||||||
|
</copy-with-defaults>
|
||||||
|
</test>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
defaults - supply default content for an element.
|
||||||
|
|
||||||
|
Usage: <defaults content="{$content}">
|
||||||
|
<foo>foo</foo>
|
||||||
|
<bar>bar</bar>
|
||||||
|
</defaults>
|
||||||
|
|
||||||
|
Copies those child elements that do not already exist in $content.
|
||||||
|
-->
|
||||||
|
<xsl:template name="defaults">
|
||||||
|
<xsl:param name="defaults"/>
|
||||||
|
<xsl:param name="content"/>
|
||||||
|
|
||||||
|
<xsl:variable name="def-nodes" select="exsl:node-set($defaults)"/>
|
||||||
|
<xsl:variable name="cont-nodes" select="exsl:node-set($content)"/>
|
||||||
|
|
||||||
|
<xsl:for-each select="$def-nodes/*">
|
||||||
|
<xsl:if test="not($cont-nodes/*[name() = name(current())])">
|
||||||
|
<xsl:copy-of select="."/>
|
||||||
|
</xsl:if>
|
||||||
|
</xsl:for-each>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
copy-with-defaults - copy elements supplying defaults for any that are
|
||||||
|
missing or empty.
|
||||||
|
|
||||||
|
Usage: <copy-with-defaults content="{$content}">
|
||||||
|
<foo>foo</foo>
|
||||||
|
<bar>bar</bar>
|
||||||
|
</copy-with-defaults>
|
||||||
|
|
||||||
|
Copies $content plus any child elements that do not exist in $content,
|
||||||
|
substituting empty elements in $content with any child elements of the
|
||||||
|
same name.
|
||||||
|
-->
|
||||||
|
<xsl:template name="copy-with-defaults">
|
||||||
|
<xsl:param name="defaults"/>
|
||||||
|
<xsl:param name="content"/>
|
||||||
|
|
||||||
|
<xsl:variable name="def-nodes" select="exsl:node-set($defaults)"/>
|
||||||
|
<xsl:variable name="cont-nodes" select="exsl:node-set($content)"/>
|
||||||
|
|
||||||
|
<xsl:for-each select="$def-nodes/*">
|
||||||
|
<xsl:if test="not($cont-nodes/*[name() = name(current())])">
|
||||||
|
<xsl:copy-of select="."/>
|
||||||
|
</xsl:if>
|
||||||
|
</xsl:for-each>
|
||||||
|
|
||||||
|
<xsl:for-each select="$cont-nodes/*">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="not(node())">
|
||||||
|
<xsl:copy-of select="$def-nodes/*[name() = name(current())]"/>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:copy-of select="."/>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:for-each>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
get - gets the value of a named element inside a <build>.
|
||||||
|
|
||||||
|
Usage: <get name="foobar" [ default="value" ]/>
|
||||||
|
|
||||||
|
Used inside a <build> evaluates to the value of the build's <foobar>
|
||||||
|
element, or to the value of the optional 'default' attribute if there is
|
||||||
|
no such element.
|
||||||
|
-->
|
||||||
|
<xsl:template name="get">
|
||||||
|
<xsl:param name="content"/>
|
||||||
|
<xsl:param name="name"/>
|
||||||
|
<xsl:param name="default"/>
|
||||||
|
<strip>
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="ancestor-or-self::build/*[name() = $name]">
|
||||||
|
<xsl:apply-templates select="ancestor-or-self::build/*[name() = $name]/node()"/>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:value-of select="$default"/>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</strip>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
strip - strips leading and trailing whitespace
|
||||||
|
|
||||||
|
Usage: <strip>
|
||||||
|
foobar
|
||||||
|
</strip>
|
||||||
|
|
||||||
|
Strips leading and trailing whitespace if the content is text only,
|
||||||
|
otherwise copies the content unchanged.
|
||||||
|
-->
|
||||||
|
<xsl:template name="strip">
|
||||||
|
<xsl:param name="content"/>
|
||||||
|
<xsl:variable name="len" select="string-length($content)"/>
|
||||||
|
<xsl:variable name="norm" select="normalize-space($content)"/>
|
||||||
|
<xsl:variable name="normlen" select="string-length($norm)"/>
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="exsl:node-set($content)/*">
|
||||||
|
<xsl:copy-of select="$content"/>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="substring($content, 1, 1) != substring($norm, 1, 1)">
|
||||||
|
<xsl:call-template name="strip">
|
||||||
|
<xsl:with-param name="content" select="substring($content, 2)"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="substring($content, $len, 1) != substring($norm, $normlen, 1)">
|
||||||
|
<xsl:call-template name="strip">
|
||||||
|
<xsl:with-param name="content" select="substring($content, 1, $len - 1)"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:value-of select="$content"/>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
</bot>
|
29
build/buildbot/config/run-tests.sh
Executable file
29
build/buildbot/config/run-tests.sh
Executable file
@@ -0,0 +1,29 @@
|
|||||||
|
# Run the test suites
|
||||||
|
# Running them one at a time gives more readable results and shows up errors
|
||||||
|
# in the suite names.
|
||||||
|
set -e
|
||||||
|
cd tests
|
||||||
|
|
||||||
|
case `uname -sm` in
|
||||||
|
CYGWIN*|MINGW32*) PATH=../lib:$PATH ;;
|
||||||
|
Darwin*) DYLD_LIBRARY_PATH=../lib:$DYLD_LIBRARY_PATH ;;
|
||||||
|
*) LD_LIBRARY_PATH=../lib:$LD_LIBRARY_PATH ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
test -x test_gui && TEST_GUI=./test_gui
|
||||||
|
ERR=0
|
||||||
|
|
||||||
|
for prog in ./test $TEST_GUI; do
|
||||||
|
if [ -x $prog ]; then
|
||||||
|
SUITES=`$prog -l | grep '^ [^ ]'`
|
||||||
|
for SUITE in $SUITES; do
|
||||||
|
echo
|
||||||
|
echo $SUITE
|
||||||
|
echo $SUITE | sed 's/./-/g'
|
||||||
|
$prog $SUITE || ERR=1
|
||||||
|
echo
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
exit $ERR
|
300
build/buildbot/config/testdrive-inc.xml
Normal file
300
build/buildbot/config/testdrive-inc.xml
Normal file
@@ -0,0 +1,300 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Name: testdrive-inc.xml
|
||||||
|
Purpose: Declarations for the testdrive build slave
|
||||||
|
Author: Mike Wetherell
|
||||||
|
RCS-ID: $Id$
|
||||||
|
Copyright: (c) 2007 Mike Wetherell
|
||||||
|
Licence: wxWidgets licence
|
||||||
|
-->
|
||||||
|
|
||||||
|
<bot xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||||
|
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||||
|
xmlns:exsl="http://exslt.org/common"
|
||||||
|
xsl:version="1.0">
|
||||||
|
|
||||||
|
<xi:include href="include.xml" xpointer="xpointer(*/*)"/>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
checkout - build step for source checkout.
|
||||||
|
|
||||||
|
Usage: as <svn> with additional <command> element and defaults for
|
||||||
|
<baseURL> and <defaultBranch>
|
||||||
|
|
||||||
|
Typically just:
|
||||||
|
<checkout/>
|
||||||
|
for the trunk, or:
|
||||||
|
<checkout branch="branches/WX_2_8_BRANCH"/>
|
||||||
|
to checkout a branch.
|
||||||
|
-->
|
||||||
|
<xsl:template name="checkout">
|
||||||
|
<xsl:param name="content"/>
|
||||||
|
<xsl:param name="branch" select="'trunk'"/>
|
||||||
|
<xsl:variable name="nodes" select="exsl:node-set($content)"/>
|
||||||
|
<testdrive-svn>
|
||||||
|
<xsl:if test="not($nodes/svnurl)">
|
||||||
|
<xsl:if test="not($nodes/baseURL)">
|
||||||
|
<baseURL><SVN_URL/></baseURL>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:if test="not($nodes/defaultBranch)">
|
||||||
|
<defaultBranch><xsl:value-of select="$branch"/></defaultBranch>
|
||||||
|
</xsl:if>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:if test="not($nodes/command)">
|
||||||
|
<profile/>
|
||||||
|
<post-checkout/>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:copy-of select="$content"/>
|
||||||
|
</testdrive-svn>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template name="post-checkout">
|
||||||
|
<command>
|
||||||
|
mkdir -p $TOPDIR
|
||||||
|
chown $USER $TOPDIR
|
||||||
|
rm -rf $BUILDDIR
|
||||||
|
cp -pR . $BUILDDIR || { cd; rm -rf $BUILDDIR; exit 1; }
|
||||||
|
</command>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
configure - make disable-precomp-headers a default configure option for
|
||||||
|
the testdrive, and post process the Makefiles to use ccache.
|
||||||
|
|
||||||
|
Usage: <configure options="-with-foobar"/>
|
||||||
|
-->
|
||||||
|
<xsl:template name="configure">
|
||||||
|
<xsl:param name="content"/>
|
||||||
|
<xsl:param name="options"/>
|
||||||
|
<configure>
|
||||||
|
<copy-with-defaults content="{$content}">
|
||||||
|
<command>./configure --disable-precomp-headers <xsl:value-of select="$options"/></command>
|
||||||
|
</copy-with-defaults>
|
||||||
|
<command>find . -name Makefile | xargs perl -pi -e 's/^(?:CC|CXX) = /$&ccache /'</command>
|
||||||
|
</configure>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
setup - a build step that makes sure any prerequisites are set up for
|
||||||
|
the current testdrive build.
|
||||||
|
|
||||||
|
Usage: <setup/>
|
||||||
|
<setup cppunit-options="-host=i686-apple-darwin8"/>
|
||||||
|
|
||||||
|
One of the things it sets up is cppunit. There is more than one compiler
|
||||||
|
available on some of the testdrive machines, and generally speaking
|
||||||
|
cppuint needs to be compiled by the same one that will be used for the
|
||||||
|
build.
|
||||||
|
-->
|
||||||
|
<xsl:template name="setup">
|
||||||
|
<xsl:param name="content"/>
|
||||||
|
<xsl:param name="options"/>
|
||||||
|
<xsl:param name="ccache-configure" select="'./configure INSTALL=./install-sh\ -c --prefix=$HOME --bindir=$OPTDIR/bin'"/>
|
||||||
|
<xsl:param name="ccache-options"/>
|
||||||
|
<xsl:param name="cppunit-configure" select="'./configure INSTALL=config/install-sh\ -c --prefix=$HOME --bindir=$OPTDIR/bin --libdir=$OPTDIR/lib --disable-static'"/>
|
||||||
|
<xsl:param name="cppunit-options"/>
|
||||||
|
<shellcommand>
|
||||||
|
<description>setting up</description>
|
||||||
|
<descriptionDone>set up</descriptionDone>
|
||||||
|
<haltOnFailure/>
|
||||||
|
<command>
|
||||||
|
MINSPACE=1000000
|
||||||
|
DSPACE=`df -Pk $BUILDDIR | tail -1 | awk '{ print $4 }'`
|
||||||
|
if [ $DSPACE -lt $MINSPACE ]; then
|
||||||
|
echo "Disk space low, skipping build"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ -z "$CCACHE_DIR" ]; then
|
||||||
|
gunzip -c $HOME/src/ccache-*.tar.gz | tar xf -
|
||||||
|
cd ccache-*
|
||||||
|
<xsl:value-of select="concat($ccache-configure, ' ', $ccache-options, ' ', $options)"/>
|
||||||
|
make
|
||||||
|
strip ccache
|
||||||
|
make install
|
||||||
|
cd $BUILDDIR
|
||||||
|
rm -r ccache-*
|
||||||
|
fi
|
||||||
|
if { cppunit-config --version || "$CPPUNIT_CONFIG" --version; } 2>/dev/null; then
|
||||||
|
HAVE_CPPUNIT=1
|
||||||
|
fi
|
||||||
|
if [ -z "$HAVE_CPPUNIT" ]; then
|
||||||
|
gunzip -c $HOME/src/cppunit-*.tar.gz | tar xf -
|
||||||
|
cd cppunit-*
|
||||||
|
<xsl:value-of select="concat($cppunit-configure, ' ', $cppunit-options, ' ', $options)"/>
|
||||||
|
make install-strip
|
||||||
|
chmod +x $OPTDIR/bin/cppunit-config
|
||||||
|
cd $BUILDDIR
|
||||||
|
rm -rf cppunit-*
|
||||||
|
fi
|
||||||
|
</command>
|
||||||
|
</shellcommand>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
builddir - override <builddir> to accept a full path
|
||||||
|
|
||||||
|
Usage: <builddir>/tmp/wx/foobar</builddir>
|
||||||
|
|
||||||
|
Normally builddir is a single directory name not a full path. Override
|
||||||
|
to allow a working directory to be selected on the remote testdrive
|
||||||
|
machine.
|
||||||
|
|
||||||
|
The actual builddir (i.e. last part 'foobar') as usual must be unique
|
||||||
|
across all the builds of all the slaves.
|
||||||
|
-->
|
||||||
|
<xsl:template name="builddir">
|
||||||
|
<xsl:param name="content"/>
|
||||||
|
<builddir>
|
||||||
|
<basename><xsl:copy-of select="$content"/></basename>
|
||||||
|
</builddir>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
steps - overrides <steps> to prepend <profile/> and <prologue/> and
|
||||||
|
append <epilogue/> to the <command/> of each build step.
|
||||||
|
|
||||||
|
Usage: as <steps>
|
||||||
|
|
||||||
|
The differences between <profile/> and <prologue/> are:
|
||||||
|
1. <profile/> is also used by <checkout> for its post checkout command,
|
||||||
|
<proglogue/> isn't.
|
||||||
|
2. <profile/> has access to the build's fields, for example it can
|
||||||
|
use <get name="builddir"/>, while <prologue/> can't.
|
||||||
|
-->
|
||||||
|
<xsl:template name="steps">
|
||||||
|
<xsl:param name="content"/>
|
||||||
|
<xsl:variable name="profile"><profile/></xsl:variable>
|
||||||
|
<steps>
|
||||||
|
<xsl:for-each select="exsl:node-set($content)/*">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="contains(name(), 'svn')">
|
||||||
|
<xsl:copy-of select="."/>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:copy>
|
||||||
|
<xsl:copy-of select="@*"/>
|
||||||
|
<xsl:copy-of select="$profile"/>
|
||||||
|
<prologue/>
|
||||||
|
<xsl:copy-of select="node()"/>
|
||||||
|
<xsl:if test="not(command)">
|
||||||
|
<command/>
|
||||||
|
</xsl:if>
|
||||||
|
<epilogue/>
|
||||||
|
</xsl:copy>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:for-each>
|
||||||
|
</steps>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
profile - see <steps> above.
|
||||||
|
-->
|
||||||
|
<xsl:template name="profile">
|
||||||
|
<command>
|
||||||
|
set -e
|
||||||
|
uname -smnr
|
||||||
|
umask 022
|
||||||
|
LANG=C
|
||||||
|
TOPDIR=<get name="builddir"/>
|
||||||
|
BUILDDIR=$TOPDIR/build
|
||||||
|
OPTDIR=$HOME/opt/<basename><get name="builddir"/></basename>
|
||||||
|
</command>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
prologue - see <steps> above.
|
||||||
|
-->
|
||||||
|
<xsl:template name="prologue">
|
||||||
|
<command>
|
||||||
|
INSTALLDIR=$TOPDIR/install
|
||||||
|
case `uname -sm` in
|
||||||
|
Linux*86*) PATH=$HOME/linux-x86/bin:$PATH ;;
|
||||||
|
esac
|
||||||
|
PATH=$OPTDIR/bin:$PATH
|
||||||
|
LD_LIBRARY_PATH=$BUILDDIR/lib:$OPTDIR/lib:$LD_LIBRARY_PATH
|
||||||
|
export LD_LIBRARY_PATH
|
||||||
|
if { ccache -V; } >/dev/null 2>&1; then
|
||||||
|
CCACHE_DIR=$TOPDIR/ccache
|
||||||
|
export CCACHE_DIR
|
||||||
|
ccache -M 90M
|
||||||
|
fi
|
||||||
|
cd $BUILDDIR
|
||||||
|
<if-del-on-fail>trap 'cd; rm -rf $BUILDDIR' EXIT</if-del-on-fail>
|
||||||
|
</command>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
epilogue - see <steps> above.
|
||||||
|
-->
|
||||||
|
<xsl:template name="epilogue">
|
||||||
|
<xsl:if test="position() != last()">
|
||||||
|
<if-del-on-fail>
|
||||||
|
<command>trap '' EXIT</command>
|
||||||
|
</if-del-on-fail>
|
||||||
|
</xsl:if>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
if-del-on-fail - used in the context of a build step, copies its content
|
||||||
|
if the build step should cleanup on failure.
|
||||||
|
|
||||||
|
Usage: <if-del-on-fail>foobar</if-del-on-fail>
|
||||||
|
|
||||||
|
On the testdrive the working directory is deleted after a build to save
|
||||||
|
space. If the step has <haltOnFailure/> (which is the default or
|
||||||
|
<configure> and <compile> steps) then this cleanup needs to happen
|
||||||
|
whenever the step fails.
|
||||||
|
-->
|
||||||
|
<xsl:template name="if-del-on-fail">
|
||||||
|
<xsl:param name="content"/>
|
||||||
|
<xsl:if test = "position() = last() or
|
||||||
|
haltOnFailure = '' or
|
||||||
|
haltOnFailure = 'true' or
|
||||||
|
(not(haltOnFailure) and
|
||||||
|
(name() = 'configure' or name() = 'compile'))">
|
||||||
|
<xsl:copy-of select="$content"/>
|
||||||
|
</xsl:if>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Add slave locks so that each testdrive machine only runs one bulid at a
|
||||||
|
time
|
||||||
|
-->
|
||||||
|
<xsl:for-each select="../build/sandbox">
|
||||||
|
<xsl:if test="not(../preceding-sibling::build[sandbox = current()])">
|
||||||
|
<slavelock>
|
||||||
|
<name><xsl:apply-templates select="node()"/></name>
|
||||||
|
</slavelock>
|
||||||
|
</xsl:if>
|
||||||
|
</xsl:for-each>
|
||||||
|
|
||||||
|
<xsl:template name="sandbox">
|
||||||
|
<xsl:param name="content"/>
|
||||||
|
<sandbox><xsl:copy-of select="$content"/></sandbox>
|
||||||
|
<lock><xsl:copy-of select="$content"/></lock>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
basename - returns the final component of a path
|
||||||
|
|
||||||
|
Usage: <basename>/foo/bar</basename>
|
||||||
|
|
||||||
|
Evaluates to 'bar'.
|
||||||
|
-->
|
||||||
|
<xsl:template name="basename">
|
||||||
|
<xsl:param name="path"/>
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="contains($path, '/')">
|
||||||
|
<xsl:call-template name="basename">
|
||||||
|
<xsl:with-param name="path" select="substring-after($path, '/')"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:value-of select="$path"/>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
</bot>
|
6
build/buildbot/tools/bot.xsd
Normal file
6
build/buildbot/tools/bot.xsd
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<schema xmlns="http://www.w3.org/2001/XMLSchema">
|
||||||
|
<element name="bot">
|
||||||
|
<!-- todo -->
|
||||||
|
</element>
|
||||||
|
</schema>
|
304
build/buildbot/tools/embedded.xsl
Normal file
304
build/buildbot/tools/embedded.xsl
Normal file
@@ -0,0 +1,304 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Name: embedded.xsl
|
||||||
|
Purpose: Embedded XSLT
|
||||||
|
Author: Mike Wetherell
|
||||||
|
RCS-ID: $Id$
|
||||||
|
Copyright: (c) 2007 Mike Wetherell
|
||||||
|
Licence: wxWidgets licence
|
||||||
|
-->
|
||||||
|
|
||||||
|
<transform xmlns="http://www.w3.org/1999/XSL/Transform"
|
||||||
|
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||||
|
xmlns:XSL="XSL"
|
||||||
|
version="1.0">
|
||||||
|
|
||||||
|
<namespace-alias stylesheet-prefix="XSL" result-prefix="xsl"/>
|
||||||
|
|
||||||
|
<output indent="yes"/>
|
||||||
|
|
||||||
|
<variable
|
||||||
|
name="top-level-base"
|
||||||
|
select="/*/xsl:import |
|
||||||
|
/*/xsl:include |
|
||||||
|
/*/xsl:attribute-set |
|
||||||
|
/*/xsl:character-map |
|
||||||
|
/*/xsl:decimal-format |
|
||||||
|
/*/xsl:function |
|
||||||
|
/*/xsl:import-schema |
|
||||||
|
/*/xsl:key |
|
||||||
|
/*/xsl:namespace-alias |
|
||||||
|
/*/xsl:output |
|
||||||
|
/*/xsl:param |
|
||||||
|
/*/xsl:preserve-space |
|
||||||
|
/*/xsl:strip-space |
|
||||||
|
/*/xsl:variable"/>
|
||||||
|
|
||||||
|
<variable
|
||||||
|
name="top-level"
|
||||||
|
select="$top-level-base |
|
||||||
|
/*/xsl:template"/>
|
||||||
|
|
||||||
|
<variable
|
||||||
|
name="top-level-copy"
|
||||||
|
select="$top-level-base |
|
||||||
|
/*/xsl:template
|
||||||
|
[not(following-sibling::xsl:template/@name = @name)]"/>
|
||||||
|
|
||||||
|
<template match="/">
|
||||||
|
<XSL:transform>
|
||||||
|
<copy-of select="/*/namespace::*"/>
|
||||||
|
|
||||||
|
<for-each select="/*/@xsl:*">
|
||||||
|
<attribute name="{local-name()}">
|
||||||
|
<value-of select="."/>
|
||||||
|
</attribute>
|
||||||
|
</for-each>
|
||||||
|
|
||||||
|
<apply-templates mode="copy-xsl" select="$top-level-copy"/>
|
||||||
|
<apply-templates select="*"/>
|
||||||
|
</XSL:transform>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template match="*">
|
||||||
|
<variable name="pattern">
|
||||||
|
<call-template name="coord-pattern"/>
|
||||||
|
</variable>
|
||||||
|
|
||||||
|
<XSL:template match="*[generate-id() = generate-id(document('', /){$pattern})]">
|
||||||
|
<copy-of select="namespace::*"/>
|
||||||
|
<choose>
|
||||||
|
<when test="/*/xsl:template[@name = name(current())]">
|
||||||
|
<call-template name="expand"/>
|
||||||
|
</when>
|
||||||
|
<when test="count($top-level | .) != count($top-level)">
|
||||||
|
<call-template name="create-context"/>
|
||||||
|
</when>
|
||||||
|
</choose>
|
||||||
|
</XSL:template>
|
||||||
|
|
||||||
|
<if test="not(self::xsl:*)">
|
||||||
|
<apply-templates select="node()"/>
|
||||||
|
</if>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template match="text()"/>
|
||||||
|
|
||||||
|
<template match="@*">
|
||||||
|
<copy/>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template mode="copy-xsl" match="*[/*/xsl:template/@name = name()]">
|
||||||
|
<choose>
|
||||||
|
<when test="ancestor::xsl:template[@name = name(current())]">
|
||||||
|
<XSL:choose>
|
||||||
|
<XSL:when test="name() = '{name()}'">
|
||||||
|
<XSL:copy>
|
||||||
|
<call-template name="copy-xsl-children"/>
|
||||||
|
</XSL:copy>
|
||||||
|
</XSL:when>
|
||||||
|
<XSL:otherwise>
|
||||||
|
<copy>
|
||||||
|
<call-template name="copy-xsl-children"/>
|
||||||
|
</copy>
|
||||||
|
</XSL:otherwise>
|
||||||
|
</XSL:choose>
|
||||||
|
</when>
|
||||||
|
<otherwise>
|
||||||
|
<call-template name="expand"/>
|
||||||
|
</otherwise>
|
||||||
|
</choose>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template mode="copy-xsl" match="@*|node()">
|
||||||
|
<copy>
|
||||||
|
<call-template name="copy-xsl-children"/>
|
||||||
|
</copy>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template name="copy-xsl-children">
|
||||||
|
<copy-of select="namespace::*"/>
|
||||||
|
<apply-templates mode="copy-xsl" select="@*|node()"/>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template name="coord-pattern">
|
||||||
|
<param name="element" select="."/>
|
||||||
|
|
||||||
|
<for-each select="$element/ancestor-or-self::*">
|
||||||
|
<text>/*[</text>
|
||||||
|
<value-of select="count(preceding-sibling::*) + 1"/>
|
||||||
|
<text>]</text>
|
||||||
|
</for-each>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template name="expand">
|
||||||
|
<variable name="params" select="/*/xsl:template[@name = name(current())]/xsl:param"/>
|
||||||
|
|
||||||
|
<XSL:call-template name="{name()}">
|
||||||
|
<if test="$params">
|
||||||
|
<XSL:with-param name="{$params[1]/@name}">
|
||||||
|
<choose>
|
||||||
|
<when test="ancestor-or-self::xsl:*">
|
||||||
|
<apply-templates mode="copy-xsl" select="node()"/>
|
||||||
|
</when>
|
||||||
|
<otherwise>
|
||||||
|
<variable name="pattern">
|
||||||
|
<call-template name="coord-pattern"/>
|
||||||
|
</variable>
|
||||||
|
<XSL:apply-templates select="{$pattern}/node()"/>
|
||||||
|
</otherwise>
|
||||||
|
</choose>
|
||||||
|
</XSL:with-param>
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<for-each select="@*">
|
||||||
|
<XSL:with-param name="{name()}">
|
||||||
|
<call-template name="avt">
|
||||||
|
<with-param name="string" select="."/>
|
||||||
|
</call-template>
|
||||||
|
</XSL:with-param>
|
||||||
|
</for-each>
|
||||||
|
</XSL:call-template>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template name="create-context">
|
||||||
|
<param name="elements" select="ancestor-or-self::*
|
||||||
|
[last() - 1 > position()]
|
||||||
|
/preceding-sibling::xsl:variable | ."/>
|
||||||
|
|
||||||
|
<variable name="pattern">
|
||||||
|
<call-template name="coord-pattern">
|
||||||
|
<with-param name="element" select="$elements[1]"/>
|
||||||
|
</call-template>
|
||||||
|
</variable>
|
||||||
|
|
||||||
|
<variable name="parent-pattern">
|
||||||
|
<call-template name="coord-pattern">
|
||||||
|
<with-param name="element" select="$elements[1]/.."/>
|
||||||
|
</call-template>
|
||||||
|
</variable>
|
||||||
|
|
||||||
|
<XSL:for-each select="{$parent-pattern}/*">
|
||||||
|
<XSL:if test="count({$pattern} | .) = 1">
|
||||||
|
<choose>
|
||||||
|
<when test="$elements[1]/self::xsl:*">
|
||||||
|
<apply-templates mode="copy-xsl" select="$elements[1]"/>
|
||||||
|
<if test="$elements[2]">
|
||||||
|
<call-template name="create-context">
|
||||||
|
<with-param name="elements" select="$elements[position() > 1]"/>
|
||||||
|
</call-template>
|
||||||
|
</if>
|
||||||
|
</when>
|
||||||
|
<otherwise>
|
||||||
|
<copy>
|
||||||
|
<apply-templates select="@*"/>
|
||||||
|
<if test="node()">
|
||||||
|
<XSL:apply-templates select="node()"/>
|
||||||
|
</if>
|
||||||
|
</copy>
|
||||||
|
</otherwise>
|
||||||
|
</choose>
|
||||||
|
</XSL:if>
|
||||||
|
</XSL:for-each>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template name="before">
|
||||||
|
<param name="string"/>
|
||||||
|
<param name="target"/>
|
||||||
|
|
||||||
|
<variable name="apos">'</variable>
|
||||||
|
<variable name="quot">"</variable>
|
||||||
|
|
||||||
|
<variable name="posapos" select="string-length(substring-before(
|
||||||
|
concat($string, $apos), $apos))"/>
|
||||||
|
<variable name="posquot" select="string-length(substring-before(
|
||||||
|
concat($string, $quot), $quot))"/>
|
||||||
|
<variable name="postarg" select="string-length(substring-before(
|
||||||
|
concat($string, $target), $target))"/>
|
||||||
|
|
||||||
|
<choose>
|
||||||
|
<when test="$posapos = $postarg and $posquot = $postarg">
|
||||||
|
<value-of select="$string"/>
|
||||||
|
</when>
|
||||||
|
<when test="$posapos > $postarg and $posquot > $postarg">
|
||||||
|
<value-of select="substring($string, 1, $postarg)"/>
|
||||||
|
</when>
|
||||||
|
<otherwise>
|
||||||
|
<variable name="delim">
|
||||||
|
<choose>
|
||||||
|
<when test="$posquot > $posapos">'</when>
|
||||||
|
<otherwise>"</otherwise>
|
||||||
|
</choose>
|
||||||
|
</variable>
|
||||||
|
|
||||||
|
<value-of select="substring-before($string, $delim)"/>
|
||||||
|
<value-of select="$delim"/>
|
||||||
|
|
||||||
|
<variable name="mid" select="substring-after($string, $delim)"/>
|
||||||
|
|
||||||
|
<choose>
|
||||||
|
<when test="contains($mid, $delim)">
|
||||||
|
<value-of select="substring-before($mid, $delim)"/>
|
||||||
|
<value-of select="$delim"/>
|
||||||
|
|
||||||
|
<call-template name="before">
|
||||||
|
<with-param name="string"
|
||||||
|
select="substring-after($mid, $delim)"/>
|
||||||
|
<with-param name="target"
|
||||||
|
select="$target"/>
|
||||||
|
</call-template>
|
||||||
|
</when>
|
||||||
|
<otherwise>
|
||||||
|
<value-of select="$mid"/>
|
||||||
|
</otherwise>
|
||||||
|
</choose>
|
||||||
|
</otherwise>
|
||||||
|
</choose>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template name="avt">
|
||||||
|
<param name="string"/>
|
||||||
|
|
||||||
|
<variable name="before1" select="substring-before(concat($string, '{'), '{')"/>
|
||||||
|
<variable name="len1" select="string-length($before1)"/>
|
||||||
|
|
||||||
|
<variable name="before2" select="substring-before(concat($string, '}}'), '}}')"/>
|
||||||
|
<variable name="len2" select="string-length($before2)"/>
|
||||||
|
|
||||||
|
<choose>
|
||||||
|
<when test="$before1 = $string and $before2 = $string">
|
||||||
|
<value-of select="$string"/>
|
||||||
|
</when>
|
||||||
|
<when test="$len2 < $len1">
|
||||||
|
<value-of select="$before2"/>
|
||||||
|
<text>}</text>
|
||||||
|
<call-template name="avt">
|
||||||
|
<with-param name="string" select="substring($string, $len2 + 3)"/>
|
||||||
|
</call-template>
|
||||||
|
</when>
|
||||||
|
<when test="substring($string, $len1 + 2, 1) = '{'">
|
||||||
|
<value-of select="$before1"/>
|
||||||
|
<text>{</text>
|
||||||
|
<call-template name="avt">
|
||||||
|
<with-param name="string" select="substring($string, $len1 + 3)"/>
|
||||||
|
</call-template>
|
||||||
|
</when>
|
||||||
|
<otherwise>
|
||||||
|
<variable name="mid" select="substring($string, $len1 + 2)"/>
|
||||||
|
<variable name="expr">
|
||||||
|
<call-template name="before">
|
||||||
|
<with-param name="string" select="$mid"/>
|
||||||
|
<with-param name="target">}</with-param>
|
||||||
|
</call-template>
|
||||||
|
</variable>
|
||||||
|
<value-of select="$before1"/>
|
||||||
|
<XSL:copy-of select="{$expr}"/>
|
||||||
|
<call-template name="avt">
|
||||||
|
<with-param name="string" select="substring($mid, string-length($expr) + 2)"/>
|
||||||
|
</call-template>
|
||||||
|
</otherwise>
|
||||||
|
</choose>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
</transform>
|
23
build/buildbot/tools/preprocess.sh
Executable file
23
build/buildbot/tools/preprocess.sh
Executable file
@@ -0,0 +1,23 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#############################################################################
|
||||||
|
# Name: preprocess
|
||||||
|
# Purpose: Expand embedded xslt
|
||||||
|
# Author: Mike Wetherell
|
||||||
|
# RCS-ID: $Id$
|
||||||
|
# Copyright: (c) 2007 Mike Wetherell
|
||||||
|
# Licence: wxWidgets licence
|
||||||
|
#############################################################################
|
||||||
|
|
||||||
|
if [ $# -eq 0 -o ! -f "$1" ]; then
|
||||||
|
echo "Usage: $0 FILE..."
|
||||||
|
echo "Expands embedded xslt"
|
||||||
|
exit 1
|
||||||
|
fi >&2
|
||||||
|
|
||||||
|
DIR="`dirname $0`"
|
||||||
|
|
||||||
|
while [ $# -gt 0 ]; do
|
||||||
|
xsltproc --xinclude $DIR/embedded.xsl "$1" 2>/dev/null |
|
||||||
|
xsltproc --xinclude - "$1"
|
||||||
|
shift
|
||||||
|
done
|
65
build/buildbot/tools/validate.sh
Executable file
65
build/buildbot/tools/validate.sh
Executable file
@@ -0,0 +1,65 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#############################################################################
|
||||||
|
# Name: validate
|
||||||
|
# Purpose: Reports errors in wxWidgets buildbot configuration files
|
||||||
|
# Author: Mike Wetherell
|
||||||
|
# RCS-ID: $Id$
|
||||||
|
# Copyright: (c) 2007 Mike Wetherell
|
||||||
|
# Licence: wxWidgets licence
|
||||||
|
#############################################################################
|
||||||
|
|
||||||
|
if [ $# -eq 0 -o ! -f "$1" ]; then
|
||||||
|
echo "Usage: $0 FILE..."
|
||||||
|
echo "Reports errors in wxWidgets buildbot configuration files"
|
||||||
|
exit 1
|
||||||
|
fi >&2
|
||||||
|
|
||||||
|
DIR="`dirname $0`"
|
||||||
|
WORKDIR="${TMPDIR:-/tmp}/wx.$$"
|
||||||
|
mkdir "$WORKDIR" || exit
|
||||||
|
trap 'rm -rf "$WORKDIR"' EXIT
|
||||||
|
WORKPAT=`echo "$WORKDIR" | sed 's|[^A-Za-z0-9/]|.|g'`
|
||||||
|
|
||||||
|
# Change the names of the temporary files in an error message to something
|
||||||
|
# to something more informative
|
||||||
|
#
|
||||||
|
error()
|
||||||
|
{
|
||||||
|
if [ -n "$1" ]; then
|
||||||
|
echo "$1" |
|
||||||
|
sed "s|file ${WORKPAT}|${WORKPAT}|g;\
|
||||||
|
s|${WORKPAT}/XSLT|generated XSLT (from $NAME)|g;\
|
||||||
|
s|${WORKPAT}/prep|$NAME (preprocessed)|g"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# This is pretty ugly, sorry. It tries not to print the same error more than
|
||||||
|
# once, and it tries to send success message to stdout and errors to stderr.
|
||||||
|
# It still doesn't return a meaningful exit code.
|
||||||
|
#
|
||||||
|
while [ $# -gt 0 ]
|
||||||
|
do
|
||||||
|
INPUT="$1"
|
||||||
|
NAME="`echo \"$INPUT\" | sed 's/[|\]/\\\&/g'`"
|
||||||
|
XSLT="$WORKDIR/XSLT"
|
||||||
|
OUTPUT="$WORKDIR/prep"
|
||||||
|
|
||||||
|
if STDERR=`xsltproc --xinclude -o "$XSLT" $DIR/embedded.xsl "$INPUT" 2>&1`
|
||||||
|
then
|
||||||
|
STDERR=`xsltproc --xinclude -o "$OUTPUT" "$XSLT" "$INPUT" 2>&1` \
|
||||||
|
&& OK=true || OK=false
|
||||||
|
error "$STDERR" >&2
|
||||||
|
|
||||||
|
if $OK; then
|
||||||
|
STDERR=`xmllint --noout --schema $DIR/bot.xsd "$OUTPUT" 2>&1` \
|
||||||
|
&& OUT=1 || OUT=2
|
||||||
|
error "$STDERR" >&$OUT
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
error "$STDERR" >&2
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -f "$XSLT" "$OUTPUT"
|
||||||
|
|
||||||
|
shift
|
||||||
|
done
|
Reference in New Issue
Block a user