On Sep 3, 2004, at 11:54 AM, Daniel John Debrunner wrote:
Then we need an ant way of executing svnversion and setting
changenumber, this is in top level build.xml file.

Attached is a patch for this. Note that this patch assumes that it is ok to have letters in the build number, which is not currently the case. Currently,
org.apache.derby.iapi.services.info.ProductVersionHolder assumes that the build number will be an integer, so if your version string contained a letter (like the M from the version string svnversion supplies), the version would actually be set to -1 according to how NumberFormatExceptions are handled there. See ProductVersionHolder.java, lines 291 and 371-385.


To work with the current method which expects an integer, you could add:

<replaceregexp file="${basedir}/changenumber.properties" match="M" replace=""/>
<replaceregexp file="${basedir}/changenumber.properties" match="S" replace=""/>
<replaceregexp file="${basedir}/changenumber.properties" match="^.*:" replace=""/>


to the getsvnversion target to handle the possible outputs of svnversion which might lead to error.

Note for this patch also that if svnversion fails, the revision will be set to 1 (or to the last time changenumber.properties was set).

andrew



Index: build.xml
===================================================================
--- build.xml (revision 13)
+++ build.xml (working copy)
@@ -631,16 +631,20 @@
<target name="buildjarsclean" depends="cleanjars,initjars,derbyjar,derbytoolsjar,derbynetjar,derbyloca lejars"/>
<target name="buildjars" depends="initjars,derbyjar,derbytoolsjar,derbynetjar,derbylocalejars"/>


- <target name="initjars" depends="setsanityname">
+ <target name="initjars" depends="setsanityname,getsvnversion">
<property name="derby.jar.dir" value="${basedir}/jars/${sanity.name}"/>
<property name="derby.jar.topdir" value="${basedir}/jars"/>
<mkdir dir="${derby.jar.dir}"/>
<mkdir dir="${derby.jar.dir}/lists"/>
+ <loadfile srcFile="${basedir}/changenumber.properties"
+ failonerror="false"
+ property="changenumber"/>
<condition property="changenumber" value="1">
<not>
<isset property="changenumber"/>
</not>
</condition>
+ <echo message="Revision number set to ${changenumber}."/>
</target>



@@ -930,6 +934,14 @@ </condition> </target>

+  <target name="getsvnversion">
+    <exec executable="svnversion"
+          failifexecutionfails="no"
+          output="${basedir}/changenumber.properties">
+      <arg value="${basedir}"/>
+      <arg value="-n"/>
+    </exec>
+  </target>

   <target name="cleanjars" depends="setsanityname">
     <delete dir="${basedir}/jars/${sanity.name}"/>



Reply via email to