<project
  name="AggregationTasks"
  basedir="."
  default="default">

<!--

Purpose and primary targets

   This build.xml is to download and install the CBI aggregator (and other tools)
   and run one of three types of aggregations. Note: it assumes all has been checked out of Git
   and "ready to aggregate". It does recored the "commit" of some repositories, just as a way to
   improve documenting what was built.

   This script has 3 main "entry targets", each corresponding to one of the 3 types of aggregations:

      1. runAggregatorValidateOnly (default)
          This simply confirms the "constraints" as specified by the the *.aggr* contributions
          all make sense and "fit together" as well as that the repositories are available at the
          specified URLs. It is the "quickest" job, typically taking from 1 to 4 minutes.

      2. runAggregatorBuildOnly
          This aggregation does a complete aggregation. That is, in addition to "validating"
          the constraints, it downloads the artifacts, unpacks or verifies any pack.gz files,
          and creates a final repository. The distinguishing feature of this target is that
          if it is ran a second time it does not "clean" anything and downloads only anything new
          that is needed. Hence, the first time it is ran can take several hours,
          but subsequent runs can be much quicker (from just a few minutes to a few dozen minutes,
          depending on how much is new).

      3. runAggregatorCleanBuild
          This is the aggregation is similar to above, but always does a "clean build".
          It remove all artifacts and metadata that previously had been downloaded and starts "fresh".
          Hence, it always takes several hours to complete. But this is is important since there are few things
          that can go wrong that would only show up in a clean build.

