<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 ("http://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.6.3-linux-gtk-x86_64.tar.gz.

      - platformLocation
          'platformLocation' is the location from where to the binary platform.
          By default, it is
          http://download.eclipse.org/eclipse/downloads/drops4/R-4.6.3-201703010400
          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 http://download.eclipse.org/cbi/updates/aggregator/ide/4.6/ -artifactRepository http://download.eclipse.org/cbi/updates/aggregator/ide/4.6/ -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="http://download.eclipse.org/cbi/updates/analyzers/4.6/" />

    <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 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_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.6.3-201703010400/eclipse-SDK-4.6.3-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.6.3-201703010400" />
      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="http://download.eclipse.org/eclipse/downloads/drops4/R-4.6.3-201703010400" />
    <property
      name="platformFilename"
      value="eclipse-platform-4.6.3-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="http://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://hudson.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>