1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

The new automated build system heavily endowed

with ant and xsl.
This commit is contained in:
Doug Schaefer 2003-09-02 02:51:00 +00:00
parent c97349a164
commit 4e69ae69d5
9 changed files with 937 additions and 0 deletions

View file

@ -0,0 +1,12 @@
build
features
jars
logs
plugins
test
zips
build.log
build.number
index.html
main.xml
site.xml

View file

@ -0,0 +1,2 @@
export JAVA_HOME=/usr/java/j2sdk1.4.2
java -classpath $JAVA_HOME/lib/tools.jar:jars/ant.jar:jars/optional.jar:jars/xalan.jar:jars/xml-apis.jar:jars/xercesImpl.jar:jars/NetComponents.jar org.apache.tools.ant.Main $* 2>&1 | tee build.log

View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<project name="CDT Build Generate Scripts" default="all">
<target name="all">
<xsl:for-each select="projects/feature">
<eclipse.buildScript install="build">
<xsl:attribute name="elements">
<xsl:text>feature@</xsl:text>
<xsl:value-of select="@name"/>
</xsl:attribute>
</eclipse.buildScript>
</xsl:for-each>
</target>
</project>
</xsl:template>
</xsl:transform>

View file

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<html>
<head>
<title>CDT 1.2 Buld Page</title>
</head>
<body>
<h2>CDT 1.2 Build Page</h2>
<p>
The nightly builds are currently run every weeknight,
Monday to Friday at 3:00 a.m. EDT/EST.
To get download and install the builds, add the following
as a site bookmark in Eclipse's Update Manager perspective:
</p>
<p>
http://update.eclipse.org/tools/cdt/updates/builds/1.2
</p>
<p>
There is one category for each build. Expanding the
category will reveal the installable features.
</p>
<p>
<span style="font-style: italic;">
Warning: The source feature is currently not providing
source as required. If you require debugging the CDT
with source, the only mechanism that works for now is
to get the source from CVS. We are actively working
to resolve this issue for those who do not have CVS
access.
</span>
</p>
<h3>Builds</h3>
<p>
The builds are currently being run every weeknight. The
reports from the automated build verification test suites
are linked below.
</p>
<ul>
<xsl:apply-templates select="site/category-def"/>
</ul>
</body>
</html>
</xsl:template>
<xsl:template match="category-def">
<li>
<xsl:value-of select="@label"/>
<ul>
<li>
<a>
<xsl:attribute name="href">
<xsl:text>logs/</xsl:text>
<xsl:value-of select="substring-after(@name,'CDT Build ')"/>
<xsl:text>/org.eclipse.cdt.core.tests.html</xsl:text>
</xsl:attribute>
org.eclipse.cdt.core.tests
</a>
</li>
</ul>
</li>
</xsl:template>
</xsl:transform>

View file

