#!/usr/bin/env bash

# common variables used in build.xml script

# These values, and this file, is specific to the 
# build.eclipse.org machine and is specified in the 
# hudson set up that runs the build.

# 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


#
#
#
#


# Java should be configured per machine, 
# so this variable point to valid installs

JAVA_5_HOME=/shared/common/ibm-java2-ppc-50
JAVA_6_HOME=/shared/common/ibm-java-ppc-605


# typically the remaining variables not have to be 
# changed on a local, non-production machine,
# as they just "compute" variables based on others

JAVA_HOME=${JAVA_5_HOME}
JAVA_EXEC_DIR=${JAVA_HOME}/jre/bin/

# 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

ECLIPSE_EXE=${ECLIPSE_HOME}/eclipse


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



# These values are specific to production builds 
# on build.eclipse.org
# Do not use these on other machines or context. 
# Doing to can cause email to be sent to Galileo 
# release engineers, etc. 
# You can use 'galileo.properties' as an example
# to follow for values which are required. 

LOG_URL=https://${env.HOSTNAME}.eclipse.org/hudson/view/Repository%20Aggregation/job/${env.JOB_NAME}/${env.BUILD_NUMBER}/console

BUILDER_APP_ARGS=-production -buildModel ${BUILD_HOME}/org.eclipse.galileo.build/galileo.build -buildRoot ${BUILD_RESULTS} -mirrorReferences -referenceExcludePattern .*/site.xml -packedStrategy verify -brandingContribution Galileo -trustedContributions Eclipse,Equinox -logLevel DEBUG  -emailFromName GalileoBuilder -logURL ${LOG_URL}
#     Important: on any non-production machines it is important to _not_ use eclipse.p2.mirrors=false, so this value should be supplied by calling script's properties.
#     Note, we include '-vmargs' here, in case there are not any. Not sure if the use of -vmargs _requires_ arguments or not, but probably would.
#		     
#     note: -Declipse.p2.MD5Check=false may be needed as a workaround for bug [253713]
#     (should not actually be required ... but have left note for historical reference)
#		     
#     note: rememeber that JAVA_6 PPC (less that SR5) should not be used for jar processor, see for example, 
#     bug 244603 and bug 279596. 
#		     
BUILDER_VM_ARGS=-vmargs -Declipse.p2.mirrors=false -Xmx384m -Dorg.eclipse.update.jarprocessor.pack200=${JAVA_5_HOME}/jre/bin
