#!/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=--buildModel ${BUILD_MODEL_DIR}/simrel.b3aggr --buildRoot ${AGGREGATOR_RESULTS} --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 -Declipse.p2.mirrors=false
#-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=MarsRC1-branch
TESTS_ORIGIN=origin2
TMPDIR_TESTS=sbtests
CGITURL=http://git.eclipse.org/c/simrel

rewriteRepositoryURLValue=file://${REPO_ROOT}
