#!/usr/bin/env bash

# common variables used in build.xml script

# These values, and this file, is specific to the
# build.eclipse.org machine and is specified in the
# hudson set up that runs the build.

# It is required to specify a top level directory, that will contain all else involved with build, control and output
BUILD_HOME=/shared/helios

BUILD_TOOLS=org.eclipse.helios.tools
BUILD_TOOLS_DIR=${BUILD_HOME}/${BUILD_TOOLS}

BUILD_MODEL=org.eclipse.helios.build
BUILD_MODEL_DIR=${BUILD_HOME}/${BUILD_MODEL}
# Java should be configured per machine,
# so this variable point to valid installs
JAVA_5_HOME=/shared/webtools/apps/ibm-java2-sdk-5.0-12.1-linux-i386
JAVA_6_HOME=/shared/webtools/apps/ibm-java-sdk-6.0-8.1-linux-i386

# typically the remaining variables not have to be
# changed on a local, non-production machine,
# as they just compute variables based on others

# we use Java 5 by default
JAVA_HOME=${JAVA_5_HOME}
JAVA_EXEC_DIR=${JAVA_HOME}/jre/bin
JAVA_CMD=${JAVA_EXEC_DIR}/java

# platform installs.
ECLIPSE_INSTALL=${BUILD_HOME}/prereqs

# client script needs to say which to consider their eclipse home
ECLIPSE_HOME_35=${ECLIPSE_INSTALL}/eclipse35
ECLIPSE_HOME_36=${ECLIPSE_INSTALL}/eclipse36
ECLIPSE_HOME_36_TEST=${ECLIPSE_INSTALL}/eclipse36Test
ECLIPSE_HOME_37=${ECLIPSE_INSTALL}/eclipse37
ECLIPSE_HOME_37_TEST=${ECLIPSE_INSTALL}/eclipse36Test

ECLIPSE_HOME=${ECLIPSE_HOME_36}
ECLIPSE_HOME_TEST=${ECLIPSE_HOME_36_TEST}

#TODO
stagingDirectory=/home/data/httpd/download.eclipse.org/releases/maintenance
releaseDirectory=/home/data/httpd/download.eclipse.org/releases/helios

ECLIPSE_EXE=${ECLIPSE_HOME}/eclipse/eclipse

# Holds the results of the build
BUILD_RESULTS=${BUILD_HOME}/buildresults
AGGREGATOR_RESULTS=${BUILD_HOME}/aggregation
HYBRID_RESULTS=${BUILD_HOME}/hybrid

# These values are specific to production builds
# on build.eclipse.org
# Do not use these on other machines or context.
# Doing to can cause email to be sent to SimRel
# release engineers, etc.
# You can use 'aggr.properties' as an example
# to follow for values which are required.

LOG_URL=https://${hostForURL}.eclipse.org/hudson/view/Repository%20Aggregation/job/${env.JOB_NAME}/${env.BUILD_NUMBER}/console

AGGREGATOR_APP_ARGS=--production --buildModel ${BUILD_MODEL_DIR}/helios.b3aggr --buildRoot ${AGGREGATOR_RESULTS} --mirrorReferences --referenceExcludePattern .*/site.xml --packedStrategy UNPACK_AS_SIBLING --trustedContributions Eclipse,Equinox  --logLevel DEBUG --eclipseLogLevel INFO --action CLEAN_BUILD --emailFromName SimRelAggregator --logURL ${LOG_URL} --subjectPrefix HeliosAggregation
HYBRID_APP_ARGS=--buildModel ${BUILD_MODEL_DIR}/helios.b3aggr --buildRoot ${HYBRID_RESULTS} --mirrorReferences --referenceExcludePattern .*/site.xml --packedStrategy UNPACK_AS_SIBLING --mavenResult --logLevel DEBUG --eclipseLogLevel INFO --action CLEAN_BUILD --emailFromName SimRelAggregator --logURL ${LOG_URL} --subjectPrefix HeliosAggregation

# --production

# only one or the other
# --mavenResult
# --trustedContributions Eclipse,Equinox

# add this to production aggregtor app args only
# --production

stagingDirectory=/home/data/httpd/download.eclipse.org/releases/maintenance
releaseDirectory=/home/data/httpd/download.eclipse.org/releases/helios

# NOTE: quotes needed in bash scripts ... NOT in ant properties! 
# -Declipse.p2.mirrors=false
BUILDER_VM_ARGS=-vmargs -Xmx384m -Declipse.p2.mirrors=false -Dorg.eclipse.update.jarprocessor.pack200=${JAVA_5_HOME}/jre/bin

# each machine needs valid path here
FULL_FILENAME_35=/home/data/httpd/download.eclipse.org/eclipse/downloads/drops/R-3.5.2-201002111343/eclipse-SDK-3.5.2-linux-gtk.tar.gz
FULL_FILENAME_36=/home/data/httpd/download.eclipse.org/eclipse/downloads/drops/R-3.6-201006080911/eclipse-SDK-3.6-linux-gtk.tar.gz
FULL_FILENAME_361=/home/data/httpd/download.eclipse.org/eclipse/downloads/drops/R-3.6.1-201009090800/eclipse-SDK-3.6.1-linux-gtk.tar.gz
FULL_FILENAME_37M3=/home/data/httpd/download.eclipse.org/eclipse/downloads/drops/S-3.7M3-201010281441/eclipse-SDK-3.7M3-linux-gtk.tar.gz
FULL_FILENAME_37M2=/home/data/httpd/download.eclipse.org/eclipse/downloads/drops/S-3.7M2a-201009211024/eclipse-SDK-3.7M2a-linux-gtk.tar.gz
FULL_FILENAME_37M1=/home/data/httpd/download.eclipse.org/eclipse/downloads/drops/S-3.7M1-201008051700/eclipse-SDK-3.7M1-linux-gtk.tar.gz
FULL_FILENAME=${FULL_FILENAME_361}


jobsHome=/shared

CVS_INFO=:local:
