You may no longer put xml-apis.jar, xercesImpl.jar, or xalan.jar in

Jskad/extensions.  If you're lazy, you can move them to
extensions/drop-ins, but the correct thing to do is to move x*.jar to
$ANT_HOME/lib [next to vamp.jar, if you're already set up for Java Web
Start builds].  This is a side effect of improving the nightly builds.

Nightly builds now feature an HTML summary of the JUnit test results,
a datestamp, and full API docs in two flavors.

If you use a patched vamp.jar [e-mail me] that can run when an X11
display is not available (there is not an analogous problem for
Windows servers, I suspect), all you have to do to put up a nightly
builds site is to set up CVS access so that no password is requires
using SSH public-key crypto (sf.net documents how to do so well) and
then use the following daily cron job on your Unix box:

#! /bin/sh
renice +19 -p $$ >/dev/null 2>&1
su -l joe-user /bin/sh -c /var/www/thdl/nightly/doTheBuild.sh

where joe-user is an unprivileged user who has installed Ant properly
(see the updated BuildSystems.html on the developer's site off of
thdltools.sf.net) and set himself up a Jskad sandbox with a Fonts
sandbox underneath it in, e.g., /var/www/thdl/nightly/Jskad.  Here's
doTheBuild.sh:

#! /bin/sh
JSKAD=/var/www/thdl/nightly/Jskad
DEST=/var/www/thdl/nightly/builds
HISTORY=/var/www/thdl/nightly/history
DATE=`date`
if test ! -d $DEST; then \
     echo "$DEST does not exist ($DATE)." >> history; exit 1; fi
