<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=mars" />

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

  <loadproperties srcfile="${aggrPropertyFile}" />

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

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

  </target>

  <target
    name="installAggregator"
    depends="init, savePrevious"
    if="installEclipseAndTools">
    <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.4/ -artifactRepository http://download.eclipse.org/modeling/emft/b3/updates-4.4/ -installIU org.eclipse.b3.aggregator.engine.feature.feature.group" />
        <!--
      <property
      name="OTHER_ARGS_AGG"
      value="-metadataRepository http://download.eclipse.org/modeling/emft/b3/updates-4.4/ -artifactRepository http://download.eclipse.org/modeling/emft/b3/updates-4.4/
      -installIU org.eclipse.b3.aggregator.engine.feature.feature.group" />

      <property
      name="OTHER_ARGS_AGG"
      value="-metadataRepository http://download.eclipse.org/modeling/emft/b3/updates-4.4/,http://download.eclipse.org/releases/luna
      -artifactRepository http://download.eclipse.org/modeling/emft/b3/updates-4.4/,http://download.eclipse.org/releases/luna -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="-Xmx256m" />


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

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

   <!--
        This .options file is most useful on non-eclipse.org sites, since
        on eclipse.org, by design, should not go through mirrors, but that's the
        purpose of the .options ... so list which mirrors that artifacts come from.

    <copy
      file="${BUILD_HOME}/${BUILD_TOOLS}/p2options/.options"
      todir="${ECLIPSE_HOME}/eclipse/" />
    -->
    <!--
        Weird this chmod is required? Maybe an ant bug? Maybe no longer needed?
        (That is, maybe an early bug in packages?)
    -->
    <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 -consolelog -nosplash --launcher.suppressErrors -application ${APP_NAME} ${OTHER_ARGS_AGG} -vm ${JAVA_EXEC_DIR} -vmargs ${VM_ARGS}" />
    </exec>
  </target>

  <target
    name="installTests"
    depends="init, savePreviousTest"
    if="installEclipseTests">
    <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="-Xmx256m" />

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

    <untar
      compression="gzip"
      overwrite="true"
      src="${FULL_TEST_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 ... this is now done by Hudson

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

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

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

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

    <unzip
      src="${BUILD_HOME}/HOLD_BRANCH.zip"
      dest="${BUILD_HOME}/${TMPDIR_TESTS}" />
