#!/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.helos.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_37=${ECLIPSE_INSTALL}/eclipse37
ECLIPSE_HOME=${ECLIPSE_HOME_36}

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}/hudson/view/Repository%20Aggregation/job/${env.JOB_NAME}/${env.BUILD_NUMBER}/console

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

# 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

# -Declipse.p2.mirrors=false
BUILDER_VM_ARGS=-vmargs -Xmx384m -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}

