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

mapVersionTag=HEAD
buildType=I
build.distribution=dltk


relengroot=
releng=releng.maps
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
cvsProtocol=ext
cvsUser=aplatov
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}
