#!/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/galileo/buckyBuild
# a common variation for someone doing a local build on their own machine
#BUILD_HOME=J:/gbuild/buckyBuild

# 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.galileo.build/galileo.build -buildRoot ${BUILD_RESULTS} -packedStrategy copy -brandingContribution Galileo -trustedContributions Eclipse -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.galileo.tools
RELENG_TESTS=org.eclipse.galileo.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}/buildresults


# 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/maintenance
releaseDirectory=/home/data/httpd/download.eclipse.org/releases/galileo

#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/galileo/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/galileo. 
#It can be used, however, to make sure categories are 
#showing up correctly. 
