# Copyright (C) 2010 Igalia S.L. All rights reserved.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Library General Public License for more details.
#
# You should have received a copy of the GNU Library General Public License
# along with this library; see the file COPYING.LIB.  If not, write to
# the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.


# Path to the Buildbot slave directory
#
buildbot_path="/home/slave/webkitgtk"

# User account used to run Buildbot.
#
buildbot_user="slave"

# Path to a directory where to log Buildbot output
#
buildbot_log_path="/var/log/buildbot"


# Display number under which Xvfb will run
#
xvfb_display=":10"

# Graphical mode which Xvfb will report to applications
#
xvfb_mode="1024x768x24"

# Path to a directory where to log Xvfb error output
#
xvfb_log_path="/var/log/xvfb"


# Output directory for core dumps. Set this to an empty string to
# disable recording them.
#
crashmon_output="/var/www/webkitgtk-coredumps"

# Maximum size of core dumps. With the default "unlimited" setting
# it is recommended to have ~20GB for cores in 64-bit machines.
# For 32-bit bots, less space is needed.
#
crashmon_max_size="unlimited"

# Path to a directory where to log crashmon output
#
crashmon_log_path="/var/log/crashmon"

# A list of e-mail addresses where to send notifications of core dumps.
# Leave empty to disable mail notifications.
#
# WARNING: E-mail addresses will be flooded with messages!
#
crashmon_mailto=""

# Base directory where to find sources and built binaries of which
# crash dumps are to be catched. Usually you will not need to change this.
#
crashmon_src_path="${buildbot_path}/gtk-linux-${buildbot_bits}-debug/build"
crashmon_bin_path="${crashmon_src_path}/WebKitBuild/Debug/Programs"


# If you want to use ccache, set a path to where synlinks with tool
# names pointing to ccache are installed. In Debian systems this
# would be /usr/lib/ccache. Set to empty to disable.
#
ccache_path="/usr/lib/ccache"


# Environment variables. Prefix them with "env_".
#
env_CFLAGS="-pipe"
env_CXXFLAGS="-pipe"
env_WebKitMakeArguments="-j3"
env_WEBKIT_TESTFONTS="/home/${buildbot_user}/testfonts"