-->
    <copy todir="${ECLIPSE_HOME_TEST}/eclipse/dropins/${RELENG_TESTS_BUNDLE_ID}">
      <fileset
        dir="${BUILD_HOME}/${RELENG_TESTS_DIR}/${RELENG_TESTS_PATH}/"
        includes="**/*" />
    </copy>

        <!-- cleanup temp working files
    <delete file="${BUILD_HOME}/HOLD_BRANCH.zip" />
    <delete dir="${BUILD_HOME}/${TMPDIR_TESTS}" />
    -->

  </target>
  <target
    name="installRelengTools"
    depends="init"
    if="installEclipseAndTools">
    <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="-Xmx256m" />

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

  <macrodef name="git-rev-parse">
    <attribute name="repodir" />
    <attribute
      name="reference"
      default="HEAD" />
    <attribute name="returnProperty" />
    <sequential>
      <echo message="execute git in @{repodir}" />
      <echo message="git rev-parse @{reference} returned in @{returnProperty}" />
      <local name="rc" />
      <local name="result" />
      <exec
        executable="git"
        failonerror="true"
        outputproperty="result"
        resultproperty="rc"
        dir="@{repodir}">
        <arg line="rev-parse @{reference}" />
      </exec>
      <property
        name="@{returnProperty}"
        value="${result}" />
      <echo message="In macro rc is ${rc}" />
      <echo message="In macro result is ${result}" />
      <echo message="In macro @{returnProperty} is ${@{returnProperty}}" />
    </sequential>
  </macrodef>
  <macrodef name="git-clone">
    <attribute name="repository" />
    <attribute name="dir" />
    <attribute name="branch" />
    <sequential>
      <echo message="execute git in @{dir}" />
      <echo message="git clone -b @{branch} @{repository} --config core.autocrlf=input --config merge.defaultToUpstream=true" />
      <exec
        executable="git"
        failonerror="true"
        resultproperty="cloneResult"
        dir="@{dir}">
        <arg line="clone -b @{branch} @{repository} --config core.autocrlf=input --config merge.defaultToUpstream=true" />
      </exec>
      <antcall target="checkStatus">
        <param
          name="status"
          value="${cloneResult}" />
        <param
          name="message"
          value="Cloning Failed" />
      </antcall>
    </sequential>
  </macrodef>

  <!--
    We do modify the source tree during build, to change URLs to local file system,
    if building on build.eclipse.org, so need to 'clean' and 'reset' before pull.
    For pull we always do a fetch followed by a checkout, in case we change branches
    in Hudson job, etc. ... say, to do a "Luna_maintenance_patch".
  -->
  <macrodef name="git-pull">
    <attribute name="dir" />
    <attribute name="branch" />
    <attribute name="origin" />
    <sequential>
      <echo message="= = = execute git in @{dir}" />
      <echo message="git clean -d -ff -x" />
      <exec
        executable="git"
        failonerror="true"
        resultproperty="RCclean"
        dir="@{dir}">
        <arg line="clean -d -ff -x" />
      </exec>
      <antcall target="checkStatus">
        <param
          name="status"
          value="${RCclean}" />
        <param
          name="message"
          value="Cleaning Failed" />
      </antcall>
      <echo message="git reset --hard" />
      <exec
        executable="git"
        failonerror="true"
        resultproperty="RCreset"
        dir="@{dir}">
        <arg line="reset --hard" />
      </exec>
      <antcall target="checkStatus">
        <param
          name="status"
          value="${RCreset}" />
        <param
          name="message"
          value="Reset Failed" />
      </antcall>
      <echo message="git fetch @{origin}" />

      <exec
        executable="git"
        failonerror="true"
        resultproperty="RCfetch"
        dir="@{dir}">
        <arg line="fetch @{origin}" />
      </exec>

      <antcall target="checkStatus">
        <param
          name="status"
          value="${RCfetch}" />
        <param
          name="message"
          value="fetch Failed" />
      </antcall>

       <!-- not sure why, but when I used
       - -track origin2/MarRC1-branch
       it resulted in an error (below). Since I don't think we really need to track, I removed.
       13:19:40       [echo] git checkout -B MarsRC1-branch - -track origin2/MarsRC1-branch
       13:19:40       [exec] fatal: Cannot update paths and switch to branch 'MarsRC1-branch' at the same time.
       13:19:40       [exec] Did you intend to checkout 'origin2/MarsRC1-branch' which can not be resolved as commit?
       -->
        
      <echo message="git checkout -B @{branch}" />
      <exec
        executable="git"
        failonerror="true"
        resultproperty="RCcheckout"
        dir="@{dir}">
        <arg line="checkout -B @{branch}" />
      </exec>
      <antcall target="checkStatus">
        <param
          name="status"
          value="${RCcheckout}" />
        <param
          name="message"
          value="Checkout Failed" />
      </antcall>
    </sequential>
  </macrodef>

    <!--
         This can leave repo in "detached" state, which, shouldn't hurt anything we're doing,
         as long as Hudson can check out/clone branch the next time the job runs.
    -->
  <macrodef name="git-checkout">
    <attribute name="dir" />
    <attribute name="commit" />
    <sequential>
      <echo message="execute git checkout @{commit} in @{dir}" />
      <exec
        executable="git"
        failonerror="true"
        resultproperty="RCcheckout"
        dir="@{dir}">
        <arg line="checkout @{commit}" />
      </exec>
      <antcall target="checkStatus">
        <param
          name="status"
          value="${RCcheckout}" />
        <param
          name="message"
          value="Checkout Failed" />
      </antcall>
    </sequential>
  </macrodef>

  <!--
     We never really need/use 'clone' when on Hudson.
     We do use "pull", to make sure "current", and then
     in main task we "checkout" the exact commit we want. This is primarily so that
     all tasks (validate, build-with-Cache, and build-Clean, all operate on exact
     same input). [Though, still need "exact" input in b3aggrcon files, for that to be completely
     valid.]
  -->
  <target
    name="getModelFromGit"
    depends="init, cloneRepo, cloneToolsRepo, cloneTestsRepo, pullRepo, pullToolsRepo, pullTestsRepo"
    unless="modelRetrived">
    <!--
         While Hudson normall does clone and 'pull', we "check" here to make sure.
         In particular, in some cases, a build might be triggered by a change in "tools"
         repo, so even then we want to make sure to get 'latest' of "build" repo.
         In both cases, we *then* want to get a specific revision, if passed to us by
         a previous job. This is so that the various jobs we have, 'validate',
         'build', and 'build_clean' can all work on the same revision.
    -->
    <git-checkout
      dir="${BUILD_MODEL_DIR}"
      commit="${commitOrBranch}" />
    <echo message="on HUDSON: checkedout ${commitOrBranch} of ${BUILD_MODEL} into ${BUILD_MODEL_DIR}" />
    <git-checkout
      dir="${BUILD_TOOLS_DIR}"
      commit="${toolsCommitOrBranch}" />
    <echo message="on HUDSON: checkedout ${toolsCommitOrBranch} of ${BUILD_TOOLS} into ${BUILD_TOOLS_DIR}" />
    <property
      name="modelRetrived"
      value="true" />
  </target>

  <target
    name="cloneRepo"
    depends="init"
    unless="localRepoExists">

    <echo message="git clone task for ${BUILD_MODEL} to execute in ${BUILD_HOME} using branch ${BRANCH_BUILD}" />

    <git-clone
      repository="git://git.eclipse.org/gitroot/simrel/${BUILD_MODEL}.git"
      dir="${BUILD_HOME}"
      branch="${BRANCH_BUILD}" />
  </target>

  <target
    name="cloneToolsRepo"
    depends="init"
    unless="localToolsRepoExists">
    <echo message="git clone task for ${BUILD_TOOLS} to execute in ${BUILD_HOME} using branch ${BRANCH_TOOLS}" />
    <git-clone
      repository="git://git.eclipse.org/gitroot/simrel/${BUILD_TOOLS}.git"
      dir="${BUILD_HOME}"
      branch="${BRANCH_TOOLS}" />
  </target>

  <target
    name="cloneTestsRepo"
    depends="init"
    unless="localTestsRepoExists">
    <echo message="git clone task for ${BUILD_TESTS} to execute in ${BUILD_HOME} using branch ${BRANCH_TESTS}" />
    <git-clone
      repository="git://git.eclipse.org/gitroot/simrel/${BUILD_TESTS}.git"
      dir="${BUILD_HOME}"
      branch="${BRANCH_TESTS}" />
  </target>

  <target
    name="pullRepo"
    depends="init"
    if="localRepoExists">
    <echo message="git pull task to execute in ${BUILD_MODEL_DIR}" />
    <!-- in macro "pull", we actually do a fetch, then check out -->
    <git-pull
      dir="${BUILD_MODEL_DIR}"
      branch="${BRANCH_BUILD}"
      origin="${BUILD_ORIGIN}" />
  </target>

  <target
    name="pullToolsRepo"
    depends="init"
    if="localToolsRepoExists">
    <echo message="git pull task to execute in ${BUILD_TOOLS_DIR}" />
    <git-pull
      dir="${BUILD_TOOLS_DIR}"
      branch="${BRANCH_TOOLS}"
      origin="${TOOLS_ORIGIN}" />
  </target>

  <target
    name="pullTestsRepo"
    depends="init"
    if="localTestsRepoExists">
    <echo message="git pull task to execute in ${BUILD_TESTS_DIR}" />
    <git-pull
      dir="${BUILD_TESTS_DIR}"
      branch="${BRANCH_TESTS}"
      origin="${TESTS_ORIGIN}" />
  </target>

  <!--
       This is "the key" task. If it succeeds, we run tests (reports), and
       if they "pass", we promote to "staging".
  -->
  <target
    name="runAggregatorCleanBuild"
    depends="init,getModelFromGit,rewriteRepositoryURL,installAggregatorAndTools,installTests">
      <!--
        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 (namely production.properties).
      -->
    <!--
       We no longer "trust" Eclipse and Equinox repos.
       -trustedContributions Eclipse,Equinox
    -->
    <property
      name="AGG_APP_ARGS"
      value="${AGGREGATOR_APP_ARGS_CLEAN_BUILD} --eclipseLogLevel DEBUG --logLevel DEBUG" />

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

    <!-- -Dorg.eclipse.update.jarprocessor.pack200=${JAVA_6_HOME}/jre/bin -Declipse.p2.mirrors=false" -->
    <property
      name="BUILDER_VM_ARGS"
      value="-Xmx1024m -Djava.io.tmpdir=${BUILD_HOME}/tmp -Declipse.p2.mirrors=false" />
    <echo message="AGG_APP_ARGS: ${AGG_APP_ARGS}" />
    <echo message="BUILDER_VM_ARGS: -vmargs ${BUILDER_VM_ARGS}" />

    <exec
      executable="${eclipseExecutable}"
      dir="${basedir}"
      failonerror="false"
      resultproperty="buildStatus">
      <arg value="-debug" />
      <arg value="file://${BUILD_HOME}/${BUILD_TOOLS}/p2options/.options" />
      <!--
        Adding -consolelog makes for too much, unneeded output, since the aggregator
        produces its verbose own output, slightly cleaner.
        <arg value="-consolelog" />
      -->
      <arg value="-nosplash" />
      <arg value="-data" />
      <arg value="${eclipseWorkspace}" />
      <arg value="--launcher.suppressErrors" />
      <arg value="-application" />
      <arg value="org.eclipse.b3.cli.headless" />
      <arg value="aggregate" />
      <arg value="--buildId" />
      <arg value="${buildTimestamp}" />
      <arg line="${AGG_APP_ARGS}" />
      <arg value="-vm" />
      <arg value="${JAVA_8_HOME}/jre/bin" />
      <arg value="-vmargs" />
      <arg line="${BUILDER_VM_ARGS}" />
    </exec>

    <antcall target="checkStatus">
      <param
        name="status"
        value="${buildStatus}" />
      <param
        name="message"
        value="Aggregation Failed" />
    </antcall>
      
      <echo message="Waiting 2 seconds..." />
      <sleep seconds="2" />
      <echo message="Waiting 2 seconds..." />
      <sleep seconds="2" />
      <echo message="Waiting 2 seconds..." />
      <sleep seconds="2" />

      <antcall target="createBuildinfo" />
    <antcall target="createXZformats" />
    <!--
         The tests depend on the symbolic link of "latests" being created,
         so we pause a few seconds for NSF to catch up.
    -->
    <echo message="Waiting 2 seconds..." />
    <sleep seconds="2" />
    <echo message="Waiting 2 seconds..." />
    <sleep seconds="2" />
    <echo message="Waiting 2 seconds..." />
    <sleep seconds="2" />

    <antcall target="runTests" />

  </target>

    <!-- runTests can be ran as manual job, but then should use custom workspace, 
         to run against previous build, and acquire the lock, for that job -->
  <target
    name="runTests"
    depends="init,getModelFromGit,rewriteRepositoryURL,installAggregatorAndTools,installTests">
    <ant
      antfile="${BUILD_HOME}/testInstance/eclipse/dropins/${RELENG_TESTS_BUNDLE_ID}/runTests.xml"
      target="cleanBuildTests"
      dir="${BUILD_HOME}" />
  </target>

  <target name="checkStatus">
    <echo message="status: ${status}" />
    <condition
      property="statusOK"
      value="true">
      <equals
        forceString="true"
        arg1="${status}"
        arg2="0" />
    </condition>
    <echo message="statusOK: ${statusOK}" />
    <antcall target="writeStatus" />
    <fail
      message="${message}"
      unless="statusOK" />

  </target>

  <target
    name="writeStatus"
    unless="statusOK">
    <echo
      message="build failed"
      file="${BUILD_HOME}/buildStatusFailed" />
  </target>

  <!--
     Note: many tests would not be valid on "cached" version of repo, but, some might?
     Currently no tests are called, but, we might alter, so we make sure installed now,
     in anticipation.
  -->
  <target
    name="runAggregatorBuildOnly"
    depends="init,getModelFromGit,rewriteRepositoryURL,installAggregatorAndTools, installTests">
    <!--
      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 be required any longer ... 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.
    -->
      <!-- -Dorg.eclipse.update.jarprocessor.pack200=${JAVA_6_HOME}/jre/bin -Declipse.p2.mirrors=false" -->
    <property
      name="BUILDER_VM_ARGS"
      value="-Xmx1024m -Djava.io.tmpdir=${BUILD_HOME}/tmp -Declipse.p2.mirrors=false" />
    <echo message="AGG_APP_ARGS: ${AGG_APP_ARGS}" />
    <echo message="BUILDER_VM_ARGS: -vmargs ${BUILDER_VM_ARGS}" />

    <exec
      executable="${eclipseExecutable}"
      dir="${basedir}"
      failonerror="false"
      resultproperty="buildStatus">
      <arg value="-debug" />
      <arg value="file://${BUILD_HOME}/${BUILD_TOOLS}/p2options/.options" />
      <!--
        Adding -consolelog makes for too much, unneeded output, since the aggregator
        produces its verbose own output, slightly cleaner.
        <arg value="-consolelog" />
      -->
      <arg value="-nosplash" />
      <arg value="-data" />
      <arg value="${eclipseWorkspace}" />
      <arg value="--launcher.suppressErrors" />
      <arg value="-application" />
      <arg value="org.eclipse.b3.cli.headless" />
      <arg value="aggregate" />
      <arg value="--buildId" />
      <arg value="${buildTimestamp}" />
      <arg line="${AGG_APP_ARGS}" />
      <arg value="-vm" />
      <arg value="${JAVA_8_HOME}/jre/bin" />
      <arg value="-vmargs" />
      <arg line="${BUILDER_VM_ARGS}" />
    </exec>

    <antcall target="checkStatus">
      <param
        name="status"
        value="${buildStatus}" />
      <param
        name="message"
        value="Aggregation Failed" />
    </antcall>

    <antcall target="createBuildinfo" />

    <ant
      antfile="${BUILD_HOME}/testInstance/eclipse/dropins/${RELENG_TESTS_BUNDLE_ID}/runTests.xml"
      target="cachedBuildTests"
      dir="${BUILD_HOME}" />

  </target>

  <!--
     Note, we currently have no "tests" for the "validate only" case, but we could, might
     someday, so we go ahead an install, in anticipation. For example, we might simply
     test that all b3aggrcon files specify unique URL (to simple repository) or
     that "versions" are specified in *.b3aggrcon file.
  -->
  <target
    name="runAggregatorValidateOnly"
    depends="init,getModelFromGit,rewriteRepositoryURL,installAggregatorAndTools, installTests">
    <!--
      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_VALIDATEONLY}" />

    <!--
      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.
    -->
