<project
    name="AggregationTasks"
    basedir="."
    default="default">
    <property environment="env" />
    <!--
        This property file name is itself a property, so it can be overridden
        on one machine versus another. We do it this way, instead of just specifying
        -propertyFile on command line, so that the property values can be "nested"
        in other property values and evaluated lazily.
    -->

    <fail
        unless="release"
        message="release must be specified for this script, such as -Drelease=juno" />

    <property
        name="aggrPropertyFile"
        value="aggr.properties" />

    <property file="${aggrPropertyFile}" />

    <!-- 
	unrewriteMapsLine is a variable, but should never have to be chagned for current sim rel 
	We make the strong assumption that, in *.b3aggrcon file, this string occurs only in 
	repository location attributes. If not true, more complex parsing/replacement would be required.
	-->

    <property
        name="commonRepositoryDownloadURLValue"
        value="http://download.eclipse.org" />

    <target
        name="installAggregatorAndTools"
        depends="init, savePrevious,installAggregator,installRelengTools">

        <echo message="Installed fresh Eclipse, Aggregator, and Tools" />

    </target>

    <target
        name="installAggregator"
        depends="init, savePrevious">
        <property
            name="APP_NAME"
            value="org.eclipse.equinox.p2.director" />
        <property
            name="OTHER_ARGS_AGG"
            value="-metadataRepository http://download.eclipse.org/modeling/emft/b3/updates-4.2/ -artifactRepository http://download.eclipse.org/modeling/emft/b3/updates-4.2/ -installIU org.eclipse.b3.aggregator.engine.feature.feature.group" />
        <!-- usually do not need the version, just to "get the latest" from
            buckminster builder site -version 1.0.0.v20090415-1651 -->
        <property
            name="VM_ARGS"
            value="-vmargs -Xmx256m" />


        <mkdir dir="${ECLIPSE_HOME}" />

        <untar
            compression="gzip"
            overwrite="true"
            src="${FULL_FILENAME}"
            dest="${ECLIPSE_HOME}" />

        <!-- weird this chmod is required? probably ant bug -->
        <chmod
            file="${ECLIPSE_HOME}/eclipse/eclipse"
            perm="ugo+x"
            verbose="true" />

        <!-- and now get latest -->
        <exec
            executable="${eclipseExecutable}"
            dir="${basedir}"
            failonerror="true">
            <arg
                line="-data ${eclipseWorkspace} -debug -nosplash --launcher.suppressErrors -vm ${JAVA_EXEC_DIR} -application ${APP_NAME} ${OTHER_ARGS_AGG} ${VM_ARGS}" />
        </exec>
    </target>
    <target
        name="installTests"
        depends="init, savePreviousTest">
        <property
            name="APP_NAME"
            value="org.eclipse.equinox.p2.director" />

        <!-- usually do not need the version, just to "get the latest" from
	            buckminster builder site -version 1.0.0.v20090415-1651 -->
        <property
            name="VM_ARGS"
            value="-vmargs -Xmx256m" />


        <mkdir dir="${ECLIPSE_HOME_TEST}" />

        <untar
            compression="gzip"
            overwrite="true"
            src="${FULL_FILENAME}"
            dest="${ECLIPSE_HOME_TEST}" />

        <!-- weird this chmod is required? probably ant bug -->
        <chmod
            file="${ECLIPSE_HOME_TEST}/eclipse/eclipse"
            perm="ugo+x"
            verbose="true" />

    	<!-- get raw files from git -->

        <echo message="  removing previous ${BRANCH_TESTS}.zip if it exists, in ${BUILD_HOME}" />

        <delete
            file="${BUILD_HOME}/${BRANCH_TESTS}.zip"
            failonerror="false" />

        <echo message="   getting ${CGITURL}/${RELENG_TESTS}.git/snapshot/${BRANCH_TESTS}.zip to ${BUILD_HOME}" />

        <get
            src="${CGITURL}/${RELENG_TESTS}.git/snapshot/${BRANCH_TESTS}.zip"
            dest="${BUILD_HOME}/${BRANCH_TESTS}.zip"
            verbose="true" />

        <unzip
            src="${BUILD_HOME}/${BRANCH_TESTS}.zip"
            dest="${BUILD_HOME}/${TMPDIR_TESTS}" />

        <copy todir="${ECLIPSE_HOME_TEST}/eclipse/dropins/${RELENG_TESTS}">
            <fileset
                dir="${BUILD_HOME}/${TMPDIR_TESTS}/${BRANCH_TESTS}"
                includes="**/*" />
        </copy>
    	
    	<!-- cleanup temp working files -->
        <delete file="${BUILD_HOME}/${BRANCH_TESTS}.zip" />
        <delete dir="${BUILD_HOME}/${TMPDIR_TESTS}" />

    </target>
    <target
        name="installRelengTools"
        depends="init">
        <property
            name="APP_NAME"
            value="org.eclipse.equinox.p2.director" />
        <property
            name="OTHER_ARGS_TOOLS"
            value="-metadataRepository http://download.eclipse.org/webtools/releng/repository/ -artifactRepository http://download.eclipse.org/webtools/releng/repository/ -installIU org.eclipse.wtp.releng.tools.feature.feature.group" />

        <property
            name="VM_ARGS"
            value="-vmargs -Xmx256m" />

        <!-- install latest -->
        <exec
            executable="${eclipseExecutable}"
            dir="${basedir}"
            failonerror="true">
            <arg
                line="-data ${eclipseWorkspace} -debug -nosplash --launcher.suppressErrors -vm ${JAVA_EXEC_DIR} -application ${APP_NAME} ${OTHER_ARGS_TOOLS} ${VM_ARGS}" />
        </exec>
    </target>

    <target
        name="getModel"
        depends="init"
        unless="modelRetrived">
        <echo message="  removing all of previous model project: ${BUILD_MODEL_DIR}" />
        <delete
            dir="${BUILD_MODEL_DIR}"
            failonerror="false" />

        <echo message="  removing previous ${BRANCH_BUILD}.zip if it exists, in ${BUILD_HOME}" />

        <delete
            file="${BUILD_HOME}/${BUILD_MODEL}-${BRANCH_BUILD}.zip"
            failonerror="false" />

        <get
            src="${CGITURL}/${BUILD_MODEL}.git/snapshot/${BUILD_MODEL}-${BRANCH_BUILD}.zip"
            dest="${BUILD_HOME}"
            verbose="true" />

        <unzip
            src="${BUILD_HOME}/${BUILD_MODEL}-${BRANCH_BUILD}.zip"
            dest="${BUILD_HOME}/${TMPDIR_BUILD}" />

        <echo message="  copy aggregator files to ${BUILD_MODEL_DIR}" />
        <echo message="     from ${BUILD_HOME}/${TMPDIR_BUILD}/${BUILD_MODEL}-${BRANCH_BUILD}" />

        <copy
            todir="${BUILD_MODEL_DIR}"
            flatten="true">
            <fileset
                dir="${BUILD_HOME}/${TMPDIR_BUILD}/${BUILD_MODEL}-${BRANCH_BUILD}"
                includes="**/*" />
        </copy> 
            
    	<!-- cleanup temp working files -->
        <delete file="${BUILD_HOME}/${BUILD_MODEL}-${BRANCH_BUILD}.zip" />
        <delete dir="${BUILD_HOME}/${TMPDIR_BUILD}" />

        <property
            name="modelRetrived"
            value="true" />
    </target>

    <target
        name="runBothBuilders"
        depends="init,getModel,rewriteRepositoryURL">

        <antcall target="runBuckyBuild" />

        <antcall target="runAggregator" />



    </target>
    <target
        name="runAggregator"
        depends="init,getModel,rewriteRepositoryURL">
        <!--
            If not otherwise set in properties file, use these values. Note
            the build.eclipse.org production machine must override these values for property
            values appropriate for it.
        -->

    	<!-- -trustedContributions Eclipse,Equinox -->
        <property
            name="AGGREGATOR_APP_ARGS"
            value="-buildModel ${BUILD_MODEL_DIR}/simrel.b3aggr
            -buildRoot ${AGGREGATOR_RESULTS} -mirrorReferences -packedStrategy unpackAsSibling
            -logLevel DEBUG -emailFromName SimRelAggregator
            -logURL ${logURL}" />

        <!-- Important: on any non-production machines it is important to _not_ use
            eclipse.p2.mirrors=false, so this value should be supplied by calling script's
            properties. Note, we include '-vmargs' here, in case there are not any. Not
            sure if the use of -vmargs _requires_ arguments or not, but probably would.
            note: -Declipse.p2.MD5Check=false may be needed as a workaround for bug [253713]
            (should not actually be required ... but have left note for historical reference)
            note: rememeber that JAVA_6 should not be used for jar processor, see
            for example, bug 244603 and bug 279596. -->
        <property
            name="BUILDER_VM_ARGS"
            value="-vmargs -Xmx1024m -Dorg.eclipse.update.jarprocessor.pack200=${JAVA_6_HOME}/jre/bin" />
        <echo message="AGGREGATOR_APP_ARGS: ${AGGREGATOR_APP_ARGS}" />

        <!-- we will clean the aggregation directory ourselves, as work around for bug 354321   
    		https://bugs.eclipse.org/bugs/show_bug.cgi?id=354321
    		-->
        <echo message="Removing any previous aggregation results, from ${AGGREGATOR_RESULTS}" />
        <delete
            dir="${AGGREGATOR_RESULTS}"
            failonerror="false" />
        <mkdir dir="${AGGREGATOR_RESULTS}" />

        <exec
            executable="${eclipseExecutable}"
            dir="${basedir}"
            failonerror="true">
            <arg value="-debug" />
            <arg value="-nosplash" />
            <arg line="-data ${eclipseWorkspace}" />
            <arg line="-vm ${JAVA_6_HOME}/jre/bin" />
            <arg value="--launcher.suppressErrors" />
            <arg line="-application org.eclipse.b3.cli.headless" />
            <arg value="aggregate" />
            <arg line="--buildId ${buildTimestamp}" />
            <arg line="${AGGREGATOR_APP_ARGS}" />
            <arg line="${BUILDER_VM_ARGS}" />
        </exec>
    </target>

    <target
        name="runAggregatorBuildOnly"
        depends="init,getModel,rewriteRepositoryURL">
        <!--
	            If not otherwise set in properties file, use these values. Note
	            the build.eclipse.org production machine must override these values for property
	            values appropriate for it.
	        -->

        <property
            name="AGG_APP_ARGS"
            value="${AGGREGATOR_APP_ARGS_BUILDONLY}" />

        <!-- Important: on any non-production machines it is important to _not_ use
	            eclipse.p2.mirrors=false, so this value should be supplied by calling script's
	            properties. Note, we include '-vmargs' here, in case there are not any. Not
	            sure if the use of -vmargs _requires_ arguments or not, but probably would.
	            note: -Declipse.p2.MD5Check=false may be needed as a workaround for bug [253713]
	            (should not actually be required ... but have left note for historical reference)
	            note: rememeber that JAVA_6 should not be used for jar processor, see
	            for example, bug 244603 and bug 279596. -->
        <property
            name="BUILDER_VM_ARGS"
            value="-vmargs -Xmx1024m -Dorg.eclipse.update.jarprocessor.pack200=${JAVA_6_HOME}/jre/bin" />
        <echo message="AGG_APP_ARGS: ${AGG_APP_ARGS}" />
        <exec
            executable="${eclipseExecutable}"
            dir="${basedir}"
            failonerror="true">
            <arg value="-debug" />
            <arg value="-nosplash" />
            <arg line="-data ${eclipseWorkspace}" />
            <arg line="-vm ${JAVA_6_HOME}/jre/bin" />
            <arg value="--launcher.suppressErrors" />
            <arg line="-application org.eclipse.b3.cli.headless" />
            <arg value="aggregate" />
            <arg line="--buildId ${buildTimestamp}" />
            <arg line="${AGG_APP_ARGS}" />
            <arg line="${BUILDER_VM_ARGS}" />
        </exec>
    </target>

    <target
        name="runAggregatorVerifyOnly"
        depends="init,getModel,rewriteRepositoryURL">
        <!--
                If not otherwise set in properties file, use these values. Note
                the build.eclipse.org production machine must override these values for property
                values appropriate for it.
            -->

        <property
            name="AGG_APP_ARGS"
            value="${AGGREGATOR_APP_ARGS_VERIFYONLY}" />

        <!-- Important: on any non-production machines it is important to _not_ use
                eclipse.p2.mirrors=false, so this value should be supplied by calling script's
                properties. Note, we include '-vmargs' here, in case there are not any. Not
                sure if the use of -vmargs _requires_ arguments or not, but probably would.
                note: -Declipse.p2.MD5Check=false may be needed as a workaround for bug [253713]
                (should not actually be required ... but have left note for historical reference)
                note: rememeber that JAVA_6 should not be used for jar processor, see
                for example, bug 244603 and bug 279596. -->
        <property
            name="BUILDER_VM_ARGS"
            value="-vmargs -Xmx1024m -Dorg.eclipse.update.jarprocessor.pack200=${JAVA_6_HOME}/jre/bin" />
        <echo message="AGG_APP_ARGS: ${AGG_APP_ARGS}" />

        <exec
            executable="${eclipseExecutable}"
            dir="${basedir}"
            failonerror="true">
            <arg value="-debug" />
            <arg value="-nosplash" />
            <arg line="-data ${eclipseWorkspace}" />
            <arg line="-vm ${JAVA_6_HOME}/jre/bin" />
            <arg value="--launcher.suppressErrors" />
            <arg line="-application org.eclipse.b3.cli.headless" />
            <arg value="aggregate" />
            <arg line="--buildId ${buildTimestamp}" />
            <arg line="${AGG_APP_ARGS}" />
            <arg line="${BUILDER_VM_ARGS}" />
        </exec>
    </target>


    <target
        name="runHybrid"
        depends="init,getModel,rewriteRepositoryURL">
        <!--
	            If not otherwise set in properties file, use these values. Note
	            the build.eclipse.org production machine must override these values for property
	            values appropriate for it.
	        -->

        <property
            name="HYBRID_APP_ARGS"
            value="--buildModel ${BUILD_MODEL_DIR}/simrel.b3aggr
	            --buildRoot ${HYBRID_RESULTS} --mirrorReferences --packedStrategy unpackAsSibling
	            --mavenResult --logLevel DEBUG --emailFromName SimRelAggregator
	            --logURL ${logURL}" />

        <!-- Important: on any non-production machines it is important to _not_ use
	            eclipse.p2.mirrors=false, so this value should be supplied by calling script's
	            properties. Note, we include '-vmargs' here, in case there are not any. Not
	            sure if the use of -vmargs _requires_ arguments or not, but probably would.
	            note: -Declipse.p2.MD5Check=false may be needed as a workaround for bug [253713]
	            (should not actually be required ... but have left note for historical reference)
	            note: rememeber that JAVA_6 should not be used for jar processor, see
	            for example, bug 244603 and bug 279596. -->
        <property
            name="BUILDER_VM_ARGS"
            value="-vmargs -Xmx1024m -Dorg.eclipse.update.jarprocessor.pack200=${JAVA_6_HOME}/jre/bin" />

        <exec
            executable="${eclipseExecutable}"
            dir="${basedir}"
            failonerror="true">
            <arg value="-debug" />
            <arg value="-nosplash" />
            <arg line="-data ${eclipseWorkspace}" />
            <arg line="-vm ${JAVA_6_HOME}/jre/bin" />
            <arg value="--launcher.suppressErrors" />
            <arg line="-application org.eclipse.b3.cli.headless" />
            <arg value="aggregate" />
            <arg line="--buildId ${buildTimestamp}" />
            <arg line="${HYBRID_APP_ARGS}" />
            <arg line="${BUILDER_VM_ARGS}" />
        </exec>
    </target>

    <target
        name="init"
        depends="getBuildTimestamp, getJobName, getBuildWorkarea"
        unless="isInitialized">

        <!-- often, especially for Huson slaves, it is easiest to set hostForURL "manually" in properties or 
    	on command line, e.g. -DhostForURL=hudson ... but, if not defined yet, we'll fallback to reasonable guess -->
        <property
            name="hostForURL"
            value="${HOSTNAME}" />

        <condition
            property="logURL"
            value="${LOG_URL}"
            else="${hostForURL}">
            <isset property="LOG_URL" />
        </condition>
        <property
            name="eclipseWorkspace"
            value="${buildWorkarea}/eclipseworkingspace" />

        <!-- if the eclipse workspace exists, remove it, to make sure we are starting "fresh". Eclipse will create it. Be sure some "archive artifacts" job saves it away, if desired. -->
        <delete
            dir="${eclipseWorkspace}"
            quiet="true" />

        <property
            name="eclipseExecutable"
            value="${ECLIPSE_EXE}" />

        <available
            file="${ECLIPSE_HOME}/eclipse"
            type="dir"
            property="eclipseExists" />

        <available
            file="${ECLIPSE_HOME_TEST}/eclipse"
            type="dir"
            property="eclipseTestExists" />

        <echo message="aggrPropertyFile: ${aggrPropertyFile}" />
        <echo message="buildId: ${buildTimestamp}" />
        <echo message="user.dir: ${user.dir}" />
        <echo message="user.home: ${user.home}" />
        <echo message="Eclipse WORKSPACE: ${eclipseWorkspace}" />
        <echo message="PATH: ${env.PATH}" />
        <echo message="JAVA_HOME: ${JAVA_HOME}" />
        <echo message="hostForURL: ${hostForURL}" />
        <echo message="JOB_NAME: ${env.JOB_NAME}" />
        <echo message="BUILD_NUMBER: ${env.BUILD_NUMBER}" />
        <echo message="logURL: ${logURL}" />
        <echo message="ECLIPSE_EXE:  ${ECLIPSE_EXE}" />

        <echo message="BUILDER_VM_ARGS: ${BUILDER_VM_ARGS}" />
        <echoproperties />
        <!-- quick fail, if set up wrong -->
        <fail
            unless="BUILD_HOME"
            message="BUILD_HOME must be set before running this script" />

        <!--
            no need to initialize twice
        -->
        <property
            name="isInitialized"
            value="true" />

    </target>
    <target
        name="getBuildTimestamp"
        depends="getHudsonTimestamp"
        unless="buildTimestamp">
        <tstamp>
            <format
                property="buildTimestamp"
                pattern="yyyy-MM-dd_HH-mm-ss"
                timezone="UTC_TIME" />
        </tstamp>
        <echo message="Using ant computed timestamp" />
    </target>
    <target
        name="getHudsonTimestamp"
        depends="getCCTimestamp"
        unless="buildTimestamp"
        if="env.BUILD_ID">
        <property
            name="buildTimestamp"
            value="${env.BUILD_ID}" />
        <echo message="Using timestamp from Hudson Build ID" />
    </target>
    <target
        name="getCCTimestamp"
        unless="buildTimestamp"
        if="cctimestamp">
        <property
            name="buildTimestamp"
            value="${cctimestamp}" />
        <echo message="Using timestamp from CC time stamp" />
    </target>
    <target
        name="getJobName"
        depends="getHudsonJobName"
        unless="jobName">
        <property
            name="jobName"
            value="localbuild" />
        <echo message="Using default jobName: localbuild" />
    </target>
    <target
        name="getHudsonJobName"
        depends="getCCJobName"
        unless="jobName"
        if="env.JOB_NAME">
        <property
            name="jobName"
            value="${env.JOB_NAME}" />
        <echo message="Using jobName from Hudson Builder: ${jobName}" />
    </target>
    <target
        name="getCCJobName"
        unless="jobName"
        if="projectname">
        <property
            name="jobName"
            value="${projectname}" />
        <echo message="Using jobName from CC Builder: ${jobName}" />
    </target>
    <target
        name="getBuildWorkarea"
        depends="getJobName, getHudsonBuildWorkarea"
        unless="buildWorkarea">
        <property
            name="buildWorkarea"
            value="${basedir}" />
        <echo message="Using default buildWorkarea: ${buildWorkarea}" />
    </target>
    <target
        name="getHudsonBuildWorkarea"
        depends="getCCBuildWorkarea"
        unless="buildWorkarea"
        if="env.HUDSON_HOME">
        <property
            name="buildWorkarea"
            value="${env.WORKSPACE}" />
        <echo message="Using buildWorkarea from Hudson Builder: ${buildWorkarea}" />
    </target>
    <target
        name="getCCBuildWorkarea"
        unless="buildWorkarea"
        if="env.PROJECT_PROJECTS">
        <property
            name="buildWorkarea"
            value="${env.PROJECT_PROJECTS}/${jobName}/${buildTimestamp}" />
        <echo message="Using buildWorkarea from CC Builder: ${buildWorkarea}" />
    </target>

    <target
        name="savePrevious"
        depends="init"
        if="eclipseExists"
        unless="previousSaved">
        <!-- remember, old ones have to be maually cleaned up, from time to time -->
        <move
            verbose="true"
            todir="${ECLIPSE_HOME}/eclipse${buildTimestamp}">
            <fileset dir="${ECLIPSE_HOME}/eclipse" />
        </move>

        <property
            name="previousSaved"
            value="true" />

    </target>

    <target
        name="savePreviousTest"
        depends="init"
        if="eclipseTestExists">
        <!-- remember, old ones have to be maually cleaned up, from time to time -->
        <fail unless="buildTimestamp" />

        <move todir="${ECLIPSE_HOME_TEST}/eclipse${buildTimestamp}">
            <fileset dir="${ECLIPSE_HOME_TEST}/eclipse" />
        </move>

    </target>

    <!-- Only rewrite, if a value has been provided -->
	<!-- TODO: should make the "exclude" part automatic based on presence/abscense of "useTrusted" property -->
    <target
        name="rewriteRepositoryURL"
        if="rewriteRepositoryURLValue">
        <replace
            dir="${BUILD_MODEL_DIR}"
            token="${commonRepositoryDownloadURLValue}"
            value="${rewriteRepositoryURLValue}">
            <include name="*.b3aggrcon" />
        	<!--
            <exclude name="ep.b3aggrcon"/>
            <exclude name="equinox.b3aggrcon"/>
            -->
        </replace>
        <echo message="Rewrote repository location URLs ..." />
        <echo message="        From: ${commonRepositoryDownloadURLValue}" />
        <echo message="          To: ${rewriteRepositoryURLValue}" />
        <echo message="   Excluding no files since no composite artifacts, just agregate" />
        <!--
    	<echo message="   Excluding: ep.b3aggrcon"/>
        <echo message="   Excluding: ep.b3aggrcon, equinox.b3aggrcon"/>
        -->

    </target>

    <target name="default">
        <echo message="There is no default target for this build file" />
    </target>
</project>