#! /bin/bash
#
# 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.

exec 2>&1

: ${BUILDBOT_CONFIG:=/etc/daemontools-buildbot.conf}

# Read configuration file
[ -r "${BUILDBOT_CONFIG}" ] && . "${BUILDBOT_CONFIG}"

: ${xvfb_display:=':10'}
: ${xvfb_mode:='1024x768x24'}

# Expand all "env_*" environment variables
for varname in ${!env_*} ; do
	eval "export ${varname#env_}=\${${varname}}"
done

mkdir -p "xvfb${xvfb_display}"
exec /usr/bin/Xvfb "${xvfb_display}" \
	-fbdir "xvfb${xvfb_display}" \
	-screen 0 "${xvfb_mode}" \
	-nolisten inet6 \
	-nolisten inet