(cd $JSKAD && ant dc-nightly-build \
 && rm -fr ${DEST}/* \
 && cp dist/nightlyBuild.zip $DEST \
 && cd $DEST \
     && unzip nightlyBuild.zip)
if test $? != 0; then echo "NIGHTLY BUILDS FAILED on $DATE" >> $HISTORY; exit 2; fi
DDDATE=`date`
echo "Success on start=$DATE end=$DDDATE" >> $HISTORY
exit 0
This commit is contained in:
dchandler 2003-02-10 04:22:38 +00:00
parent 56de29cf4f
commit bb19c4f6d1
4 changed files with 106 additions and 27 deletions

View file

@ -19,10 +19,11 @@
following, which are not in the CVS repository: following, which are not in the CVS repository:
extensions/jdom.jar extensions/jdom.jar
extensions/xalan.jar $ANT_HOME/lib/xalan.jar
extensions/xercesImpl.jar $ANT_HOME/lib/xercesImpl.jar
extensions/xml-apis.jar $ANT_HOME/lib/xml-apis.jar
extensions/jmf.jar Optionally:
extensions/drop-ins/(jmf.jar|qt4j.jar)
See the developers site, linked to from http://thdltools.sf.net/, See the developers site, linked to from http://thdltools.sf.net/,
for info on where to find these. (You may be able to use Ant's for info on where to find these. (You may be able to use Ant's
@ -70,6 +71,11 @@
<property name="publicjavadocs" location="${docs}/public-javadocs"/> <property name="publicjavadocs" location="${docs}/public-javadocs"/>
<property name="privatejavadocs" location="${docs}/private-javadocs"/> <property name="privatejavadocs" location="${docs}/private-javadocs"/>
<!-- Getting your nightly builds set up can take a long time.
Changing this to "jskad-jws" tests that you've got Vamp and your
keystore set up correctly if you use the dc-nightly-build
target. -->
<property name="dcnbt" value="nightly-build"/>
<!-- If you wish to have your Javadocs link to someplace other than <!-- If you wish to have your Javadocs link to someplace other than
Sun's web site, maybe just changing these two, link.offline and Sun's web site, maybe just changing these two, link.offline and
@ -98,6 +104,9 @@
--> -->
<property name="thdl.debug" value="true"/> <property name="thdl.debug" value="true"/>
<!-- Compress nightlyBuild.zip? -->
<property name="compress.nightly.build" value="false"/>
<!-- Set to the name of the dictionary used by the Translation Tool: --> <!-- Set to the name of the dictionary used by the Translation Tool: -->
<property name="arch.dict" value="architecture_dictionary"/> <property name="arch.dict" value="architecture_dictionary"/>
@ -122,10 +131,6 @@
responsible for finding them and putting them into responsible for finding them and putting them into
'extensions/': --> 'extensions/': -->
<pathelement location="${ext}/jdom.jar"/> <pathelement location="${ext}/jdom.jar"/>
<pathelement location="${ext}/xalan.jar"/>
<pathelement location="${ext}/xercesImpl.jar"/>
<pathelement location="${ext}/xml-apis.jar"/>
<pathelement location="${ext}/jmf.jar"/>
<!-- this gets Ant's jars, so leave it out: <!-- this gets Ant's jars, so leave it out:
<pathelement path="${java.class.path}/"/> --> <pathelement path="${java.class.path}/"/> -->
@ -193,26 +198,61 @@
depends="clean,distclean,compile,dist,src-dist,self-contained-dist,public-javadocs-dist,private-javadocs-dist,releases,web-start-releases,check,nightly-build" depends="clean,distclean,compile,dist,src-dist,self-contained-dist,public-javadocs-dist,private-javadocs-dist,releases,web-start-releases,check,nightly-build"
description="runs every target in this buildfile in a smart order; useful for testing the buildfile and your build environment" /> description="runs every target in this buildfile in a smart order; useful for testing the buildfile and your build environment" />
<target name="nightly-build" <target name="nightly-build"
depends="distclean" depends="distclean"
description="Creates ${dist}/nightlyBuild.zip" > description="Creates ${dist}/nightlyBuild.zip" >
<!-- I believe that this order might actually matter, because some <!-- I believe that this order might actually matter, because some
targets execute 'ant clean' (though they only do so because I targets execute 'ant clean' (though they only do so because I
am lazy). --> am lazy). I stopped a couple from so doing, but I'm not sure
if I got them all. -->
<antcall target="cvs-update"/>
<antcall target="web-start-releases"/> <antcall target="web-start-releases"/>
<antcall target="self-contained-dist"/> <antcall target="self-contained-dist"/>
<antcall target="dist"/> <antcall target="dist"/>
<antcall target="public-javadocs-dist"/> <antcall target="public-javadocs-dist">
<antcall target="private-javadocs-dist"/> <param name="DSTAMP" value="today"/>
<antcall target="src-dist"/> </antcall>
<zip destfile="${dist}/nightlyBuild.zip"> <unzip src="${dist}/docs/public-javadocs-today.zip" dest="${dist}/docs/public"/>
<antcall target="private-javadocs-dist">
<param name="DSTAMP" value="today"/>
</antcall>
<unzip src="${dist}/docs/private-javadocs-today.zip" dest="${dist}/docs/private"/>
<antcall target="src-dist">
<param name="DSTAMP" value="today"/>
</antcall>
<echo file="${dist}/DateStampForNightlyBuilds.html"
append="false"><![CDATA[<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Nightly Build Timestamp</title>
</head>
<body>
<h1>THDL Tools Nightly Build Timestamp</h1>
<p>
These nightly builds were made at ]]></echo>
<tstamp>
<format property="nb.creation.time" pattern="MM/dd/yyyy hh:mm aa"/>
</tstamp>
<echo file="${dist}/DateStampForNightlyBuilds.html" append="true">${nb.creation.time}</echo>
<echo file="${dist}/DateStampForNightlyBuilds.html" append="true"><![CDATA[.
</p>
</body>
</html>
]]></echo>
<zip destfile="${dist}/nightlyBuild.zip"
compress="${compress.nightly.builds}">
<zipfileset dir="${dist}" <zipfileset dir="${dist}"
excludes="nightlyBuild.zip,lib-jws/**,*.jnlp,README.TXT,releases" excludes="nightlyBuild.zip,lib-jws/**,*.jnlp,README.TXT,releases"
prefix="."/> prefix="."/>
</zip> </zip>
<delete file="${dist}/DateStampForNightlyBuilds.html"/>
</target> </target>
<!-- DLC FIXME: add tibbibl-all-in-one-dist --> <!-- DLC FIXME: add tibbibl-all-in-one-dist -->
@ -774,6 +814,8 @@
<delete dir="${vanillalib}"/> <delete dir="${vanillalib}"/>
<delete dir="${jwslib}"/> <delete dir="${jwslib}"/>
<delete dir="${lib}"/> <delete dir="${lib}"/>
<delete dir="${dist}/junit-noframes.html"/>
<delete dir="${dist}/TESTS-TestSuites.xml"/>
<delete dir="${dist}/releases"/> <delete dir="${dist}/releases"/>
<delete dir="${dist}/source"/> <delete dir="${dist}/source"/>
<delete file="${dist}/DictionarySearchAppletAndJavaWebStart.jnlp"/> <delete file="${dist}/DictionarySearchAppletAndJavaWebStart.jnlp"/>
@ -950,17 +992,25 @@
description="Uses scp to copy zip files of two flavors of Javadocs to thdltools.sf.net. After that, ssh in and follow the instructions given in http://thdltools.sourceforge.net/BuildSystems.html."> description="Uses scp to copy zip files of two flavors of Javadocs to thdltools.sf.net. After that, ssh in and follow the instructions given in http://thdltools.sourceforge.net/BuildSystems.html.">
<apply executable="scp" parallel="true"> <apply executable="scp" parallel="true">
<srcfile/> <srcfile/>
<fileset dir="dist/docs"/> <fileset dir="${dist}/docs"/>
<arg value="dchandler@thdltools.sourceforge.net:/home/groups/t/th/thdltools/htdocs"/> <arg value="dchandler@thdltools.sourceforge.net:/home/groups/t/th/thdltools/htdocs"/>
</apply> </apply>
</target> </target>
<target name="check-report" depends="check"
description="Generates an HTML report regarding the status of the JUnit test cases.">
<ant antfile="junitbuild.xml" target="make-nightly-report"
inheritAll="false" inheritRefs="false">
<property name="dist" value="${dist}"/>
</ant>
</target>
<!-- DC uses this to do nightly builds. The passwords are included <!-- DC uses this to do nightly builds. The passwords are included
in this publically-available file because the keystore is basically in this publically-available file because the keystore is basically
a dummy keystore. --> a dummy keystore. -->
<target name="dc-nightly-build" <target name="dc-nightly-build"
description="How Chandler r0x0rs the nightly build's b0x0rs"> description="How Chandler r0x0rs the nightly build's b0x0rs">
<antcall target="nightly-build"> <antcall target="${dcnbt}">
<param name="keystore" value="file:///home/chandler/thdl/sandboxes/Jskad/NightlyBuildStore"/> <param name="keystore" value="file:///home/chandler/thdl/sandboxes/Jskad/NightlyBuildStore"/>
<param name="key.alias" value="me"/> <param name="key.alias" value="me"/>
<param name="dgkey.password" value="nightly"/> <param name="dgkey.password" value="nightly"/>
@ -969,6 +1019,10 @@
</antcall> </antcall>
</target> </target>
<target name="cvs-update" description="Performs a CVS update.">
<cvs command="-f -z3 -q update -d -P" failonerror="true"/>
</target>
<!-- -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* --> <!-- -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* -->
<!-- UTILITY TARGETS - targets of antcalls, targets not usually <!-- UTILITY TARGETS - targets of antcalls, targets not usually
@ -1402,23 +1456,23 @@ public class ThdlVersion {
description="Unpacks the JARs/WARs/ZIP files that Savant and QuillDriver use to the chosen bin/ directory"> description="Unpacks the JARs/WARs/ZIP files that Savant and QuillDriver use to the chosen bin/ directory">
<unjar src="${ext}/jdom.jar" dest="${unjardest}"/> <unjar src="${ext}/jdom.jar" dest="${unjardest}"/>
<available file="${ext}/xml-apis.jar" <available file="${ant.home}/lib/xml-apis.jar"
property="found.xml-apis.jar"/> property="found.xml-apis.jar"/>
<fail message="Can't find extensions/xml-apis.jar; please download it." <fail message="Can't find extensions/xml-apis.jar; please download it."
unless="found.xml-apis.jar"/> unless="found.xml-apis.jar"/>
<unjar src="${ext}/xml-apis.jar" dest="${unjardest}"/> <unjar src="${ant.home}/lib/xml-apis.jar" dest="${unjardest}"/>
<available file="${ext}/xalan.jar" <available file="${ant.home}/lib/xalan.jar"
property="found.xalan.jar"/> property="found.xalan.jar"/>
<fail message="Can't find extensions/xalan.jar; please download it." <fail message="Can't find extensions/xalan.jar; please download it."
unless="found.xalan.jar"/> unless="found.xalan.jar"/>
<unjar src="${ext}/xalan.jar" dest="${unjardest}"/> <!-- Note: this isn't actually needed for Savant. --> <unjar src="${ant.home}/lib/xalan.jar" dest="${unjardest}"/> <!-- Note: this isn't actually needed for Savant. -->
<available file="${ext}/xercesImpl.jar" <available file="${ant.home}/lib/xercesImpl.jar"
property="found.xercesImpl.jar"/> property="found.xercesImpl.jar"/>
<fail message="Can't find extensions/xercesImpl.jar; please download it." <fail message="Can't find extensions/xercesImpl.jar; please download it."
unless="found.xercesImpl.jar"/> unless="found.xercesImpl.jar"/>
<unjar src="${ext}/xercesImpl.jar" dest="${unjardest}"/> <unjar src="${ant.home}/lib/xercesImpl.jar" dest="${unjardest}"/>
<!-- One or more of the above may have a META-INF directory. We don't <!-- One or more of the above may have a META-INF directory. We don't
want theirs to overwrite our own, so we delete it. --> want theirs to overwrite our own, so we delete it. -->

2
dist/.cvsignore vendored
View file

@ -1,9 +1,11 @@
DateStampForNightlyBuilds.html
DictionarySearchAppletAndJavaWebStart.jnlp DictionarySearchAppletAndJavaWebStart.jnlp
Jskad.jnlp Jskad.jnlp
QuillDriver.jnlp QuillDriver.jnlp
Savant.jnlp Savant.jnlp
docs docs
java-web-start java-web-start
junit-noframes.html
lib-jws lib-jws
lib-vanilla lib-vanilla
nightlyBuild.zip nightlyBuild.zip

View file

@ -11,7 +11,18 @@
Here you'll find last night's latest and greatest builds of the THDL tools. Here you'll find last night's latest and greatest builds of the THDL tools.
</p> </p>
<p>
If the builds failed last night, then you're actually looking at
builds that are a little bit older.&nbsp; The actual date these
builds were done (from clean repository sources) can be found <a
href="DateStampForNightlyBuilds.html">here</a>.
</p>
<ul> <ul>
<li>
See <a href="junit-noframes.html">here</a> for results of the
nightly JUnit tests.
</li>
<li> <li>
Today's Javadocs: [<a href="docs/public">public</a> <a href="docs/public-javadocs-today.zip">(zip file)</a>] Today's Javadocs: [<a href="docs/public">public</a> <a href="docs/public-javadocs-today.zip">(zip file)</a>]
[<a href="docs/private">private</a> <a href="docs/private-javadocs-today.zip">(zip file)</a>] [<a href="docs/private">private</a> <a href="docs/private-javadocs-today.zip">(zip file)</a>]
@ -85,9 +96,5 @@
<hr> <hr>
<address><a href="mailto:dchandler@users.sourceforge.net">David Chandler</a></address> <address><a href="mailto:dchandler@users.sourceforge.net">David Chandler</a></address>
<!-- Created: Mon Feb 3 00:21:24 EST 2003 -->
<!-- hhmts start -->
Last modified: Mon Feb 3 01:28:00 EST 2003
<!-- hhmts end -->
</body> </body>
</html> </html>

View file

@ -22,6 +22,9 @@
<taskdef name="junit" <taskdef name="junit"
classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTask"/> classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTask"/>
<taskdef name="junitreport"
classname="org.apache.tools.ant.taskdefs.optional.junit.XMLResultAggregator"/>
<target name="fail-nicely" <target name="fail-nicely"
description="Tells the user to use build.xml, not this subbuildfile."> description="Tells the user to use build.xml, not this subbuildfile.">
<fail message="Do not use this file directly; use build.xml instead, which then uses this file."/> <fail message="Do not use this file directly; use build.xml instead, which then uses this file."/>
@ -36,9 +39,22 @@
<pathelement location="${junitbin}"/> <pathelement location="${junitbin}"/>
<path refid="entire.class.path"/> <path refid="entire.class.path"/>
</classpath> </classpath>
<formatter type="plain"/> <formatter type="xml"/><!-- If not XML, then 'ant -buildfile
build.xml check-report' will fail. -->
<test name="org.thdl.util.ThdlLazyExceptionTest"/> <test name="org.thdl.util.ThdlLazyExceptionTest"/>
<test name="org.thdl.util.TrieTest"/> <test name="org.thdl.util.TrieTest"/>
</junit> </junit>
</target> </target>
<!-- Note the odd dependencies. -->
<target name="make-nightly-report"
description="Creates an HTML report about the status of the tests; is dependent (via build.xml) on target `run-all-junit-tests'.">
<junitreport todir="${dist}">
<fileset dir=".">
<include name="TEST-*.xml"/>
</fileset>
<report format="noframes" todir="${dist}"/>
</junitreport>
<delete file="${dist}/TESTS-TestSuites.xml"/>
</target>
</project> </project>