@ -0,0 +1,455 @@
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" indent="yes"/>
<xsl:decimal-format decimal-separator="." grouping-separator="," />
<xsl:template match="testsuites">
<HTML>
<HEAD>
<style type="text/css">
body {
font:normal 68% verdana,arial,helvetica;
color:#000000;
}
table tr td, table tr th {
font-size: 68%;
}
table.details tr th{
font-weight: bold;
text-align:left;
background:#a6caf0;
}
table.details tr td{
background:#eeeee0;
}
p {
line-height:1.5em;
margin-top:0.5em; margin-bottom:1.0em;
}
h1 {
margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
}
h2 {
margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica
}
h3 {
margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
}
h4 {
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
}
h5 {
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
}
h6 {
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
}
.Error {
font-weight:bold; color:red;
}
.Failure {
font-weight:bold; color:purple;
}
.Properties {
text-align:right;
}
</style>
<script language="JavaScript">
var TestCases = new Array();
var cur;
<xsl:for-each select="./testsuite">
<xsl:apply-templates select="properties"/>
</xsl:for-each>
</script>
<script language="JavaScript"><![CDATA[
function displayProperties (name) {
var win = window.open('','JUnitSystemProperties','scrollbars=1,resizable=1');
var doc = win.document.open();
doc.write("<html><head><title>Properties of " + name + "</title>");
doc.write("<style>")
doc.write("body {font:normal 68% verdana,arial,helvetica; color:#000000; }");
doc.write("table tr td, table tr th { font-size: 68%; }");
doc.write("table.properties { border-collapse:collapse; border-left:solid 1 #cccccc; border-top:solid 1 #cccccc; padding:5px; }");
doc.write("table.properties th { text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#eeeeee; }");
doc.write("table.properties td { font:normal; text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#fffffff; }");
doc.write("h3 { margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica }");
doc.write("</style>");
doc.write("</head><body>");
doc.write("<h3>Properties of " + name + "</h3>");
doc.write("<div align=\"right\"><a href=\"javascript:window.close();\">Close</a></div>");
doc.write("<table class='properties'>");
doc.write("<tr><th>Name</th><th>Value</th></tr>");
for (prop in TestCases[name]) {
doc.write("<tr><th>" + prop + "</th><td>" + TestCases[name][prop] + "</td></tr>");
}
doc.write("</table>");
doc.write("</body></html>");
doc.close();
win.focus();
}
]]>
</script>
</HEAD>
<body>
<a name="#top"></a>
<xsl:call-template name="pageHeader"/>
<!-- Summary part -->
<xsl:call-template name="summary"/>
<hr size="1" width="95%" align="left"/>
<!-- Package List part -->
<xsl:call-template name="packagelist"/>
<hr size="1" width="95%" align="left"/>
<!-- For each package create its part -->
<xsl:call-template name="packages"/>
<hr size="1" width="95%" align="left"/>
<!-- For each class create the part -->
<xsl:call-template name="classes"/>
</body>
</HTML>
</xsl:template>
<!-- ================================================================== -->
<!-- Write a list of all packages with an hyperlink to the anchor of -->
<!-- of the package name. -->
<!-- ================================================================== -->
<xsl:template name="packagelist">
<h2>Packages</h2>
Note: package statistics are not computed recursively, they only sum up all of its testsuites numbers.
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
<xsl:call-template name="testsuite.test.header"/>
<!-- list all packages recursively -->
<xsl:for-each select="./testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
<xsl:sort select="@package"/>
<xsl:variable name="testsuites-in-package" select="/testsuites/testsuite[./@package = current()/@package]"/>
<xsl:variable name="testCount" select="sum($testsuites-in-package/@tests)"/>
<xsl:variable name="errorCount" select="sum($testsuites-in-package/@errors)"/>
<xsl:variable name="failureCount" select="sum($testsuites-in-package/@failures)"/>
<xsl:variable name="timeCount" select="sum($testsuites-in-package/@time)"/>
<!-- write a summary for the package -->
<tr valign="top">
<!-- set a nice color depending if there is an error/failure -->
<xsl:attribute name="class">
<xsl:choose>
<xsl:when test="$failureCount &gt; 0">Failure</xsl:when>
<xsl:when test="$errorCount &gt; 0">Error</xsl:when>
</xsl:choose>
</xsl:attribute>
<td><a href="#{@package}"><xsl:value-of select="@package"/></a></td>
<td><xsl:value-of select="$testCount"/></td>
<td><xsl:value-of select="$errorCount"/></td>
<td><xsl:value-of select="$failureCount"/></td>
<td>
<xsl:call-template name="display-time">
<xsl:with-param name="value" select="$timeCount"/>
</xsl:call-template>
</td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
<!-- ================================================================== -->
<!-- Write a package level report -->
<!-- It creates a table with values from the document: -->
<!-- Name | Tests | Errors | Failures | Time -->
<!-- ================================================================== -->
<xsl:template name="packages">
<!-- create an anchor to this package name -->
<xsl:for-each select="/testsuites/testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
<xsl:sort select="@package"/>
<a name="#{@package}"></a>
<h3>Package <xsl:value-of select="@package"/></h3>
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
<xsl:call-template name="testsuite.test.header"/>
<!-- match the testsuites of this package -->
<xsl:apply-templates select="/testsuites/testsuite[./@package = current()/@package]" mode="print.test"/>
</table>
<a href="#top">Back to top</a>
<p/>
<p/>
</xsl:for-each>
</xsl:template>
<xsl:template name="classes">
<xsl:for-each select="testsuite">
<xsl:sort select="@name"/>
<!-- create an anchor to this class name -->
<a name="#{@name}"></a>
<h3>TestCase <xsl:value-of select="@name"/></h3>
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
<xsl:call-template name="testcase.test.header"/>
<!--
test can even not be started at all (failure to load the class)
so report the error directly
-->
<xsl:if test="./error">
<tr class="Error">
<td colspan="4"><xsl:apply-templates select="./error"/></td>
</tr>
</xsl:if>
<xsl:apply-templates select="./testcase" mode="print.test"/>
</table>
<div class="Properties">
<a>
<xsl:attribute name="href">javascript:displayProperties('<xsl:value-of select="@package"/>.<xsl:value-of select="@name"/>');</xsl:attribute>
Properties &gt;&gt;
</a>
</div>
<p/>
<a href="#top">Back to top</a>
</xsl:for-each>
</xsl:template>
<xsl:template name="summary">
<h2>Summary</h2>
<xsl:variable name="testCount" select="sum(testsuite/@tests)"/>
<xsl:variable name="errorCount" select="sum(testsuite/@errors)"/>
<xsl:variable name="failureCount" select="sum(testsuite/@failures)"/>
<xsl:variable name="timeCount" select="sum(testsuite/@time)"/>
<xsl:variable name="successRate" select="($testCount - $failureCount - $errorCount) div $testCount"/>
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
<tr valign="top">
<th>Tests</th>
<th>Failures</th>
<th>Errors</th>
<th>Success rate</th>
<th>Time</th>
</tr>
<tr valign="top">
<xsl:attribute name="class">
<xsl:choose>
<xsl:when test="$failureCount &gt; 0">Failure</xsl:when>
<xsl:when test="$errorCount &gt; 0">Error</xsl:when>
</xsl:choose>
</xsl:attribute>
<td><xsl:value-of select="$testCount"/></td>
<td><xsl:value-of select="$failureCount"/></td>
<td><xsl:value-of select="$errorCount"/></td>
<td>
<xsl:call-template name="display-percent">
<xsl:with-param name="value" select="$successRate"/>
</xsl:call-template>
</td>
<td>
<xsl:call-template name="display-time">
<xsl:with-param name="value" select="$timeCount"/>
</xsl:call-template>
</td>
</tr>
</table>
<table border="0" width="95%">
<tr>
<td style="text-align: justify;">
Note: <i>failures</i> are anticipated and checked for with assertions while <i>errors</i> are unanticipated.
</td>
</tr>
</table>
</xsl:template>
<!--
Write properties into a JavaScript data structure.
This is based on the original idea by Erik Hatcher (erik@hatcher.net)
-->
<xsl:template match="properties">
cur = TestCases['<xsl:value-of select="../@package"/>.<xsl:value-of select="../@name"/>'] = new Array();
<xsl:for-each select="property">
<xsl:sort select="@name"/>
cur['<xsl:value-of select="@name"/>'] = '<xsl:call-template name="JS-escape"><xsl:with-param name="string" select="@value"/></xsl:call-template>';
</xsl:for-each>
</xsl:template>
<!-- Page HEADER -->
<xsl:template name="pageHeader">
<h1>Unit Test Results</h1>
<table width="100%">
<tr>
<td align="left"></td>
<td align="right">Designed for use with <a href='http://www.junit.org'>JUnit</a> and <a href='http://jakarta.apache.org/ant'>Ant</a>.</td>
</tr>
</table>
<hr size="1"/>
</xsl:template>
<xsl:template match="testsuite" mode="header">
<tr valign="top">
<th width="80%">Name</th>
<th>Tests</th>
<th>Errors</th>
<th>Failures</th>
<th nowrap="nowrap">Time(s)</th>
</tr>
</xsl:template>
<!-- class header -->
<xsl:template name="testsuite.test.header">
<tr valign="top">
<th width="80%">Name</th>
<th>Tests</th>
<th>Errors</th>
<th>Failures</th>
<th nowrap="nowrap">Time(s)</th>
</tr>
</xsl:template>
<!-- method header -->
<xsl:template name="testcase.test.header">
<tr valign="top">
<th>Name</th>
<th>Status</th>
<th width="80%">Type</th>
<th nowrap="nowrap">Time(s)</th>
</tr>
</xsl:template>
<!-- class information -->
<xsl:template match="testsuite" mode="print.test">
<tr valign="top">
<!-- set a nice color depending if there is an error/failure -->
<xsl:attribute name="class">
<xsl:choose>
<xsl:when test="@failures[.&gt; 0]">Failure</xsl:when>
<xsl:when test="@errors[.&gt; 0]">Error</xsl:when>
</xsl:choose>
</xsl:attribute>
<!-- print testsuite information -->
<td><a href="#{@name}"><xsl:value-of select="@name"/></a></td>
<td><xsl:value-of select="@tests"/></td>
<td><xsl:value-of select="@errors"/></td>
<td><xsl:value-of select="@failures"/></td>
<td>
<xsl:call-template name="display-time">
<xsl:with-param name="value" select="@time"/>
</xsl:call-template>
</td>
</tr>
</xsl:template>
<xsl:template match="testcase" mode="print.test">
<tr valign="top">
<xsl:attribute name="class">
<xsl:choose>
<xsl:when test="failure | error">Error</xsl:when>
</xsl:choose>
</xsl:attribute>
<td><xsl:value-of select="@name"/></td>
<xsl:choose>
<xsl:when test="failure">
<td>Failure</td>
<td><xsl:apply-templates select="failure"/></td>
</xsl:when>
<xsl:when test="error">
<td>Error</td>
<td><xsl:apply-templates select="error"/></td>
</xsl:when>
<xsl:otherwise>
<td>Success</td>
<td></td>
</xsl:otherwise>
</xsl:choose>
<td>
<xsl:call-template name="display-time">
<xsl:with-param name="value" select="@time"/>
</xsl:call-template>
</td>
</tr>
</xsl:template>
<xsl:template match="failure">
<xsl:call-template name="display-failures"/>
</xsl:template>
<xsl:template match="error">
<xsl:call-template name="display-failures"/>
</xsl:template>
<!-- Style for the error and failure in the tescase template -->
<xsl:template name="display-failures">
<xsl:choose>
<xsl:when test="not(@message)">N/A</xsl:when>
<xsl:otherwise>
<xsl:value-of select="@message"/>
</xsl:otherwise>
</xsl:choose>
<!-- display the stacktrace -->
<code>
<p/>
<xsl:call-template name="br-replace">
<xsl:with-param name="word" select="."/>
</xsl:call-template>
</code>
<!-- the later is better but might be problematic for non-21" monitors... -->
<!--pre><xsl:value-of select="."/></pre-->
</xsl:template>
<xsl:template name="JS-escape">
<xsl:param name="string"/>
<xsl:choose><!-- something isn't right here, basically all single quotes need to be replaced with backslash-single-quote
<xsl:when test="contains($string,'&apos;')">
<xsl:value-of select="substring-before($string,'&apos;')"/>
\&apos;
<xsl:call-template name="JS-escape">
<xsl:with-param name="string" select="substring-after($string,'&apos;')"/>
</xsl:call-template>
</xsl:when> -->
<xsl:when test="contains($string,'\')">
<xsl:value-of select="substring-before($string,'\')"/>\\<xsl:call-template name="JS-escape">
<xsl:with-param name="string" select="substring-after($string,'\')"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$string"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!--
template that will convert a carriage return into a br tag
@param word the text from which to convert CR to BR tag
-->
<xsl:template name="br-replace">
<xsl:param name="word"/>
<xsl:choose>
<xsl:when test="contains($word,'&#xA;')">
<xsl:value-of select="substring-before($word,'&#xA;')"/>
<br/>
<xsl:call-template name="br-replace">
<xsl:with-param name="word" select="substring-after($word,'&#xA;')"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$word"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="display-time">
<xsl:param name="value"/>
<xsl:value-of select="format-number($value,'0.000')"/>
</xsl:template>
<xsl:template name="display-percent">
<xsl:param name="value"/>
<xsl:value-of select="format-number($value,'0.00%')"/>
</xsl:template>
</xsl:stylesheet>

