#!/usr/bin/env bash

# common variables used in scripts

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

# Java should be configured per machine, 
# so this variable point to valid installs
# we "share" with orbits versions
JAVA_5_HOME=/shared/orbit/apps/ibm-java2-i386-50
JAVA_6_HOME=/shared/orbit/apps/ibm-java-i386-60

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_370=/home/data/httpd/download.eclipse.org/eclipse/downloads/drops/R-3.7-201106131736/eclipse-SDK-3.7-linux-gtk.tar.gz
FULL_FILENAME_362=/home/data/httpd/download.eclipse.org/eclipse/downloads/drops/R-3.6.2-201102101200/eclipse-SDK-3.6.2-linux-gtk.tar.gz

# note the "https" may have to be "http" on local, non production machines
hostForURL=https://hudson.eclipse.org
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.juno.tools
BUILD_TOOLS_DIR=${BUILD_HOME}/${BUILD_TOOLS}

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

RELENG_TOOLS=org.eclipse.juno.tools

RELENG_TESTS=org.eclipse.juno.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_36=${ECLIPSE_INSTALL}/eclipse36
ECLIPSE_HOME_36_TEST=${ECLIPSE_INSTALL}/eclipse36Test
ECLIPSE_HOME_37=${ECLIPSE_INSTALL}/eclipse37
ECLIPSE_HOME_37_TEST=${ECLIPSE_INSTALL}/eclipse37Test

ECLIPSE_HOME=${ECLIPSE_HOME_37}

#ECLIPSE_HOME_TEST=${ECLIPSE_HOME_36_TEST}
ECLIPSE_HOME_TEST=${BUILD_HOME}/testInstance

stagingDirectory=${REPO_ROOT}/releases/staging
releaseDirectory=${REPO_ROOT}/releases/juno
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}/simrel

# 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} --mirrorReferences --referenceExcludePattern .*/site.xml --packedStrategy UNPACK_AS_SIBLING --eclipseLogLevel INFO --logLevel DEBUG --trustedContributions Eclipse,Equinox  --emailFromName JunoAggregator --logURL ${LOG_URL} --subjectPrefix JunoAggregation

# 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
BUILDER_VM_ARGS=-vmargs -Xmx384m -Dorg.eclipse.update.jarprocessor.pack200=${JAVA_6_HOME}/jre/bin

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

# typically CVS_INFO is ":pserver:anonymous@dev.eclipse.org:" but some advantage on production machine to use "local"
# CVS_INFO=:local: