#!/usr/bin/env bash

# common variables used in scripts

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

# It is required to specify a top level directory, that will contain all else involved with build, control and output
BUILD_HOME=${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
JAVA_8_HOME=/shared/common/jdk1.8.0_x64-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=/home/data/httpd/archive.eclipse.org/eclipse/downloads/drops4/R-4.4.2-201502041700/eclipse-SDK-4.4.2-linux-gtk-x86_64.tar.gz
# in theory, could have a different version of eclipse be used for "tests" vs. "building".
# but, not for now.
FULL_TEST_FILENAME=${FULL_FILENAME}

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

LOG_URL=${hostForURL}/simrel/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_REPO=org.eclipse.simrel.tests
RELENG_TESTS_BUNDLE_DIR=org.eclipse.simrel.tests-bundle
RELENG_TESTS_PATH=bundles/${RELENG_TESTS_BUNDLE_DIR}
RELENG_TESTS_BUNDLE_ID=org.eclipse.simrel.tests
RELENG_TESTS_DIR=org.eclipse.simrel.tests

BUILD_TESTS_DIR=${BUILD_HOME}/${RELENG_TESTS_DIR}

# we use Java 6 by default. https://bugs.eclipse.org/bugs/show_bug.cgi?id=340267
# Now Java 8. https://bugs.eclipse.org/bugs/show_bug.cgi?id=463010
JAVA_HOME=${JAVA_8_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_44=${ECLIPSE_INSTALL}/eclipse44

ECLIPSE_HOME=${ECLIPSE_HOME_44}

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=${BUILD_HOME}/aggregation/final

ECLIPSE_EXE=${ECLIPSE_HOME}/eclipse/eclipse

# Holds the results of the build
BUILD_RESULTS=${BUILD_HOME}/buildresults
AGGREGATOR_RESULTS=${BUILD_HOME}/aggregation
TEST_RESULTS=${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.
# Note: put agentlocation outside of ${BUILD_ROOT} so we can better study/control effects of caching.
# --agentLocation ${BUILD_HOME}/p2cache  
# Using an outside "agentLocation" *might* have been the cause of many "unpack" errors?
# Turned out, the problem was 'tmp' not defined before use. Try again?
# add this to production aggregtor app args only
# --production
AGGREGATOR_APP_BASE=--production --buildModel ${BUILD_MODEL_DIR}/simrel.b3aggr --buildRoot ${AGGREGATOR_RESULTS}  --packedStrategy UNPACK_AS_SIBLING --eclipseLogLevel INFO --logLevel INFO --emailFrom david_williams@eclipse.org --emailFromName ${release}Aggregator --logURL ${LOG_URL} --subjectPrefix ${release}Aggregation

AGGREGATOR_APP_ARGS_CLEAN_BUILD=${AGGREGATOR_APP_BASE}  --action CLEAN_BUILD

AGGREGATOR_APP_ARGS_BUILDONLY=${AGGREGATOR_APP_BASE}  --action BUILD

AGGREGATOR_APP_ARGS_VALIDATEONLY=${AGGREGATOR_APP_BASE} --action VALIDATE

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

# 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
# -Declipse.p2.mirrors=false
BUILDER_VM_ARGS=-Xmx1024m -Djava.io.tmpdir=${BUILD_HOME}/tmp  -Dorg.eclipse.update.jarprocessor.pack200=${JAVA_6_HOME}/jre/bin -Declipse.p2.mirrors=false
#-Dhttp.noProxyHosts="localhost|download.eclipse.org"

# default for BRANCH_BUILD is master, so for maintenance, build branch 
# needs to be specified on command line, such as -DBRANCH_BUILD=Luna_maintenance  
# These "origin" values, are highly dependendent on how defined
# on Hudson ... it assigns them "in order" that they are defined.
BRANCH_BUILD=master
TMPDIR_BUILD=sbbuild
BUILD_ORIGIN=origin
BRANCH_TOOLS=master
TMPDIR_TOOLS=sbtools
TOOLS_ORIGIN=origin1
BRANCH_TESTS=master
TESTS_ORIGIN=origin2
TMPDIR_TESTS=sbtests
CGITURL=http://git.eclipse.org/c/simrel

rewriteRepositoryURLValue=file://${REPO_ROOT}
