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:
extensions/jdom.jar
extensions/xalan.jar
extensions/xercesImpl.jar
extensions/xml-apis.jar
extensions/jmf.jar
$ANT_HOME/lib/xalan.jar
$ANT_HOME/lib/xercesImpl.jar
$ANT_HOME/lib/xml-apis.jar
Optionally:
extensions/drop-ins/(jmf.jar|qt4j.jar)
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
@ -70,6 +71,11 @@
<property name="publicjavadocs" location="${docs}/public-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
Sun's web site, maybe just changing these two, link.offline and
@ -98,6 +104,9 @@
-->
<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: -->
<property name="arch.dict" value="architecture_dictionary"/>
@ -122,10 +131,6 @@
responsible for finding them and putting them into
'extensions/': -->
<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:
<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"
description="runs every target in this buildfile in a smart order; useful for testing the buildfile and your build environment" />
<target name="nightly-build"
depends="distclean"
description="Creates ${dist}/nightlyBuild.zip" >
<!-- I believe that this order might actually matter, because some
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="self-contained-dist"/>
<antcall target="dist"/>
<antcall target="public-javadocs-dist"/>
<antcall target="private-javadocs-dist"/>
<antcall target="src-dist"/>
<zip destfile="${dist}/nightlyBuild.zip">
<antcall target="public-javadocs-dist">
<param name="DSTAMP" value="today"/>
</antcall>
<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}"
excludes="nightlyBuild.zip,lib-jws/**,*.jnlp,README.TXT,releases"
prefix="."/>
</zip>
<delete file="${dist}/DateStampForNightlyBuilds.html"/>
</target>
<!-- DLC FIXME: add tibbibl-all-in-one-dist -->
@ -774,6 +814,8 @@
<delete dir="${vanillalib}"/>
<delete dir="${jwslib}"/>
<delete dir="${lib}"/>
<delete dir="${dist}/junit-noframes.html"/>
<delete dir="${dist}/TESTS-TestSuites.xml"/>
<delete dir="${dist}/releases"/>
<delete dir="${dist}/source"/>
<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.">
<apply executable="scp" parallel="true">
<srcfile/>
<fileset dir="dist/docs"/>
<fileset dir="${dist}/docs"/>
<arg value="dchandler@thdltools.sourceforge.net:/home/groups/t/th/thdltools/htdocs"/>
</apply>
</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
in this publically-available file because the keystore is basically
a dummy keystore. -->
<target name="dc-nightly-build"
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="key.alias" value="me"/>
<param name="dgkey.password" value="nightly"/>
@ -969,6 +1019,10 @@
</antcall>
</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
@ -1402,23 +1456,23 @@ public class ThdlVersion {
description="Unpacks the JARs/WARs/ZIP files that Savant and QuillDriver use to the chosen bin/ directory">
<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"/>
<fail message="Can't find extensions/xml-apis.jar; please download it."
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"/>
<fail message="Can't find extensions/xalan.jar; please download it."
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"/>
<fail message="Can't find extensions/xercesImpl.jar; please download it."
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
want theirs to overwrite our own, so we delete it. -->

2
dist/.cvsignore vendored
View file

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

View file

@ -11,7 +11,18 @@
Here you'll find last night's latest and greatest builds of the THDL tools.
</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>
<li>
See <a href="junit-noframes.html">here</a> for results of the
nightly JUnit tests.
</li>
<li>
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>]
@ -85,9 +96,5 @@
<hr>
<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>
</html>

View file

@ -22,6 +22,9 @@
<taskdef name="junit"
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"
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."/>
@ -36,9 +39,22 @@
<pathelement location="${junitbin}"/>
<path refid="entire.class.path"/>
</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.TrieTest"/>
</junit>
</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>