39 lines
1.1 KiB
Bash
39 lines
1.1 KiB
Bash
#! /bin/bash -x
|
|
|
|
set -x
|
|
|
|
fail() {
|
|
echo # make sure error message is on a new line
|
|
echo "[xvfb.sh:error]" "${@}"
|
|
exit 1
|
|
}
|
|
|
|
cleanup_xvfb() {
|
|
# When you call this script with START_VNC or TASKCLUSTER_INTERACTIVE
|
|
# we make sure we do not kill xvfb so you do not lose your connection
|
|
local xvfb_pid=`pidof Xvfb`
|
|
local vnc=${START_VNC:-false}
|
|
local interactive=${TASKCLUSTER_INTERACTIVE:-false}
|
|
if [ -n "$xvfb_pid" ] && [[ $vnc == false ]] && [[ $interactive == false ]] ; then
|
|
kill $xvfb_pid || true
|
|
fi
|
|
}
|
|
|
|
start_xvfb() {
|
|
mkdir -p ~/artifacts/xvfb
|
|
# Add a handler for SIGUSR1
|
|
trap : SIGUSR1
|
|
# Start Xvfb with SIGUSR1 set to SIG_IGN; it will then signal its parent when it's ready to accept connections
|
|
(trap '' SIGUSR1; exec Xvfb :$2 -nolisten tcp -noreset -screen 0 $1 > ~/artifacts/xvfb/xvfb.log 2>&1) &
|
|
xvfb_pid=$!
|
|
# Wait for SIGUSR1 (or Xvfb exit in case of error)
|
|
set +e
|
|
wait $xvfb_pid
|
|
wait_result=$?
|
|
if [ $wait_result -ne $((128 + $(kill -l SIGUSR1) )) ]; then
|
|
fail "Xvfb failed to start" "$(cat ~/artifacts/xvfb/xvfb.log >&2)"
|
|
fi
|
|
set -e
|
|
|
|
export DISPLAY=:$2
|
|
}
|