<?xml version="1.0" encoding="utf-8" ?>
<!--
		.......................................................... 
		November 2008
		Source Release Kit for Greenstone2 (sork2)
		Oran Fry
		..........................................................
-->

<project name="sork2-build" default="sork2">

	<!-- IMPORT OTHER ANT SCRIPTS -->
	<import file="${rk.home}/shared/core/ant-scripts/shared.xml"/>
	<import file="${rk.home}/shared/greenstone2/ant-scripts/greenstone2-shared.xml"/>

	<!-- THE MAIN TARGET -->
	<target name="sork2" depends="init">

		<!-- store the name of the distribution -->
		<property name="dist.name" value="Greenstone-${version}-source-distribution"/>

		<!-- create distributions dir -->
		<mkdir dir="distributions"/>

		<!-- export greenstone2 and gli -->
		<exec executable="svn"><arg line="${global-svn-args}"/><arg value="export"/><arg value="${svn.root}/main/${branch.path}/greenstone2"/><arg value="distributions/${dist.name}"/></exec>
		<exec executable="svn"><arg line="${global-svn-args}"/><arg value="export"/><arg value="${svn.root}/main/${branch.path}/gli"/><arg value="distributions/${dist.name}/gli"/></exec>

		<!-- set version numbers -->
		<antcall target="gsdl-set-version-numbers"><param name="gsdl.basedir" value="${basedir}/distributions/${dist.name}"/></antcall>
		<antcall target="gli-set-version-numbers"><param name="glibasedir" value="${basedir}/distributions/${dist.name}/gli"/></antcall>

		<!-- insert windows binaries -->
		<delete dir="distributions/${dist.name}/bin/windows"/>
		<exec executable="svn">
		  <arg line="${global-svn-args}"/>
			<arg value="export"/>
			<arg value="${svn.root}/main/${branch.path}/binaries/windows/bin"/>
			<arg value="distributions/${dist.name}/bin/windows"/>
		</exec>
		<!--<get src="${server.exe.location}" dest="distributions/${dist.name}/bin/windows/server.exe"/>-->
		<exec executable="wget" failonerror="true">
		  <arg value="-P"/>
		  <arg value="distributions/${dist.name}/bin/windows/"/>
		  <arg value="--no-check-certificate"/>
		  <arg value="${server.exe.location}"/>
		</exec>
		<move file="distributions/${dist.name}/bin/windows/latest-server.exe"
		      tofile="distributions/${dist.name}/bin/windows/server.exe"/>

		<delete dir="distributions/${dist.name}/bin/windows/imagemagick"/>
		<delete dir="distributions/${dist.name}/bin/windows/ghostscript"/>

        <!-- Makes source-dist too large source to have every OS' perl-with-cpan -->
		<!-- insert perl-with-cpan for the 3 OS -->
        <!--
		<property name="win.bin" value="distributions/${dist.name}/bin/windows"/>
		<property name="win.perl.version" value="strawberry-perl-5.32.1.1"/>
		<property name="win.perl.zip" value="${win.perl.version}-MSWin32-x86-multi-thread.zip"/>			
		<exec executable="svn" dir="${win.bin}">
		  <arg line="${global-svn-args}"/>
		  <arg value="export"/>
		  <arg value="${svn.gs2.extensions}/perl-with-cpan/${win.perl.zip}"/>
		</exec>        

		<property name="unix.perl.version" value="perl-5.32.1"/>
        
		<property name="lin.bin" value="distributions/${dist.name}/bin/linux"/>
		<exec executable="svn">
          <arg line="${global-svn-args}"/>
		  <arg value="export"/>
		  <arg value="${svn.gs2.extensions}/perl-with-cpan/${unix.perl.version}-i686-linux-gnu-thread-multi.tar.gz"/>
		  <arg value="${lin.bin}/${unix.perl.version}-i686-linux-gnu-thread-multi.tar.gz"/>
		</exec>
        <exec executable="svn">
          <arg line="${global-svn-args}"/>
		  <arg value="export"/>
		  <arg value="${svn.gs2.extensions}/perl-with-cpan/${unix.perl.version}-x86_64-linux-thread-multi.tar.gz"/>
		  <arg value="${lin.bin}/${unix.perl.version}-x86_64-linux-thread-multi.tar.gz"/>
		</exec>
		
		<property name="mac.bin" value="distributions/${dist.name}/bin/darwin"/>
		<property name="mac.perl.tarball" value="${unix.perl.version}-darwin-thread-multi-2level.tar.gz"/>
		<exec executable="svn">
          <arg line="${global-svn-args}"/>
		  <arg value="export"/>
		  <arg value="${svn.gs2.extensions}/perl-with-cpan/${mac.perl.tarball}"/>
		  <arg value="${mac.bin}/${mac.perl.tarball}"/>
		</exec>
        -->
		<!-- DONE perl-with-cpan for all 3 OS -->

		<!-- clean up -->
		<delete file="distributions/${dist.name}/bin/linux/mgquery_old" />

		<!-- create the archives (source code distribution) -->
		<mkdir dir="products"/>
		<delete file="products/${dist.name}.zip"/>
		<zip destfile="products/${dist.name}.zip"  basedir="distributions" includes="${dist.name}/**/*"/>
		<exec dir="distributions" executable="tar">
			<arg line="-czf ../products/${dist.name}.tar.gz ${dist.name}"/>
		</exec>

		<!-- CREATE THE SOURCE CODE COMPONENT (SOURCE CODE TOP-UP TO THE BINARY RELEASE) -->

		<!-- create a directory for the sourcecode -->
		<mkdir dir="distributions/source-component"/>
		<mkdir dir="distributions/source-component/gli"/>
		<mkdir dir="distributions/source-component/gli/classes"/>

		<!-- copy the files in -->		
		<exec dir="distributions/${dist.name}" executable="cp">
			<arg value="-r"/>

			<!-- the bulk sourcecode -->
			<arg value="build-src"/>
			<arg value="common-src"/>
			<arg value="runtime-src"/>

			<!-- unix build files -->
			<arg value="acconfig.h"/>
			<arg value="aclocal.m4"/>
			<arg value="config.sub"/>
			<arg value="config.guess"/>
			<arg value="configtest.pl"/>
			<arg value="configure"/>
			<arg value="configure.in"/>
			<arg value="install-sh"/>
			<arg value="Makefile.in"/>
			<arg value="micotest.cpp"/>
			<arg value="config.h.in"/>
			<arg value="Install.txt"/>
			<arg value="makegs2.sh"/>

			<!-- windows build files -->
			<arg value="win32.mak"/>
			<arg value="win32cfg.h"/>
			<arg value="makegs2.bat"/>
			<arg value="makegs2x64.bat"/>

			<!-- destination -->
			<arg value="../source-component"/>
		</exec>

		<!-- also copy in the gli src folder into the src component and classes/images and classes/META-INF for generating jars -->
		<exec dir="distributions/${dist.name}" executable="cp">
			<arg value="-r"/>
			<arg value="gli/src"/>
			<!-- destination -->
			<arg value="../source-component/gli"/>
		</exec>
		<exec dir="distributions/${dist.name}" executable="cp">
		  <arg value="-r"/>
		  <arg value="gli/classes/images"/>
		  <arg value="gli/classes/META-INF"/>
		  <!-- destination -->
		  <arg value="../source-component/gli/classes"/>
		</exec>

		<patternset id="source.patternset">
			<include name="build-src"/>
			<include name="build-src/**/*"/>
			<include name="common-src"/>
			<include name="common-src/**/*"/>
			<include name="runtime-src"/>
			<include name="runtime-src/**/*"/>
			<include name="gli/src"/>
			<include name="gli/src/**/*"/>
			<include name="gli/classes/META-INF"/>
			<include name="gli/classes/META-INF/**/*"/>
			<include name="gli/classes/images"/>
			<include name="gli/classes/images/**/*"/>

			<!-- unix build files -->
			<include name="acconfig.h"/>
			<include name="aclocal.m4"/>
			<include name="config.sub"/>
			<include name="config.guess"/>
			<include name="configtest.pl"/>
			<include name="configure"/>
			<include name="configure.in"/>
			<include name="install-sh"/>
			<include name="Makefile.in"/>
			<include name="micotest.cpp"/>
			<include name="config.h.in"/>
			<include name="Install.txt"/>
			<include name="makegs2.sh"/>

			<!-- windows build files -->
			<include name="win32.mak"/>
			<include name="win32cfg.h"/>
			<include name="makegs2.bat"/>
			<include name="makegs2x64.bat"/>
		</patternset>

		<mkdir dir="distributions/source-component/uninstall"/>
		<pstf dir="distributions/source-component" outfile="distributions/source-component/uninstall/source.uninstall" toplevelonly="true">
			<patternset refid="source.patternset"/>
		</pstf>

		<!-- unzip some windows packages -->
		<unzip src="distributions/source-component/common-src/indexers/packages/windows/iconv/iconv-PRE-VS14.zip" dest="distributions/source-component/common-src/indexers/packages/windows/iconv"/>
		<delete file="distributions/source-component/common-src/indexers/packages/windows/iconv/iconv-PRE-VS14.zip"/>
		
		<unzip src="distributions/source-component/common-src/packages/windows/crypt/crypt.zip" dest="distributions/source-component/common-src/packages/windows/crypt"/>
		<delete file="distributions/source-component/common-src/packages/windows/crypt/crypt.zip"/>
		
		<if><bool><and>
			<not><equals arg1="${branch.path}" arg2="trunk"/></not>
			<not><equals arg1="${branch.path}" arg2="tags/stable"/></not>
			<islessthan arg1="${branch.tag.version}" arg2="2.84"/>
		</and></bool>
			<unzip src="distributions/source-component/common-src/packages/windows/expat/expat.zip" dest="distributions/source-component/common-src/packages/windows/expat"/>
			<delete file="distributions/source-component/common-src/packages/windows/expat/expat.zip"/>
		</if>
		
		<unzip src="distributions/source-component/common-src/packages/windows/stlport/stlport.zip" dest="distributions/source-component/common-src/packages/windows/stlport"/>
		<delete file="distributions/source-component/common-src/packages/windows/stlport/stlport.zip"/>

		<exec executable="tar" dir="distributions/source-component/common-src/packages/sqlite"><arg value="-xzf"/><arg value="sqlite-autoconf-3070602.tar.gz"/></exec>
		<delete file="distributions/source-component/common-src/packages/sqlite/sqlite-autoconf-3070602.tar.gz"/>

		<exec executable="tar" dir="distributions/source-component/common-src/packages/expat"><arg value="-xzf"/><arg value="expat-1.95.8.tar.gz"/></exec>
		<delete file="distributions/source-component/common-src/packages/sqlite/sqlite-amalgamation-3.5.9.tar.gz"/>

		<!-- archive it -->
		<delete file="products/Greenstone-${version}-source-component.zip"/>
		<zip destfile="products/Greenstone-${version}-source-component.zip" basedir="distributions/source-component" includes="**/*"/>
		<exec dir="distributions/source-component" executable="bash">
			<arg value="-c"/>
			<arg value="tar -czf ../../products/Greenstone-${version}-source-component.tar.gz *"/>
		</exec>

	</target>

	<target name="properties" depends="core-properties,gs2-properties"/>

</project>
