I2P Address: [http://git.idk.i2p]

Skip to content
Snippets Groups Projects
build.xml 62.4 KiB
Newer Older
jrandom's avatar
jrandom committed
<?xml version="1.0" encoding="ISO-8859-1"?>
<project basedir="." default="all" name="i2p">
    <!-- Things you might want to change -->
    <!-- This keeps gcj a lot quieter -->
    <!--
        <property name="javac.compilerargs" value="-warn:-unchecked,raw,unused,serial" />
    -->
    <!-- Additional classpath. No longer required; we find pack200 classes at runtime.
         See core/java/src/net/i2p/util/FileUtil.java for more info.
    -->
    <!--
        <property name="javac.classpath" value="/PATH/TO/pack200.jar" />
    -->
    <!-- change this to false if you don't have gettext -->
    <property name="require.gettext" value="true" />

    <!-- You probably don't want to change anything from here down -->
zzz's avatar
zzz committed
    <target name="help" depends="all" />
    <target name="all" >
        <echo message="Useful targets: " />
zzz's avatar
zzz committed
        <echo message="  pkg:       distclean then package everything up (installer, clean tarball, update tarball)" />
        <echo message="  dist:      pkg and javadoc" />
jrandom's avatar
jrandom committed
        <echo message="  installer: build the GUI installer" />
        <echo message="  tarball:   tar the full install into i2p.tar.bz2 (extracts to build a new clean install)" />
        <echo message="  updater:   Package the built files in i2pupdate.zip (extracts safely over existing installs)" />
        <echo message="  updater200: Updater compressed with pack200 (creates i2pupdate200.zip, 60% smaller)" />
zzz's avatar
zzz committed
        <echo message="  updaterWithJavadoc: updater including the javadocs, for display in the console" />
        <echo message="  updaterWithJetty: Updater including Jetty" />
        <echo message="  updaterWithJettyFixes: updater including local jetty patches" />
zzz's avatar
zzz committed
        <echo message="  updaterWithGeoIP: updater including GeoIP Files" />
        <echo message="  updaterWithJettyFixesAndGeoIP" />
        <echo message="  updaterSmall:   updater with the essentials only - no SAM, i2psnark, SusiMail, SusiDNS, news.xml, or history.txt" />
        <echo message="  updaterRouter:  updater with the i2p.jar and router.jar only" />
        <echo message="  distclean: clean up all derived files" />
	<!-- <echo message="  syndie:    generate a standalone syndie install" /> -->
        <echo message="  desktopgui: generate a standalone desktopgui install" />
jrandom's avatar
jrandom committed
        <echo message="  i2psnark:  generate a standalone i2psnark install" />
        <echo message="  justBOB:  generate a standalone BOB-one.jar" />
jrandom's avatar
jrandom committed
        <echo message="  javadoc:   generate javadoc for the entire project into ./build/javadoc" />
        <echo message="  slackpkg:  generate Slackware packages in ./Slackware/i2p and ./Slackware/i2p-base" />
dream's avatar
dream committed
        <echo message="  debianhowto: instructions on building Debian packages" />
	<echo message="  debian: generate Debian packages in ../" />
kytv's avatar
kytv committed
	<echo message="          run &quot;ant debianhowto&quot; for instructions" />
	<echo message="  debian-clean: rollback debian specific patches and run the &quot;distclean&quot; target (done automatically at the end of the &quot;debian&quot; target)" />
	<!-- <echo message="  debianrepo: build a Debian repository (reprepro required)" /> -->
        <echo message="  poupdate: update the .po files for translators" />
        <echo message="  pkg-portable-win32:  build a minimum portable version for win32" />
   </target>
dream's avatar
dream committed
    <target name="debianhowto">
kytv's avatar
kytv committed
	    <echo message="To build debian packages, you must make sure that you have" />
	    <echo message="the necessary build-dependencies installed." />
	    <echo message="The packages required to build can be found in the file "/>
	    <echo message="&quot;debian/control&quot; in both the Build-Depends and Build-Depends-Indep fields."/>
	    <echo message="In addition to those packages, be sure to install &quot;fakeroot&quot;,"/>
	    <echo message="&quot;quilt&quot; and &quot;build-essential&quot;!" />
	    <echo message="" />
	    <echo message="The following command will install all dependencies for you:" />
	    <echo message="apt-get install debhelper ant debconf default-jdk libgmp3-dev po-debconf fakeroot build-essential quilt" />
kytv's avatar
kytv committed
	    <echo message=" " />
	    <echo message="Once the dependencies are installed, run &quot;ant debian&quot;"/>
	    <echo message="to patch the source and build the packages." />
    </target>
    <target name="dist" depends="pkg, javadoc">
zzz's avatar
zzz committed
    <target name="build" depends="build2">
        <!-- so we don't build standalone for the updater -->
zzz's avatar
zzz committed
        <!-- This builds apps/i2psnark/java/i2psnark-standalone.zip,
          -   which we don't distribute anywhere...
zzz's avatar
zzz committed
        <ant dir="apps/i2psnark/java/" target="standalone" />
zzz's avatar
zzz committed
        -->
zzz's avatar
zzz committed
    </target>
    <target name="build2" depends="builddep, jar, buildWEB" />
    <target name="buildSmall" depends="builddepSmall, jarSmall, buildWEB" />
    <target name="buildclean" depends="distclean, build" />

    <target name="builddep" depends="builddepSmall, buildBOB, buildSAM, buildSusiMail, buildSusiDNS, buildI2PSnark" />

    <target name="builddepSmall" depends="buildrouter, buildSystray, buildDesktopGui, buildRouterConsole, buildStreaming, buildI2PTunnel, buildAddressbook" />

    <!-- start of buildX, one for each sub-build.xml.
         Do not put ant tasks in the sub-build.xmls anymore,
         so the build will go faster.
      -->

zzz's avatar
zzz committed
    <target name="buildBOB" depends="buildStreaming" >
    </target>

    <target name="buildSAM" depends="buildStreaming" >
        <ant dir="apps/sam/java/" target="jar" />
    </target>

    <target name="buildSusiMail" depends="buildCore, buildJetty" >
        <ant dir="apps/susimail/" target="war" />
    </target>

    <target name="buildSusiDNS" depends="buildCore, buildJetty" >
        <ant dir="apps/susidns/src" target="all" />
    </target>

    <target name="buildI2PSnark" depends="buildStreaming, buildJetty" >
zzz's avatar
zzz committed
        <ant dir="apps/i2psnark/java/" target="war" />

    <target name="buildAddressbook" depends="buildCore, buildJetty" >
        <ant dir="apps/addressbook/" target="war" />
    </target>

    <target name="buildI2PTunnel" depends="buildStreaming, buildJetty" >
        <ant dir="apps/i2ptunnel/java/" target="build" />
    </target>

    <target name="buildDesktopGui" depends="buildCore, buildrouter" >
zzz's avatar
zzz committed
<!--
        <ant dir="apps/desktopgui" target="clean" />
zzz's avatar
zzz committed
-->
        <ant dir="apps/desktopgui" target="jar" />
    </target>

    <target name="buildRouterConsole" depends="buildrouter, buildSystray, buildDesktopGui, buildJetty" >
zzz's avatar
zzz committed
        <ant dir="apps/routerconsole/java/" target="jar" />
zzz's avatar
zzz committed
    <target name="buildJetty" depends="buildProperties" >
        <ant dir="apps/jetty" target="build" />
    </target>

    <target name="buildSystray" depends="buildCore" >
        <ant dir="apps/systray/java/" target="jar" />
    </target>

    <target name="buildStreaming" depends="buildMinistreaming" >
jrandom's avatar
jrandom committed
        <ant dir="apps/streaming/java/" target="jar" />
    </target>

    <target name="buildMinistreaming" depends="buildCore" >
        <ant dir="apps/ministreaming/java/" target="jar" />
    </target>

    <target name="buildRouter" depends="buildrouter" />
    <target name="buildrouter" depends="buildCore" >
jrandom's avatar
jrandom committed
        <ant dir="router/java/" target="jar" />
        <copy file="router/java/build/router.jar" todir="build/" />
    </target>
zzz's avatar
zzz committed
    <target name="buildCore" depends="buildProperties" >
        <ant dir="core/java/" target="jar" />
        <copy file="core/java/build/i2p.jar" todir="build/" />
    </target>

zzz's avatar
zzz committed
    <target name="buildJrobin" depends="buildProperties" >
        <!-- take only what we need from the jrobin jar -->
        <jar destfile="build/jrobin.jar" >
            <zipfileset src="apps/jrobin/jrobin-1.5.9.1.jar"
                        excludes="org/jrobin/cmd/ org/jrobin/convertor/ org/jrobin/inspector/" />
            <manifest>
                <attribute name="Build-Date" value="${build.timestamp}" />
                <attribute name="Base-Revision" value="${workspace.version}" />
	    </manifest>
        </jar>
    </target>

    <target name="checkForMtn" >
        <available property="mtn.available" file="_MTN" type="dir" />
    </target>

    <target name="getMtnRev" depends="checkForMtn" if="mtn.available" >
zzz's avatar
zzz committed
        <exec executable="mtn" outputproperty="workspace.version" errorproperty="mtn.error1" failifexecutionfails="false" >
            <arg value="automate" />
            <arg value="get_base_revision_id" />
        </exec>
    </target>

    <target name="buildProperties" depends="getMtnRev" >
        <!-- default if not set above -->
        <property name="workspace.version" value="unknown" />
zzz's avatar
zzz committed
        <tstamp>
            <format property="build.timestamp" pattern="yyyy-MM-dd HH:mm:ss z" timezone="UTC" locale="en" />
        </tstamp>
    </target>

    <!-- end of sub-build.xml targets -->

    <target name="buildWEB" depends="buildRouterConsole" >
        <copy file="apps/routerconsole/java/build/routerconsole.jar" todir="build/" />
        <copy file="apps/routerconsole/java/build/routerconsole.war" todir="build/" />
        <copy file="apps/jetty/jettylib/org.mortbay.jetty.jar" todir="build/" />
        <copy file="apps/jetty/jettylib/jasper-compiler.jar" todir="build/" />
        <copy file="apps/jetty/jettylib/jasper-runtime.jar" todir="build/" />
jrandom's avatar
jrandom committed
        <copy file="apps/jetty/jettylib/commons-logging.jar" todir="build/" />
        <copy file="apps/jetty/jettylib/commons-el.jar" todir="build/" />
        <copy file="apps/jetty/jettylib/javax.servlet.jar" todir="build/" />
    </target>
jrandom's avatar
jrandom committed
    <target name="buildexe">
        <condition property="noExe">
	    <os arch="x86_64" />
	</condition>
jrandom's avatar
jrandom committed
        <condition property="noExe">
	    <os arch="ppc" />
	</condition>
        <condition property="noExe">
	    <os arch="amd64" />
	</condition>
	<condition property="noExe">
	   <not>
	    <or>
	     <os name="Linux" />
	     <os family="windows" />
	    </or>
	   </not>
	</condition>
jrandom's avatar
jrandom committed
	<ant target="doBuildEXE" />
    </target>
zzz's avatar
zzz committed
    <target name="doBuildEXE" depends="buildProperties" unless="noExe">
jrandom's avatar
jrandom committed
        <jar destfile="./build/launchi2p.jar">
            <manifest>
	     <attribute name="Main-Class" value="net.i2p.router.RouterLaunch" />
	     <attribute name="Class-Path" value="lib/i2p.jar lib/router.jar lib/jbigi.jar lib/BOB.jar lib/sam.jar lib/mstreaming.jar lib/streaming.jar lib/routerconsole.jar lib/i2ptunnel.jar lib/org.mortbay.jetty.jar lib/javax.servlet.jar lib/jasper-compiler.jar lib/jasper-runtime.jar lib/commons-logging.jar lib/commons-el.jar lib/wrapper.jar lib/systray.jar lib/systray4j.jar lib/desktopgui.jar" />
zzz's avatar
zzz committed
             <attribute name="Build-Date" value="${build.timestamp}" />
             <attribute name="Base-Revision" value="${workspace.version}" />
jrandom's avatar
jrandom committed
	    </manifest>
        </jar>
	<!-- now the standalone launcher exe -->
	<taskdef name="launch4j"
                 classname="net.sf.launch4j.ant.Launch4jTask"
                 classpath="${basedir}/installer/lib/launch4j/launch4j.jar:${basedir}/installer/lib/launch4j/lib/xstream.jar" />
        <launch4j configFile="./installer/i2pstandalone.xml" />
	<!-- thazzit -->
    </target>
    <target name="jar" depends="jarSmall" >
        <copy file="apps/BOB/dist/BOB.jar" todir="build/" />
        <copy file="apps/sam/java/build/sam.jar" todir="build/" />
        <copy file="apps/susimail/susimail.war" todir="build/" />
        <copy file="apps/susidns/src/susidns.war" todir="build/" />
        <copy file="apps/i2psnark/i2psnark.war" todir="build/" />
        <copy file="apps/i2psnark/java/build/i2psnark.jar" todir="build/" />
zzz's avatar
zzz committed
    <target name="jarSmall" depends="builddepSmall, buildJrobin" >
        <copy file="core/java/build/i2p.jar" todir="build/" />
        <copy file="router/java/build/router.jar" todir="build/" />
        <copy file="apps/ministreaming/java/build/mstreaming.jar" todir="build/" />
jrandom's avatar
jrandom committed
        <copy file="apps/streaming/java/build/streaming.jar" todir="build/" />
        <copy file="apps/i2ptunnel/java/build/i2ptunnel.jar" todir="build/" />
        <copy file="apps/i2ptunnel/java/build/i2ptunnel.war" todir="build/" />
        <copy file="apps/systray/java/build/systray.jar" todir="build/" />
        <copy file="apps/desktopgui/dist/desktopgui.jar" todir="build/" />
jrandom's avatar
jrandom committed
        <copy file="apps/addressbook/dist/addressbook.war" todir="build/" />
    </target>
    <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" />
            <arg value="changed" />
            <arg value="installer/lib/jbigi" />
        </exec>
        <!-- \n in an attribute value generates an invalid manifest -->
        <exec executable="tr" inputstring="${workspace.changes.jbigi}" outputproperty="workspace.changes.jbigi.tr" errorproperty="mtn.error2" failifexecutionfails="false" >
            <arg value="-s" />
            <arg value="[:space:]" />
            <arg value="," />
        </exec>
    </target>

    <target name="jbigi" depends="buildProperties, jbigi-list-changes" >
        <!-- set if unset -->
        <property name="workspace.changes.jbigi.tr" value="" />
        <jar destfile="build/jbigi.jar" whenmanifestonly="fail" >
            <fileset dir="installer/lib/jbigi" includes="*.so *.dll *.jnilib" />
            <manifest>
                <attribute name="Build-Date" value="${build.timestamp}" />
                <attribute name="Base-Revision" value="${workspace.version}" />
                <attribute name="Workspace-Changes" value="${workspace.changes.jbigi.tr}" />
            </manifest>
        </jar>
    </target>

    <target name="jbigi-windows-only" depends="buildProperties, jbigi-list-changes" >
        <!-- set if unset -->
        <property name="workspace.changes.jbigi.tr" value="" />
        <jar destfile="build/jbigi.jar" whenmanifestonly="fail" >
            <fileset dir="installer/lib/jbigi" includes="*windows*.dll" />
            <manifest>
                <attribute name="Build-Date" value="${build.timestamp}" />
                <attribute name="Base-Revision" value="${workspace.version}" />
                <attribute name="Workspace-Changes" value="${workspace.changes.jbigi.tr}" />
            </manifest>
        </jar>
    </target>

    <target name="jbigi-linux-only"  depends="buildProperties, jbigi-list-changes" >
        <!-- set if unset -->
        <property name="workspace.changes.jbigi.tr" value="" />
        <jar destfile="build/jbigi.jar"  whenmanifestonly="fail" >
            <fileset dir="installer/lib/jbigi" includes="*linux*.so" />
            <manifest>
                <attribute name="Build-Date" value="${build.timestamp}" />
                <attribute name="Base-Revision" value="${workspace.version}" />
                <attribute name="Workspace-Changes" value="${workspace.changes.jbigi.tr}" />
            </manifest>
        </jar>
    </target>

    <!-- the apps need to compile the jsps to poupdate -->
    <target name="poupdate" depends="buildRouter, buildStreaming, buildSystray, buildJetty, buildDesktopGui" >
walking's avatar
walking committed
        <echo message="Setting environment variable LG2 to a lang code (eg: de,zh,nl etc)" />
        <echo message=" will restrict language update to the language you specified, leaving other language untact." />
        <ant dir="apps/routerconsole/java/" target="poupdate" />
        <ant dir="apps/i2psnark/java/" target="poupdate" />
zzz's avatar
zzz committed
        <ant dir="apps/i2ptunnel/java/" target="poupdate" />
zzz's avatar
zzz committed
        <ant dir="apps/susidns/src/" target="poupdate" />
        <ant dir="apps/susimail/" target="poupdate" />
        <ant dir="apps/desktopgui" target="poupdate" />
    <target name="javadoc">
zzz's avatar
zzz committed
        <ant dir="apps/jetty" target="ensureJettylib" />
        <mkdir dir="./build" />
        <mkdir dir="./build/javadoc" />
zzz's avatar
zzz committed
        <!-- get release and build version numbers -->
        <exec executable="grep" outputproperty="versionLine" >
            <arg value="public final static String VERSION" />
	    <arg value="core/java/src/net/i2p/CoreVersion.java" />
        </exec>
        <exec executable="cut" inputstring="${versionLine}" outputproperty="release.number" >
            <arg value="-f2" />
	    <arg value="-d&quot;" />
        </exec>
        <exec executable="grep" outputproperty="buildLine" >
            <arg value="public final static long BUILD" />
	    <arg value="router/java/src/net/i2p/router/RouterVersion.java" />
        </exec>
        <exec executable="cut" inputstring="${buildLine}" outputproperty="build.temp" >
            <arg value="-f2" />
	    <arg value="-d=" />
        </exec>
        <exec executable="cut" inputstring="${build.temp}" outputproperty="build.number" >
            <arg value="-f1" />
	    <arg value="-d;" />
        </exec>
            destdir="./build/javadoc" 
            packagenames="*" 
            use="true" 
            splitindex="true" 
zzz's avatar
zzz committed
            doctitle="I2P Javadocs for Release ${release.number} Build ${build.number}"
            windowtitle="I2P Anonymous Network - Java Documentation - Version ${release.number}">
zzz's avatar
zzz committed
            <group title="Core SDK (i2p.jar)" packages="net.i2p:net.i2p.*:net.i2p.client:net.i2p.client.*:net.i2p.internal:net.i2p.internal.*:freenet.support.CPUInformation:org.bouncycastle.crypto:org.bouncycastle.crypto.*:gnu.crypto.*:gnu.gettext:org.xlattice.crypto.filters:com.nettgryppa.security:net.metanotion.*" />
            <group title="Streaming Library" packages="net.i2p.client.streaming" />
            <group title="Router" packages="net.i2p.router:net.i2p.router.*:net.i2p.data.i2np:org.cybergarage.*:org.freenetproject" />
            <group title="Router Console" packages="net.i2p.router.web" />
            <group title="Addressbook Application" packages="net.i2p.addressbook" />
            <group title="BOB Bridge" packages="net.i2p.BOB" />
            <group title="I2PSnark Application" packages="org.klomp.snark:org.klomp.snark.*" />
            <group title="I2PTunnel Application" packages="net.i2p.i2ptunnel:net.i2p.i2ptunnel.*" />
            <group title="SAM Bridge" packages="net.i2p.sam:net.i2p.sam.client" />
            <group title="SusiDNS Application" packages="i2p.susi.dns" />
            <group title="SusiMail Application" packages="i2p.susi.webmail:i2p.susi.webmail.*:i2p.susi.debug:i2p.susi.util" />
            <group title="Systray Application" packages="net.i2p.apps.systray" />
            <group title="Desktopgui Application" packages="net.i2p.desktopgui.*" />
jrandom's avatar
jrandom committed
            <sourcepath>
                <pathelement location="core/java/src" />
jrandom's avatar
jrandom committed
                <!--<pathelement location="core/java/test" />-->
jrandom's avatar
jrandom committed
                <pathelement location="router/java/src" />
jrandom's avatar
jrandom committed
                <!--<pathelement location="router/java/test" />-->
jrandom's avatar
jrandom committed
                <pathelement location="apps/ministreaming/java/src" />
jrandom's avatar
jrandom committed
                <pathelement location="apps/streaming/java/src" />
jrandom's avatar
jrandom committed
                <pathelement location="apps/i2ptunnel/java/src" />
                <pathelement location="apps/systray/java/src" />
                <pathelement location="apps/desktopgui/src" />
jrandom's avatar
jrandom committed
                <pathelement location="apps/routerconsole/java/src" />
                <pathelement location="apps/addressbook/java/src" />
                <pathelement location="apps/i2psnark/java/src" />
                <pathelement location="apps/sam/java/src" />
                <pathelement location="apps/BOB/src" />
                <pathelement location="apps/susidns/src/java/src" />
                <pathelement location="apps/susimail/src/src" />
jrandom's avatar
jrandom committed
            </sourcepath>
            <classpath>
                <pathelement location="apps/jetty/jettylib/org.mortbay.jetty.jar" />
sponge's avatar
sponge committed
                <pathelement location="apps/jetty/jettylib/javax.servlet.jar" />
jrandom's avatar
jrandom committed
                <pathelement location="apps/systray/java/lib/systray4j.jar" />
zzz's avatar
zzz committed
                <pathelement location="apps/jrobin/jrobin-1.5.9.1.jar" />
                <pathelement location="installer/lib/wrapper/all/wrapper.jar" />
sponge's avatar
sponge committed
                <pathelement location="core/lib/junit.jar" />                
jrandom's avatar
jrandom committed
            </classpath>
zzz's avatar
zzz committed
            <link offline="true" href="http://download.oracle.com/javase/6/docs/api/" packagelistLoc="installer/resources/package-lists/java/" />
            <link offline="true" href="http://docs.i2p2.de/jetty/javadoc/" packagelistLoc="installer/resources/package-lists/jetty/" />
            <link offline="true" href="http://docs.i2p2.de/jrobin/javadoc/" packagelistLoc="installer/resources/package-lists/jrobin/" />
jrandom's avatar
jrandom committed
        </javadoc>
    </target>
        <delete dir="./build" />
jrandom's avatar
jrandom committed
        <delete file="i2pinstall.exe" failonerror="false" quiet="true" />	
jrandom's avatar
jrandom committed
        <delete file="i2p.exe" failonerror="false" quiet="true" />
        <delete file="syndie-standalone.zip" failonerror="false" quiet="true" />
jrandom's avatar
jrandom committed
        <delete file="i2psnark-standalone.zip" failonerror="false" quiet="true" />
        <delete file="BOB-one.jar" failonerror="false" quiet="true" />	
	<delete dir="core/c/jbigi/bin" />
	<delete dir="core/c/jbigi/lib" />
	<delete dir="core/c/jcpuid/lib" />
        <delete dir="debian/tmp" />
HungryHobo's avatar
HungryHobo committed
        <delete dir="debian/db" />
        <delete file="debian/files" />
	<delete file="debian/copyright" />
HungryHobo's avatar
HungryHobo committed
        <delete file="debian/build" />
    </target>
    <target name="distclean" depends="clean">
zzz's avatar
zzz committed
        <delete includeemptydirs="true" failonerror="false" >
            <fileset dir="debian/packages" followSymlinks="false" />
HungryHobo's avatar
HungryHobo committed
        </delete>
        <delete dir="debian/repo" />
        <ant dir="core/java/" target="distclean" />
        <ant dir="router/java/" target="distclean" />
        <ant dir="apps/ministreaming/java/" target="distclean" />
jrandom's avatar
jrandom committed
        <ant dir="apps/streaming/java/" target="distclean" />
        <ant dir="apps/i2ptunnel/java/" target="distclean" />
        <ant dir="apps/sam/java/" target="distclean" />
        <ant dir="apps/desktopgui" target="clean" />
        <ant dir="apps/routerconsole/java/" target="distclean" />
jrandom's avatar
jrandom committed
        <ant dir="apps/addressbook/" target="distclean" />
jrandom's avatar
jrandom committed
        <ant dir="apps/susimail/" target="distclean" />
jrandom's avatar
jrandom committed
        <ant dir="apps/susidns/src/" target="distclean" />
        <ant dir="apps/systray/java/" target="distclean" />
jrandom's avatar
jrandom committed
        <ant dir="apps/i2psnark/java/" target="distclean" />
        <ant dir="apps/jetty/" target="distclean" />
	<!-- 
		NOTE! We need to turn off the default excludes for these
		patterns to work. 
		These are the defaultexcludes in Ant as seen on
		http://ant.apache.org/manual/CoreTasks/defaultexcludes.html
		     **/*~
                     **/#*#
                     **/.#*
                     **/%*%
                     **/._*
                     **/CVS
                     **/CVS/**
                     **/.cvsignore
                     **/SCCS
                     **/SCCS/**
                     **/vssver.scc
                     **/.svn
                     **/.svn/**
                     **/.DS_Store
		The only recourse is to remove the offending ones.
		We do this here, as we only need one change, and then put it
		back after we are done with it.
	-->
	<defaultexcludes remove="**/*~"/>

            <fileset dir="." includes="**/*.class **/*.java~ **/*.txt~ **/*.xml~ **/*.sh~ **/*.SlackBuild~" />
	    <!-- 
	    	Less common, but they pollute my workspace here, so we
            	might as well nuke these as well. Are there any others?
            	
            	!!??? Why don't we just nuke "**/*~" ???!!

            	++Sponge
            -->
        </delete>
	<!--
		Now we put the defaults back
	-->
	<defaultexcludes default="true"/>
    </target>
    <target name="pkg" depends="distclean, updater, preppkg, installer" />
    <target name="pkgclean" depends="deletepkg-temp">
            <fileset dir="." includes="i2p.tar.bz2 install.jar i2pupdate.zip i2pupdate200.zip" />
        </delete>
    </target>
    <target name="preppkg" depends="preppkg-linux, preppkg-windows, jbigi">
        <copy file="build/jbigi.jar" todir="pkg-temp/lib" />
zzz's avatar
zzz committed
        <copy todir="pkg-temp/lib/wrapper/freebsd/">
            <fileset dir="installer/lib/wrapper/freebsd/" />
        </copy>
	<copy todir="pkg-temp/lib/wrapper/freebsd64/">
	    <fileset dir="installer/lib/wrapper/freebsd64" />
        </copy>
zzz's avatar
zzz committed
        <copy todir="pkg-temp/lib/wrapper/macosx/">
            <fileset dir="installer/lib/wrapper/macosx/" />
        </copy>
        <copy todir="pkg-temp/lib/wrapper/solaris/">
            <fileset dir="installer/lib/wrapper/solaris/" />
        </copy>
    </target>

    <target name="preppkg-windows" depends="preppkg-base, buildexe">
        <copy file="i2p.exe" todir="pkg-temp/" failonerror="false" />
        <copy file="apps/systray/java/lib/systray4j.dll" todir="pkg-temp/lib" />
        <copy file="apps/systray/java/resources/iggy.ico" todir="pkg-temp/icons" />
        <copy file="apps/systray/java/resources/iggy.xpm" todir="pkg-temp/icons" />
        <copy file="installer/resources/eepget.bat" todir="pkg-temp/" />
        <copy file="installer/resources/i2prouter.bat" todir="pkg-temp/" />
        <copy file="installer/resources/fixperms.bat" todir="pkg-temp/" />
        <copy file="installer/resources/install_i2p_service_winnt.bat" todir="pkg-temp/" />
        <copy file="installer/resources/set_config_dir_for_nt_service.bat" todir="pkg-temp/" />
        <copy file="installer/resources/uninstall_i2p_service_winnt.bat" todir="pkg-temp/" />
        <copy file="installer/lib/wrapper/all/wrapper.jar" todir="pkg-temp/lib" />
        <copy todir="pkg-temp/lib/wrapper/win32/">
            <fileset dir="installer/lib/wrapper/win32/" />
        </copy>
kytv's avatar
kytv committed
	<copy todir="pkg-temp/lib/wrapper/win64/">
	    <fileset dir="installer/lib/wrapper/win64/" />
        </copy>
walking's avatar
walking committed
    <!-- only what is needed for debian, etc. -->
    <target name="preppkg-linux-only" depends="preppkg-linux, jbigi-linux-only" >
        <copy file="build/jbigi.jar" todir="pkg-temp/lib" />
        <copy file="installer/lib/wrapper/all/wrapper.jar" todir="pkg-temp/lib" />
walking's avatar
walking committed
    </target>

zzz's avatar
zzz committed
    <target name="preppkg-linux" depends="preppkg-base">
        <copy file="installer/resources/runplain.sh" todir="pkg-temp/" />
kytv's avatar
kytv committed
	<!-- <copy file="apps/i2psnark/launch-i2psnark" todir="pkg-temp/" /> old feature that per zzz isn't used-->
zzz's avatar
zzz committed
        <copy file="installer/resources/eepget" todir="pkg-temp/" />
        <copy file="installer/resources/i2prouter" todir="pkg-temp/" />
        <copy file="installer/resources/osid" todir="pkg-temp/" />
        <copy file="installer/resources/postinstall.sh" todir="pkg-temp/" />
zzz's avatar
zzz committed
        <copy todir="pkg-temp/man/">
            <fileset dir="installer/resources/man/" />
        </copy>
zzz's avatar
zzz committed
        <copy todir="pkg-temp/lib/wrapper/linux/">
            <fileset dir="installer/lib/wrapper/linux/" />
        </copy>
        <copy todir="pkg-temp/lib/wrapper/linux64/">
            <fileset dir="installer/lib/wrapper/linux64/" />
        </copy>
    </target>

zzz's avatar
zzz committed
    <target name="preppkg-base" depends="build, preplicenses, prepConsoleDocs, prepthemeupdates, prepCertificates">
        <!-- if updater200 was run previously, it left *.pack files in pkg-temp -->
        <delete>
            <fileset dir="pkg-temp" includes="**/*.jar.pack **/*.war.pack" />
        </delete>
        <copy file="build/i2p.jar" todir="pkg-temp/lib/" />
        <copy file="build/i2ptunnel.jar" todir="pkg-temp/lib/" />
        <copy file="build/jasper-compiler.jar" todir="pkg-temp/lib/" />
        <copy file="build/jasper-runtime.jar" todir="pkg-temp/lib/" />
jrandom's avatar
jrandom committed
        <copy file="build/commons-logging.jar" todir="pkg-temp/lib/" />
        <copy file="build/commons-el.jar" todir="pkg-temp/lib/" />
        <copy file="build/javax.servlet.jar" todir="pkg-temp/lib/" />
        <copy file="build/mstreaming.jar" todir="pkg-temp/lib/" />
jrandom's avatar
jrandom committed
        <copy file="build/streaming.jar" todir="pkg-temp/lib/" />
        <copy file="build/org.mortbay.jetty.jar" todir="pkg-temp/lib/" />
        <copy file="build/router.jar" todir="pkg-temp/lib/" />
        <copy file="build/desktopgui.jar" todir="pkg-temp/lib/" />
        <copy file="build/routerconsole.jar" todir="pkg-temp/lib/" />
        <!-- pulled out of routerconsole.jar in 0.7.12; name without version so we can overwrite if we upgrade  -->
zzz's avatar
zzz committed
        <copy file="build/jrobin.jar" tofile="pkg-temp/lib/jrobin.jar" />
        <copy file="build/sam.jar" todir="pkg-temp/lib/" />
        <copy file="build/BOB.jar" todir="pkg-temp/lib/" />
        <copy file="build/systray.jar" todir="pkg-temp/lib" />
jrandom's avatar
jrandom committed
        <copy file="build/i2psnark.jar" todir="pkg-temp/lib/" />
        <copy file="apps/systray/java/lib/systray4j.jar" todir="pkg-temp/lib" />
        <copy file="build/i2ptunnel.war" todir="pkg-temp/webapps/" />
        <copy file="build/routerconsole.war" todir="pkg-temp/webapps/" />
jrandom's avatar
jrandom committed
        <copy file="build/addressbook.war" todir="pkg-temp/webapps/" />
jrandom's avatar
jrandom committed
        <copy file="build/susimail.war" todir="pkg-temp/webapps/" />
jrandom's avatar
jrandom committed
        <copy file="build/susidns.war" todir="pkg-temp/webapps/" />
        <copy file="apps/susidns/src/WEB-INF/lib/jstl.jar" todir="pkg-temp/lib/" />
        <copy file="apps/susidns/src/WEB-INF/lib/standard.jar" todir="pkg-temp/lib/" />
jrandom's avatar
jrandom committed
        <copy file="build/i2psnark.war" todir="pkg-temp/webapps/" />
	<!-- 
	     Disabling per zzz's statement on IRC: jetty-i2psnark.xml is for an obscure feature that is broken anyway, 
	     					   you can remove the file, the link, and the patch from the package

		     So I'm going one further: I'm disabling it in build.xml 
		     +++kytv
		     -->
	<!--
	<copy file="apps/i2psnark/jetty-i2psnark.xml" todir="pkg-temp/" /> 
	-->
zzz's avatar
zzz committed
        <copy file="apps/i2psnark/i2psnark.config" todir="pkg-temp/" />
zzz's avatar
zzz committed
        <copy file="installer/resources/blocklist.txt" todir="pkg-temp/" />
        <copy file="installer/resources/clients.config" todir="pkg-temp/" />
        <copy file="installer/resources/i2ptunnel.config" todir="pkg-temp/" />
        <copy file="installer/resources/systray.config" todir="pkg-temp/" />
        <copy file="installer/resources/wrapper.config" todir="pkg-temp/" />
        <copy file="installer/resources/hosts.txt" todir="pkg-temp/" />
zzz's avatar
zzz committed
        <copy file="INSTALL-headless.txt" todir="pkg-temp/" />
zzz's avatar
zzz committed
        <!-- overwrite the truncated history put in by the updater -->
        <copy file="history.txt" todir="pkg-temp/" overwrite="true" />
smeghead's avatar
smeghead committed
        <mkdir dir="pkg-temp/scripts" />
        <copy file="apps/proxyscript/i2pProxy.pac" todir="pkg-temp/scripts/" />
jrandom's avatar
jrandom committed
        <copy file="installer/resources/startconsole.html" todir="pkg-temp/docs/" />
        <copy file="installer/resources/start.ico" todir="pkg-temp/docs/" />
        <copy file="installer/resources/console.ico" todir="pkg-temp/docs/" />
        <copy file="installer/resources/uninstall.ico" todir="pkg-temp/docs/" />
        <!-- Eepsite stuff here -->
jrandom's avatar
jrandom committed
        <mkdir dir="pkg-temp/eepsite" />
        <mkdir dir="pkg-temp/eepsite/webapps" />
        <mkdir dir="pkg-temp/eepsite/logs" />
jrandom's avatar
jrandom committed
        <mkdir dir="pkg-temp/eepsite/cgi-bin" />
        <mkdir dir="pkg-temp/eepsite/docroot" />
        <mkdir dir="pkg-temp/eepsite/docroot/help" />
        <mkdir dir="pkg-temp/eepsite/docroot/help/lib" />
        <copy todir="pkg-temp/eepsite/docroot/" >
zzz's avatar
zzz committed
            <fileset dir="installer/resources/eepsite.help/" />
        </copy>
        <copy todir="pkg-temp/eepsite/docroot/help/lib/" >
            <fileset dir="installer/resources/icons/flags/" includes="cn.png de.png es.png fr.png ir.png it.png jp.png nl.png ru.png se.png us.png" />
        <copy file="installer/resources/themes/console/images/favicon.ico" tofile="pkg-temp/eepsite/docroot/favicon.ico" />
jrandom's avatar
jrandom committed
        <copy file="installer/resources/jetty.xml" tofile="pkg-temp/eepsite/jetty.xml" />
    <target name="preplicenses">
zzz's avatar
zzz committed
        <copy file="LICENSE.txt" todir="pkg-temp/" />
        <copy todir="pkg-temp/licenses/" >
          <fileset dir="licenses/" />
        </copy>
        <!--
              The license in launch4j/ is a BSD license for launch4j
              The license in launch4j/head is a MIT license for the code that is actually wrapped around the jars
              So we include the MIT one in our binary package
         -->
        <copy file="installer/lib/launch4j/head/LICENSE.txt" tofile="pkg-temp/licenses/LICENSE-Launch4j.txt" />
        <!--  Not sure if these are used or should be included -->
        <copy file="installer/lib/launch4j/lib/foxtrot.LICENSE.txt" tofile="pkg-temp/licenses/LICENSE-Foxtrot.txt" />
        <copy file="installer/lib/launch4j/lib/JGoodies.Forms.LICENSE.txt" tofile="pkg-temp/licenses/LICENSE-JGoodies-Forms.txt" />
        <copy file="installer/lib/launch4j/lib/JGoodies.Looks.LICENSE.txt" tofile="pkg-temp/licenses/LICENSE-JGoodies-Looks.txt" />
        <copy file="installer/lib/launch4j/lib/XStream.LICENSE.txt" tofile="pkg-temp/licenses/LICENSE-XStream.txt" />
zzz's avatar
zzz committed

    <target name="prepthemeupdates">
zzz's avatar
zzz committed
        <copy todir="pkg-temp/docs/themes/" >
            <fileset dir="installer/resources/themes/" />
zzz's avatar
zzz committed
    </target>

    <!-- SSL Certs -->
    <target name="prepCertificates">
        <copy todir="pkg-temp/certificates/" >
          <fileset dir="installer/resources/certificates/" />
zzz's avatar
zzz committed
        </copy>
    <!-- this is no longer required, izpack 4.3.0 supports headless installs with java -jar i2pinstall.exe -console -->
    <target name="tarball" depends="preppkg">
        <tar compression="bzip2" destfile="i2p.tar.bz2">
            <tarfileset dir="pkg-temp" includes="**/*" prefix="i2p" />
        </tar>
    </target>
zzz's avatar
zzz committed

    <target name="deletepkg-temp">
zzz's avatar
zzz committed
        <delete dir="pkg-temp" />
zzz's avatar
zzz committed

    <!-- readme and proxy error page files, initialNews.xml files, GeoIP files, and flag icons -->
    <target name="prepConsoleDocs" depends="prepConsoleDocUpdates, prepgeoupdate" >
        <copy todir="pkg-temp/docs/initialNews/">
          <fileset dir="installer/resources/initialNews/" />
        </copy>
    </target>
zzz's avatar
zzz committed

    <!-- readme and proxy error page files -->
    <target name="prepConsoleDocUpdates">
zzz's avatar
zzz committed
        <copy todir="pkg-temp/docs/" >
zzz's avatar
zzz committed
          <fileset dir="installer/resources/readme/" includes="readme*.html" />
zzz's avatar
zzz committed
          <fileset dir="installer/resources/proxy/" includes="*.ht" />
zzz's avatar
zzz committed
          <!-- lang_ar.png added in 0.8.4 -->
          <fileset dir="installer/resources/" includes="icons/flags/lang_ar.png" />
zzz's avatar
zzz committed
        </copy>
    </target>
zzz's avatar
zzz committed

    <target name="consoleDocs" depends="deletepkg-temp, prepConsoleDocs">
        <zip destfile="docs.zip" basedir="pkg-temp" whenempty="fail" />
    </target>
zzz's avatar
zzz committed
    <target name="copyJavadoc" depends="javadoc">
        <copy todir="pkg-temp/docs/javadoc" >
          <fileset dir="build/javadoc/" />
        </copy>
    </target>

    <target name="updater200" depends="prepupdate, preplicenses, pack200, zipit200" />
    <target name="updater200WithJettyFixes" depends="prepjupdatefixes, preplicenses, pack200, zipit200" />
    <target name="updater" depends="prepupdate, preplicenses, zipit" />
zzz's avatar
zzz committed
    <target name="updaterWithJavadoc" depends="prepupdate, preplicenses, copyJavadoc, zipit" />
    <target name="updaterWithGeoIP" depends="prepupdate, prepgeoupdate, preplicenses, zipit" />
    <target name="updaterWithJetty" depends="prepjupdate, preplicenses, zipit" />
    <target name="updaterWithJettyFixes" depends="prepjupdatefixes, preplicenses, zipit" />
    <target name="updaterWithJettyFixesAndGeoIP" depends="prepjupdatefixes, prepgeoupdate, preplicenses, zipit" />
zzz's avatar
zzz committed
    <target name="updaterSmall" depends="prepupdateSmall, zipit" />
    <target name="updaterRouter" depends="prepupdateRouter, zipit" />
    <target name="zipit">
        <zip destfile="i2pupdate.zip" basedir="pkg-temp" whenempty="fail" />
       <!-- just a test, makes almost no difference
        <tar destfile="i2pupdate.tgz" basedir="pkg-temp" compression="gzip" />
        <tar destfile="i2pupdate.tbz" basedir="pkg-temp" compression="bzip2" />
       -->
    </target>
    <target name="zipit200">
        <zip destfile="i2pupdate200.zip" basedir="pkg-temp" whenempty="fail" />
    </target>
walking's avatar
walking committed
<!-- *nix here -->
        <exec executable="sh" osfamily="unix" failonerror="true">
walking's avatar
walking committed
            <arg value="-c" />
            <arg value="for i in pkg-temp/lib/*.jar pkg-temp/webapps/*war; do echo pack200 $i; mv $i $i.jar; pack200 -g $i.pack $i.jar; rm -f $i.jar; done" />
        </exec>
        <exec executable="sh" osfamily="mac" failonerror="true">
            <arg value="-c" />
            <!-- pack200 will only pack to a .pack file, and only from a .jar file, so we put another .jar on the end -->
            <arg value="for i in pkg-temp/lib/*.jar pkg-temp/webapps/*war; do echo pack200 $i; mv $i $i.jar; pack200 -g $i.pack $i.jar; rm -f $i.jar; done" />
        </exec>
walking's avatar
walking committed
<!-- windoz here : i admit, i hate escaped symbols in xml, indeed = =! -->
		<exec executable="cmd" osfamily="windows" failonerror="true">
walking's avatar
walking committed
			<arg value="/c" />
			<arg value="for %i in (pkg-temp\webapps\*.war) do move %i %i.jar &amp;&amp; pack200 -g pkg-temp\webapps\%~ni.war.pack %i.jar &amp;&amp; del %i.jar" />
        </exec>
		<exec executable="cmd" osfamily="windows" failonerror="true">
walking's avatar
walking committed
			<arg value="/c" />
			<arg value="for %i in (pkg-temp\lib\*.jar) do move %i %i.jar &amp;&amp; pack200 -g pkg-temp\lib\%~ni.jar.pack %i.jar &amp;&amp; del %i.jar" />
        </exec>
jrandom's avatar
jrandom committed
    <target name="updateTest" depends="prepupdate">
        <ant dir="core/java/" target="jarTest" />    
        <copy file="core/java/build/i2ptest.jar" todir="pkg-temp/lib" />
        <zip destfile="i2pupdate.zip" basedir="pkg-temp" />
    </target>
zzz's avatar
zzz committed

    <target name="prepupdate" depends="build2, prepupdateSmall, prepConsoleDocUpdates, prepCertificates">
        <copy file="build/BOB.jar" todir="pkg-temp/lib/" />
        <copy file="build/sam.jar" todir="pkg-temp/lib/" />
        <copy file="build/i2psnark.jar" todir="pkg-temp/lib" />
zzz's avatar
zzz committed
        <!-- include systray changes in 0.7.5 -->
zzz's avatar
zzz committed
        <copy file="build/systray.jar" todir="pkg-temp/lib/" />
        <copy file="build/desktopgui.jar" todir="pkg-temp/lib/" />
        <copy file="build/susimail.war" todir="pkg-temp/webapps/" />
        <copy file="build/susidns.war" todir="pkg-temp/webapps/" />
        <!-- as of 0.7.12; someday, we can remove these from the updater -->
        <copy file="apps/susidns/src/WEB-INF/lib/jstl.jar" todir="pkg-temp/lib/" />
        <copy file="apps/susidns/src/WEB-INF/lib/standard.jar" todir="pkg-temp/lib/" />
        <copy file="build/i2psnark.war" todir="pkg-temp/webapps/" />
        <copy file="history.txt" todir="pkg-temp/" />
zzz's avatar
zzz committed
        <!-- the following overwrites history.txt on unix to shrink the update file -->
        <exec executable="head" osfamily="unix" failifexecutionfails="true" output="pkg-temp/history.txt">
            <arg value="-n" />
            <arg value="1500" />
            <arg value="history.txt" />
        </exec>
        <exec executable="echo" osfamily="unix" failifexecutionfails="true" output="pkg-temp/history.txt" append="true">
            <arg value="EARLIER HISTORY IS AVAILABLE IN THE SOURCE PACKAGE" />
        </exec>
zzz's avatar
zzz committed
      <!-- May be pointless now, people with split directories will never see this,
           and for flat installs we don't want to overwrite news more recent than the update package.
        <copy file="installer/resources/news.xml" todir="pkg-temp/docs/" />
zzz's avatar
zzz committed
       -->
zzz's avatar
zzz committed

    <target name="prepupdateSmall" depends="buildSmall, prepupdateRouter, prepthemeupdates">
jrandom's avatar
jrandom committed
        <copy file="build/i2ptunnel.jar" todir="pkg-temp/lib/" />
        <copy file="build/mstreaming.jar" todir="pkg-temp/lib/" />
jrandom's avatar
jrandom committed
        <copy file="build/streaming.jar" todir="pkg-temp/lib/" />
jrandom's avatar
jrandom committed
        <copy file="build/routerconsole.jar" todir="pkg-temp/lib/" />
        <!-- pulled out of routerconsole.jar in 0.7.12, someday we can take out of updater -->
        <!-- name without version so we can overwrite if we upgrade  -->
zzz's avatar
zzz committed
        <copy file="build/jrobin.jar" tofile="pkg-temp/lib/jrobin.jar" />
jrandom's avatar
jrandom committed
        <copy file="build/i2ptunnel.war" todir="pkg-temp/webapps/" />
        <copy file="build/routerconsole.war" todir="pkg-temp/webapps/" />
jrandom's avatar
jrandom committed
        <copy file="build/addressbook.war" todir="pkg-temp/webapps/" />
zzz's avatar
zzz committed
        <!-- decapitalized the file in 0.7.8 -->
walking's avatar
walking committed
       <copy file="installer/resources/countries.txt" todir="pkg-temp/geoip/" />
jrandom's avatar
jrandom committed
    </target>
zzz's avatar
zzz committed

    <target name="prepupdateRouter" depends="buildrouter, deletepkg-temp">
        <copy file="build/i2p.jar" todir="pkg-temp/lib/" />
        <copy file="build/router.jar" todir="pkg-temp/lib/" />
    </target>
zzz's avatar
zzz committed

    <!-- GeoIP files and flag icons -->
    <target name="prepgeoupdate">
zzz's avatar
zzz committed
        <copy file="installer/resources/geoip.txt" todir="pkg-temp/geoip/" />
        <copy file="installer/resources/countries.txt" todir="pkg-temp/geoip/" />
zzz's avatar
zzz committed
        <copy todir="pkg-temp/docs/icons/flags" >
zzz's avatar
zzz committed
          <fileset dir="installer/resources/icons/flags" />
        </copy>
    </target>
zzz's avatar
zzz committed

zzz's avatar
zzz committed
    <target name="prepjupdate" depends="prepupdate, buildWEB">
        <copy file="build/jasper-compiler.jar" todir="pkg-temp/lib/" />
        <copy file="build/jasper-runtime.jar" todir="pkg-temp/lib/" />
        <copy file="build/commons-logging.jar" todir="pkg-temp/lib/" />
        <copy file="build/commons-el.jar" todir="pkg-temp/lib/" />
        <copy file="build/javax.servlet.jar" todir="pkg-temp/lib/" />
        <copy file="build/org.mortbay.jetty.jar" todir="pkg-temp/lib/" />
    </target>
    <target name="prepjupdatefixes" depends="prepupdate, buildWEB">
        <copy file="build/org.mortbay.jetty.jar" todir="pkg-temp/lib/" />
    </target>

    <target name="util-list-changes" depends="checkForMtn" if="mtn.available" >
zzz's avatar
zzz committed
        <exec executable="mtn" outputproperty="workspace.changes.util" errorproperty="mtn.error.util" failifexecutionfails="false" >
            <arg value="list" />
            <arg value="changed" />
            <arg value="core/java/src/net/i2p/util" />
        </exec>
        <!-- \n in an attribute value generates an invalid manifest -->
        <exec executable="tr" inputstring="${workspace.changes.util}" outputproperty="workspace.changes.util.tr" errorproperty="mtn.error2" failifexecutionfails="false" >
            <arg value="-s" />
            <arg value="[:space:]" />
            <arg value="," />
        </exec>
    </target>

    <target name="installer" depends="preppkg, buildProperties, util-list-changes" >
        <taskdef name="izpack" classpath="${basedir}/installer/lib/izpack/standalone-compiler.jar" classname="com.izforge.izpack.ant.IzPackTask" />
        <mkdir dir="pkg-temp/installer" />
        <!-- set if unset -->
        <property name="workspace.changes.util.tr" value="" />
zzz's avatar
zzz committed
        <jar destfile="./pkg-temp/installer/copy.jar" basedir="./core/java/build/obj" includes="net/i2p/util/Copy.class net/i2p/util/FileUtil.class">
zzz's avatar
zzz committed
            <manifest>
                <attribute name="Main-Class" value="net.i2p.util.Copy" />
                <attribute name="Build-Date" value="${build.timestamp}" />
                <attribute name="Base-Revision" value="${workspace.version}" />
                <attribute name="Workspace-Changes" value="${workspace.changes.util.tr}" />
            </manifest>
jrandom's avatar
jrandom committed
        </jar>
zzz's avatar
zzz committed
        <jar destfile="./pkg-temp/installer/delete.jar" basedir="./core/java/build/obj" includes="net/i2p/util/Delete.class net/i2p/util/FileUtil.class">
zzz's avatar
zzz committed
            <manifest>
                <attribute name="Main-Class" value="net.i2p.util.Delete" />
                <attribute name="Build-Date" value="${build.timestamp}" />
                <attribute name="Base-Revision" value="${workspace.version}" />
                <attribute name="Workspace-Changes" value="${workspace.changes.util.tr}" />
            </manifest>
jrandom's avatar
jrandom committed
        </jar>
zzz's avatar
zzz committed
        <jar destfile="./pkg-temp/installer/exec.jar" basedir="./core/java/build/obj" includes="net/i2p/util/Exec.class">
zzz's avatar
zzz committed
            <manifest>
                <attribute name="Main-Class" value="net.i2p.util.Exec" />
                <attribute name="Build-Date" value="${build.timestamp}" />
                <attribute name="Base-Revision" value="${workspace.version}" />
                <attribute name="Workspace-Changes" value="${workspace.changes.util.tr}" />
            </manifest>
jrandom's avatar
jrandom committed
        </jar>
        <!--
          Force 1.5 pack200 output
          Doesnt work!
          http://jira.codehaus.org/browse/IZPACK-404
          http://forums.sun.com/thread.jspa?threadID=773439
          http://bfo.co.uk/blog/2010/05/13/combining_ant_jar_signatures_and_pack200.html
        <property name="com.sun.java.util.jar.pack.package.majver" value="150" />
        <property name="com.sun.java.util.jar.pack.package.minver" value="7" />
        -->
        <izpack input="${basedir}/installer/install.xml" output="${basedir}/install.jar" installerType="standard" basedir="${basedir}" />
jrandom's avatar
jrandom committed

        <ant target="installerexe" />
    </target>
    <target name="installerexe">
        <condition property="noExe">
	    <os arch="x86_64" />
	</condition>
        <condition property="noExe">
	    <os arch="amd64" />
	</condition>
	<condition property="noExe">
	   <not>
	    <or>
	     <os name="Linux" />
	     <os family="windows" />
	    </or>
	   </not>
	</condition>
jrandom's avatar
jrandom committed
	<ant target="doInstallerEXE" />
    </target>
    <target name="doInstallerEXE" unless="noExe">
jrandom's avatar
jrandom committed
	<!-- now the installer exe -->
	<taskdef name="launch4j"
                 classname="net.sf.launch4j.ant.Launch4jTask"
                 classpath="${basedir}/installer/lib/launch4j/launch4j.jar:${basedir}/installer/lib/launch4j/lib/xstream.jar" />
        <launch4j configFile="./installer/i2pinstaller.xml" />
        <launch4j configFile="./installer/i2pstandalone.xml" />
	<!-- thazzit -->
zzz's avatar
zzz committed

    <target name="test" depends="buildProperties, jbigi" >
        <mkdir dir="reports/core/junit/" />
comwiz's avatar
comwiz committed
        <ant dir="core/java/" target="test" />
    </target>
zzz's avatar
zzz committed
    <target name="junit.report" depends="buildProperties" >
comwiz's avatar
comwiz committed
        <ant dir="core/java/" target="junit.report" />
    </target>
zzz's avatar
zzz committed
    <target name="clover.report" depends="buildProperties" >
comwiz's avatar
comwiz committed
        <ant dir="core/java/" target="clover.report" />
    </target>
    <target name="test.report" depends="junit.report, clover.report"/>
zzz's avatar
zzz committed
    <target name="fulltest" depends="buildProperties" >
comwiz's avatar
comwiz committed
		<ant dir="core/java/" target="fulltest" />
comwiz's avatar
comwiz committed
		<ant dir="router/java/" target="fulltest" />
    </target>
zzz's avatar
zzz committed
    <target name="fullclovertest" depends="buildProperties" >
comwiz's avatar
comwiz committed
		<ant dir="core/java/" target="fullclovertest" />
		<ant dir="router/java/" target="fullclovertest" />
comwiz's avatar
comwiz committed
    </target>
zzz's avatar
zzz committed

    <!-- <target name="syndie" >
jrandom's avatar
jrandom committed
        <ant dir="apps/syndie/java/" target="standalone" />
        <copy file="apps/syndie/java/syndie-standalone.zip" todir="." />
zzz's avatar
zzz committed
    <target name="i2psnark" depends="buildProperties" >
jrandom's avatar
jrandom committed
        <ant dir="apps/i2psnark/java" target="standalone" />
        <copy file="apps/i2psnark/java/i2psnark-standalone.zip" todir="." />
    </target>
    <target name="slackpkg">
        <echo message="Building Slackware package." />
        <ant dir="Slackware/i2p/" target="slackpkg" />
        <ant dir="Slackware/i2p-base/" target="slackpkg" />
    </target>
    <target name="justBOB" depends="builddepSmall">
        <ant dir="apps/BOB/" target="onejar" />
        <copy file="apps/BOB/dist/BOB-one.jar" todir="." />
    </target>
zzz's avatar
zzz committed
    <target name="findbugs" depends="build2">
        <echo message="Starting findbugs, this will take a while..." />
zzz's avatar
zzz committed
        <exec executable="nice" failonerror="true">
zzz's avatar
zzz committed
            <arg value="findbugs"/>
            <arg value="-textui"/>
            <arg value="-projectName"/>
            <arg value="i2p"/>
            <arg value="-sortByClass"/>
            <arg value="-xml"/>
            <arg value="-output"/>
zzz's avatar
zzz committed
            <arg value="i2p.fba"/>
zzz's avatar
zzz committed
            <arg value="-auxclasspath"/>
            <arg value="build/commons-el.jar:build/commons-logging.jar:build/jasper-compiler.jar:build/jasper-runtime.jar:build/javax.servlet.jar:build/org.mortbay.jetty.jar:apps/jrobin/jrobin-1.5.9.1.jar:apps/systray/java/lib/systray4j.jar:installer/lib/wrapper/all/wrapper.jar:apps/susidns/src/WEB-INF/lib/standard.jar:apps/susidns/src/WEB-INF/lib/jstl.jar:apps/jrobin/jrobin-1.5.9.1.jar"/>
zzz's avatar
zzz committed
            <arg value="-sourcepath"/>
            <arg value="apps/BOB/src/:apps/addressbook/java/src/:apps/i2psnark/java/src/:apps/i2ptunnel/java/src/:apps/ministreaming/java/src/:apps/routerconsole/java/src/:apps/sam/java/src/:apps/streaming/java/src/:apps/susidns/src/java/src/:apps/susimail/src/src/:apps/systray/java/src/:core/java/src/:router/java/src/"/>
            <!-- start of the files to be analyzed -->
            <arg value="build/BOB.jar"/>
            <arg value="build/addressbook.war"/>
            <arg value="build/i2p.jar"/>
            <arg value="build/i2psnark.jar"/>
            <arg value="build/i2psnark.war"/>
            <arg value="build/i2ptunnel.jar"/>
            <arg value="build/i2ptunnel.war"/>
            <arg value="build/mstreaming.jar"/>
            <arg value="build/router.jar/"/>
            <arg value="build/desktopgui.jar"/>
zzz's avatar
zzz committed
            <arg value="build/routerconsole.jar"/>
            <arg value="build/routerconsole.war"/>
zzz's avatar
zzz committed
            <arg value="build/sam.jar"/>
            <arg value="build/streaming.jar"/>
            <arg value="build/susidns.war"/>
            <arg value="build/susimail.war"/>
            <arg value="build/systray.jar"/>
        </exec>
zzz's avatar
zzz committed
        <echo message="Findbugs output stored in i2p.fba" />
        <echo message="Now run: findbugs i2p.fba" />
zzz's avatar
zzz committed
    </target>

    <!-- this is the same dependency as pkg, but with updater200 in the middle,
         since preppkg puts too much stuff in pkg-temp -->
    <target name="release" depends="distclean, updater, updater200, preppkg, installer" >
-->
    <target name="release" depends="distclean, updaterWithJettyFixes, updater200WithJettyFixes, preppkg, installer" >
zzz's avatar
zzz committed
        <echo message="================================================================" />
        <echo message="Did you update these files?" />
zzz's avatar
zzz committed
        <exec executable="ls" failonerror="true">
zzz's avatar
zzz committed
            <arg value="-l" />
            <arg value="history.txt" />
            <arg value="installer/install.xml" />
            <arg value="installer/resources/news.xml" />
zzz's avatar
zzz committed
	    <arg value="core/java/src/net/i2p/CoreVersion.java" />
	    <arg value="router/java/src/net/i2p/router/RouterVersion.java" />
        </exec>
zzz's avatar
zzz committed
        <echo message="Everything is checked in, right? Let's be sure:" />
zzz's avatar
zzz committed
        <exec executable="mtn" failonerror="true">
zzz's avatar
zzz committed
            <arg value="st" />
        </exec>
zzz's avatar
zzz committed
        <echo message="If there are any modified files above, stop now!" />
        <!-- get release version number -->
        <exec executable="grep" outputproperty="versionLine" failonerror="true" >
            <arg value="public final static String VERSION" />
	    <arg value="core/java/src/net/i2p/CoreVersion.java" />
        </exec>
        <exec executable="cut" inputstring="${versionLine}" outputproperty="release.number" failonerror="true" >
            <arg value="-f2" />
	    <arg value="-d&quot;" />
        </exec>
zzz's avatar
zzz committed
        <echo message="New version number is ${release.number}" />
zzz's avatar
zzz committed
        <copy file="i2pupdate.zip" tofile="i2pupdate_${release.number}.zip" />
        <copy file="i2pinstall.exe" tofile="i2pinstall_${release.number}.exe" />
        <delete file="i2pupdate.sud" failonerror="false" />
        <delete file="i2pupdate.su2" failonerror="false" />
zzz's avatar
zzz committed
        <input message="Enter private signing key file:" addproperty="release.privkey" />