From 6a4891093517c1a0e8f60f78bf0e458a148fca18 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Sun, 26 Nov 2017 15:27:06 +0000 Subject: [PATCH] Build: add xenial release target, it will be our 4th launchpad flavor. build.xml cleanups doc updates --- build.xml | 149 +++++++++++++++++++++++-------- debian-alt/doc/debian-build.txt | 4 +- debian-alt/doc/launchpad.txt | 4 +- installer/resources/checklist.md | 25 +++++- 4 files changed, 137 insertions(+), 45 deletions(-) diff --git a/build.xml b/build.xml index 4f8dd936af..4628ac271e 100644 --- a/build.xml +++ b/build.xml @@ -432,10 +432,22 @@ <!-- end of sub-build.xml targets --> + <!-- monotone targets --> + <target name="checkForMtn" > <available property="mtn.available" file="_MTN" type="dir" /> </target> + <target name="failIfNoMtn" depends="checkForMtn"> + <fail message="This target cannot be used without Monotone! Use "fakeroot debian/rules get-orig-source" instead."> + <condition> + <not> + <isset property="mtn.available" /> + </not> + </condition> + </fail> + </target> + <target name="getMtnRev" depends="checkForMtn" if="mtn.available" > <exec executable="mtn" outputproperty="workspace.version" errorproperty="mtn.error1" failifexecutionfails="false" > <arg value="automate" /> @@ -490,6 +502,10 @@ match='(^\s+public\s+final\s+static\s+long\s+BUILD\s+=\s+)[0-9]+;' replace='\1${new.i2p.build.number};'/> </target> + <!-- end monotone targets --> + + <!-- launch4j targets --> + <condition property="noExe"> <not> <!-- We only have launch4j binaries for the following systems --> @@ -533,6 +549,8 @@ classpath="${basedir}/installer/lib/launch4j/launch4j.jar:${basedir}/installer/lib/launch4j/lib/xstream.jar" /> </target> + <!-- end launch4j targets --> + <!-- the files are now copied to the build directory in the build* targets @@ -546,6 +564,8 @@ <copy file="apps/susidns/src/lib/standard.jar" todir="build/" /> </target> + <!-- jbigi targets --> + <target name="jbigi-list-changes" depends="checkForMtn" if="mtn.available"> <exec executable="mtn" outputproperty="workspace.changes.jbigi" errorproperty="mtn.error.jbigi" failifexecutionfails="false" > <arg value="list" /> @@ -677,6 +697,8 @@ </jar> </target> + <!-- end jbigi targets --> + <!-- the apps need to compile the jsps to poupdate --> <target name="poupdate" depends="buildRouter, buildStreaming, buildSystray, buildJetty, buildDesktopGui, buildJrobin" > <echo message="Setting environment variable LG2 to a lang code (eg: de,zh,nl etc)" /> @@ -932,7 +954,7 @@ </fail> </target> - <target name="-pre-release" depends="-pre-sign"> + <target name="-pre-release" depends="-pre-sign, failIfNoMtn"> <echo message="================================================================" /> <echo message="Did you update these files?" /> <exec executable="ls" failonerror="true"> @@ -2031,17 +2053,27 @@ </target> <target name="mavenCentral.deps" depends="buildRouter, buildStreaming"> - <ant dir="core/java/" target="javadocJar" /> - <ant dir="core/java/" target="sourcesJar" /> - <ant dir="router/java/" target="javadocJar" /> - <ant dir="router/java/" target="sourcesJar" /> - <ant dir="apps/ministreaming/java/" target="javadocJar" /> - <ant dir="apps/ministreaming/java/" target="sourcesJar" /> - <ant dir="apps/streaming/java/" target="javadocJar" /> - <ant dir="apps/streaming/java/" target="sourcesJar" /> - <ant dir="apps/jetty/" target="servletJar" /> - <ant dir="apps/jetty/" target="servletJavadocJar" /> - <ant dir="apps/jetty/" target="servletSourcesJar" /> + <ant dir="core/java/"> + <target name="javadocJar" /> + <target name="sourcesJar" /> + </ant> + <ant dir="router/java/"> + <target name="javadocJar" /> + <target name="sourcesJar" /> + </ant> + <ant dir="apps/ministreaming/java/"> + <target name="javadocJar" /> + <target name="sourcesJar" /> + </ant> + <ant dir="apps/streaming/java/"> + <target name="javadocJar" /> + <target name="sourcesJar" /> + </ant> + <ant dir="apps/jetty/"> + <target name="servletJar" /> + <target name="servletJavadocJar" /> + <target name="servletSourcesJar" /> + </ant> </target> <target name="mavenCentral" depends="verifyReleaseBuildNumbers, -pre-release, distclean, testscripts, mavenCentral.deps"> @@ -2242,15 +2274,9 @@ <delete dir="./.pc" /> </target> - <target name="debian-tarball" depends="getExtendedVersion"> + <!-- stretch+, zesty+ --> + <target name="debian-tarball" depends="getExtendedVersion, failIfNoMtn"> <!-- this will use the monotonerc file in the current workspace --> - <fail message="This target cannot be used without Monotone! Use "fakeroot debian/rules get-orig-source" instead."> - <condition> - <not> - <isset property="mtn.available" /> - </not> - </condition> - </fail> <property name="debian.tarball.name" value="i2p_${Extended.Version}.orig.tar.bz2" /> <echo message="Checking out fresh copy into ../i2p-${Extended.Version} for tarballing:" /> <delete dir="../i2p-${Extended.Version}" /> @@ -2312,15 +2338,7 @@ - We add a 'p' to the release name and tarball since the source package is different; - Launchpad does not allow different source packages with the same name. --> - <target name="precise-release-tarball" depends="getExtendedVersion"> - <!-- this will use the monotonerc file in the current workspace --> - <fail message="This target cannot be used without Monotone! Use "fakeroot debian/rules get-orig-source" instead."> - <condition> - <not> - <isset property="mtn.available" /> - </not> - </condition> - </fail> + <target name="precise-release-tarball" depends="getExtendedVersion, failIfNoMtn"> <property name="debian.tarball.name" value="i2p_${release.number}p.orig.tar.bz2" /> <echo message="Checking out fresh copy into ../i2p-${Extended.Version} for tarballing:" /> <delete dir="../i2p-${Extended.Version}" /> @@ -2387,16 +2405,71 @@ </tar> </target> + <!-- xenial/yakkety only --> + <!-- same as debian-release-tarball but with bundled jstl.jar + (there's no libtaglibs-standard-* packages) + - We add a 'x' to the release name and tarball since the source package is different; + - Launchpad does not allow different source packages with the same name. + --> + <target name="xenial-release-tarball" depends="getExtendedVersion, failIfNoMtn"> + <property name="debian.tarball.name" value="i2p_${release.number}x.orig.tar.bz2" /> + <echo message="Checking out fresh copy into ../i2p-${Extended.Version} for tarballing:" /> + <delete dir="../i2p-${Extended.Version}" /> + <exec executable="mtn" failonerror="true"> + <arg value="co" /> + <!-- w: is the revision of the current workspace --> + <arg value="-r" /> + <arg value="w:" /> + <arg value="-b" /> + <arg value="i2p.i2p" /> + <arg value="../i2p-${Extended.Version}" /> + </exec> + <delete includeemptydirs="true" quiet="false" failonerror="false"> + <fileset dir="../i2p-${Extended.Version}/debian-alt/" /> + <fileset dir="../i2p-${Extended.Version}/installer/lib/" /> + <fileset dir="../i2p-${Extended.Version}/Slackware" /> + <fileset dir="../i2p-${Extended.Version}/_MTN" /> + <fileset dir="../i2p-${Extended.Version}/core/java/src/gnu/gettext" /> + <fileset dir="../i2p-${Extended.Version}/core/java/src/gnu/getopt" /> + <!-- + <fileset dir="../i2p-${Extended.Version}/core/java/src/org/apache/http" /> + --> + <file name="../i2p-${Extended.Version}/installer/resources/geoip.txt" /> + <file name="../i2p-${Extended.Version}/installer/resources/geoipv6.dat.gz" /> + <fileset dir="../i2p-${Extended.Version}/apps/jetty/jetty-distribution-9.2.22.v20170606" /> + <fileset dir="../i2p-${Extended.Version}/apps/jetty/apache-tomcat-8.5.23" /> + <!-- + <file name="../i2p-${Extended.Version}/apps/susidns/src/lib/jstl.jar" /> + --> + <file name="../i2p-${Extended.Version}/apps/susidns/src/lib/standard.jar" /> + <!-- anything added above, add in debian-tarball also --> + </delete> + <tar longfile="gnu" destfile="../${debian.tarball.name}" compression="bzip2"> + <tarfileset dir="../i2p-${Extended.Version}" prefix="/i2p-${release.number}"> + <include name="**/**" /> + <exclude name="debian/**"/> + <exclude name="debian-alt/**"/> + <exclude name="**/*.sh"/> + <exclude name="installer/resources/geoip.txt"/> + <exclude name="installer/resources/geoipv6.dat.gz"/> + <exclude name="apps/jetty/jetty-distribution-*/**"/> + <exclude name="apps/jetty/apache-tomcat-*/**"/> + <!-- + <exclude name="apps/susidns/src/lib/jstl.jar" /> + --> + <exclude name="apps/susidns/src/lib/standard.jar" /> + <!-- anything added above, add in debian-tarball also --> + </tarfileset> + <tarfileset dir="../i2p-${Extended.Version}" prefix="/i2p-${release.number}" filemode="755"> + <exclude name="debian/**" /> + <include name="**/*.sh" /> + </tarfileset> + </tar> + </target> + + <!-- stretch+, zesty+ --> <!-- same as debian-tarball but with a release tar.bz2 file name and tar prefix --> - <target name="debian-release-tarball" depends="getExtendedVersion"> - <!-- this will use the monotonerc file in the current workspace --> - <fail message="This target cannot be used without Monotone! Use "fakeroot debian/rules get-orig-source" instead."> - <condition> - <not> - <isset property="mtn.available" /> - </not> - </condition> - </fail> + <target name="debian-release-tarball" depends="getExtendedVersion, failIfNoMtn"> <property name="debian.tarball.name" value="i2p_${release.number}.orig.tar.bz2" /> <echo message="Checking out fresh copy into ../i2p-${Extended.Version} for tarballing:" /> <delete dir="../i2p-${Extended.Version}" /> diff --git a/debian-alt/doc/debian-build.txt b/debian-alt/doc/debian-build.txt index b17f42e1cb..98df8cfe2b 100644 --- a/debian-alt/doc/debian-build.txt +++ b/debian-alt/doc/debian-build.txt @@ -93,9 +93,9 @@ reprepro -v copysrc wheezy precise i2p # Note that syntax is reprepro copysrc TO FROM package! reprepro -v copysrc jessie trusty i2p -# To copy xenial to stretch: +# To copy zesty to stretch: # Note that syntax is reprepro copysrc TO FROM package! -reprepro -v copysrc stretch xenial i2p +reprepro -v copysrc stretch zesty i2p # install in the architectures not copied from ubuntu # 'flood' should do this but forgot how, can't make it work any more diff --git a/debian-alt/doc/launchpad.txt b/debian-alt/doc/launchpad.txt index 581d424bf9..84dd008fd3 100644 --- a/debian-alt/doc/launchpad.txt +++ b/debian-alt/doc/launchpad.txt @@ -49,7 +49,9 @@ Generate files to upload (or add -kkeyid argument to debuild, which you must do if you want to sign with a subkey) run gpg -K to list your private keys -- ant debian-release-tarball (ant precise-release-tarball for precise/trusty) +- ant debian-release-tarball (this is currently for zesty and higher) + (ant precise-release-tarball for precise thru wily... only do this once for both the precise and trusty build) + (ant xenial-release-tarball for xenial and yakkety) this will make a directory ../i2p-0.9.XX-0-xxxxxxxx/ and a tarball ../i2p_0.9.XX.orig.tar.bz2 - cp debian/changelog ../i2p-0.9.XX-0-xxxxxxxx/debian/ diff --git a/installer/resources/checklist.md b/installer/resources/checklist.md index a85d076eb8..b0f89195b6 100644 --- a/installer/resources/checklist.md +++ b/installer/resources/checklist.md @@ -1,4 +1,4 @@ -# Release checklist +# Release checklist and process ## One week before @@ -26,6 +26,11 @@ - Review Google Play crash reports, fix any related issues +- Initial review: Review the complete diff from the last release, fix any issues + +- Trial Debian build: Build and test a preliminary Debian build + with 'ant debian' and fix any issues + ## A day or two before @@ -236,6 +241,15 @@ 2. Upload the bundles to Maven Central via https://oss.sonatype.org +### Android build + +1. See branch i2p.android.base for build instructions + +2. Upload to Google Play, F-Droid, and website + +3. Announce on Twitter + + ### Notify release 1. Upload files to launchpad release (download mirror) @@ -256,15 +270,18 @@ 4. Announce on: - #i2p, #i2p-dev (also on Freenode side) - - forum.i2p + - IRC - Twitter 5. Launchpad builds (see debian-alt/doc/launchpad.txt for instructions) -6. Debian builds +6. Copy launchpad files to our Debian repo, + or build Debian packages and upload them (see debian-alt/doc/debian-build.txt for instructions) 7. Announce Launchpad and Debian builds on Twitter -8. Notify Tails that new Debian builds are available +8. Notify downstream Debian maintainer + +9. (if we get back into Tails) Notify Tails that new Debian builds are available -- GitLab