Important properties

      Listed below are some of the most important properties that can be "passed in" (either as -D parameters on command line,
      or in a property file that is then specified on command line with -Daggr.properties=<yourPropertyFile>).

      - BUILD_HOME
           Technically should be an environment variable rather than an ant property. Such as invoking ant on command line
           with "BUILD_HOME=${PWD} ant ... ". The default is the environment variable "WORKSPACE" so if running on Hudson,
           nothing needs to be specified. Technically is not required, but if not running on Hudson, it is best to
           specify some directory outside of the working tree.

      - release
          'release' This is the release train name (e.g. 'neon', all lower case. It is used to form some email messages (from the CBI aggregator)
          as well as, in the final stages, some URL segments, such as when promoted to ".../staging/<release>". For production

Useful properties

      Listed below are some useful properties that can be "passed in" (either as -D parameters on command line,
      or in a property file that is then specified on command line with -Daggr.properties=<yourPropertyFile>).
      But, most users or use-cases will not need to be concerned with these.

      - git_protocol
          'git_protocol' specifies an alternative way to "get" the git repositories of the 'simrel.build' and 'simrel.tools'.
          If running with local versions of the repository, it can be slightly more efficient and reliable
          to use direct file access ("git_protocol=file://") instead of the default of "git://git.eclipse.org".

      - rewriteRepositoryURLValue
          'rewriteRepositoryURLValue' is simlar to the git_protocol property but applies to URLs in the *aggr* files.
          If running on Eclipse.org (or, if you otherwise have direct access to the file system, say with a mirrored repository)
          it is more efficient to use direct file access ("rewriteRepositoryURLValue=file:///home/data/httpd/download.eclipse.org")
          rather than the default specified in the *aggr* files ("https://download.eclipse.org"). If this property exists (i.e. has
          a value) then the script does a simple search-and-replace to rewrite matching URLs.

      - installEclipseAndTools
          The script always installs Eclipse and required tools *unless* is sees that eclipse is already installed.
          To force it to reinstall Eclipse and required tools use this installEclipseAndTools property. In practice,
          this value is seldom needed since often just as easy to delete the entire "BUILD_HOME" and start completely fresh.

      - platformFilename
          'platformFilename' is the name of the binary platform to install
          as the "base" into which the aggregator and other tools are installed into.
          The default is eclipse-platform-4.8-linux-gtk-x86_64.tar.gz.

      - platformLocation
          'platformLocation' is the location from where to the binary platform.
          By default, it is
          https://download.eclipse.org/eclipse/downloads/drops4/R-4.8-201806110500
          If you have access to the binary platform archive on your file system, you can specify
          its location instead, for some savings in "download time". For example:
          file:///files/eclipsefiles/

       - JAVA_HOME
          Should rarely be needed "these days". But is provided here in case it is desired
          to run the aggregator with a different VM than the VM that is running Ant.

-->

  <!-- globally make "environment variables" available -->
  <property environment="env" />

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

    <echo message="Installed fresh Eclipse, Aggregator, and Tools" />
    <property
      name="eclipseAndToolsInstalled"
      value="true" />

  </target>

  <target
    name="installAggregator"
    depends="init, savePrevious"
    if="installEclipseAndTools"
    unless="aggregatorInstalled">
    <property
      name="APP_NAME_P2DIRECTOR_AGG"
      value="org.eclipse.equinox.p2.director" />
    <property
      name="otherArgsAggr"
      value="-metadataRepository https://download.eclipse.org/cbi/updates/aggregator/ide/4.8/I20180518-0759/ -artifactRepository https://download.eclipse.org/cbi/updates/aggregator/ide/4.8/I20180518-0759/ -installIU org.eclipse.cbi.p2repo.aggregator.engine.feature.feature.group" />

      <!--
        Remote builds should use eclipse.p2.mirrors=true
        (the default). But, in some cases may want to add
        -Declipse.p2.mirrors=false
      -->
    <property
      name="vm_args_aggr"
      value="-Djava.io.tmpdir=${BUILD_HOME}/tmp" />
    <condition
      property="vm_args_aggr_settings"
      value="-vmargs ${vm_args_aggr}">
      <isset property="vm_args_aggr" />
    </condition>

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

    <get
      src="${platformResource}"
      dest="${localPrereqCache}"
      usetimestamp="true" />

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

    <!--
      This .options file mentioned elsewhere 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 ... to list which mirrors that artifacts
      come
      from.
    -->

    <!-- 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 version of aggregator -->
    <exec
      executable="${eclipseExecutable}"
      dir="${basedir}"
      failonerror="true">
      <arg
        line="-data ${eclipseWorkspaceBase}/install_aggr -debug -consolelog -nosplash --launcher.suppressErrors -application ${APP_NAME_P2DIRECTOR_AGG} ${otherArgsAggr} ${vm_args_aggr_settings}" />
    </exec>
    <property
      name="aggregatorInstalled"
      value="true" />

  </target>

  <target
    name="installTestsFromP2Repo"
    depends="init"
    if="installEclipseAndTools"
    unless="testsInstalled">
    <property
      name="APP_NAME_P2DIRECTOR_TESTS"
      value="org.eclipse.equinox.p2.director" />
    <property
      name="repoReportURL"
      value="https://download.eclipse.org/cbi/updates/analyzers/4.7/" />

    <property
      name="OTHER_ARGS_TESTS"
      value="-metadataRepository ${repoReportURL} -artifactRepository ${repoReportURL} -installIU org.eclipse.cbi.p2repo.analyzers.feature.feature.group" />

    <property
      name="vm_args_tests"
      value="-Djava.io.tmpdir=${BUILD_HOME}/tmp" />
    <condition
      property="vm_args_tests_settings"
      value="-vmargs ${vm_args_tests}">
      <isset property="vm_args_tests" />
    </condition>

    <!-- install latest feature from repo -->
    <exec
      executable="${eclipseExecutable}"
      dir="${basedir}"
      failonerror="true">
      <arg
        line="-data ${eclipseWorkspaceBase}/installTests -debug -consolelog -nosplash --launcher.suppressErrors -application ${APP_NAME_P2DIRECTOR_TESTS} ${OTHER_ARGS_TESTS} ${vm_args_tests_settings}" />
    </exec>
    <property
      name="testsInstalled"
      value="true" />

  </target>


  <target
    name="installRelengTools"
    depends="init"
    if="installEclipseAndTools"
    unless="relengToolsInstalled">
    <property
      name="APP_NAME_P2DIRECTOR_RELENG"
      value="org.eclipse.equinox.p2.director" />
    <property
      name="OTHER_ARGS_RELENG"
      value="-metadataRepository https://download.eclipse.org/webtools/releng/repository/ -artifactRepository https://download.eclipse.org/webtools/releng/repository/ -installIU org.eclipse.wtp.releng.tools.feature.feature.group" />

    <property
      name="vm_args_releng"
      value="-Djava.io.tmpdir=${BUILD_HOME}/tmp" />

    <condition
      property="vm_args_releng_settings"
      value="-vmargs ${vm_args_releng}">
      <isset property="vm_args_releng" />
    </condition>

    <!-- install latest feature from repo -->
    <exec
      executable="${eclipseExecutable}"
      dir="${basedir}"
      failonerror="true">
      <arg
        line="-data ${eclipseWorkspaceBase}/installRelengTools -debug -consolelog -nosplash --launcher.suppressErrors -application ${APP_NAME_P2DIRECTOR_RELENG} ${OTHER_ARGS_RELENG} ${vm_args_releng_settings}" />
    </exec>
    <property
      name="relengToolsInstalled"
      value="true" />
  </target>

  <macrodef name="git-config">
    <attribute name="repodir" />
    <attribute name="configKey" />
    <attribute name="configValue" />
    <sequential>
      <echo message="execute git in @{repodir}" />
      <echo message="git config @{configKey} @{configValue}" />
      <!-- We list "before and after" just to learn more about the system.
        We
        will not always need to do that. -->
      <exec
        executable="git"
        failonerror="true"
        dir="@{repodir}">
        <arg value="config" />
        <arg value="--list" />
      </exec>
      <exec
        executable="git"
        failonerror="true"
        dir="@{repodir}">
        <arg value="config" />
        <arg value="@{configKey}" />
        <arg value="@{configValue}" />
      </exec>
      <exec
        executable="git"
        failonerror="true"
        dir="@{repodir}">
        <arg value="config" />
        <arg value="--list" />
      </exec>
    </sequential>
  </macrodef>

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


  <!-- We set repo config repeatedly (every build) since we do not know "who"
    cloned the repository first, "us", or "Hudson". And if Hudson (or Gerrit)
    does it then we do not know how they set or determine the correct config
    values. -->
  <target
    name="configRepo"
    depends="init"
    if="localRepoExists">
    <echo message="git config task to execute in ${buildModelDir}" />
    <!-- in macro "config" we list, then set then list again the configuration. -->
    <git-config
      repodir="${buildModelDir}"
      configKey="core.autocrlf"
      configValue="input" />
  </target>

  <!-- This is "the key" task. If it succeeds, we run tests (reports), and
    if they "pass", we promote to "staging". -->
  <target
    name="runAggregatorCleanBuild"
    description="Runs a clean aggregation"
    depends="init,rewriteRepositoryURL,installAggregatorAndTools">
    <!-- 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_BASE_ARGS} --action CLEAN_BUILD" />
    <echo message="AGG_APP_ARGS: ${AGG_APP_ARGS}" />
    <!-- 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. -->


    <exec
      executable="${eclipseExecutable}"
      dir="${basedir}"
      failonerror="false"
      resultproperty="buildStatus">

      <!-- 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="${eclipseWorkspaceBase}/runAggregatorCleanBuild" />
      <arg value="--launcher.suppressErrors" />
      <arg value="-application" />
      <arg value="org.eclipse.cbi.p2repo.cli.headless" />
      <arg value="aggregate" />
      <arg value="--buildId" />
      <arg value="${buildTimestamp}" />
      <arg line="${AGG_APP_ARGS}" />
      <arg line="${vm_setting}" />
      <arg line="${builder_vm_args_settings}" />
    </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">
      <param
        name="tests"
        value="cleanBuildTests" />
    </antcall>

  </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"
    description="Runs an aggregation, but uses prevoiusly cached artifacts, unless new ones are required by contribution"
    depends="init,rewriteRepositoryURL,installAggregatorAndTools,initRunTestsXML">

    <property
      name="AGG_APP_ARGS"
      value="${AGGREGATOR_APP_BASE_ARGS} --action BUILD" />
    <echo message="AGG_APP_ARGS: ${AGG_APP_ARGS}" />
    <!--
      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) Another historical note, we used to "force"
      JAVA_5 to be be used for jar processor, see for example, bug 244603
      and bug 279596.
      But we have not "forced" everyone to use Java 8.
    -->

    <exec
      executable="${eclipseExecutable}"
      dir="${basedir}"
      failonerror="false"
      resultproperty="buildStatus">
      <arg value="-debug" />
      <arg value="file://${BUILD_HOME_DIR}/p2options/.options" />
      <!--
        Adding -consolelog makes for too much, unneeded output, since
        the aggregator produces its verbose own output, slightly cleaner.
      -->
      <arg value="-nosplash" />
      <arg value="-data" />
      <arg value="${eclipseWorkspaceBase}/runAggregatorBuildOnly" />
      <arg value="--launcher.suppressErrors" />
      <arg value="-application" />
      <arg value="org.eclipse.cbi.p2repo.cli.headless" />
      <arg value="aggregate" />
      <arg value="--buildId" />
      <arg value="${buildTimestamp}" />
      <arg line="${AGG_APP_ARGS}" />
      <arg line="${vm_setting}" />
      <arg line="${builder_vm_args_settings}" />
    </exec>

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

    <antcall target="createBuildinfo" />

    <antcall target="runTests">
      <param
        name="tests"
        value="cachedBuildTests" />
    </antcall>

  </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 aggrcon files specify
    unique URL (to simple repository) or that "versions" are
    specified in *.aggrcon file.
  -->
  <target
    name="runAggregatorValidateOnly"
    description="Runs an aggregation, but validates constraints only. Does not fetch artifacts."
    depends="init,rewriteRepositoryURL,installAggregatorAndTools,initRunTestsXML">

    <property
      name="AGG_APP_ARGS"
      value="${AGGREGATOR_APP_BASE_ARGS} --action VALIDATE" />
    <echo message="AGG_APP_ARGS: ${AGG_APP_ARGS}" />

    <exec
      executable="${eclipseExecutable}"
      dir="${basedir}"
      failonerror="false"
      resultproperty="buildStatus">
      <arg value="-debug" />
      <!--
        In case extra tracing is desired:
        <arg value="file://${BUILD_HOME}/org.eclipse.simrel.tools/p2options/.options"
        />
      -->
      <!--
        Adding -consolelog makes for too much, unneeded output, since
        the aggregator produces its verbose own output, slightly cleaner.
      -->
      <arg value="-nosplash" />
      <arg value="-data" />
      <arg value="${eclipseWorkspaceBase}/runAggregatorValidateOnly" />
      <arg value="--launcher.suppressErrors" />
      <arg value="-application" />
      <arg value="org.eclipse.cbi.p2repo.cli.headless" />
      <arg value="aggregate" />
      <arg value="--buildId" />
      <arg value="${buildTimestamp}" />
      <arg line="${AGG_APP_ARGS}" />
      <arg line="${vm_setting}" />
      <arg line="${builder_vm_args_settings}" />
    </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" />

    <antcall target="runTests">
      <param
        name="tests"
        value="validateOnlyTests" />
    </antcall>

  </target>

  <target
    name="runTests"
    depends="initRunTestsXML,checkrunTests"
    if="runTestsXML">
    <ant
      antfile="${runTestsXML}"
      target="${tests}"
      dir="${buildToolsDir}" />
  </target>
  <target
    name="checkrunTests"
    depends="initRunTestsXML"
    unless="runTestsXML">
    <echo message="runTestsXML was not defined as expected. Hence, no tests ran." />
  </target>
  <target
    name="initRunTestsXML"
    depends="getBuildToolsDir"
    if="toolsAvailable"
    unless="runTestsXML">
    <path id="runTests.paths">
      <fileset
        dir="${buildToolsDir}"
        includes="runTests.xml" />
    </path>
    <property
      name="runTestsXML"
      refid="runTests.paths" />
    <echo message="runTestsXML file: ${runTestsXML}" />
  </target>

  <target name="getBuildToolsDir">
    <property
      name="buildToolsDir"
      value="${BUILD_HOME}/org.eclipse.simrel.tools" />
    <available
      file="${buildToolsDir}"
      property="toolsAvailable" />
  </target>
  <target
    name="init"
    depends="getJVMLocation, getBUILD_HOME, setDefaultBUILD_HOME, setDefaultRelease, getBuildTimestamp, getJobName, getJobNumber, getBuildToolsDir, gitRevParseTools, getBuildModelDir, gitRevParseModel"
    unless="isInitialized">

    <!-- We assign a reasonable value for local builds, but for production
      builds should be .../production.properties 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="${buildToolsDir}/aggr.properties" />
    <property file="${aggrPropertyFile}" />

      <!--
      The "binary platform" is enough, for now, and since smaller than the SDK,
      it is recommended as the "base" to install tools into. But a typical "SDK" has been
      left in this comment in case users are doing more than a normal "aggregation build".
      value="/home/data/httpd/archive.eclipse.org/eclipse/downloads/drops4/R-4.8-201806110500/eclipse-SDK-4.8-linux-gtk-x86_64.tar.gz"
      -->
      <!--
      Note: if there is local file system version of the prereq platform,
      if it faster to specify file://<location of platform>.
      <property name="platformLocation" value="file:///home/data/httpd/archive.eclipse.org/eclipse/downloads/drops4/R-4.8-201806110500" />
      We use "http://" by default to make it easy to "run from anywhere", but
      on the production machine, in production.properties, we specify the "file://" form.
      -->
    <property
      name="platformLocation"
      value="https://download.eclipse.org/eclipse/downloads/drops4/R-4.8-201806110500/" />
    <property
      name="platformFilename"
      value="eclipse-platform-4.8-linux-gtk-x86_64.tar.gz" />
    <property
      name="localPrereqCache"
      value="${BUILD_HOME}/localPrereqs" />
    <property
      name="platformResource"
      value="${platformLocation}/${platformFilename}" />
      <!-- directory must exist before "get" uses it or else the file is given name of "localPrereqs" -->
    <mkdir dir="${localPrereqCache}" />


    <property
      name="ECLIPSE_HOME"
      value="${BUILD_HOME}/eclipseInstall" />

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

    <property
      name="AGGREGATOR_RESULTS"
      value="${BUILD_HOME}/aggregation" />

    <!-- git_protocol should be changed to somethign like "file://" for production
      builds, for efficiency and to avoid problems when the "internal" network
      is down. (Note no trailing slash). It can be added to a local copy
      of 'aggrPropertyFile' -->
    <property
      name="git_protocol"
      value="git://git.eclipse.org" />

    <!--
      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
      *.aggrcon
      files, this string occurs only in repository location attributes. If
      not true,
      more complex parsing/replacement would be required.
    -->
    <property
      name="commonRepositoryDownloadURLValue"
      value="https://download.eclipse.org" />

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

    <property
      name="eclipseWorkspaceBase"
      value="${BUILD_HOME}/eclipseworkspaces" />

    <!--
      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="${eclipseWorkspaceBase}"
      quiet="true" />

    <!-- Note: we put -vmargs directly in builder_vm_args_settings so that if desired
      to not have ANY vmargs, then we will not be left with a dangling (empty)
      -vmargs at the end of eclipse command line. -->
    <property
      name="builder_vm_args"
      value="-Xmx1024M -Djava.io.tmpdir=${BUILD_HOME}/tmp" />
    <condition
      property="builder_vm_args_settings"
      value="-vmargs ${builder_vm_args}">
      <isset property="builder_vm_args" />
    </condition>

    <!-- tmp directory must exist, for Java to use it -->
    <mkdir dir="${BUILD_HOME}/tmp" />
    <echo message="Made directory ${BUILD_HOME}/tmp" />


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

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

    <!-- set installEclipseAndTools on command line to force a reinstall,
      Otherwise, only installed 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>

    <!-- note the "https" may have to be "http" on localhost, non-production
      hudson machines -->
    <property
      name="hostForURL"
      value="https://ci.eclipse.org" />

    <!-- TODO: this will not be correct for local builds, probably. Could
      do
      more to detect "local builds" and either not set, or set to correct
      values
      for a "local hudson". -->
    <property
      name="LOG_URL"
      value="${hostForURL}/simrel/job/${jobName}/${jobNumber}/console" />

    <!-- These are the arguments to the aggregator that are constant, whether
      doing "production build" or "local build". If doing production build,
      then
      is also needs the &dash;$dash;production argument (it is the one that
      cuases
      "blame mail" to be sent). If PRODUCTION is not set externally (such
      as on
      command line, or in a property file, we set it to blank here to avoid
      the
      literal '${PRODUCTION} from being passed as an argument. Be sure to
      udpate
      emailFrom as "build master" changes. -->
    <property
      name="PRODUCTION"
      value="" />
    <property
      name="p2AgentLocation"
      value="${BUILD_HOME}/.p2AgentLocation" />
    <!-- In the distant past, we have also used these arguments. The maven
      result one was always experimental. We have also learned it it better
      not
      to "trust" any repository. Can only use one or the other, not both
      &dash;&dash;mavenResult
      &dash;&dash;trustedContributions Eclipse,Equinox -->
    <property
      name="AGGREGATOR_APP_BASE_ARGS"
      value="${PRODUCTION} --buildModel ${buildModelDir}/simrel.aggr --buildRoot ${AGGREGATOR_RESULTS} --agentLocation ${p2AgentLocation} --eclipseLogLevel DEBUG --logLevel DEBUG --emailFrom frederic.gurr@eclipse-foundation.org --emailFromName ${release}Aggregator --logURL ${LOG_URL} --subjectPrefix ${release}Aggregation" />

    <echo message="= = = Properties at end of init = = = " />
    <echo message="git_protocol: ${git_protocol}" />
    <echo message="PRODUCTION: ${PRODUCTION}" />
    <echo message="rewriteRepositoryURLValue: ${rewriteRepositoryURLValue}" />
    <echo message="buildModelCommit: ${buildModelCommit}" />
    <echo message="toolsRepoCommit: ${toolsRepoCommit}" />
    <echo message="aggrPropertyFile: ${aggrPropertyFile}" />
    <echo message="buildId: ${buildTimestamp}" />
    <echo message="user.dir: ${user.dir}" />
    <echo message="user.home: ${user.home}" />
    <echo message="BUILD_HOME (normally HUDSON workspace): ${BUILD_HOME}" />
    <echo message="Eclipse workspace base: ${eclipseWorkspaceBase}" />
    <echo message="PATH: ${env.PATH}" />
    <echo message="JAVA_HOME: ${JAVA_HOME}" />
    <echo message="hostForURL: ${hostForURL}" />
    <echo message="jobName: ${jobName}" />
    <echo message="jobNumber: ${jobNumber}" />
    <echo message="ECLIPSE_EXE:  ${ECLIPSE_EXE}" />
    <echo message="eclipseExists: ${eclipseExists}" />
    <echo message="builder_vm_args: ${builder_vm_args}" />
    <echo message="builder_vm_args_settings: ${builder_vm_args_settings}" />
    <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 (since not running on Hudson): ${buildTimestamp}." />
  </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="none" />
    <echo message="Using default jobName: none." />
  </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="getJobNumber"
    depends="getHudsonJobNumber"
    unless="jobNumber">

    <property
      name="jobNumber"
      value="none" />
    <echo message="Using default jobNumber: ${jobNumber}." />
  </target>

  <target
    name="getHudsonJobNumber"
    unless="jobNumber"
    if="env.BUILD_NUMBER">
    <property
      name="jobNumber"
      value="${env.BUILD_NUMBER}" />
    <echo message="Using jobNumber from Hudson Builder: ${jobNumber}" />
  </target>

  <target
    name="getBUILD_HOME"
    depends="getHudsonBUILD_HOME"
    unless="BUILD_HOME">
    <condition
      property="BUILD_HOME"
      value="${env.BUILD_HOME}">
      <isset property="env.BUILD_HOME" />
    </condition>
  </target>

  <target
    name="getHudsonBUILD_HOME"
    unless="BUILD_HOME">
    <condition
      property="BUILD_HOME"
      value="${env.WORKSPACE}">
      <isset property="env.WORKSPACE" />
    </condition>
  </target>

  <target
    name="setDefaultBUILD_HOME"
    unless="BUILD_HOME">
    <!--
         We assume BUILD_HOME is "one up" from directory where build.xml file is.
         We always assume the 'simrel.build' and 'simrel.tools' projects are directly under "BUILD_HOME".
    -->
    <dirname
      property="BUILD_HOME"
      file="${basedir}" />
    <echo
      message="WARNING: BUILD_HOME set to a default value, ${BUILD_HOME}. If this is not correct, you must configure is explicitly as an environment variable." />
    <echo message="         Note: we always assume the 'simrel.build' and 'simrel.tools' projects are directly under 'BUILD_HOME'" />

  </target>
  <target
    name="setDefaultRelease"
    unless="release">
    <property
      name="release"
      value="noReleaseSpecified" />
    <echo
      message="WARNING: release set to a default value, ${release}. Typically this is not desired and may mean there is a configuration issue." />
  </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"
    unless="rewroteURLs">
    <replace
      dir="${buildModelDir}"
      token="${commonRepositoryDownloadURLValue}"
      value="${rewriteRepositoryURLValue}">
      <include name="*.aggrcon" />
      <!-- <exclude name="ep.aggrcon"/> <exclude name="equinox.aggrcon"/> -->
    </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.aggrcon"/> <echo message=" Excluding:
      ep.aggrcon, equinox.aggrcon"/> -->
    <property
      name="rewroteURLs"
      value="true" />

  </target>

  <target
    name="getBuildModelDir"
    unless="buildModelDir">
    <property
      name="buildModelDir"
      value="${BUILD_HOME}/org.eclipse.simrel.build" />
  </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="init, gitRevParseModel, gitRevParseTools">

    <property
      name="BUILD_INFO_DIR"
      value="${AGGREGATOR_RESULTS}/final/buildInfo" />
  	<!--
  	  Note: The propertyfile task literally edits the properties,
  	  if the file already exists, does not create a new one. Therefore
  	  we delete it first.
  	-->
    <delete dir="${BUILD_INFO_DIR}" />
    <mkdir dir="${BUILD_INFO_DIR}" />

    <propertyfile file="${BUILD_INFO_DIR}/buildInfo.properties">
      <entry
        key="buildModelCommit"
        value="${buildModelCommit}" />
      <entry
        key="toolsRepoCommit"
        value="${toolsRepoCommit}" />
      <entry
        key="triggerJobName"
        value="${jobName}" />
      <entry
        key="triggerJobNumber"
        value="${jobNumber}" />
      <entry
        key="triggerBuildTimestamp"
        value="${buildTimestamp}" />
      <entry
        key="triggerBuildId"
        value="${buildTimestamp}" />
    </propertyfile>
    <!-- echo the key ones to end of log, just to have redundant record. -->
    <echo message="buildModelCommit: ${buildModelCommit}" />
    <echo message="toolsRepoCommit: ${toolsRepoCommit}" />
    <echo message="triggerJobName: ${jobName}" />
    <echo message="triggerJobNumber: ${jobNumber}" />
    <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"
    depends="getBuildModelDir">
    <git-rev-parse
      repodir="${buildModelDir}"
      returnproperty="buildModelCommit" />
    <echo message="In target gitRevParseModel, buildModelCommit: ${buildModelCommit}" />
  </target>
  <target
    name="gitRevParseTools"
    depends="getBuildToolsDir"
    if="toolsAvailable">
    <git-rev-parse
      repodir="${buildToolsDir}"
      returnproperty="toolsRepoCommit" />
    <echo message="In target gitRevParseTools, toolsRepoCommit: ${toolsRepoCommit}" />
  </target>

  <target
    name="default"
    description="By default run the runAggregatorValidateOnly target">
    <echo message="Using default target:" />
    <echo message="     runAggregatorValidateOnly" />
    <echo message="  Other meaningful targets to specify explicitly:" />
    <echo message="     runAggregatorBuildOnly" />
    <echo message="     runAggregatorCleanBuild" />
    <antcall target="runAggregatorValidateOnly" />
  </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>
    <!-- It is not required for user to specify "vm", only
         needed if they want to override the system (or Hudson)
         default. We do the "work" in getJVMLocationInternal
         so we can set a "null default" in this task.
    -->
  <target
    name="getJVMLocation"
    depends="getJVMLocationInternal"
    unless="vm_setting">
      <!-- if vm_setting not set in 'getJVMLocationInternal'
           then we set it to "null" here so that is has a safe value
           when later used as <arg line="${vm_setting} />
      -->
    <property
      name="vm_setting"
      value="" />
    <echo message="vm_setting has no value: ${vm_setting}" />
  </target>
  <target
    name="getJVMLocationInternal"
    depends="getJAVA_HOME"
    if="JAVA_HOME"
    unless="vm_setting">
    <property
      name="vm_setting"
      value="-vm ${JAVA_HOME}/jre/bin" />
    <echo message="at end of 'getJVMLocationInternal' vm_setting: ${vm_setting}" />
  </target>
    <!-- we have all these "checks" and "print out" since
         it is not known how ant "knows about" JAVA_HOME.
         That is, ant could be running in a Java different from
         the one that is desired to be used to run aggregator.
         Put another way, users can define JAVA_HOME as an environment
         variable, or pass in a -DJAVA_HOME value. The later takes
         priority, if both exists.
         Example: -DJAVA_HOME=/shared/common/jdk1.8.0_x64-latest
    -->
  <target
    name="getJAVA_HOME"
    depends="printPredefinedJAVA_HOME"
    unless="JAVA_HOME">
    <condition
      property="JAVA_HOME"
      value="${env.JAVA_HOME}">
      <isset property="env.JAVA_HOME" />
    </condition>
    <echo message="at end of 'getJAVA_HOME', JAVA_HOME: ${JAVA_HOME}" />
  </target>
  <target
    name="printPredefinedJAVA_HOME"
    if="JAVA_HOME">
    <echo message="Found JAVA_HOME already defined to be ${JAVA_HOME}" />
  </target>

  <!-- Note: this target may be useful to anyone that has ran "build.xml" from
       their IDE workspace, since the build will leave some directories in
       their IDE workspace that do not show up in their IDE.
  -->
  <target
    name="cleanAllArtifacts"
    depends="getBUILD_HOME, setDefaultBUILD_HOME"
    description="This target is primarily for documentation. We do NOT want to call this automatically, since that would interfere with desired caching, etc. But may be desired to create custom versions in future, in some cases, so documented here.">
      <!-- Note the strong assumption that "BUILD_HOME" is the same
           value when running this 'clean' target, as when
           the directories were created.
      -->
    <delete
      dir="${BUILD_HOME}/localPrereqs"
      includeemptydirs="true" />
    <delete
      dir="${BUILD_HOME}/eclipseInstall"
      includeemptydirs="true" />
    <delete
      dir="${BUILD_HOME}/tmp"
      includeemptydirs="true" />
    <delete
      dir="${BUILD_HOME}/aggregation"
      includeemptydirs="true" />
  </target>

</project>
