# These are the property definitions that allow the Ganymatic to run on build.eclipse.org
# as the master Ganymede build
#
# Webserver: Apache
#            serves pages from /opt/public
# Ganymatic tools: CVS exported to ~bfreeman/ganymede/
#
# Note: buckminster.home must be an absolute path
#     : due to some difference between the Sun JVM and the IBM PPC JVM
#
buckminster.home=/home/shared/ganymede/buckminster
# remember, "../" is used below because the ant script that uses these 
# properties is ran from "down" in the tools subdirectory.
contribs.dir=../org.eclipse.ganymede.sitecontributions
site.dir=../org.eclipse.dash.siteassembler/bin/site
#
# I use a file access version of downloads to reduce network traffic,
# but I could also use the url version:
downloads=http://download.eclipse.org
#downloads=/home/data/httpd/download.eclipse.org

ganymatic.website.dir=/var/www/html/buildhome/ganymede
ganymatic.website.url=http://localhost/buildhome/ganymede
#ganymatic.releng.email=david_williams@us.ibm.com
#ganymatic.releng.email=bjorn.freeman-benson@eclipse.org,david_williams@us.ibm.com,cross-project-issues-dev@eclipse.org
generated.dir=${buckminster.home}/bin/generated
top.project=org.eclipse.ganymede
mirror.site.location=${buckminster.home}/bin/${top.project}.mirror
mirror.site.url=http://www.foo.fee/fum
#
# features that are enabled on the build machine but should
# should not be on developer machines: copying and emailing
#
staging.dir=${env.GANYMEDE_STAGING}
#ganymatic.email.from.address=david.williams@eclipse.org
#ganymatic.email.from.name=ganymaticBuilder

# Nick's RSS feed code requires a version number, so I chose "3.0.0"
# on the theory that Callisto was simultaneous release 1.0, Europa 2.0, and Ganymede 3.0
project=Ganymede
branch=
version=3.0.0
buildAlias=Ganymede_M2
updateManagerURL=http://download.eclipse.org/releases/ganymede/staging/
downloadsURL=

