# 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=/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

# This value is the one used to actually copy log files to
ganymatic.website.dir=/opt/public/ganymede

# This value is used in messages and emails
ganymatic.website.url=${env.GANYMATIC_WEBSITE_URL}
#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=

