2011-06-01 18:36:16 +01:00
|
|
|
#! /bin/sh
|
2005-03-12 16:33:01 +00:00
|
|
|
|
|
|
|
|
SCRIPTNAME=$0
|
|
|
|
|
WRAPPED_SCRIPT=$1
|
|
|
|
|
shift
|
|
|
|
|
|
2006-08-10 21:44:00 +00:00
|
|
|
die()
|
2005-03-12 16:33:01 +00:00
|
|
|
{
|
|
|
|
|
if ! test -z "$DBUS_SESSION_BUS_PID" ; then
|
|
|
|
|
echo "killing message bus "$DBUS_SESSION_BUS_PID >&2
|
|
|
|
|
kill -9 $DBUS_SESSION_BUS_PID
|
|
|
|
|
fi
|
|
|
|
|
echo $SCRIPTNAME: $* >&2
|
|
|
|
|
exit 1
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if test -z "$DBUS_TOP_BUILDDIR" ; then
|
|
|
|
|
die "Must set DBUS_TOP_BUILDDIR"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
## convenient to be able to ctrl+C without leaking the message bus process
|
2006-08-10 21:44:00 +00:00
|
|
|
trap 'die "Received SIGINT"' INT
|
2005-03-12 16:33:01 +00:00
|
|
|
|
|
|
|
|
CONFIG_FILE=./run-with-tmp-session-bus.conf
|
|
|
|
|
SERVICE_DIR="$DBUS_TOP_BUILDDIR/test/data/valid-service-files"
|
|
|
|
|
ESCAPED_SERVICE_DIR=`echo $SERVICE_DIR | sed -e 's/\//\\\\\\//g'`
|
|
|
|
|
echo "escaped service dir is: $ESCAPED_SERVICE_DIR" >&2
|
|
|
|
|
|
2008-12-04 14:27:21 -05:00
|
|
|
if test -z "$SOURCE_CONFIG_FILE"; then
|
|
|
|
|
SOURCE_CONFIG_FILE="$DBUS_TOP_BUILDDIR/bus/session.conf";
|
|
|
|
|
fi
|
2005-03-12 16:33:01 +00:00
|
|
|
## create a configuration file based on the standard session.conf
|
2008-12-04 14:27:21 -05:00
|
|
|
cat $SOURCE_CONFIG_FILE | \
|
2006-11-02 19:28:11 +00:00
|
|
|
sed -e 's/<standard_session_servicedirs.*$/<servicedir>'$ESCAPED_SERVICE_DIR'<\/servicedir>/g' | \
|
2005-03-12 16:33:01 +00:00
|
|
|
sed -e 's/<include.*$//g' \
|
|
|
|
|
> $CONFIG_FILE
|
|
|
|
|
|
|
|
|
|
echo "Created configuration file $CONFIG_FILE" >&2
|
|
|
|
|
|
2006-09-30 Havoc Pennington <hp@redhat.com>
* configure.in (LT_CURRENT, LT_AGE): increment current and age to
reflect addition of interfaces.
* doc/dbus-specification.xml: describe a new
org.freedesktop.DBus.Peer.GetMachineId method
* dbus/dbus-string.c (_dbus_string_skip_white_reverse): new function
(_dbus_string_skip_white, _dbus_string_skip_blank): use new
DBUS_IS_ASCII_BLANK, DBUS_IS_ASCII_WHITE macros and fix assertion
at end of skip_white
(_dbus_string_chop_white): new function
* bus/connection.c (bus_connections_setup_connection): call
dbus_connection_set_route_peer_messages.
* dbus/dbus-connection.c
(_dbus_connection_peer_filter_unlocked_no_update): modify to
support a GetMachineId method.
Also, support a new flag to let the bus pass peer methods through
to apps on the bus, which can be set with
dbus_connection_set_route_peer_messages.
Finally, handle and return an error for anything unknown on the
Peer interface, which will allow us to extend the Peer interface
in the future without fear that we're now intercepting something
apps were wanting to see.
* tools/dbus-uuidgen.c: a thin wrapper around the functions in
dbus/dbus-uuidgen.c
* dbus/dbus-uuidgen.c: implement the bulk of the dbus-uuidgen
binary here, since most of the code is already in libdbus
* dbus/dbus-sysdeps.c (_dbus_read_local_machine_uuid): read the
uuid from the system config file
* dbus/dbus-internals.c (_dbus_generate_uuid, _dbus_uuid_encode)
(_dbus_read_uuid_file_without_creating)
(_dbus_create_uuid_file_exclusively, _dbus_read_uuid_file): new
uuid-related functions, partly factored out from dbus-server.c
* dbus/dbus-sysdeps.c (_dbus_error_from_errno): convert EEXIST to
DBUS_ERROR_FILE_EXISTS instead of EEXIST
* dbus/dbus-protocol.h (DBUS_ERROR_FILE_EXISTS): add file exists error
* tools/dbus-cleanup-sockets.1: explain what the point of this
thing is a bit more
* autogen.sh (run_configure): add --config-cache to default
configure args
* dbus/dbus-internals.h (_DBUS_ASSERT_ERROR_IS_SET): disable the
error set/clear assertions when DBUS_DISABLE_CHECKS is defined
* tools/dbus-launch.c (main): if xdisplay hasn't been opened,
don't try to save address, fixes crash in make check
2006-10-01 03:18:47 +00:00
|
|
|
if ! test -e "$DBUS_TOP_BUILDDIR"/bus/dbus-daemon ; then
|
|
|
|
|
die "$DBUS_TOP_BUILDDIR/bus/dbus-daemon does not exist"
|
|
|
|
|
fi
|
|
|
|
|
|
2007-10-09 15:50:08 -04:00
|
|
|
PATH="$DBUS_TOP_BUILDDIR"/bus:$PATH
|
|
|
|
|
export PATH
|
2005-03-12 16:33:01 +00:00
|
|
|
|
2007-10-09 15:50:08 -04:00
|
|
|
## the libtool script found by the path search should already do this, but
|
|
|
|
|
LD_LIBRARY_PATH=$DBUS_TOP_BUILDDIR/dbus/.libs:$LD_LIBRARY_PATH
|
|
|
|
|
export LD_LIBRARY_PATH
|
2005-03-12 16:33:01 +00:00
|
|
|
unset DBUS_SESSION_BUS_ADDRESS
|
|
|
|
|
unset DBUS_SESSION_BUS_PID
|
|
|
|
|
|
|
|
|
|
echo "Running $DBUS_TOP_BUILDDIR/tools/dbus-launch --sh-syntax --config-file=$CONFIG_FILE" >&2
|
|
|
|
|
|
2007-10-09 15:50:08 -04:00
|
|
|
DBUS_USE_TEST_BINARY=1
|
|
|
|
|
export DBUS_USE_TEST_BINARY
|
2005-03-12 16:33:01 +00:00
|
|
|
eval `$DBUS_TOP_BUILDDIR/tools/dbus-launch --sh-syntax --config-file=$CONFIG_FILE`
|
|
|
|
|
|
|
|
|
|
if test -z "$DBUS_SESSION_BUS_PID" ; then
|
2006-09-30 Havoc Pennington <hp@redhat.com>
* configure.in (LT_CURRENT, LT_AGE): increment current and age to
reflect addition of interfaces.
* doc/dbus-specification.xml: describe a new
org.freedesktop.DBus.Peer.GetMachineId method
* dbus/dbus-string.c (_dbus_string_skip_white_reverse): new function
(_dbus_string_skip_white, _dbus_string_skip_blank): use new
DBUS_IS_ASCII_BLANK, DBUS_IS_ASCII_WHITE macros and fix assertion
at end of skip_white
(_dbus_string_chop_white): new function
* bus/connection.c (bus_connections_setup_connection): call
dbus_connection_set_route_peer_messages.
* dbus/dbus-connection.c
(_dbus_connection_peer_filter_unlocked_no_update): modify to
support a GetMachineId method.
Also, support a new flag to let the bus pass peer methods through
to apps on the bus, which can be set with
dbus_connection_set_route_peer_messages.
Finally, handle and return an error for anything unknown on the
Peer interface, which will allow us to extend the Peer interface
in the future without fear that we're now intercepting something
apps were wanting to see.
* tools/dbus-uuidgen.c: a thin wrapper around the functions in
dbus/dbus-uuidgen.c
* dbus/dbus-uuidgen.c: implement the bulk of the dbus-uuidgen
binary here, since most of the code is already in libdbus
* dbus/dbus-sysdeps.c (_dbus_read_local_machine_uuid): read the
uuid from the system config file
* dbus/dbus-internals.c (_dbus_generate_uuid, _dbus_uuid_encode)
(_dbus_read_uuid_file_without_creating)
(_dbus_create_uuid_file_exclusively, _dbus_read_uuid_file): new
uuid-related functions, partly factored out from dbus-server.c
* dbus/dbus-sysdeps.c (_dbus_error_from_errno): convert EEXIST to
DBUS_ERROR_FILE_EXISTS instead of EEXIST
* dbus/dbus-protocol.h (DBUS_ERROR_FILE_EXISTS): add file exists error
* tools/dbus-cleanup-sockets.1: explain what the point of this
thing is a bit more
* autogen.sh (run_configure): add --config-cache to default
configure args
* dbus/dbus-internals.h (_DBUS_ASSERT_ERROR_IS_SET): disable the
error set/clear assertions when DBUS_DISABLE_CHECKS is defined
* tools/dbus-launch.c (main): if xdisplay hasn't been opened,
don't try to save address, fixes crash in make check
2006-10-01 03:18:47 +00:00
|
|
|
die "Failed to launch message bus for test script to run"
|
2005-03-12 16:33:01 +00:00
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
echo "Started bus pid $DBUS_SESSION_BUS_PID at $DBUS_SESSION_BUS_ADDRESS" >&2
|
|
|
|
|
|
|
|
|
|
# Execute wrapped script
|
|
|
|
|
echo "Running $WRAPPED_SCRIPT $@" >&2
|
|
|
|
|
$WRAPPED_SCRIPT "$@" || die "script \"$WRAPPED_SCRIPT\" failed"
|
|
|
|
|
|
|
|
|
|
kill -TERM $DBUS_SESSION_BUS_PID || die "Message bus vanished! should not have happened" && echo "Killed daemon $DBUS_SESSION_BUS_PID" >&2
|
|
|
|
|
|
|
|
|
|
sleep 2
|
|
|
|
|
|
|
|
|
|
## be sure it really died
|
|
|
|
|
kill -9 $DBUS_SESSION_BUS_PID > /dev/null 2>&1 || true
|
|
|
|
|
|
|
|
|
|
exit 0
|