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

Skip to content
Snippets Groups Projects
build.xml 74.9 KiB
Newer Older
jrandom's avatar
jrandom committed
<?xml version="1.0" encoding="ISO-8859-1"?>
<project basedir="." default="all" name="i2p">
kytv's avatar
kytv committed

    <!-- 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" />
    <!-- Include property files so that values can be easily overridden. Currently just useful for javadoc hosters -->
    <property file="override.properties"/>
    <property file="build.properties"/>
    <!-- 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="  installer-freebsd: build the GUI installer (FreeBSD only)" />
        <echo message="  installer-linux: build the GUI installer (Linux only)" />
        <echo message="  installer-osx: build the GUI installer (OSX only)" />
        <echo message="  installer-windows: build the GUI installer (Windows only)" />
jrandom's avatar
jrandom committed
        <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" />
zzz's avatar
zzz committed
        <echo message="  updaterWithJettyFixesAndJbigi" />
        <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 gettext 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="armv5tejl" />
        </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>

    <taskdef name="launch4j"
             classname="net.sf.launch4j.ant.Launch4jTask"
             classpath="${basedir}/installer/lib/launch4j/launch4j.jar:${basedir}/installer/lib/launch4j/lib/xstream.jar" />

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 -->
        <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>
    
    <!-- Now system-specific jbigis in alphabetical order -->
    <target name="jbigi-freebsd-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="*freebsd*.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>

    <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>

    <target name="jbigi-linux-nonx86-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-arm*.so,*linux-ppc*.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>

    <target name="jbigi-osx-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="*.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>
    <!-- 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" />
zzz's avatar
zzz committed

    <target name="javadoc" depends="getReleaseNumber, getBuildNumber" >
zzz's avatar
zzz committed
        <ant dir="apps/jetty" target="ensureJettylib" />
        <mkdir dir="./build" />
        <mkdir dir="./build/javadoc" />
kytv's avatar
kytv committed
        <javadoc access="package"
            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: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" />
            <!-- apps and bridges starting here, alphabetical please -->
            <group title="Addressbook Application" packages="net.i2p.addressbook" />
            <group title="BOB Bridge" packages="net.i2p.BOB" />
            <group title="Desktopgui Application" packages="net.i2p.desktopgui.*" />
            <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" />
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" />
kytv's avatar
kytv committed
                <pathelement location="core/lib/junit.jar" />
jrandom's avatar
jrandom committed
            </classpath>
	    <!-- 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="${jettydocs.url}" packagelistLoc="installer/resources/package-lists/jetty/" />
            <link offline="true" href="${jrobindocs.url}" packagelistLoc="installer/resources/package-lists/jrobin/" />
            <link offline="true" href="${wrapperdocs.url}" packagelistLoc="installer/resources/package-lists/wrapper/" />
jrandom's avatar
jrandom committed
        </javadoc>
        <echo message="Warning, javadoc embeds timestamps in the output, run with 'TZ=UTC ant javadoc' if you plan to distribute" />
    </target>
zzz's avatar
zzz committed
    <target name="getReleaseNumber" >
        <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" osfamily="unix" inputstring="${versionLine}" outputproperty="release.number" failonerror="true" >
zzz's avatar
zzz committed
            <arg value="-f2" />
	    <arg value="-d&quot;" />
        </exec>
        <exec executable="cut" osfamily="mac" inputstring="${versionLine}" outputproperty="release.number" failonerror="true" >
            <arg value="-f2" />
	    <arg value="-d&quot;"/>
        </exec>
        <exec executable="cut" osfamily="windows" inputstring="${versionLine}" outputproperty="release.number" failonerror="true" >
            <arg value="-f2" />
	    <arg value="-d&quot;\&quot;&quot;"/>
        </exec>
zzz's avatar
zzz committed
        <echo message="Release number is ${release.number}" />
    </target>

    <target name="getBuildNumber" >
        <exec executable="grep" outputproperty="buildLine" >
            <arg value="public final static long BUILD" />
            <arg value="router/java/src/net/i2p/router/RouterVersion.java" />
zzz's avatar
zzz committed
        </exec>
        <exec executable="cut" inputstring="${buildLine}" outputproperty="build.temp" failonerror="true" >
            <arg value="-f2" />
zzz's avatar
zzz committed
        </exec>
        <exec executable="tr" inputstring="${build.temp}" outputproperty="build.temp.tr" failonerror="true">
            <arg value="-d" />
            <arg value="[:space:]"/>
        </exec>
        <exec executable="cut" inputstring="${build.temp.tr}" outputproperty="build.number" failonerror="true" >
zzz's avatar
zzz committed
            <arg value="-f1" />
zzz's avatar
zzz committed
        </exec>
        <echo message="Build number is ${build.number}" />
    </target>

        <delete dir="./build" />
        <delete file="installer/lib/izpack/patches.jar" failonerror="false" quiet="true" />	
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" />
HungryHobo's avatar
HungryHobo committed
        <delete file="debian/build" />
    <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" />
kytv's avatar
kytv committed
	<!--
		NOTE! We need to turn off the default excludes for these
kytv's avatar
kytv committed
		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~" />
kytv's avatar
kytv committed
	    <!--
	    	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-freebsd, preppkg-osx, preppkg-windows, jbigi">
        <copy file="build/jbigi.jar" todir="pkg-temp/lib" />