<!--    -Dorg.eclipse.update.jarprocessor.pack200=${JAVA_6_HOME}/jre/bin -Declipse.p2.mirrors=false" -->
    <property
      name="BUILDER_VM_ARGS"
      value="-Xmx1024m -Djava.io.tmpdir=${BUILD_HOME}/tmp -Declipse.p2.mirrors=false" />
    <echo message="AGG_APP_ARGS: ${AGG_APP_ARGS}" />
    <echo message="BUILDER_VM_ARGS: -vmargs ${BUILDER_VM_ARGS}" />

    <exec
      executable="${eclipseExecutable}"
      dir="${basedir}"
      failonerror="false"
      resultproperty="buildStatus">
      <arg value="-debug" />
      <arg value="file://${BUILD_HOME}/${BUILD_TOOLS}/p2options/.options" />
      <!--
        Adding -consolelog makes for too much, unneeded output, since the aggregator
        produces its verbose own output, slightly cleaner.
        <arg value="-consolelog" />
      -->
      <arg value="-nosplash" />
      <arg value="-data" />
      <arg value="${eclipseWorkspace}" />
      <arg value="--launcher.suppressErrors" />
      <arg value="-application" />
      <arg value="org.eclipse.b3.cli.headless" />
      <arg value="aggregate" />
      <arg value="--buildId" />
      <arg value="${buildTimestamp}" />
      <arg line="${AGG_APP_ARGS}" />
      <arg value="-vm" />
      <arg value="${JAVA_6_HOME}/jre/bin" />
      <arg value="-vmargs" />
      <arg line="${BUILDER_VM_ARGS}" />
    </exec>

    <antcall target="checkStatus">
      <param
        name="status"
        value="${buildStatus}" />
      <param
        name="message"
        value="Aggregation Failed" />
    </antcall>

    <!-- setting dir to our workspace, so tests done on what "we" have -->
    <antcall target="createBuildinfo" />

    <ant
      antfile="${BUILD_HOME}/testInstance/eclipse/dropins/${RELENG_TESTS_BUNDLE_ID}/runTests.xml"
      target="validateOnlyTests"
      dir="${BUILD_HOME}" />

  </target>

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

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

    <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.
      -->
    <property
      name="aggrPropertyFile"
      value="aggr.properties" />

    <loadproperties srcfile="${aggrPropertyFile}" />

    <!--
        rewriteRepositoryURLValue is an important variable, passed in through
        production.properties. It is the trigger to change http:// values, to
        file:// values.

        At one point, we needed, unrewriteMapsLine, to know how to "change back" and
        now use commonRepositoryDownloadURLValue to know "what to look for" to change
        to rewriteRepositoryURLValue, but this should not be needed to be changed,
        since we make the strong assumption that, in *.b3aggrcon files, 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" />

    <!--
      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.
      Note: not sure this is needed any longer?
    -->
    <property
      name="hostForURL"
      value="${HOSTNAME}" />

    <condition property="localRepoExists">
      <available file="${BUILD_MODEL_DIR}/.git" />
    </condition>

    <condition property="localToolsRepoExists">
      <available file="${BUILD_TOOLS_DIR}/.git" />
    </condition>

    <condition property="localTestsRepoExists">
      <available file="${BUILD_TESTS_DIR}/.git" />
    </condition>

    <condition
      property="commitOrBranch"
      value="${commit}"
      else="${BRANCH_BUILD}">
      <isset property="commit" />
    </condition>

    <condition
      property="toolsCommitOrBranch"
      value="${toolsCommit}"
      else="${BRANCH_TOOLS}">
      <isset property="toolsCommit" />
    </condition>

    <condition
      property="testsCommitOrBranch"
      value="${testsCommit}"
      else="${BRANCH_TESTS}">
      <isset property="testsCommit" />
    </condition>

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

    <property
      name="eclipseWorkspace"
      value="${BUILD_HOME}/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, just for it's ".log", if nothing else.
    -->
    <delete
      dir="${eclipseWorkspace}"
      quiet="true" />

    <property
      name="javaIOTmpdir"
      value="${BUILD_HOME}/tmp" />
    <mkdir dir="${javaIOTmpdir}" />
    <!--
         In case java.io.tmpdir is "passed in", technically, it is BUILDER_VM_ARGS
         that is passed in from aggr.properties. So, make sure this value matches
         the properties.
    -->

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

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

    <!--
         set installEclipseAndTools on command line to force a reinstall,
         is only done if not installed yet.
    -->
    <condition property="installEclipseAndTools">
      <not>
        <isset property="eclipseExists" />
      </not>
    </condition>

    <!--
         saveAndInstallEclipseAndTools should only be true if "installEclipseAndTools" are
         set on command line properties (and a version already exists).
    -->
    <condition property="saveAndInstallEclipseAndTools">
      <and>
        <isset property="eclipseExists" />
        <isset property="installEclipseAndTools" />
      </and>
    </condition>

    <available
      file="${ECLIPSE_HOME_TEST}/eclipse/dropins/${RELENG_TESTS_DIR}"
      type="dir"
      property="eclipseTestsExists" />

      <!--
           set installEclipseTests on command line to force a reinstall,
           else is done only if not installed yet.
      -->
    <condition property="installEclipseTests">
      <not>
        <isset property="eclipseTestsExists" />
      </not>
    </condition>
      <!--
           saveAndInstallEclipseTests should only be true if "installEclipseTests" are
           set on command line properties (and a version already exists).
      -->
    <condition property="saveAndInstallEclipseTests">
      <and>
        <isset property="eclipseTestsExists" />
        <isset property="installEclipseTests" />
      </and>
    </condition>
    <echo message="= = = Properties in init = = = " />
    <echo message="commit: ${commit}" />
    <echo message="toolsCommit: ${toolsCommit}" />
    <echo message="testsCommit: ${testsCommit}" />
    <echo message="aggrPropertyFile: ${aggrPropertyFile}" />
    <echo message="buildId: ${buildTimestamp}" />
    <echo message="user.dir: ${user.dir}" />
    <echo message="user.home: ${user.home}" />
    <echo message="BUILD_HOME (HUDSON workspace): ${BUILD_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="eclipseExists: ${eclipseExists}" />
    <echo message="eclipseTestsExists: ${eclipseTestsExists}" />
    <echo message="BUILDER_VM_ARGS: ${BUILDER_VM_ARGS}" />
    <echo message="javaIOTmpdir: ${javaIOTmpdir}" />
    <echo message=" = = = = = = = = = = = = " />
    <echoproperties />

    <!--
      remove "build failed" status file, if there is one from previous run.
    -->
    <delete
      failonerror="true"
      quiet="true">
      <fileset dir="${BUILD_HOME}">
        <include name="buildStatusFailed" />
      </fileset>
    </delete>

    <!--
      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. Why?" />
  </target>

  <target
    name="getHudsonTimestamp"
    unless="buildTimestamp"
    if="env.BUILD_ID">
    <property
      name="buildTimestamp"
      value="${env.BUILD_ID}" />
    <echo message="Using timestamp from Hudson Build ID: ${buildTimestamp}" />
  </target>

  <target
    name="getJobName"
    depends="getHudsonJobName"
    unless="jobName">
    <property
      name="jobName"
      value="localbuild" />
    <echo message="Using default jobName: localbuild. Why?" />
  </target>

  <target
    name="getHudsonJobName"
    unless="jobName"
    if="env.JOB_NAME">
    <property
      name="jobName"
      value="${env.JOB_NAME}" />
    <echo message="Using jobName from Hudson Builder: ${jobName}" />
  </target>

  <target
    name="getBUILD_HOME"
    depends="getJobName, getHudsonBUILD_HOME"
    unless="BUILD_HOME">
    <property
      name="BUILD_HOME"
      value="${basedir}" />
    <echo message="Setting BUILD_HOME as basedir: ${BUILD_HOME}" />
  </target>

  <target
    name="getHudsonBUILD_HOME"
    depends="getWorkspace"
    unless="BUILD_HOME">
    <property
      name="BUILD_HOME"
      value="${env.WORKSPACE}" />
    <echo message="Setting BUILD_HOME from Hudson Builder WORKSPACE: ${BUILD_HOME}" />
  </target>

  <target
    name="getWorkspace"
    unless="BUILD_HOME">
    <property
      name="BUILD_HOME"
      value="${WORKSPACE}" />
    <echo message="Setting BUILD_HOME from direct property of Hudson Builder WORKSPACE: ${BUILD_HOME}" />
  </target>

  <target
    name="savePrevious"
    depends="init"
    if="saveAndInstallEclipseAndTools"
    unless="previousSaved">

    <!--
        Remember, old, saved versions may have to be maually cleaned up,
        from time to time. But probably handled well enough by an occasional,
        manual "clean workspace" from Hudson's web interface.
    -->
    <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="saveAndInstallEclipseTests">
        <!-- 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="checkAvailableDirs">
    <available
      file="${BUILD_MODEL_DIR}"
      property="buildModelAvailable" />
    <available
      file="${BUILD_TOOLS_DIR}"
      property="toolsAvailable" />
    <available
      file="${BUILD_TESTS_DIR}"
      property="testsAvailable" />
  </target>

  <target name="createXZformats">
    <exec
      executable="/bin/bash"
      dir="${basedir}"
      failonerror="true">
      <arg line="convertxz.sh ${AGGREGATOR_RESULTS}/final" />
    </exec>
  </target>

  <target
    name="createBuildinfo"
    depends="checkAvailableDirs, gitRevParseModel, gitRevParseTools, gitRevParseTests">

    <property
      name="BUILD_INFO_DIR"
      value="${AGGREGATOR_RESULTS}/final/buildInfo" />
    <mkdir dir="${BUILD_INFO_DIR}" />

    <propertyfile file="${BUILD_INFO_DIR}/buildInfo.properties">
      <entry
        key="commit"
        value="${buildModelCommit}" />
      <entry
        key="toolsCommit"
        value="${toolsRepoCommit}" />
      <entry
        key="testsCommit"
        value="${testsRepoCommit}" />
      <entry
        key="triggerJobName"
        value="${env.JOB_NAME}" />
      <entry
        key="triggerJobNumber"
        value="${env.BUILD_NUMBER}" />
      <entry
        key="triggerBuildTimestamp"
        value="${buildTimestamp}" />
      <entry
        key="triggerBuildId"
        value="${buildTimestamp}" />
    </propertyfile>
        <!-- echo the three key ones to end of log, just to have redundant record. -->
    <echo message="commit: ${buildModelCommit}" />
    <echo message="toolsCommit: ${toolsRepoCommit}" />
    <echo message="testsCommit: ${testsRepoCommit}" />
    <echo message="triggerJobName: ${env.JOB_NAME}" />
    <echo message="triggerJobNumber: ${env.BUILD_NUMBER}" />
    <echo message="triggerBuildTimestamp: ${buildTimestamp}" />
    <echo message="triggerBuildId: ${buildTimestamp}" />
        <!-- just as well write out everything ... just in case something else needed in future. -->
    <echoproperties destfile="${BUILD_INFO_DIR}/allInfo.properties" />
  </target>

  <target
    name="gitRevParseModel"
    if="buildModelAvailable">
    <git-rev-parse
      repodir="${BUILD_MODEL_DIR}"
      returnproperty="buildModelCommit" />
    <echo message="In target, buildModelCommit: ${buildModelCommit}" />
  </target>
  <target
    name="gitRevParseTools"
    if="toolsAvailable">
    <git-rev-parse
      repodir="${BUILD_TOOLS_DIR}"
      returnproperty="toolsRepoCommit" />
    <echo message="In target, toolsRepoCommit: ${toolsRepoCommit}" />
  </target>
  <target
    name="gitRevParseTests"
    if="testsAvailable">
    <git-rev-parse
      repodir="${BUILD_TESTS_DIR}"
      returnproperty="testsRepoCommit" />
    <echo message="In target, testsRepoCommit: ${testsRepoCommit}" />
  </target>


    <!--
         No longer used ... we will rely on cleaning all of Hudson workspace manually,
         from time to time, from Hudson't web interface.
         But otherwise, rely on "BUILD_CLEAN" in aggregator to get a clean aggregation.
    -->
  <target
    name="cleanPreviousAggregations"
    unless="nocleanAggregations">
    <!-- we will clean the aggregation directory ourselves, as work around for bug 354321
      https://bugs.eclipse.org/bugs/show_bug.cgi?id=354321
      The bug has been fixed ... but ... we'll leave as is. Perhaps gives more
      flexibility?
    -->
    <echo message="Removing any previous aggregation results, from ${AGGREGATOR_RESULTS}" />
    <delete
      dir="${AGGREGATOR_RESULTS}"
      failonerror="true" />
    <mkdir dir="${AGGREGATOR_RESULTS}" />
  </target>

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