###############################################################################
# Copyright (c) 2009 Tasktop Technologies and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
#      Tasktop Technologies - initial API and implementation
###############################################################################
# major version
#version=1.0.0

# test parameter
#build.scenario=product
#build.testxml=com.product.tests/test.xml

# eclipse versions to build and test against
targets=3.4,3.5,3.6

consolelog=true

# base directory for eclipse sdk and eclipse test 
eclipse.base=${basedir}/tools
tools.home=${basedir}/tools

# working directory for building
build.home=${basedir}/build
build.timestamp=${build.home}/timestamp.properties

# distribution directory for update sites
dist.home=${basedir}/dist

# directory for build artifact
build.results=${basedir}/build-results
build.dist=dist
#build.extraBuildArgs=

# test parameter
build.host=default
#build.assertAgainst=
#build.perf.qualifer=
#build.perf.baseline=true
build.baseline.prefix=R-${version}-${build.assertAgainst}
build.baseline=${build.baseline.prefix}_${build.assertAgainst}
build.db=${basedir}/db
build.configs=${build.host}-3.4,${build.host}-3.5,${build.host}-3.6
build.configs.properties=${build.host}-3.4,Eclipse 3.4;${build.host}-3.5,Eclipse 3.5;${build.host}-3.6,Eclipse 3.6
build.scenario=
build.components=com,net,org
build.extraTestArgs=
build.test.timeout=3600000
build.test.plugin=org.eclipse.mylyn.tests
build.test.eclipse.plugin=${build.test.plugin}
build.test.eclipse.suite=${build.test.plugin}.AllTests
build.test.performance.plugin=${build.test.plugin}
build.test.performance.suite=${build.test.plugin}.AllPerformanceTests
build.test.swtbot.plugin=${build.test.plugin}
build.test.swtbot.suite=${build.test.plugin}.AllUiTests
build.test.standalone.plugin=${build.test.plugin}
build.test.standalone.suite=${build.test.plugin}.AllStandaloneTests
#build.test.standalone.properties.*
#test.annotateReport=true

basebuilder.version=36_M1

download.eclipse.org=eclipse.unixheads.org

#eclipse.url.base=http://www.eclipse.org/downloads/download.php?r=1&file=/eclipse/downloads/drops
eclipse.url.archive=http://archive.eclipse.org/eclipse/downloads/drops
eclipse.url.download=http://${download.eclipse.org}/eclipse/downloads/drops
eclipse.url.derby=http://www.apache.org/dist/db/derby/db-derby-10.4.2.0/derby_core_plugin_10.4.2.zip
#eclipse.url.svn=http://downloads.sourceforge.net/svn-pde-build/org.eclipse.pde.build.svn-1.0.1RC2.zip

swtbot.site.3.4=http://${download.eclipse.org}/technology/swtbot/ganymede/dev-build/update-site
swtbot.site.3.5=http://${download.eclipse.org}/technology/swtbot/galileo/dev-build/update-site
swtbot.site.3.6=http://${download.eclipse.org}/technology/swtbot/galileo/dev-build/update-site

swtbot.rev=467
test.url.swtbot.3.4=http://${download.eclipse.org}/technology/swtbot/archives/2.0.0.${swtbot.rev}-dev/ganymede/dev-build/org.eclipse.swtbot.eclipse.test-2.0.0.${swtbot.rev}-dev-e34.zip
test.url.swtbot.3.5=http://${download.eclipse.org}/technology/swtbot/archives/2.0.0.${swtbot.rev}-dev/galileo/dev-build/org.eclipse.swtbot.eclipse.test-2.0.0.${swtbot.rev}-dev-e35.zip
test.url.swtbot.3.6=${test.url.swtbot.3.5}
# build tools parameter

#build.version.3.3=3.3.2
build.version.3.4=3.4.2
build.version.3.5=3.5.2RC4
build.version.3.6=3.6M5
#build.version.3.6=I20100126-0800
 
#build.url.3.3=${eclipse.url.archive}/R-${build.version.3.3}-200802211800/eclipse-SDK-${build.version.3.3}-${build.archive}
build.url.3.4=${eclipse.url.download}/R-${build.version.3.4}-200902111700/eclipse-SDK-${build.version.3.4}-${build.archive}
build.url.3.5=${eclipse.url.download}/S-${build.version.3.5}-201002111343/eclipse-SDK-${build.version.3.5}-${build.archive}
build.url.3.6=${eclipse.url.download}/S-${build.version.3.6}-201001291300/eclipse-SDK-${build.version.3.6}-${build.archive}
#build.url.3.6=http://download.eclipse.org/eclipse/downloads/drops/${build.version.3.6}/eclipse-SDK-${build.version.3.6}-${build.archive}

build.sites.3.4=${swtbot.site.3.4},http://${download.eclipse.org}/tools/cdt/releases/ganymede
build.sites.3.5=${swtbot.site.3.5},http://${download.eclipse.org}/tools/cdt/releases/ganymede
build.sites.3.6=${swtbot.site.3.6},http://${download.eclipse.org}/tools/cdt/releases/ganymede

# test tools parameter

test.version.3.4=${build.version.3.4}
test.version.3.5=${build.version.3.5}
test.version.3.6=${build.version.3.6}

test.url.3.4=${build.url.3.4}
test.url.test.3.4=${eclipse.url.archive}/R-3.3.2-200802211800/eclipse-test-framework-3.3.2.zip
test.url.3.5=${build.url.3.5}
test.url.test.3.5=${eclipse.url.archive}/R-3.3.2-200802211800/eclipse-test-framework-3.3.2.zip
test.url.3.6=${build.url.3.6}
test.url.test.3.6=${eclipse.url.archive}/R-3.3.2-200802211800/eclipse-test-framework-3.3.2.zip

test.sites.3.4=${swtbot.site.3.4}
test.sites.3.5=${swtbot.site.3.5}
test.sites.3.6=${swtbot.site.3.6}