View file

@ -0,0 +1,223 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:template match="/">
<project name="CDT Build Main" default="all">
<target name="build">
<!-- Set up build environment -->
<ftp server="${{build.server}}"
userid="${{build.userid}}" password="${{build.password}}"
remotedir="${{build.remotedir}}" action="get" passive="no">
<fileset dir=".">
<include name="site.xml"/>
<include name="build.number"/>
</fileset>
</ftp>
<buildnumber/>
<echo message="Build number: ${{build.version}}.${{build.number}}"/>
<delete dir="build"/>
<unzip src="zips/eclipse-SDK-2.1.1-linux-gtk.zip" dest="."/>
<move todir="build">
<fileset dir="eclipse"/>
</move>
<!-- Download source from CVS -->
<xsl:for-each select="projects/plugin">
<cvs
cvsroot=":pserver:anonymous@dev.eclipse.org:/home/tools"
dest="build/plugins" quiet="true">
<xsl:attribute name="package">
<xsl:value-of select="@name"/>
</xsl:attribute>
</cvs>
</xsl:for-each>
<xsl:for-each select="projects/feature">
<cvs
cvsroot=":pserver:anonymous@dev.eclipse.org:/home/tools"
dest="build/features" quiet="true">
<xsl:attribute name="package">
<xsl:value-of select="@name"/>
<xsl:text>-feature</xsl:text>
</xsl:attribute>
</cvs>
<move>
<xsl:attribute name="todir">
<xsl:text>build/features/</xsl:text>
<xsl:value-of select="@name"/>
</xsl:attribute>
<fileset defaultexcludes="no">
<xsl:attribute name="dir">
<xsl:text>build/features/</xsl:text>
<xsl:value-of select="@name"/>
<xsl:text>-feature</xsl:text>
</xsl:attribute>
</fileset>
</move>
</xsl:for-each>
<!-- Fix up the versions to match build number -->
<xsl:for-each select="projects/plugin|projects/feature">
<xslt out="x" style="plugin.xsl">
<xsl:attribute name="in">
<xsl:text>build/</xsl:text>
<xsl:value-of select="name()"/>
<xsl:text>s/</xsl:text>
<xsl:value-of select="@name"/>
<xsl:text>/</xsl:text>
<xsl:value-of select="@type"/>
<xsl:text>.xml</xsl:text>
</xsl:attribute>
<param name="version" expression="${{build.version}}.${{build.number}}"/>
</xslt>
<move file="x">
<xsl:attribute name="tofile">
<xsl:text>build/</xsl:text>
<xsl:value-of select="name()"/>
<xsl:text>s/</xsl:text>
<xsl:value-of select="@name"/>
<xsl:text>/</xsl:text>
<xsl:value-of select="@type"/>
<xsl:text>.xml</xsl:text>
</xsl:attribute>
</move>
</xsl:for-each>
<!-- Generate build.xml files for projects -->
<xslt in="manifest.xml" out="build/genscripts.xml" style="genscripts.xsl"/>
<chmod perm="+x" file="build/eclipse"/>
<exec executable="${{basedir}}/build/eclipse">
<arg line="-nosplash -data build/workspace"/>
<arg line="-application org.eclipse.ant.core.antRunner"/>
<arg line="-buildfile build/genscripts.xml"/>
</exec>
<!-- Run the build.xml scripts -->
<xsl:for-each select="projects/feature">
<ant>
<xsl:attribute name="dir">
<xsl:text>build/features/</xsl:text>
<xsl:value-of select="@name"/>
</xsl:attribute>
<property name="javacFailOnError" value="true"/>
<property name="ws" value="gtk"/>
<property name="os" value="linux"/>
</ant>
</xsl:for-each>
<!-- Move jars to the update site format -->
<delete dir="plugins"/>
<copy todir="plugins" flatten="true">
<fileset dir="build/plugins">
<xsl:for-each select="projects/plugin">
<include>
<xsl:attribute name="name">
<xsl:value-of select="@name"/>
<xsl:text>/</xsl:text>
<xsl:value-of select="@name"/>
<xsl:text>_${build.version}.${build.number}.jar</xsl:text>
</xsl:attribute>
</include>
</xsl:for-each>
</fileset>
</copy>
<delete dir="features"/>
<copy todir="features" flatten="true">
<fileset dir="build/features">
<xsl:for-each select="projects/feature">
<include>
<xsl:attribute name="name">
<xsl:value-of select="@name"/>
<xsl:text>/</xsl:text>
<xsl:value-of select="@name"/>
<xsl:text>_${build.version}.${build.number}.jar</xsl:text>
</xsl:attribute>
</include>
</xsl:for-each>
</fileset>
</copy>
<!-- Set up the test environment -->
<delete dir="test"/>
<unzip src="zips/eclipse-SDK-2.1.1-linux-gtk.zip" dest="."/>
<move todir="test">
<fileset dir="eclipse"/>
</move>
<unzip src="zips/org.eclipse.test_2.1.0.zip" dest="test/plugins"/>
<unzip src="zips/org.eclipse.ant.optional.junit_2.1.0.zip" dest="test/plugins"/>
<xsl:for-each select="projects/plugin|projects/feature">
<unjar>
<xsl:attribute name="src">
<xsl:value-of select="name()"/>
<xsl:text>s/</xsl:text>
<xsl:value-of select="@name"/>
<xsl:text>_${build.version}.${build.number}.jar</xsl:text>
</xsl:attribute>
<xsl:attribute name="dest">
<xsl:text>test/</xsl:text>
<xsl:value-of select="name()"/>
<xsl:text>s/</xsl:text>
<xsl:value-of select="@name"/>
<xsl:text>_${build.version}.${build.number}</xsl:text>
</xsl:attribute>
</unjar>
</xsl:for-each>
<!-- Run the tests -->
<chmod perm="+x" file="test/eclipse"/>
<exec executable="${{basedir}}/test/eclipse" dir="test">
<arg line="-nosplash"/>
<arg line="-application org.eclipse.ant.core.antRunner"/>
<arg line="-buildfile plugins/org.eclipse.cdt.core.tests_${{build.version}}.${{build.number}}/test.xml"/>
<arg line="-Dorg.eclipse.test=org.eclipse.test_2.1.0"/>
<arg line="-Declipse-home=${{basedir}}/test"/>
<arg line="-Dos=linux -Dws=gtk -Darch=x86"/>
</exec>
<!-- Create the reports -->
<delete dir="logs"/>
<xslt in="test/org.eclipse.cdt.core.tests.xml"
out="logs/${{build.version}}.${{build.number}}/org.eclipse.cdt.core.tests.html"
style="junit.xsl"/>
<!-- Add our version to site.xml -->
<tstamp>
<format property="build.date" pattern="EEE MMM d HH:mm:ss z yyyy"/>
</tstamp>
<xslt in="site.xml" out="s" style="site.xsl">
<param name="version" expression="${{build.version}}.${{build.number}}"/>
<param name="date" expression="${{build.date}}"/>
</xslt>
<move file="s" tofile="site.xml"/>
<!-- Generate the site home page -->
<xslt in="site.xml" out="index.html" style="index.xsl"/>
</target>
<target name="upload">
<!-- Upload the update site -->
<ftp server="${{build.server}}"
userid="${{build.userid}}" password="${{build.password}}"
remotedir="${{build.remotedir}}" action="put" passive="no">
<fileset dir=".">
<include name="plugins/*.jar"/>
<include name="features/*.jar"/>
<include name="logs/**/*.html"/>
<include name="build.number"/>
<include name="index.html"/>
<include name="site.xml"/>
</fileset>
</ftp>
</target>
<target name="all" depends="build,upload"/>
</project>
</xsl:template>
</xsl:transform>

