#!/usr/bin/env bash

# common variables used in scripts

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

# 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_27.x86_64
JAVA_7_HOME=/shared/common/jdk1.7.0_11

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_42=${ECLIPSE_INSTALL}/eclipse42

ECLIPSE_HOME=${ECLIPSE_HOME_42}

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