#!/usr/bin/env bash

# common variables used in scripts

# ${release} is expected to be passed in from command line, such as 
# -Drelease=kepler

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

# Java should be configured per machine,
# so this variable point to valid installs.

JAVA_6_HOME=/shared/common/jdk1.6.0-latest
JAVA_7_HOME=/shared/common/jdk1.7.0-latest

REPO_ROOT=/home/data/httpd/download.eclipse.org

# each machine needs valid path to an appropriate, local Eclipse SDK, for fresh re-installs (see "full_filename" below)
#FULL_FILENAME_422=/home/data/httpd/download.eclipse.org/eclipse/downloads/drops4/R-4.2.2-201302041200/eclipse-platform-4.2.2-linux-gtk-x86_64.tar.gz
FULL_FILENAME_430=/home/data/httpd/archive.eclipse.org/eclipse/downloads/drops4/S-4.3M5a-201302041400/eclipse-platform-4.3M5a-linux-gtk-x86_64.tar.gz

# note the "https" may have to be "http" on local, non production machines
#hostForURL=https://hudson.eclipse.org
hostForURL=http://localhost

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




# ##################################
# typically the remaining variables not have to be
# changed on a local, non-production machine,
# as they just compute variables based on above, 
# or provide relatively machine-independent values.

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

BUILD_MODEL=org.eclipse.simrel.build
BUILD_MODEL_DIR=${BUILD_HOME}/${BUILD_MODEL}

RELENG_TESTS=org.eclipse.simrel.tests
BUILD_TESTS_DIR=${BUILD_HOME}/${RELENG_TESTS}

# we use Java 6 by default. https://bugs.eclipse.org/bugs/show_bug.cgi?id=340267
JAVA_HOME=${JAVA_6_HOME}
JAVA_EXEC_DIR=${JAVA_HOME}/jre/bin
JAVA_CMD=${JAVA_EXEC_DIR}/java

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

# properties say what to consider eclipse home
ECLIPSE_HOME_43=${ECLIPSE_INSTALL}/eclipse435a

ECLIPSE_HOME=${ECLIPSE_HOME_43}

ECLIPSE_HOME_TEST=${BUILD_HOME}/testInstance
ECLIPSE_TEST_EXE=${ECLIPSE_HOME_TEST}/eclipse/eclipse

# note, stagingsegment must be set before this file is "read" by ant
# and then ant will set stagingDirectory correctly
stagingDirectory=${REPO_ROOT}/releases/${stagingsegment}
releaseDirectory=${REPO_ROOT}/releases/${release}
testRepoDirectory=${stagingDirectory}

ECLIPSE_EXE=${ECLIPSE_HOME}/eclipse/eclipse

# Holds the results of the build
BUILD_RESULTS=${BUILD_HOME}/buildresults
AGGREGATOR_RESULTS=${BUILD_HOME}/aggregation
TEST_RESULTS=${env.BUILD_HOME}

# remember, for ant, properties must be "read in" at beginning of ant build file to get variables expanded
# also, remember, shell scripts need quotes, but ant can not have them
AGGREGATOR_APP_BASE=--buildModel ${BUILD_MODEL_DIR}/simrel.b3aggr --buildRoot ${AGGREGATOR_RESULTS}  --packedStrategy UNPACK_AS_SIBLING --eclipseLogLevel INFO --logLevel DEBUG --emailFromName ${release}Aggregator --logURL ${LOG_URL} --subjectPrefix ${release}Aggregation

# clean build
#we will clean the aggregation directory ourselves, as work around for bug 354321
#AGGREGATOR_APP_ARGS=${AGGREGATOR_APP_BASE}  --action CLEAN_BUILD
AGGREGATOR_APP_ARGS=${AGGREGATOR_APP_BASE}  --action BUILD

AGGREGATOR_APP_ARGS_BUILDONLY=${AGGREGATOR_APP_BASE}  --action BUILD

AGGREGATOR_APP_ARGS_VERIFYONLY=${AGGREGATOR_APP_BASE} --action VERIFY

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

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

# NOTE: quotes needed in bash scripts ... NOT in ant properties! 
# -Declipse.p2.mirrors=false
# note that -Dhttp.noProxyHosts is probably not needed, but see bug 347103 
# https://bugs.eclipse.org/bugs/show_bug.cgi?id=347103
BUILDER_VM_ARGS=-vmargs -Xmx1024m -Dorg.eclipse.update.jarprocessor.pack200=${JAVA_6_HOME}/jre/bin
#-Dhttp.noProxyHosts="localhost|download.eclipse.org"

# We use this redirection, so scripts only need to use "full_filename", but exact version controlled by properties
FULL_FILENAME=${FULL_FILENAME_430}

# default for BRANCH_BUILD is master, so for maintenance, build branch 
# needs to be specified on command line, such as -DBRANCH_BUILD=Kepler_maintenance  
BRANCH_BUILD=master
TMPDIR_BUILD=sbbuild
BRANCH_TOOLS=master
TMPDIR_TOOLS=sbtools
BRANCH_TESTS=master
TMPDIR_TESTS=sbtests
#CGITURL=http://davidw.com/git
CGITURL=http://git.eclipse.org/c/simrel

# should be '/aggregate' if using "trusted repos" ... else, empty
#AGGR=/aggregate
AGGR=