View file

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<projects>
<plugin name="org.eclipse.cdt" type="plugin"/>
<plugin name="org.eclipse.cdt.core" type="plugin"/>
<plugin name="org.eclipse.cdt.core.linux" type="fragment"/>
<plugin name="org.eclipse.cdt.core.qnx" type="fragment"/>
<plugin name="org.eclipse.cdt.core.solaris" type="fragment"/>
<plugin name="org.eclipse.cdt.core.win32" type="fragment"/>
<plugin name="org.eclipse.cdt.core.tests" type="plugin"/>
<plugin name="org.eclipse.cdt.debug.core" type="plugin"/>
<plugin name="org.eclipse.cdt.debug.mi.core" type="plugin"/>
<plugin name="org.eclipse.cdt.debug.mi.ui" type="plugin"/>
<plugin name="org.eclipse.cdt.debug.ui" type="plugin"/>
<plugin name="org.eclipse.cdt.debug.ui.tests" type="plugin"/>
<plugin name="org.eclipse.cdt.doc.user" type="plugin"/>
<plugin name="org.eclipse.cdt.launch" type="plugin"/>
<plugin name="org.eclipse.cdt.linux.gtk" type="plugin"/>
<plugin name="org.eclipse.cdt.linux.motif" type="plugin"/>
<plugin name="org.eclipse.cdt.qnx.photon" type="plugin"/>
<plugin name="org.eclipse.cdt.solaris.motif" type="plugin"/>
<plugin name="org.eclipse.cdt.source" type="plugin"/>
<plugin name="org.eclipse.cdt.testing" type="plugin"/>
<plugin name="org.eclipse.cdt.ui" type="plugin"/>
<plugin name="org.eclipse.cdt.ui.tests" type="plugin"/>
<plugin name="org.eclipse.cdt.win32" type="plugin"/>
<feature name="org.eclipse.cdt" suffix="-feature" type="feature" visible="false"/>
<feature name="org.eclipse.cdt.linux.gtk" suffix="-feature" type="feature"/>
<feature name="org.eclipse.cdt.linux.motif" suffix="-feature" type="feature"/>
<feature name="org.eclipse.cdt.qnx.photon" suffix="-feature" type="feature"/>
<feature name="org.eclipse.cdt.solaris.motif" suffix="-feature" type="feature"/>
<feature name="org.eclipse.cdt.source" suffix="-feature" type="feature"/>
<feature name="org.eclipse.cdt.testing" suffix="-feature" type="feature"/>
<feature name="org.eclipse.cdt.win32" suffix="-feature" type="feature"/>
</projects>

