You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by rh...@apache.org on 2010/10/08 15:35:33 UTC
svn commit: r1005815 - in /db/derby/code/trunk: build.xml buildrelease
java/engine/org/apache/derby/loc/build.xml
tools/ant/properties/dirs.properties tools/ant/properties/packaging.tmpl
tools/release/build.xml
Author: rhillegas
Date: Fri Oct 8 13:35:33 2010
New Revision: 1005815
URL: http://svn.apache.org/viewvc?rev=1005815&view=rev
Log:
DERBY-2573: Commit master script for building release distributions.
Added:
db/derby/code/trunk/buildrelease (with props)
Modified:
db/derby/code/trunk/build.xml
db/derby/code/trunk/java/engine/org/apache/derby/loc/build.xml
db/derby/code/trunk/tools/ant/properties/dirs.properties
db/derby/code/trunk/tools/ant/properties/packaging.tmpl
db/derby/code/trunk/tools/release/build.xml
Modified: db/derby/code/trunk/build.xml
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/build.xml?rev=1005815&r1=1005814&r2=1005815&view=diff
==============================================================================
--- db/derby/code/trunk/build.xml (original)
+++ db/derby/code/trunk/build.xml Fri Oct 8 13:35:33 2010
@@ -1241,6 +1241,9 @@
<copy todir="${derby.jar.dir}/${plugin.tmp.dir}/${plugin.dir}/${plugin.core.dir}" file="LICENSE"/>
<copy todir="${derby.jar.dir}/${plugin.tmp.dir}/${plugin.dir}/${plugin.core.dir}" file="NOTICE"/>
+ <!-- copy the plugin properties for use by the release target -->
+ <copy file="${derby.jar.dir}/${plugin.tmp.dir}/plugintmp.properties" todir="${release.base}"/>
+
<delete file="${derby.jar.dir}/${plugin.tmp.dir}/plugintmp.properties"/>
<delete file="${derby.jar.dir}/${plugin.tmp.dir}/plugin.xml"/>
@@ -1258,8 +1261,8 @@
<target name="buildjars" depends="initjars,derbyjar,derbytoolsjar,derbynetjar,derbyclientjar,derbyrunjar,derbywar,derbylocalejars,derbytestingjar"/>
<target name="initjars" depends="setsanityname,getsvnversion,setCompilerProperties">
- <property name="derby.jar.dir" value="${out.base}/jars/${sanity.name}"/>
- <property name="derby.jar.topdir" value="${out.base}/jars"/>
+ <property name="derby.jar.dir" value="${jarsdist.dir}/${sanity.name}"/>
+ <property name="derby.jar.topdir" value="${jarsdist.dir}"/>
<mkdir dir="${derby.jar.dir}"/>
<mkdir dir="${derby.jar.dir}/lists"/>
<loadfile srcFile="${out.base}/changenumber.properties"
@@ -1811,9 +1814,59 @@
</target>
<target name="cleanjars" depends="setsanityname">
- <delete dir="${basedir}/jars/${sanity.name}"/>
+ <delete dir="${jarsdist.dir}/${sanity.name}"/>
</target>
+<!-- - - - - - - - - - - - release build helper targets - - - - - - - - - -->
+
+ <!-- Update both subversion clients for building release distributions -->
+ <target name="updatesvnclients" depends="updatesvncode,updatesvndoc"/>
+
+ <target name="updatesvncode">
+ <exec executable="svn">
+ <arg value="update"/>
+ <arg value="${basedir}"/>
+ </exec>
+ </target>
+ <target name="updatesvndoc">
+ <exec executable="svn">
+ <arg value="update"/>
+ <arg value="${docs.root}"/>
+ </exec>
+ </target>
+
+ <!-- Checkin the generated error documentation to the docs client -->
+ <target name="copyerrordocs">
+
+ <property name="checkinMessage" value="${release.base}/tmp.checkin.message"/>
+
+ <copy file="${sqlstateTables}" todir="${docs.root}/src/ref"/>
+
+ <echo file="${checkinMessage}" message="Check in SQLState tables as part of building a release."/>
+ <exec executable="svn">
+ <arg value="commit"/>
+ <arg value="--username"/>
+ <arg value="${svn.username}"/>
+ <arg value="--password"/>
+ <arg value="${svn.password}"/>
+ <arg value="-F"/>
+ <arg value="${checkinMessage}"/>
+ <arg value="${docs.root}"/>
+ </exec>
+
+ <!-- Bring the docs client up to date again -->
+ <antcall target="updatesvndoc"/>
+
+ </target>
+
+ <!-- Build the user documentation -->
+ <target name="builduserdocs">
+
+ <ant dir="${docs.root}" target="clobber"/>
+ <ant dir="${docs.root}" target="all"/>
+
+ </target>
+
<!-- - - - - - - - - - - - - - targets for populating META-INF - - - - - - - - - - - -->
<!-- copy boilerplate common to derby jar files -->
@@ -1893,27 +1946,27 @@
</java>
<property file="${snapshot.dir}/maintversion.properties"/>
<zip destfile="${snapshot.dir}/db-derby-snapshot-${major}.${minor}.${interim}.${point}-${changenumber}.zip">
- <zipfileset prefix="db-derby-snapshot-${major}.${minor}.${interim}.${point}-${changenumber}/lib" dir="${basedir}/jars/insane" includes="*.jar,*.war"/>
+ <zipfileset prefix="db-derby-snapshot-${major}.${minor}.${interim}.${point}-${changenumber}/lib" dir="${jarsdist.dir}/insane" includes="*.jar,*.war"/>
<zipfileset prefix="db-derby-snapshot-${major}.${minor}.${interim}.${point}-${changenumber}" dir="${basedir}" includes="bin/**,LICENSE,NOTICE,README,javadoc/publishedapi/**" excludes="bin/templates/**"/>
</zip>
<tar destfile="${snapshot.dir}/db-derby-snapshot-${major}.${minor}.${interim}.${point}-${changenumber}.tar.gz"
compression="gzip">
- <tarfileset prefix="db-derby-snapshot-${major}.${minor}.${interim}.${point}-${changenumber}/lib" dir="${basedir}/jars/insane" includes="*.jar,*.war"/>
+ <tarfileset prefix="db-derby-snapshot-${major}.${minor}.${interim}.${point}-${changenumber}/lib" dir="${jarsdist.dir}/insane" includes="*.jar,*.war"/>
<tarfileset prefix="db-derby-snapshot-${major}.${minor}.${interim}.${point}-${changenumber}" dir="${basedir}" includes="bin/**,LICENSE,NOTICE,README,javadoc/publishedapi/**" excludes="bin/templates/**"/>
</tar>
<!-- debug archives - DERBY-178 -->
<zip destfile="${snapshot.dir}/db-derby-snapshot-debug-${major}.${minor}.${interim}.${point}-${changenumber}.zip">
- <zipfileset prefix="db-derby-snapshot-debug-${major}.${minor}.${interim}.${point}-${changenumber}/lib" dir="${basedir}/jars/sane" includes="*.jar,*.war"/>
+ <zipfileset prefix="db-derby-snapshot-debug-${major}.${minor}.${interim}.${point}-${changenumber}/lib" dir="${jarsdist.dir}/sane" includes="*.jar,*.war"/>
<zipfileset prefix="db-derby-snapshot-debug-${major}.${minor}.${interim}.${point}-${changenumber}" dir="${basedir}" includes="bin/**,LICENSE,NOTICE,CHANGES,README,javadoc/publishedapi/**" excludes="bin/templates/**"/>
</zip>
<tar destfile="${snapshot.dir}/db-derby-snapshot-debug-${major}.${minor}.${interim}.${point}-${changenumber}.tar.gz"
compression="gzip">
- <tarfileset prefix="db-derby-snapshot-debug-${major}.${minor}.${interim}.${point}-${changenumber}/lib" dir="${basedir}/jars/sane" includes="*.jar,*.war"/>
+ <tarfileset prefix="db-derby-snapshot-debug-${major}.${minor}.${interim}.${point}-${changenumber}/lib" dir="${jarsdist.dir}/sane" includes="*.jar,*.war"/>
<tarfileset prefix="db-derby-snapshot-debug-${major}.${minor}.${interim}.${point}-${changenumber}" dir="${basedir}" includes="bin/**,LICENSE,NOTICE,README,javadoc/publishedapi/**" excludes="bin/templates/**"/>
</tar>
- <copy file="${basedir}/jars/insane/derby_core_plugin_${major}.${minor}.${interim}.zip"
+ <copy file="${jarsdist.dir}/insane/derby_core_plugin_${major}.${minor}.${interim}.zip"
tofile="${snapshot.dir}/derby_core_plugin_${major}.${minor}.${interim}.${changenumber}.zip"/>
</target>
@@ -2274,7 +2327,7 @@
</target>
<target name="junit-all-codeline-jars-set-properties" depends="setsanityname">
- <property name="derby.jar.base" value="${basedir}/jars/${sanity.name}"/>
+ <property name="derby.jar.base" value="${jarsdist.dir}/${sanity.name}"/>
<property name="derby.junit.classpath"
value="${derby.jar.base}/derbyTesting.jar:${derby.jar.base}/derbynet.jar:${derby.jar.base}/derbytools.jar:${derby.jar.base}/derbyclient.jar"/>
</target>
@@ -2379,28 +2432,68 @@ you should not have to do this.
</emma>
</target>
+ <target
+ name="release"
+ depends="prepareforrelease"
+ description="Build the release distributions"
+ >
+ <ant antfile="${basedir}/tools/release/build.xml" target="release"/>
+
+ <!-- copy the eclipse plugin into the distribution directory -->
+ <property file="${release.base}/plugintmp.properties"/>
+ <property name="eclipse.plugin" value="${plugin.derby.core.zipfile}_${plugin.derby.version}.zip"/>
+ <copy file="${jarsdist.dir}/insane/${eclipse.plugin}" todir="${release.dir}"/>
+
+ <!-- sign all of the artifacts -->
+ <ant antfile="${basedir}/tools/release/build.xml" target="sign"/>
+ <ant antfile="${basedir}/tools/release/build.xml" target="sign.eclipse.plugin"/>
+
+ <!-- remove cruft -->
+ <delete dir="${crlf.dir}"/>
+ <delete dir="${lf.dir}"/>
+ <delete file="${release.dir}/maintversion.properties"/>
+
+ </target>
+
<!-- do most of the ant calls to prepare a release -->
- <target name="prepareforrelease" depends="checkstateremoved,checksanenotset,cleanalljars,cleandocs,clobber,cleanreleasefiles">
+ <target name="prepareforrelease" depends="checkdocsroot,checkpgppassphrase,checksvncredentials,checkstateremoved,checksanenotset,cleanalljars,cleandocs,clobber,cleanreleasefiles">
<!-- other possible checks? maybe no checked out files? -->
<!-- maybe try to force a doc build? call to ant release will check for docs out -->
<!-- assume svn update has been done to the desired level -->
<!-- we should already be squeeky clean, depends removed jars, javadoc, snapshot, classes, and old release artifacts -->
- <echo level="info" message=" Sane = ${sane}"/>
+ <antcall target="updatesvnclients"/>
+
<antcall target="clobber"/>
- <antcall target="sane"/>
<antcall target="all">
+ <param name="sane" value="true"/>
+ <param name="sanity" value="true"/>
+ <param name="sanity.name" value="sane"/>
<param name="deprecation" value="off"/>
</antcall>
- <antcall target="buildjars"/>
+ <antcall target="buildjars">
+ <param name="sane" value="true"/>
+ <param name="sanity" value="true"/>
+ <param name="sanity.name" value="sane"/>
+ </antcall>
+
<antcall target="clobber"/>
- <antcall target="insane"/>
<antcall target="snapshot">
+ <param name="sane" value="false"/>
+ <param name="sanity" value="false"/>
+ <param name="sanity.name" value="insane"/>
<param name="deprecation" value="off"/>
- <param name="sane" value="false"/>
</antcall>
+
<antcall target="publishedapi">
<param name="deprecation" value="off"/>
</antcall>
+
+ <!-- copy the generated sqlstate tables to the docs client and check it in -->
+ <antcall target="copyerrordocs"/>
+
+ <!-- build the docs now that the sqlstate tables are up to date -->
+ <antcall target="builduserdocs"/>
+
<!-- finish by removing the state.properties file, so we can do it again -->
<antcall target="cleanstate"/>
</target>
@@ -2419,6 +2512,40 @@ you should not have to do this.
<available file="${derby.engine.src.dir}/state.properties" property="state.prepare.available"/>
</target>
+ <target name="checkdocsroot">
+ <!-- make sure that docs.root points into a docs tree -->
+ <fail message="Cannot build a release; docs.root does not point at your documentation client: ${docs.root}">
+ <condition>
+ <not><available file="${docs.root}/src/conrefs.dita"/></not>
+ </condition>
+ </fail>
+ </target>
+
+ <target name="checksvncredentials">
+ <!-- make sure that subversion credentials are set -->
+ <fail message="Cannot build a release; svn.username and/or svn.password are not set. These are the credentials you use to commit work to the Apache repositories.">
+ <condition>
+ <not>
+ <and>
+ <isset property="svn.username"/>
+ <isset property="svn.password"/>
+ </and>
+ </not>
+ </condition>
+ </fail>
+ </target>
+
+ <target name="checkpgppassphrase">
+ <!-- make sure that signature credentials are set -->
+ <fail message="Cannot build a release; pgp.passphrase is not set. This is the passphrase needed to sign release artifacts.">
+ <condition>
+ <not>
+ <isset property="pgp.passphrase"/>
+ </not>
+ </condition>
+ </fail>
+ </target>
+
<target name="checksanenotset">
<!-- check that sane is *not* set elsewhere, e.g. $HOME/ant.properties -->
<echo level="info" message="sane : ${sane}"/>
@@ -2434,6 +2561,6 @@ you should not have to do this.
</target>
<target name="cleanalljars">
- <delete dir="${basedir}/jars"/>
+ <delete dir="${jarsdist.dir}"/>
</target>
</project>
Added: db/derby/code/trunk/buildrelease
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/buildrelease?rev=1005815&view=auto
==============================================================================
--- db/derby/code/trunk/buildrelease (added)
+++ db/derby/code/trunk/buildrelease Fri Oct 8 13:35:33 2010
@@ -0,0 +1,52 @@
+#! /bin/bash
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+####################################################
+#
+# Build the Derby release distributions. After a successful run,
+# release/distribution will hold all of the signed artifacts except
+# for the Eclipse ui plugin. You will have to ask an Eclipse user to build
+# that artifact for you.
+#
+# This script assumes that you have changed directory to the root of
+# your code tree, where its build.xml and java directory live.
+#
+####################################################
+
+if [ ! -n "$DOCS_ROOT" ]; then
+ echo Please set DOCS_ROOT to the top directory of your doc client, where its build.xml and src directory live.
+ exit 1
+fi
+
+export docLib=$DOCS_ROOT/lib
+export CLASSPATH=$docLib/fop.jar:$docLib/avalon-framework-cvs-20020806.jar:$docLib/batik.jar
+export ANT_OPTS="-Xmx512m"
+
+
+read -p "Enter your Apache subversion username > " subversionUserName
+read -p "Enter your Apache subversion password > " subversionPassword
+read -p "Enter your pgp passphrase > " pgpPassphrase
+
+###############################################################
+#
+echo Building release distributions...
+#
+###############################################################
+
+ant "-Ddocs.root=$DOCS_ROOT" "-Dpgp.passphrase=$pgpPassphrase" "-Dsvn.username=$subversionUserName" "-Dsvn.password=$subversionPassword" -quiet release
Propchange: db/derby/code/trunk/buildrelease
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: db/derby/code/trunk/buildrelease
------------------------------------------------------------------------------
svn:executable = *
Modified: db/derby/code/trunk/java/engine/org/apache/derby/loc/build.xml
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/loc/build.xml?rev=1005815&r1=1005814&r2=1005815&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/loc/build.xml (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/loc/build.xml Fri Oct 8 13:35:33 2010
@@ -36,8 +36,6 @@
/>
<property name="messageDescriptors" value="${derby.locales.dir}/messages.xml"/>
<property name="englishMessages" value="${generated.engine.locale.dir}/messages_en.properties"/>
- <property name="docDirectory" value="${out.dir}/doc"/>
- <property name="sqlstateTables" value="${docDirectory}/rrefexcept71493.dita"/>
<!-- Targets -->
<target name="locales" depends="init,buildMessages,split"/>
@@ -57,7 +55,7 @@
<!-- Generate english messages from xml descriptors-->
<target name="buildMessages" unless="messagesUpToDate">
- <mkdir dir="${docDirectory}" />
+ <mkdir dir="${gen.doc.dir}" />
<buildMessages
xmlSourceFile="${messageDescriptors}"
Modified: db/derby/code/trunk/tools/ant/properties/dirs.properties
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/tools/ant/properties/dirs.properties?rev=1005815&r1=1005814&r2=1005815&view=diff
==============================================================================
--- db/derby/code/trunk/tools/ant/properties/dirs.properties (original)
+++ db/derby/code/trunk/tools/ant/properties/dirs.properties Fri Oct 8 13:35:33 2010
@@ -102,9 +102,13 @@ generated.sql.dir=${generated.src.dir}/$
generated.engine.locale.dir=${generated.src.dir}/${derby.dir}/loc
generated.cache.dir=${generated.src.dir}/${derby.dir}/iapi/services/cache
+gen.doc.dir=${out.dir}/doc
+
release.base=${out.base}/release
release.dir=${release.base}/distributions
snapshot.dir=${release.base}/snapshot
+crlf.dir=${release.dir}/crlf
+lf.dir=${release.dir}/lf
derby.testing.dir=org/apache/derbyTesting
@@ -115,3 +119,5 @@ derby.testing.junit.dir=${derby.testing.
derby.testing.perf.dir=${derby.testing.dir}/perf
derby.testing.suites.dir=${derby.testing.functest.dir}/suites
derby.testing.system.dir=${derby.testing.dir}/system
+
+sqlstateTables=${gen.doc.dir}/rrefexcept71493.dita
Modified: db/derby/code/trunk/tools/ant/properties/packaging.tmpl
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/tools/ant/properties/packaging.tmpl?rev=1005815&r1=1005814&r2=1005815&view=diff
==============================================================================
--- db/derby/code/trunk/tools/ant/properties/packaging.tmpl (original)
+++ db/derby/code/trunk/tools/ant/properties/packaging.tmpl Fri Oct 8 13:35:33 2010
@@ -17,7 +17,7 @@
# location of documentation
-docs.out=/derby-docs-10.1/out
+docs.root=/derby-docs-10.1
bin.html=${bin.dir}/docs/html
bin.pdf=${bin.dir}/docs/pdf
Modified: db/derby/code/trunk/tools/release/build.xml
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/tools/release/build.xml?rev=1005815&r1=1005814&r2=1005815&view=diff
==============================================================================
--- db/derby/code/trunk/tools/release/build.xml (original)
+++ db/derby/code/trunk/tools/release/build.xml Fri Oct 8 13:35:33 2010
@@ -79,7 +79,6 @@
<target name="release" depends="clean,bin,lib,lib-debug,src"/>
<target name="init">
-
<mkdir dir="${release.dir}"/>
<java classname="org.apache.derbyBuild.maintversion2props">
@@ -96,8 +95,6 @@
<property name="derby.src" value="${derby.basename}-src"/>
<property name="derby.docssrc" value="${derby.basename}-doc-src"/>
- <property name="crlf.dir" value="${release.dir}/crlf"/>
- <property name="lf.dir" value="${release.dir}/lf"/>
<mkdir dir="${crlf.dir}"/>
<mkdir dir="${lf.dir}"/>
<fixcrlf srcdir="${basedir}" destdir="${crlf.dir}" eol="crlf"
@@ -187,9 +184,9 @@
prefix="${derby.bin}/demo/programs/workingwithderby"/>
<!-- docs -->
- <zipfileset dir="${docs.out}" includes="**/*.html,**/*.jpg,**/*.gif"
+ <zipfileset dir="${docs.root}/out" includes="**/*.html,**/*.jpg,**/*.gif"
prefix="${derby.bin}/docs/html"/>
- <zipfileset dir="${docs.out}" includes="**/*.pdf"
+ <zipfileset dir="${docs.root}/out" includes="**/*.pdf"
prefix="${derby.bin}/docs/pdf"/>
<!-- javadoc -->
<zipfileset dir="${basedir}/javadoc/publishedapi" prefix="${derby.bin}/javadoc" includes="**"/>
@@ -245,9 +242,9 @@
<tarfileset dir="${basedir}/classes" includes="Wwd*.class"
prefix="${derby.bin}/demo/programs/workingwithderby"/>
<!-- docs -->
- <tarfileset dir="${docs.out}" includes="**/*.html,**/*.jpg,**/*.gif"
+ <tarfileset dir="${docs.root}/out" includes="**/*.html,**/*.jpg,**/*.gif"
prefix="${derby.bin}/docs/html"/>
- <tarfileset dir="${docs.out}" includes="**/*.pdf"
+ <tarfileset dir="${docs.root}/out" includes="**/*.pdf"
prefix="${derby.bin}/docs/pdf"/>
<!-- javadoc -->
<tarfileset dir="${basedir}/javadoc/publishedapi" prefix="${derby.bin}/javadoc" includes="**"/>
@@ -332,7 +329,7 @@
<zipfileset dir="${basedir}" prefix="${derby.src}"
includes="${src.includes}"
excludes="${src.excludes}"/>
- <zipfileset dir="${docs.out}/.." prefix="${derby.docssrc}"
+ <zipfileset dir="${docs.root}" prefix="${derby.docssrc}"
includes="${src.docs.includes}"/>
</zip>
</target>
@@ -342,7 +339,7 @@
<tarfileset dir="${basedir}" prefix="${derby.src}"
includes="${src.includes}"
excludes="${src.excludes}"/>
- <tarfileset dir="${docs.out}/.." prefix="${derby.docssrc}"
+ <tarfileset dir="${docs.root}" prefix="${derby.docssrc}"
includes="${src.docs.includes}"/>
</tar>
</target>
@@ -392,6 +389,22 @@
</antcall>
</target>
+
+ <!--
+ this target is only called by the release target in the top level build file.
+ this target relies on the fact that its caller has created plugintmp.properties.
+ -->
+ <target name="sign.eclipse.plugin" depends="init">
+ <property file="${release.base}/plugintmp.properties"/>
+ <property name="eclipse.plugin" value="${plugin.derby.core.zipfile}_${plugin.derby.version}.zip"/>
+ <antcall target="md5">
+ <param name="sign.archive" value="${release.dir}/${eclipse.plugin}"/>
+ </antcall>
+ <antcall target="pgp">
+ <param name="sign.archive" value="${release.dir}/${eclipse.plugin}"/>
+ </antcall>
+ </target>
+
<target name="md5">
<exec executable="${md5.exec}" output="${sign.archive}.md5">
<arg line="${md5.options} ${sign.archive}"/>
@@ -400,7 +413,7 @@
<target name="pgp">
<exec executable="${pgp.exec}">
- <arg line="${pgp.options} ${sign.archive}"/>
+ <arg line="${pgp.options} --passphrase "${pgp.passphrase}" ${sign.archive}"/>
</exec>
</target>