mirror of
https://git.freebsd.org/ports.git
synced 2026-06-02 11:08:52 +00:00
Uses/dbus-testing.mk: Introduce new USES
This USES starts a system- and session-level D-Bus daemons before the test stage and stops them after, much like Uses/display.mk provides an X11 display. It is intended to be used with ports whose testing require a running dbus daemon. Approved by: portmgr (bapt) Sponsored by: Future Crew, LLC Differential Revision: https://reviews.freebsd.org/D53464
This commit is contained in:
@@ -0,0 +1,55 @@
|
|||||||
|
# sets dbus daemon up for testing
|
||||||
|
#
|
||||||
|
# Feature: dbus-testing
|
||||||
|
# Usage: USES=dbus-testing
|
||||||
|
#
|
||||||
|
# MAINTAINER: arrowd@FreeBSD.org
|
||||||
|
|
||||||
|
.if !defined(_INCLUDE_USES_DBUS_TESTINGS_MK)
|
||||||
|
_INCLUDE_USES_DBUS_TESTINGS_MK=yes
|
||||||
|
|
||||||
|
TEST_DEPENDS+= dbus-launch:devel/dbus
|
||||||
|
TEST_ENV+= DBUS_SESSION_BUS_ADDRESS=unix:path=${_SESSION_BUS_SOCKET}
|
||||||
|
|
||||||
|
_DBUS_LAUNCH?= ${LOCALBASE}/bin/dbus-launch
|
||||||
|
|
||||||
|
_DBUS_LOCAL_CONF_SRC= ${PORTSDIR}/Templates/dbus-testing-system-local.conf
|
||||||
|
_DBUS_LOCAL_CONF_DST= ${LOCALBASE}/etc/dbus-1/system-local.conf
|
||||||
|
|
||||||
|
_ALREADY_STARTED_COOKIE=${WRKDIR}/.dbus-testing-was-already-running
|
||||||
|
_SESSION_BUS_SOCKET= ${WRKDIR}/.dbus-session-bus-socket
|
||||||
|
_SESSION_BUS_PIDFILE= ${WRKDIR}/.dbus-session-bus-pid
|
||||||
|
|
||||||
|
_USES_test= 299:dbus-testing-pre-test \
|
||||||
|
801:dbus-testing-post-test
|
||||||
|
|
||||||
|
dbus-testing-pre-test:
|
||||||
|
. if defined(PACKAGE_BUILDING) && ${UID} == 0
|
||||||
|
# When running in Poudriere we can afford installing a permissive config
|
||||||
|
# that allows anyone to own any D-Bus name. This is useful for running tests
|
||||||
|
# without prior "make install".
|
||||||
|
${INSTALL_DATA} ${_DBUS_LOCAL_CONF_SRC} ${_DBUS_LOCAL_CONF_DST}
|
||||||
|
. endif
|
||||||
|
# Start the system bus via rc script
|
||||||
|
(/usr/sbin/service dbus onestatus && \
|
||||||
|
${TOUCH} ${_ALREADY_STARTED_COOKIE}) || ${TRUE}
|
||||||
|
/usr/sbin/service dbus onestart || ${TRUE}
|
||||||
|
# Now start an isolated session bus. This is complicated because 'make test'
|
||||||
|
# wraps everything into ${SETENVI}, so we can't easily pass the bus address via
|
||||||
|
# environment. Instead we put the bus' socket under a well-known path
|
||||||
|
# ${_SESSION_BUS_SOCKET} and pass it to make via usual ${TEST_ENV}.
|
||||||
|
# Typical value for DBUS_SESSION_BUS_ADDRESS looks like
|
||||||
|
# unix:path=/tmp/dbus-xZF47bxeMf,guid=227e19aaa3a87a1bbdb96cd56901b7e0
|
||||||
|
session_bus_env=$$(${SETENVI} ${WRK_ENV} ${MAKE_ENV} ${_DBUS_LAUNCH} | ${XARGS}) ; \
|
||||||
|
session_bus_sock=$$(echo $$session_bus_env | grep -o 'path=.*' | sed -e 's|path=||' -e 's|,.*||') ; \
|
||||||
|
${LN} -fs $$session_bus_sock ${_SESSION_BUS_SOCKET} ;\
|
||||||
|
${SETENVI} $$session_bus_env ${SH} -c 'echo $$DBUS_SESSION_BUS_PID' > ${_SESSION_BUS_PIDFILE}
|
||||||
|
|
||||||
|
dbus-testing-post-test:
|
||||||
|
(${CAT} ${_SESSION_BUS_PIDFILE} | ${XARGS} kill) || ${TRUE}
|
||||||
|
${RM} ${_SESSION_BUS_SOCKET} ${_SESSION_BUS_PIDFILE}
|
||||||
|
[ ! -f ${_ALREADY_STARTED_COOKIE} ] && \
|
||||||
|
/usr/sbin/service dbus onestop || ${TRUE}
|
||||||
|
${RM} ${_ALREADY_STARTED_COOKIE}
|
||||||
|
|
||||||
|
.endif
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-Bus Bus Configuration 1.0//EN"
|
||||||
|
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
|
||||||
|
<busconfig>
|
||||||
|
<policy context="default">
|
||||||
|
<allow send_destination="*" eavesdrop="true"/>
|
||||||
|
<allow eavesdrop="true"/>
|
||||||
|
<allow own="*"/>
|
||||||
|
</policy>
|
||||||
|
</busconfig>
|
||||||
Reference in New Issue
Block a user