<?xml version="1.0" encoding="UTF-8"?>

<project default="create_jacksum_patch" name="Creating patches with Jacksum">
    <property file="build.properties"/>
    <target name="create_jacksum_patch">

        <!-- STEP 0: Init -->
        <tstamp>
            <format property="DSTAMP" pattern="-yyyyMMdd" />
            <format property="TSTAMP" pattern="-HHmmss" />
        </tstamp>
        <property name="patch.dir" value="${patch.dir.home}/patch${DSTAMP}${TSTAMP}/"/>
        <property name="patch.tar" value="patch.tar"/>
        <property name="patch.zip" value="patch.zip"/>

        <mkdir dir="${patch.dir}" />
        <echo>distro.old.dir is ${distro.old.dir}</echo>
        <echo>distro.new.dir is ${distro.new.dir}</echo>       
        <echo>patch.dir is ${patch.dir}</echo>

        <!-- STEP 1: Change to your new version's folder -->
        <exec executable="java" failonerror="true" dir="${distro.new.dir}"
            output="${patch.dir}/check.jacksum">
            <arg line="-jar '${jacksum.jar.file}' -a sha1 -m -f -p -P / -r -w ."/>
        </exec>

        <!-- STEP 2: Change to your old version's folder -->
        <exec executable="java" failonerror="false" dir="${distro.old.dir}"
              output="${patch.dir}/files.list" >
              <arg line="-jar '${jacksum.jar.file}' -c '${patch.dir}/check.jacksum' -l"/>
        </exec>

        <!-- STEP 3: Create patch.tar -->
        <tar destfile="${patch.dir}/${patch.tar}"
             basedir="${distro.new.dir}"
             includesfile="${patch.dir}/files.list"/>

        <!-- STEP 4: Create patch.zip -->
        <zip destfile="${patch.dir}/${patch.zip}"
             basedir="${distro.new.dir}"
             includesfile="${patch.dir}/files.list"
             encoding="UTF-8"/>

        <!-- STEP 5: Compress patch.tar -->
        <gzip src="${patch.dir}/${patch.tar}" destfile="${patch.dir}/${patch.tar}.gz"/>
        <bzip2 src="${patch.dir}/${patch.tar}" destfile="${patch.dir}/${patch.tar}.bz2"/>

        <!-- STEP 6: Remove temp files -->
        <delete file="${patch.dir}/check.jacksum"/>
        <delete file="${patch.dir}/files.list"/>

  </target>
</project>

<!--
        Alternate steps (native tar):


        STEP 3: Use native tar on GNU/Linux, Mac OS X
  
        <exec executable="tar" failonerror="false" dir="${distro.new.dir}" >
            <arg line="cfv ${patch.dir}/${patch.tar} -T ${patch.dir}/files.list"/>
        </exec>


        STEP 3: Use native tar on PC-BSD, Solaris
        
        <exec executable="tar" failonerror="false" dir="${distro.new.dir}" >
            <arg line="cfv ${patch.dir}/${patch.tar} -I ${patch.dir}/files.list"/>
        </exec>
-->
