build.xml: add new macros for use in the release target

Also move away from using external binaries when an ant task can do the job.
This commit is contained in:
kytv
2014-06-26 20:01:07 +00:00
parent ca4555c496
commit 58512b8230

169
build.xml
View File

@ -67,6 +67,54 @@
<echo message="Once the dependencies are installed, run &quot;ant debian&quot;"/> <echo message="Once the dependencies are installed, run &quot;ant debian&quot;"/>
<echo message="to patch the source and build the packages." /> <echo message="to patch the source and build the packages." />
</target> </target>
<macrodef name="gpgsign">
<attribute name="file" />
<sequential>
<delete file="@{file}.sig" quiet="true" />
<exec executable="gpg" failonerror="true">
<arg value="--default-key" />
<arg value="${release.gpg.keyid}" />
<arg value="-b" />
<arg value="@{file}" />
</exec>
<chmod type="file" perm="444">
<fileset dir="${basedir}">
<include name="@{file} @{file}.sig" />
</fileset>
</chmod>
</sequential>
</macrodef>
<macrodef name="mktorrent">
<attribute name="file" />
<sequential>
<delete file="@{file}.torrent" quiet="true"/>
<java classname="org.klomp.snark.Storage" fork="true" failonerror="true">
<classpath>
<pathelement location="build/i2p.jar" />
<pathelement location="build/i2psnark.jar" />
</classpath>
<arg value="@{file}" />
<arg value="http://tracker2.postman.i2p/announce.php" />
</java>
</sequential>
</macrodef>
<macrodef name="sha256sum">
<attribute name="file" />
<sequential>
<!--
Note: "local" only works with ant 1.8+. This limitation shouldn't be
a big deal since this macro is only called by the release
target.
-->
<local name="file-sum"/>
<checksum format="MD5SUM" file="@{file}" property="file-sum" algorithm="sha-256"/>
<echo message="${file-sum} @{file}" />
</sequential>
</macrodef>
<target name="dist" depends="pkg, javadoc" /> <target name="dist" depends="pkg, javadoc" />
<target name="dist200" depends="pkg200, javadoc" /> <target name="dist200" depends="pkg200, javadoc" />
<target name="build" depends="build2"> <target name="build" depends="build2">
@ -544,8 +592,8 @@
<pathelement location="apps/jrobin/jrobin-1.5.9.1.jar" /> <pathelement location="apps/jrobin/jrobin-1.5.9.1.jar" />
<pathelement location="installer/lib/wrapper/all/wrapper.jar" /> <pathelement location="installer/lib/wrapper/all/wrapper.jar" />
</classpath> </classpath>
<!-- These variables are stored in build.properties. <!-- These variables are stored in build.properties.
End-users can override by creating the file override.properties --> End-users can override by creating the file override.properties -->
<link offline="true" href="${javasedocs.url}" packagelistLoc="installer/resources/package-lists/java/" /> <link offline="true" href="${javasedocs.url}" packagelistLoc="installer/resources/package-lists/java/" />
<link offline="true" href="${javaeedocs.url}" packagelistLoc="installer/resources/package-lists/javaee/" /> <link offline="true" href="${javaeedocs.url}" packagelistLoc="installer/resources/package-lists/javaee/" />
<link offline="true" href="${jettydocs.url}" packagelistLoc="installer/resources/package-lists/jetty/" /> <link offline="true" href="${jettydocs.url}" packagelistLoc="installer/resources/package-lists/jetty/" />
@ -553,7 +601,9 @@
<link offline="true" href="${wrapperdocs.url}" packagelistLoc="installer/resources/package-lists/wrapper/" /> <link offline="true" href="${wrapperdocs.url}" packagelistLoc="installer/resources/package-lists/wrapper/" />
</javadoc> </javadoc>
<echo message="Warning, javadoc embeds timestamps in the output, run with 'TZ=UTC ant javadoc' if you plan to distribute" /> <echo message="Warning, javadoc embeds timestamps in the output, run with 'TZ=UTC ant javadoc' if you plan to distribute" />
<zip destfile="javadoc.zip" basedir="build" level="9" includes="javadoc\**" /> </target>
<target name="javadoc-zip" depends="javadoc">
<zip destfile="javadoc.zip" basedir="build" level="9" includes="javadoc\**" />
</target> </target>
<target name="javadoc-test" depends="buildRouter, javadoc" > <target name="javadoc-test" depends="buildRouter, javadoc" >
@ -581,8 +631,10 @@
<pathelement location="build/router.jar" /> <pathelement location="build/router.jar" />
<pathelement location="${junit.home}/junit4.jar" /> <pathelement location="${junit.home}/junit4.jar" />
</classpath> </classpath>
<!-- These variables are stored in build.properties. <!--
End-users can override by creating the file override.properties --> These variables are stored in build.properties.
End-users can override by creating the file override.properties
-->
<link offline="true" href="${javasedocs.url}" packagelistLoc="installer/resources/package-lists/java/" /> <link offline="true" href="${javasedocs.url}" packagelistLoc="installer/resources/package-lists/java/" />
<link offline="true" href="${junitdocs.url}" packagelistLoc="installer/resources/package-lists/junit/" /> <link offline="true" href="${junitdocs.url}" packagelistLoc="installer/resources/package-lists/junit/" />
<link offline="true" href="${i2pdocs.url}" packagelistLoc="build/javadoc/" /> <link offline="true" href="${i2pdocs.url}" packagelistLoc="build/javadoc/" />
@ -697,7 +749,7 @@
<target name="distclean" depends="clean"> <target name="distclean" depends="clean">
<delete failonerror="false" quiet="true"> <delete failonerror="false" quiet="true">
<fileset dir="." includes="i2pinstall* *.deb i2p_*.bz2 i2pupdate* i2psource*" /> <fileset dir="." includes="i2pinstall* *.deb i2p_*.bz2 i2pupdate* i2psource* *.sig *.torrent" />
</delete> </delete>
<ant dir="core/java/" target="distclean" /> <ant dir="core/java/" target="distclean" />
<ant dir="router/java/" target="distclean" /> <ant dir="router/java/" target="distclean" />
@ -1322,7 +1374,7 @@
<izpack input="${basedir}/installer/install.xml" output="${basedir}/install.jar" installerType="standard" basedir="${basedir}" /> <izpack input="${basedir}/installer/install.xml" output="${basedir}/install.jar" installerType="standard" basedir="${basedir}" />
<ant target="installerexe" /> <ant target="installerexe" />
<delete file="${basedir}/install.jar" /> <delete file="${basedir}/install.jar" />
<move file="${basedir}/i2pinstall.exe" tofile="${basedir}/i2pinstall_${full.version}_windows-only.exe" /> <move file="${basedir}/i2pinstall.exe" tofile="${basedir}/i2pinstall_${full.version}_windows.exe" />
</target> </target>
<!-- this is broken as installer-xxx targets may delete (or not delete) things in pkg-temp --> <!-- this is broken as installer-xxx targets may delete (or not delete) things in pkg-temp -->
@ -1502,11 +1554,11 @@
<!-- <!--
<target name="release" depends="distclean, updaterWithJettyFixesAndJbigi , updater200WithJettyFixes, preppkg, installer, getReleaseNumber" > <target name="release" depends="distclean, updaterWithJettyFixesAndJbigi , updater200WithJettyFixes, preppkg, installer, getReleaseNumber" >
--> -->
<target name="release" depends="verifyReleaseBuildNumbers, -pre-release, distclean, testscripts, updaterWithJettyRepack, updater200WithJetty, delete-j6-update, installer-nowindows, delete-nonwindows, installer-windows" > <target name="release" depends="verifyReleaseBuildNumbers, -pre-release, distclean, testscripts, updaterWithJettyRepack, updater200WithJetty, delete-j6-update, installer-nowindows, delete-nonwindows, installer-windows">
<echo message="New version number is ${release.number}" /> <echo message="New version number is ${release.number}" />
<copy file="i2pupdate.zip" tofile="i2pupdate_${release.number}.zip" /> <copy file="i2pupdate.zip" tofile="i2pupdate_${release.number}.zip" />
<copy file="i2pinstall_${full.version}_windows-only.exe" tofile="i2pinstall_${release.number}_windows.exe" />
<copy file="i2pinstall_${full.version}.jar" tofile="i2pinstall_${release.number}.jar" /> <copy file="i2pinstall_${full.version}.jar" tofile="i2pinstall_${release.number}.jar" />
<copy file="i2pinstall_${full.version}_windows.exe" tofile="i2pinstall_${release.number}_windows.exe" />
<delete file="i2pupdate.sud" /> <delete file="i2pupdate.sud" />
<delete file="i2pupdate.su2" /> <delete file="i2pupdate.su2" />
<!-- make this a lot easier by putting release.privkey=/path/to/privkey in override.properties --> <!-- make this a lot easier by putting release.privkey=/path/to/privkey in override.properties -->
@ -1672,48 +1724,20 @@
<equals arg1="${release.gpg.keyid}" arg2=""/> <equals arg1="${release.gpg.keyid}" arg2=""/>
</condition> </condition>
</fail> </fail>
<delete file="i2pinstall_${release.number}_windows.exe.sig" />
<delete file="i2pinstall_${release.number}.jar.sig" /> <!-- the gpgsign macro sets the permission of signed files and the sigs themselves to 444 -->
<delete file="i2psource_${release.number}.tar.bz2.sig" /> <gpgsign file="i2pinstall_${release.number}_windows.exe" />
<delete file="i2pupdate_${release.number}.zip.sig" /> <gpgsign file="i2pinstall_${release.number}.jar" />
<exec executable="gpg" failonerror="true"> <gpgsign file="i2psource_${release.number}.tar.bz2" />
<arg value="--default-key" /> <gpgsign file="i2pupdate_${release.number}.zip" />
<arg value="${release.gpg.keyid}" />
<arg value="-b" /> <chmod perm="444" type="file">
<arg value="i2pinstall_${release.number}_windows.exe" /> <fileset dir="${basedir}">
</exec> <include name="i2pupdate.su2" />
<exec executable="gpg" failonerror="true"> <include name="i2pupdate.su3" />
<arg value="--default-key" /> <include name="i2pupdate.sud" />
<arg value="${release.gpg.keyid}" /> </fileset>
<arg value="-b" /> </chmod>
<arg value="i2pinstall_${release.number}.jar" />
</exec>
<exec executable="gpg" failonerror="true">
<arg value="--default-key" />
<arg value="${release.gpg.keyid}" />
<arg value="-b" />
<arg value="i2psource_${release.number}.tar.bz2" />
</exec>
<exec executable="gpg" failonerror="true">
<arg value="--default-key" />
<arg value="${release.gpg.keyid}" />
<arg value="-b" />
<arg value="i2pupdate_${release.number}.zip" />
</exec>
<exec executable="chmod" failonerror="true">
<arg value="444" />
<arg value="i2pinstall_${release.number}_windows.exe" />
<arg value="i2pinstall_${release.number}.jar" />
<arg value="i2psource_${release.number}.tar.bz2" />
<arg value="i2pupdate_${release.number}.zip" />
<arg value="i2pupdate.su2" />
<arg value="i2pupdate.su3" />
<arg value="i2pupdate.sud" />
<arg value="i2pinstall_${release.number}_windows.exe.sig" />
<arg value="i2pinstall_${release.number}.jar.sig" />
<arg value="i2psource_${release.number}.tar.bz2.sig" />
<arg value="i2pupdate_${release.number}.zip.sig" />
</exec>
<echo message="File sizes:" /> <echo message="File sizes:" />
<exec executable="ls" failonerror="true"> <exec executable="ls" failonerror="true">
<arg value="-l" /> <arg value="-l" />
@ -1730,43 +1754,20 @@
<arg value="i2pupdate_${release.number}.zip.sig" /> <arg value="i2pupdate_${release.number}.zip.sig" />
</exec> </exec>
<echo message="SHA256 sums:" /> <echo message="SHA256 sums:" />
<exec executable="sha256sum" failonerror="true"> <sha256sum file="i2pinstall_${release.number}_windows.exe" />
<arg value="i2pinstall_${release.number}_windows.exe" /> <sha256sum file="i2pinstall_${release.number}.jar" />
<arg value="i2pinstall_${release.number}.jar" /> <sha256sum file="i2psource_${release.number}.tar.bz2" />
<arg value="i2psource_${release.number}.tar.bz2" /> <sha256sum file="i2pupdate_${release.number}.zip" />
<arg value="i2pupdate_${release.number}.zip" /> <sha256sum file="i2pupdate.su2" />
<arg value="i2pupdate.su2" /> <sha256sum file="i2pupdate.su3" />
<arg value="i2pupdate.su3" /> <sha256sum file="i2pupdate.sud" />
<arg value="i2pupdate.sud" />
</exec>
<!-- make torrent files --> <!-- make torrent files -->
<copy file="i2pupdate.sud" tofile="i2pupdate-${release.number}.sud" /> <copy file="i2pupdate.sud" tofile="i2pupdate-${release.number}.sud" />
<java classname="org.klomp.snark.Storage" fork="true" failonerror="true"> <mktorrent file="i2pupdate-${release.number}.sud" />
<classpath>
<pathelement location="build/i2p.jar" />
<pathelement location="build/i2psnark.jar" />
</classpath>
<arg value="i2pupdate-${release.number}.sud" />
<arg value="http://tracker2.postman.i2p/announce.php" />
</java>
<copy file="i2pupdate.su2" tofile="i2pupdate-${release.number}.su2" /> <copy file="i2pupdate.su2" tofile="i2pupdate-${release.number}.su2" />
<java classname="org.klomp.snark.Storage" fork="true" failonerror="true"> <mktorrent file="i2pupdate-${release.number}.su2" />
<classpath>
<pathelement location="build/i2p.jar" />
<pathelement location="build/i2psnark.jar" />
</classpath>
<arg value="i2pupdate-${release.number}.su2" />
<arg value="http://tracker2.postman.i2p/announce.php" />
</java>
<copy file="i2pupdate.su3" tofile="i2pupdate-${release.number}.su3" /> <copy file="i2pupdate.su3" tofile="i2pupdate-${release.number}.su3" />
<java classname="org.klomp.snark.Storage" fork="true" failonerror="true"> <mktorrent file="i2pupdate-${release.number}.su3" />
<classpath>
<pathelement location="build/i2p.jar" />
<pathelement location="build/i2psnark.jar" />
</classpath>
<arg value="i2pupdate-${release.number}.su3" />
<arg value="http://tracker2.postman.i2p/announce.php" />
</java>
<echo message="Don't forget to mtn tag w: i2p-${release.number}" /> <echo message="Don't forget to mtn tag w: i2p-${release.number}" />
<echo message="... and mtn cert t:i2p-${release.number} branch i2p.i2p.release" /> <echo message="... and mtn cert t:i2p-${release.number} branch i2p.i2p.release" />
</target> </target>