#!/usr/bin/env bash

# common variables used in utility scripts
# (note: at this point, not all are necessarily used)

# It is required to specify a top level directory, that will contain all else involved with build, control and output
BUILD_HOME=/shared/helios
# a common variation for someone doing a local build on their own machine
#BUILD_HOME=J:/gbuild/

# on any non-production machines it is important to _not_ use eclipse.p2.mirrors=false
# so supply BUILDER_VM_ARGS that does not include it
#BUILDER_VM_ARGS=-vmargs -Xmx256m 

# on a non-production machine, will sometimes want to tweak the BUILDER_APP_ARGS to do less, and finish faster, 
# such as use -verifyOnly or -updateOnly
# as well as avoid the -production flag! 
# and possibly setup mockEmail
#BUILDER_APP_ARGS=-noBrandingBuild -verifyOnly -updateOnly -buildModel ${BUILD_HOME}/org.eclipse.helios.build/helios.build -buildRoot ${BUILD_RESULTS} -packedStrategy copy -brandingContribution Helios -trustedContributions Eclipse,Equinox -logLevel DEBUG

# SKIP_MODEL_RETRIEVE should never be set (not even to false) on production machine. 
# You can set when testing local versions you don't want them overwritten by HEAD version.  
# SKIP_MODEL_RETRIEVE=true


# Ant and Java should be configured per machine, so this variable point to valid installs
ANT_HOME=/shared/common/apache-ant-1.7.1
#ANT_HOME=J:/work/apache-ant-1.7.0

JAVA_5_HOME=/shared/common/ibm-java2-ppc-50
JAVA_6_HOME=/shared/common/ibm-java-ppc-604
#JAVA_5_HOME=J:/JDKs/ibm-java2-sdk-50-win-i386
#JAVA_6_HOME=J:/JDKs/ibm-jdk-6-sr3



# typically the following would not have to be changed on a local, non-production machine

JAVA_HOME=${JAVA_5_HOME}
JAVA_EXEC_DIR=${JAVA_HOME}/jre/bin/
RELENG_TOOLS=org.eclipse.helios.tools
RELENG_TESTS=org.eclipse.helios.tests

# platform install. One level above what will contain the 'eclipse' directory.
ECLIPSE_INSTALL=${BUILD_HOME}/prereqs
# the directory that contains the eclipse executable
ECLIPSE_HOME=${ECLIPSE_INSTALL}/eclipse

# Holds the build results
BUILD_RESULTS=${BUILD_HOME}/aggregation


# common location to store pre-reqs to avoid re-downloading Platforms, etc.
PREREQS_CACHE=${BUILD_HOME}/prereqsCache

stagingDirectory=/home/data/httpd/download.eclipse.org/releases/staging
releaseDirectory=/home/data/httpd/download.eclipse.org/releases/helios

#Note: this directory on build.eclipse.org has an alias so that
#it is accessible as a pseudo update site via this URL: 
#http://build.eclipse.org/helios/staging/

#It can not really be used as an update site
#as an update site, since the mirror URLs in the 
#artifacts.jar and content.jar are set to the 
#eventual /releases/helios. 
#It can be used, however, to make sure categories are 
#showing up correctly. 
