
# comment out, if you want tests to run
# skipUnitTests=yes

mapVersionTag=HEAD
buildType=I
build.distribution=dltk


relengroot=
releng=releng
releng.dltkbuilder=releng.dltkbuilder

# 	javacFailOnError must be false otherwise the 
# 	build will terminated at the first compile error
javacFailOnError=false
javacDebugInfo=true

# 	Asks the compiler for verbose output.  This should be set 
#   to true in order for *.bin.log files to be generated when
# 	using the JDT Compiler Adapter to compile.
javacVerbose=true


# This is the eclipse releng driver
# It is only used to drive the build process
# it must be relative to the build home
#
#
# in 3.2 based builds, this version is no longer appended to 
# pde builder directory name.
#eclipse.base.version=3.1.0

eclipse.builder=org.eclipse.releng.basebuilder
eclipse.builder.version=RC4_33
eclipse.builder.fetch=true


# WTP builder
dltkBuildTools.url=http://download.eclipse.org/webtools/wtpBuildTools/drops/R3.0/T-T200706302239-200706302239/updateSite/plugins 
dltkBuildTools.file=org.eclipse.wtp.releng.tools_1.0.0.v200706302235.jar


archivesFormat=*,*,*-antZip

# 	This parameter is specific to the compiler
# 	being used (JDT Compiler, in our case).
# 	'showversion' causes the version of JDT Compiler to be 
# 	printed to the compiler log file. 
#compilerArg=-showversion -encoding ISO-8859-1 -warn:-discouraged,serial,raw
compilerArg=-showversion -encoding ISO-8859-1 -warn:-serial,raw,typeHiding,unchecked

logExtension=.xml
# 	Asks the compiler for verbose output.  This should be set to true in order for *.bin.log files to be generated when
# 	using the JDT Compiler Adapter to compile.
javacVerbose=true

#############################################################


# 	Set this to the relative path for the 
# 	directory to be use for the current build.
# 	It must be relative to the build home
# 	Final name will include the ditribution name and build type
# 	e.g:  build-wtp-I
build.current=build


# 	Set this to the relative path for the 
# 	directory to be use for the current test pass.
# 	It must be relative to the build home
# 	Final name will include the component and build type
# 	e.g:  test-wtp-I
build.tests=test
build.pack=pack

# 	Set this to the relative path for the 
# 	directory to be used for the peformance test.
# 	It is relative to the build home.
build.perf.tests=perf-current

# This is the directory in which eclipse driver
# that will be used to compile the build will
# be installed into it is relative to the build.current
base.location=eclipse


# 	This is the working directory in which 
# 	build process will do its job
# 	It is relative to the build.current
build.directory=workdir

# Set this to the relative path for the 
# directory that keeps the downloaded drivers (local repository)
# It must be relative to the buildHome
build.local.repository=downloads

# This is the CVS Repository
# that is used during the build process
# 
cvsRoot=/cvsroot/technology
cvsServer=dev.eclipse.org
cvsMapsServer=dev.eclipse.org
cvsProtocol=pserver
cvsUser=anonymous
cvsPrefix=org.eclipse.dltk

# Asks the compiler for verbose output.  This should be set to true in order for *.bin.log files to be generated when
# using the JDT Compiler Adapter to compile.
javacVerbose=true


#############################################################
# Other inline resolved properties
pde.builder.path=${env.BUILD_HOME}/builders/${eclipse.builder.version}/${eclipse.builder}
# Beginning with 33M5, the startup.jar was removed. Currently, in basebuilder, 
# this launcher is provided without version number. If we ever move to use plain
# eclipse, we'll need a bit of script find and rename (or set the variable). 
# to ever "go backwards" this one variable could be ${pde.builder.path}/startup.jar
eclipse.launcher=${pde.builder.path}/plugins/org.eclipse.equinox.launcher.jar


# in 3.2 based builds, pde's directory no longer has version number
#pde.build.scripts=${pde.builder.path}/plugins/org.eclipse.pde.build_${eclipse.base.version}/scripts
pde.build.scripts=${pde.builder.path}/plugins/org.eclipse.pde.build/scripts
buildDirectory=${env.BUILD_HOME}/${build.current}-${build.distribution}-${buildBranch}-${buildType}/${build.directory}
pde.builder.path=${env.BUILD_HOME}/builders/${eclipse.builder.version}/${eclipse.builder}