View file

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:param name="version"/>
<xsl:template match="/plugin">
<plugin>
<xsl:attribute name="version">
<xsl:value-of select="$version"/>
</xsl:attribute>
<xsl:copy-of select="*|@*[not(name()='version')]"/>
</plugin>
</xsl:template>
<xsl:template match="/fragment">
<fragment>
<xsl:attribute name="version">
<xsl:value-of select="$version"/>
</xsl:attribute>
<xsl:attribute name="plugin-version">
<xsl:value-of select="$version"/>
</xsl:attribute>
<xsl:copy-of select="*|@*[not(name()='version' or name()='plugin-version')]"/>
</fragment>
</xsl:template>
<xsl:template match="/feature">
<xsl:copy>
<xsl:attribute name="version">
<xsl:value-of select="$version"/>
</xsl:attribute>
<xsl:apply-templates mode="feature" select="@*[not(name()='version')]|*|text()"/>
</xsl:copy>
</xsl:template>
<xsl:template mode="feature" match="includes|plugin">
<xsl:copy>
<xsl:attribute name="version">
<xsl:value-of select="$version"/>
</xsl:attribute>
<xsl:copy-of select="*|@*[not(name()='version')]"/>
</xsl:copy>
</xsl:template>
<xsl:template mode="feature" match="import[starts-with(@plugin,'org.eclipse.cdt')]">
<xsl:copy>
<xsl:attribute name="version">
<xsl:value-of select="$version"/>
</xsl:attribute>
<xsl:copy-of select="*|@*[not(name()='version')]"/>
</xsl:copy>
</xsl:template>
<xsl:template match="@*|*|text()">
<xsl:copy>
<xsl:apply-templates select="@*|*|text()"/>
</xsl:copy>
</xsl:template>
<xsl:template mode="feature" match="@*|*|text()">
<xsl:copy>
<xsl:apply-templates mode="feature" select="@*|*|text()"/>
</xsl:copy>
</xsl:template>
</xsl:transform>