zzz's avatar
zzz committed
        <copy todir="pkg-temp/lib/wrapper/solaris/">
            <fileset dir="installer/lib/wrapper/solaris/" />
        </copy>
    </target>

    <target name="preppkg-freebsd" depends="preppkg-unix">
        <copy todir="pkg-temp/lib/wrapper/freebsd/">
            <fileset dir="installer/lib/wrapper/freebsd/" />
        <copy todir="pkg-temp/lib/wrapper/freebsd64/">
            <fileset dir="installer/lib/wrapper/freebsd64" />
kytv's avatar
kytv committed
        </copy>
    <target name="preppkg-freebsd-only" depends="preppkg-freebsd, jbigi-freebsd-only" >
        <copy file="build/jbigi.jar" todir="pkg-temp/lib" />
        <copy file="installer/lib/wrapper/all/wrapper.jar" todir="pkg-temp/lib" />
    </target>

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>

    <target name="preppkg-unix" depends="preppkg-base">
zzz's avatar
zzz committed
        <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>
kytv's avatar
kytv committed
    <target name="preppkg-linux" depends="preppkg-linux-x86,preppkg-linux-nonx86" />

    <target name="preppkg-linux-x86" depends="preppkg-unix">
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>

kytv's avatar
kytv committed
    <target name="preppkg-linux-nonx86" depends="preppkg-unix">
        <copy todir="pkg-temp/lib/wrapper/linux-armv7/">
            <fileset dir="installer/lib/wrapper/linux-armv7/" />
        </copy>
	<copy todir="pkg-temp/lib/wrapper/linux-ppc/">
	    <fileset dir="installer/lib/wrapper/linux-ppc/" />
	</copy>
        <copy todir="pkg-temp/lib/wrapper/linux-armv5/">
            <fileset dir="installer/lib/wrapper/linux-armv5/" />
        </copy>
    </target>

    <target name="preppkg-osx" depends="preppkg-unix">
kytv's avatar
kytv committed
        <!--<copy file="installer/resources/I2P Router Console.webloc" todir="pkg-temp/" />-->
        <copy todir="pkg-temp/Start I2P Router.app">
	    <fileset dir="installer/resources/Start I2P Router.app" />
	</copy>
        <copy todir="pkg-temp/lib/wrapper/macosx/">
            <fileset dir="installer/lib/wrapper/macosx/" />
        </copy>
kytv's avatar
kytv committed
    </target>

    <target name="preppkg-osx-only" depends="preppkg-osx, jbigi-osx-only" >
        <copy file="build/jbigi.jar" todir="pkg-temp/lib" />
        <copy file="installer/lib/wrapper/all/wrapper.jar" todir="pkg-temp/lib" />	
    </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/" />
kytv's avatar
kytv committed
        <copy file="installer/resources/fixpaths.cmd" 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>
	<copy todir="pkg-temp/lib/wrapper/win64/">
	    <fileset dir="installer/lib/wrapper/win64/" />
        </copy>
    </target>

    <target name="preppkg-windows-only" depends="preppkg-windows, jbigi-windows-only">
        <copy file="build/jbigi.jar" todir="pkg-temp/lib" />
	<copy file="installer/lib/wrapper/all/wrapper.jar" todir="pkg-temp/lib" />
    </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 -->
        <!-- Also remove deletelist.txt used for updater only -->
            <fileset dir="pkg-temp" includes="**/*.jar.pack **/*.war.pack deletelist.txt" />
        </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/" />
kytv's avatar
kytv committed
	<!--
	     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

kytv's avatar
kytv committed
		     So I'm going one further: I'm disabling it in build.xml
kytv's avatar
kytv committed
	<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" />
          <!-- lang_ar.png added in 0.8.4; a1,a2,je, and eu.png added in 0.8.9; gg.png added in 0.8.10 -->
          <fileset dir="installer/resources/" includes="icons/flags/lang_ar.png icons/flags/gg.png icons/flags/je.png icons/flags/eu.png icons/flags/a1.png icons/flags/a2.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="updater200WithJettyFixesAndJbigi" depends="prepjupdatefixes, prepjbigiupdate, 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="updaterWithJettyFixesAndJbigi" depends="prepjupdatefixes, prepjbigiupdate, 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" />
zzz's avatar
zzz committed

    <target name="zipit" depends="getReleaseNumber" >
        <!--
             As of release 0.8.8, the router will enforce a zipfile comment equal to the
             version number in the sud/su2 header, since the version in the header is NOT
             covered by the signature.
         -->
        <zip destfile="i2pupdate.zip" basedir="pkg-temp" whenempty="fail" comment="${release.number}" />
       <!-- 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>
zzz's avatar
zzz committed

    <target name="zipit200" depends="getReleaseNumber" >
        <zip destfile="i2pupdate200.zip" basedir="pkg-temp" whenempty="fail" comment="${release.number}" />
    </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">
kytv's avatar
kytv committed
        <ant dir="core/java/" target="jarTest" />
jrandom's avatar
jrandom committed
        <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>
        <copy file="installer/resources/deletelist.txt" todir="pkg-temp/" />
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

    <!-- jbigi.jar -->
    <target name="prepjbigiupdate" depends="jbigi">
        <copy file="build/jbigi.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>
    <taskdef name="izpack"
             classpath="${basedir}/installer/lib/izpack/patches.jar:${basedir}/installer/lib/izpack/standalone-compiler.jar"
             classname="com.izforge.izpack.ant.IzPackTask" />

    <target name="izpack-patches" >
        <jar destfile="${basedir}/installer/lib/izpack/patches.jar"
             basedir="${basedir}/installer/lib/izpack/patches" />
    </target>

    <target name="installer" depends="preppkg, buildProperties, util-list-changes, izpack-patches" >
        <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