From 33629d0744040c62f3a2ff7b0727705f8cc751d2 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Sun, 1 May 2016 20:19:56 +0000 Subject: [PATCH] Build: Compile resource bundles from ant, not msgfmt, speeding up builds with translations by 20x --- apps/desktopgui/build.xml | 62 ++++++++++--------- apps/desktopgui/bundle-messages.sh | 10 ++- apps/i2psnark/java/build.xml | 5 ++ apps/i2psnark/java/bundle-messages.sh | 10 ++- apps/i2ptunnel/java/build.xml | 10 +++ apps/i2ptunnel/java/bundle-messages-proxy.sh | 10 ++- apps/i2ptunnel/java/bundle-messages.sh | 10 ++- apps/ministreaming/java/build.xml | 5 ++ apps/ministreaming/java/bundle-messages.sh | 10 ++- apps/routerconsole/java/build.xml | 15 +++++ .../java/bundle-messages-countries.sh | 10 ++- .../java/bundle-messages-news.sh | 10 ++- apps/routerconsole/java/bundle-messages.sh | 10 ++- apps/susidns/src/build.xml | 7 ++- apps/susidns/src/bundle-messages.sh | 10 ++- apps/susimail/build.xml | 5 ++ apps/susimail/bundle-messages.sh | 10 ++- 17 files changed, 168 insertions(+), 41 deletions(-) diff --git a/apps/desktopgui/build.xml b/apps/desktopgui/build.xml index 598027900b..7e25f38977 100644 --- a/apps/desktopgui/build.xml +++ b/apps/desktopgui/build.xml @@ -6,7 +6,7 @@ <property name="dist" location="dist"/> <property name="jar" value="desktopgui.jar"/> <property name="resources" value="resources"/> - <property name="javadoc" value="javadoc"/> + <property name="javadoc" value="javadoc"/> <property name="javac.compilerargs" value=""/> <property name="javac.version" value="1.6" /> <property name="require.gettext" value="true" /> @@ -17,9 +17,7 @@ <target name="init"> <mkdir dir="${build}"/> - <mkdir dir="${build}/${resources}"/> - <mkdir dir="${build}/${javadoc}"/> - <mkdir dir="${dist}"/> + <mkdir dir="${dist}"/> </target> <target name="clean"> @@ -27,35 +25,39 @@ <delete dir="${dist}"/> </target> - <target name="compile" depends="init"> + <target name="compile" depends="init"> <javac debug="true" deprecation="on" source="${javac.version}" target="${javac.version}" includeAntRuntime="false" srcdir="${src}" destdir="${build}"> - <compilerarg line="${javac.compilerargs}" /> - <classpath> - <pathelement location="../../core/java/build/i2p.jar" /> - <pathelement location="../../installer/lib/wrapper/all/wrapper.jar" /> - <pathelement location="../../router/java/build/router.jar" /> - </classpath> - </javac> - <copy todir="${build}/desktopgui/${resources}"> - <fileset dir="${resources}" /> - </copy> - </target> + <compilerarg line="${javac.compilerargs}" /> + <classpath> + <pathelement location="../../core/java/build/i2p.jar" /> + <pathelement location="../../installer/lib/wrapper/all/wrapper.jar" /> + <pathelement location="../../router/java/build/router.jar" /> + </classpath> + </javac> + <copy todir="${build}/desktopgui/${resources}"> + <fileset dir="${resources}" /> + </copy> + </target> - <target name="bundle" unless="no.bundle"> - <exec executable="sh" osfamily="unix" failifexecutionfails="true" failonerror="${require.gettext}" > - <env key="JAVA_HOME" value="${java.home}" /> - <arg value="./bundle-messages.sh" /> - </exec> - <exec executable="sh" osfamily="mac" failifexecutionfails="true" failonerror="${require.gettext}" > - <arg value="./bundle-messages.sh" /> - </exec> - <!-- multi-lang is optional --> - <exec executable="sh" osfamily="windows" failifexecutionfails="false" > - <arg value="./bundle-messages.sh" /> - </exec> - </target> + <target name="bundle" unless="no.bundle"> + <exec executable="sh" osfamily="unix" failifexecutionfails="true" failonerror="${require.gettext}" > + <env key="JAVA_HOME" value="${java.home}" /> + <arg value="./bundle-messages.sh" /> + </exec> + <exec executable="sh" osfamily="mac" failifexecutionfails="true" failonerror="${require.gettext}" > + <arg value="./bundle-messages.sh" /> + </exec> + <exec executable="sh" osfamily="windows" failifexecutionfails="false" > + <arg value="./bundle-messages.sh" /> + </exec> + <javac source="${javac.version}" target="${javac.version}" + includeAntRuntime="false" + srcdir="${build}/messages-src" destdir="${build}"> + <compilerarg line="${javac.compilerargs}" /> + </javac> + </target> <target name="listChangedFiles" depends="jarUpToDate" if="shouldListChanges" > <exec executable="mtn" outputproperty="workspace.changes" errorproperty="mtn.error2" failifexecutionfails="false" > @@ -74,7 +76,7 @@ <target name="jar" depends="compile, bundle, listChangedFiles" unless="jar.uptodate" > <!-- set if unset --> <property name="workspace.changes.tr" value="" /> - <jar basedir="${build}" destfile="${dist}/${jar}"> + <jar basedir="${build}" excludes="messages-src/**" destfile="${dist}/${jar}"> <manifest> <attribute name="Main-Class" value="net.i2p.desktopgui.Main"/> <attribute name="Build-Date" value="${build.timestamp}" /> diff --git a/apps/desktopgui/bundle-messages.sh b/apps/desktopgui/bundle-messages.sh index 6823dde03e..8654607560 100644 --- a/apps/desktopgui/bundle-messages.sh +++ b/apps/desktopgui/bundle-messages.sh @@ -106,7 +106,13 @@ do echo "Generating ${CLASS}_$LG ResourceBundle..." # convert to class files in build - msgfmt --java --statistics -r $CLASS -l $LG -d build $i + TD=build/messages-src-tmp + TDX=$TD/net/i2p/desktopgui + TD2=build/messages-src + TDY=$TD2/net/i2p/desktopgui + rm -rf $TD + mkdir -p $TD $TDY + msgfmt --java --statistics --source -r $CLASS -l $LG -d $TD $i if [ $? -ne 0 ] then echo "ERROR - msgfmt failed on ${i}, not updating translations" @@ -115,6 +121,8 @@ do RC=1 break fi + mv $TDX/messages_$LG.java $TDY + rm -rf $TD fi done rm -f $TMPFILE diff --git a/apps/i2psnark/java/build.xml b/apps/i2psnark/java/build.xml index ec0e5e7e86..31f3805a18 100644 --- a/apps/i2psnark/java/build.xml +++ b/apps/i2psnark/java/build.xml @@ -150,6 +150,11 @@ <exec executable="sh" osfamily="windows" failifexecutionfails="false" > <arg value="./bundle-messages.sh" /> </exec> + <javac source="${javac.version}" target="${javac.version}" + includeAntRuntime="false" + srcdir="build/messages-src" destdir="build/obj"> + <compilerarg line="${javac.compilerargs}" /> + </javac> </target> <target name="poupdate" depends="builddep, compile"> diff --git a/apps/i2psnark/java/bundle-messages.sh b/apps/i2psnark/java/bundle-messages.sh index 7ef207a6d3..adbacb45a6 100755 --- a/apps/i2psnark/java/bundle-messages.sh +++ b/apps/i2psnark/java/bundle-messages.sh @@ -97,7 +97,13 @@ do echo "Generating ${CLASS}_$LG ResourceBundle..." # convert to class files in build/obj - msgfmt --java --statistics -r $CLASS -l $LG -d build/obj $i + TD=build/messages-src-tmp + TDX=$TD/org/klomp/snark/web + TD2=build/messages-src + TDY=$TD2/org/klomp/snark/web + rm -rf $TD + mkdir -p $TD $TDY + msgfmt --java --statistics --source -r $CLASS -l $LG -d $TD $i if [ $? -ne 0 ] then echo "ERROR - msgfmt failed on ${i}, not updating translations" @@ -106,6 +112,8 @@ do RC=1 break fi + mv $TDX/messages_$LG.java $TDY + rm -rf $TD fi done rm -f $TMPFILE diff --git a/apps/i2ptunnel/java/build.xml b/apps/i2ptunnel/java/build.xml index 9c86a7ae19..7f3833c76b 100644 --- a/apps/i2ptunnel/java/build.xml +++ b/apps/i2ptunnel/java/build.xml @@ -136,6 +136,11 @@ <exec executable="sh" osfamily="windows" failifexecutionfails="false" > <arg value="./bundle-messages.sh" /> </exec> + <javac source="${javac.version}" target="${javac.version}" + includeAntRuntime="false" + srcdir="build/messages-src" destdir="../jsp/WEB-INF/classes"> + <compilerarg line="${javac.compilerargs}" /> + </javac> </target> <target name="poupdate" depends="compile, precompilejsp"> @@ -169,6 +174,11 @@ <exec executable="sh" osfamily="windows" failifexecutionfails="false" > <arg value="./bundle-messages-proxy.sh" /> </exec> + <javac source="${javac.version}" target="${javac.version}" + includeAntRuntime="false" + srcdir="build/messages-proxy-src" destdir="build/obj"> + <compilerarg line="${javac.compilerargs}" /> + </javac> </target> <target name="extractProxyTags"> diff --git a/apps/i2ptunnel/java/bundle-messages-proxy.sh b/apps/i2ptunnel/java/bundle-messages-proxy.sh index a777a5eed9..ac31340f79 100755 --- a/apps/i2ptunnel/java/bundle-messages-proxy.sh +++ b/apps/i2ptunnel/java/bundle-messages-proxy.sh @@ -99,7 +99,13 @@ do echo "Generating ${CLASS}_$LG ResourceBundle..." # convert to class files in build/obj - msgfmt --java --statistics -r $CLASS -l $LG -d build/obj $i + TD=build/messages-proxy-src-tmp + TDX=$TD/net/i2p/i2ptunnel/proxy + TD2=build/messages-proxy-src + TDY=$TD2/net/i2p/i2ptunnel/proxy + rm -rf $TD + mkdir -p $TD $TDY + msgfmt --java --statistics --source -r $CLASS -l $LG -d $TD $i if [ $? -ne 0 ] then echo "ERROR - msgfmt failed on ${i}, not updating translations" @@ -108,6 +114,8 @@ do RC=1 break fi + mv $TDX/messages_$LG.java $TDY + rm -rf $TD fi done rm -f $TMPFILE diff --git a/apps/i2ptunnel/java/bundle-messages.sh b/apps/i2ptunnel/java/bundle-messages.sh index 0b426cb4d2..00f26b712c 100755 --- a/apps/i2ptunnel/java/bundle-messages.sh +++ b/apps/i2ptunnel/java/bundle-messages.sh @@ -98,7 +98,13 @@ do echo "Generating ${CLASS}_$LG ResourceBundle..." # convert to class files in build/obj - msgfmt --java --statistics -r $CLASS -l $LG -d ../jsp/WEB-INF/classes $i + TD=build/messages-src-tmp + TDX=$TD/net/i2p/i2ptunnel/web + TD2=build/messages-src + TDY=$TD2/net/i2p/i2ptunnel/web + rm -rf $TD + mkdir -p $TD $TDY + msgfmt --java --statistics --source -r $CLASS -l $LG -d $TD $i if [ $? -ne 0 ] then echo "ERROR - msgfmt failed on ${i}, not updating translations" @@ -107,6 +113,8 @@ do RC=1 break fi + mv $TDX/messages_$LG.java $TDY + rm -rf $TD fi done rm -f $TMPFILE diff --git a/apps/ministreaming/java/build.xml b/apps/ministreaming/java/build.xml index 14f729446b..c3aaf4a55b 100644 --- a/apps/ministreaming/java/build.xml +++ b/apps/ministreaming/java/build.xml @@ -110,6 +110,11 @@ <exec executable="sh" osfamily="windows" failifexecutionfails="false" > <arg value="./bundle-messages.sh" /> </exec> + <javac source="${javac.version}" target="${javac.version}" + includeAntRuntime="false" + srcdir="build/messages-src" destdir="build/obj"> + <compilerarg line="${javac.compilerargs}" /> + </javac> </target> <target name="poupdate" depends="builddep, compile"> diff --git a/apps/ministreaming/java/bundle-messages.sh b/apps/ministreaming/java/bundle-messages.sh index 140efc61e1..3c9103fd93 100755 --- a/apps/ministreaming/java/bundle-messages.sh +++ b/apps/ministreaming/java/bundle-messages.sh @@ -97,7 +97,13 @@ do echo "Generating ${CLASS}_$LG ResourceBundle..." # convert to class files in build/obj - msgfmt --java --statistics -r $CLASS -l $LG -d build/obj $i + TD=build/messages-src-tmp + TDX=$TD/net/i2p/client/streaming + TD2=build/messages-src + TDY=$TD2/net/i2p/client/streaming + rm -rf $TD + mkdir -p $TD $TDY + msgfmt --java --statistics --source -r $CLASS -l $LG -d $TD $i if [ $? -ne 0 ] then echo "ERROR - msgfmt failed on ${i}, not updating translations" @@ -106,6 +112,8 @@ do RC=1 break fi + mv $TDX/messages_$LG.java $TDY + rm -rf $TD fi done rm -f $TMPFILE diff --git a/apps/routerconsole/java/build.xml b/apps/routerconsole/java/build.xml index a5bfe58f74..f2e7166089 100644 --- a/apps/routerconsole/java/build.xml +++ b/apps/routerconsole/java/build.xml @@ -158,6 +158,11 @@ <exec executable="sh" osfamily="windows" failifexecutionfails="false" > <arg value="./bundle-messages.sh" /> </exec> + <javac source="${javac.version}" target="${javac.version}" + includeAntRuntime="false" + srcdir="build/messages-src" destdir="build/obj"> + <compilerarg line="${javac.compilerargs}" /> + </javac> <!-- jar again to get the latest messages_*.class files --> <jar destfile="./build/routerconsole.jar" basedir="./build/obj" includes="**/*.class" update="true" /> </target> @@ -204,6 +209,11 @@ <exec executable="sh" osfamily="windows" failifexecutionfails="false" > <arg value="./bundle-messages-news.sh" /> </exec> + <javac source="${javac.version}" target="${javac.version}" + includeAntRuntime="false" + srcdir="build/messages-news-src" destdir="build/obj"> + <compilerarg line="${javac.compilerargs}" /> + </javac> </target> <target name="bundle-countries" unless="no.bundle"> @@ -217,6 +227,11 @@ <exec executable="sh" osfamily="windows" failifexecutionfails="false" > <arg value="./bundle-messages-countries.sh" /> </exec> + <javac source="${javac.version}" target="${javac.version}" + includeAntRuntime="false" + srcdir="build/messages-countries-src" destdir="build/obj"> + <compilerarg line="${javac.compilerargs}" /> + </javac> </target> <target name="extractProxyTags"> diff --git a/apps/routerconsole/java/bundle-messages-countries.sh b/apps/routerconsole/java/bundle-messages-countries.sh index 23588e440f..77045ddadb 100755 --- a/apps/routerconsole/java/bundle-messages-countries.sh +++ b/apps/routerconsole/java/bundle-messages-countries.sh @@ -113,7 +113,13 @@ do echo "Generating ${CLASS}_$LG ResourceBundle..." # convert to class files in build/obj - msgfmt --java --statistics -r $CLASS -l $LG -d build/obj $i + TD=build/messages-countries-src-tmp + TDX=$TD/net/i2p/router/countries + TD2=build/messages-countries-src + TDY=$TD2/net/i2p/router/countries + rm -rf $TD + mkdir -p $TD $TDY + msgfmt --java --statistics --source -r $CLASS -l $LG -d $TD $i if [ $? -ne 0 ] then echo "ERROR - msgfmt failed on ${i}, not updating translations" @@ -122,6 +128,8 @@ do RC=1 break fi + mv $TDX/messages_$LG.java $TDY + rm -rf $TD fi done rm -f $TMPFILE diff --git a/apps/routerconsole/java/bundle-messages-news.sh b/apps/routerconsole/java/bundle-messages-news.sh index 759a3137b5..22137d1f15 100755 --- a/apps/routerconsole/java/bundle-messages-news.sh +++ b/apps/routerconsole/java/bundle-messages-news.sh @@ -99,7 +99,13 @@ do echo "Generating ${CLASS}_$LG ResourceBundle..." # convert to class files in build/obj - msgfmt --java --statistics -r $CLASS -l $LG -d build/obj $i + TD=build/messages-news-src-tmp + TDX=$TD/net/i2p/router/news + TD2=build/messages-news-src + TDY=$TD2/net/i2p/router/news + rm -rf $TD + mkdir -p $TD $TDY + msgfmt --java --statistics --source -r $CLASS -l $LG -d $TD $i if [ $? -ne 0 ] then echo "ERROR - msgfmt failed on ${i}, not updating translations" @@ -108,6 +114,8 @@ do RC=1 break fi + mv $TDX/messages_$LG.java $TDY + rm -rf $TD fi done rm -f $TMPFILE diff --git a/apps/routerconsole/java/bundle-messages.sh b/apps/routerconsole/java/bundle-messages.sh index dd100561ba..2f21375245 100755 --- a/apps/routerconsole/java/bundle-messages.sh +++ b/apps/routerconsole/java/bundle-messages.sh @@ -126,7 +126,13 @@ do echo "Generating ${CLASS}_$LG ResourceBundle..." # convert to class files in build/obj - msgfmt --java --statistics -r $CLASS -l $LG -d build/obj $i + TD=build/messages-src-tmp + TDX=$TD/net/i2p/router/web + TD2=build/messages-src + TDY=$TD2/net/i2p/router/web + rm -rf $TD + mkdir -p $TD $TDY + msgfmt --java --statistics --source -r $CLASS -l $LG -d $TD $i if [ $? -ne 0 ] then echo "ERROR - msgfmt failed on ${i}, not updating translations" @@ -135,6 +141,8 @@ do RC=1 break fi + mv $TDX/messages_$LG.java $TDY + rm -rf $TD fi done rm -f $TMPFILE diff --git a/apps/susidns/src/build.xml b/apps/susidns/src/build.xml index 482bedad0f..f5279d69b4 100644 --- a/apps/susidns/src/build.xml +++ b/apps/susidns/src/build.xml @@ -149,6 +149,11 @@ <exec executable="sh" osfamily="windows" failifexecutionfails="false" > <arg value="./bundle-messages.sh" /> </exec> + <javac source="${javac.version}" target="${javac.version}" + includeAntRuntime="false" + srcdir="build/messages-src" destdir="${bin}"> + <compilerarg line="${javac.compilerargs}" /> + </javac> </target> <target name="poupdate" depends="compile, precompilejsp"> @@ -171,7 +176,7 @@ <delete file="susidns.war" /> <delete> <fileset dir="." includes="**/*.class" /> - <fileset dir="." includes="tmp" /> + <fileset dir="." includes="tmp, build" /> <fileset dir="WEB-INF" includes="web-fragment.xml, web-out.xml" /> </delete> <delete dir="${bin}" /> diff --git a/apps/susidns/src/bundle-messages.sh b/apps/susidns/src/bundle-messages.sh index 25bfae4d7a..60aaa17d7b 100755 --- a/apps/susidns/src/bundle-messages.sh +++ b/apps/susidns/src/bundle-messages.sh @@ -99,7 +99,13 @@ do echo "Generating ${CLASS}_$LG ResourceBundle..." # convert to class files in build/obj - msgfmt --java --statistics -r $CLASS -l $LG -d WEB-INF/classes $i + TD=build/messages-src-tmp + TDX=$TD/i2p/susi/dns + TD2=build/messages-src + TDY=$TD2/i2p/susi/dns + rm -rf $TD + mkdir -p $TD $TDY + msgfmt --java --statistics --source -r $CLASS -l $LG -d $TD $i if [ $? -ne 0 ] then echo "ERROR - msgfmt failed on ${i}, not updating translations" @@ -108,6 +114,8 @@ do RC=1 break fi + mv $TDX/messages_$LG.java $TDY + rm -rf $TD fi done rm -f $TMPFILE diff --git a/apps/susimail/build.xml b/apps/susimail/build.xml index 3a553c6014..2a524b2b65 100644 --- a/apps/susimail/build.xml +++ b/apps/susimail/build.xml @@ -113,6 +113,11 @@ <exec executable="sh" osfamily="windows" failifexecutionfails="false" > <arg value="./bundle-messages.sh" /> </exec> + <javac source="${javac.version}" target="${javac.version}" + includeAntRuntime="false" + srcdir="build/messages-src" destdir="src/WEB-INF/classes"> + <compilerarg line="${javac.compilerargs}" /> + </javac> </target> <target name="poupdate" depends="builddep, compile"> diff --git a/apps/susimail/bundle-messages.sh b/apps/susimail/bundle-messages.sh index 8d8b55fc54..330fa7988e 100644 --- a/apps/susimail/bundle-messages.sh +++ b/apps/susimail/bundle-messages.sh @@ -97,7 +97,13 @@ do echo "Generating ${CLASS}_$LG ResourceBundle..." # convert to class files in build/obj - msgfmt --java --statistics -r $CLASS -l $LG -d src/WEB-INF/classes $i + TD=build/messages-src-tmp + TDX=$TD/i2p/susi/webmail + TD2=build/messages-src + TDY=$TD2/i2p/susi/webmail + rm -rf $TD + mkdir -p $TD $TDY + msgfmt --java --statistics --source -r $CLASS -l $LG -d $TD $i if [ $? -ne 0 ] then echo "ERROR - msgfmt failed on ${i}, not updating translations" @@ -106,6 +112,8 @@ do RC=1 break fi + mv $TDX/messages_$LG.java $TDY + rm -rf $TD fi done rm -f $TMPFILE -- GitLab