~ubuntu-branches/ubuntu/quantal/libdbus-ruby/quantal

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#! /bin/sh
# A wrapper for DBus tests
# Sets up a private session bus and calls all its arguments in turn
# exiting on first failure
# $0 server [-k] [arg1 arg2...] -- test1 test2...
set -o errexit

KEEP_GOING=false
if [ "$1" = "-k" ]; then
    KEEP_GOING=true
    shift
fi

while [ "$1" != "--" ]; do
  SERVER="$SERVER $1"
  shift
done
shift # --

# This launches the bus daemon,
# exports DBUS_SESSION_BUS_ADDRESS and sets DBUS_SESSION_BUS_PID
my_dbus_launch () {
    # reimplementing dbus-launch because it is in dbus-1-x11.rpm
    PF=`mktemp dbus.pid.XXXXXX` || exit
    AF=`mktemp dbus.addr.XXXXXX` || exit
    RM_FILES="$RM_FILES $PF $AF"

    dbus-daemon --session --print-address=3 3>$AF --print-pid=4 4>$PF &
    # wait for the daemon to print the info
    TRIES=0
    while [ ! -s $AF -o ! -s $PF ]; do
	sleep 0.1
	TRIES=`expr $TRIES + 1`
	if [ $TRIES -gt 100 ]; then echo "dbus-daemon failed?"; exit 1; fi
    done
    DBUS_SESSION_BUS_PID=$(cat $PF)
    export DBUS_SESSION_BUS_ADDRESS=$(cat $AF)
    KILLS="$KILLS $DBUS_SESSION_BUS_PID"
#    dbus-monitor &
}

setup_activation () {
    SDIR=$XDG_DATA_DIRS/dbus-1/services
    mkdir -p $SDIR
    cat <<EOF > $SDIR/test.service
[D-BUS Service]
Name=org.ruby.service
Exec=$SERVER
EOF
}

run_server () {
    echo -n "Hey, server, get on da bus... "
    # start the server
    $SERVER & sleep 3
    echo "off we go!"
}

export XDG_DATA_DIRS=`mktemp -d dbus.activation.XXXXXX`
RM_FILES="$RM_FILES $XDG_DATA_DIRS"
my_dbus_launch
setup_activation
#run_server

# Clean up at exit. This will also kill the server.
trap "kill \$KILLS; rm -rf \$RM_FILES" EXIT TERM INT

while [ -n "$1" ]; do
  echo Running $1
  $1 || $KEEP_GOING
  shift
done

echo Done