View file

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:param name="version"/>
<xsl:param name="date"/>
<xsl:template match="/site">
<site>
<xsl:copy-of select="*|@*"/>
<category-def>
<xsl:attribute name="name">
<xsl:text>CDT Build </xsl:text>
<xsl:value-of select="$version"/>
</xsl:attribute>
<xsl:attribute name="label">
<xsl:text>CDT Build </xsl:text>
<xsl:value-of select="$version"/>
<xsl:text> - </xsl:text>
<xsl:value-of select="$date"/>
</xsl:attribute>
</category-def>
<xsl:apply-templates mode="features" select="document('manifest.xml')"/>
</site>
</xsl:template>
<xsl:template mode="features" match="/projects/feature[not(@visible='false')]">
<feature>
<xsl:attribute name="url">
<xsl:text>features/</xsl:text>
<xsl:value-of select="@name"/>
<xsl:text>_</xsl:text>
<xsl:value-of select="$version"/>
<xsl:text>.jar</xsl:text>
</xsl:attribute>
<xsl:attribute name="id">
<xsl:value-of select="@name"/>
</xsl:attribute>
<xsl:attribute name="version">
<xsl:value-of select="$version"/>
</xsl:attribute>
<category>
<xsl:attribute name="name">
<xsl:text>CDT Build </xsl:text>
<xsl:value-of select="$version"/>
</xsl:attribute>
</category>
</feature>
</xsl:template>
<xsl:template mode="features" match="/projects">
<xsl:apply-templates mode="features" select="*"/>
</xsl:template>
</xsl:transform>