Skip to content

Commit

Permalink
link dbus and systemd services, allows systemd activation.
Browse files Browse the repository at this point in the history
If the dbus service contains SystemdService entry and the dbus-daemon
is started with --systemd-activation, then requests for services on
the user session bus will be handled by systemd, creating cgroups and
being handled as native systemd services of Type=dbus.
  • Loading branch information
Gustavo Sverzut Barbieri committed Mar 10, 2014
1 parent 4be9526 commit c52da37
Show file tree
Hide file tree
Showing 8 changed files with 75 additions and 0 deletions.
8 changes: 8 additions & 0 deletions Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ m4/ltsugar.m4 \
m4/ltversion.m4

EXTRA_DIST = \
m4/pkg_var.m4 \
m4/ac_path_generic.m4 \
m4/ecore_check_c_extension.m4 \
m4/ecore_check_module.m4 \
Expand Down Expand Up @@ -309,6 +310,13 @@ service_DATA = \
dbus-services/org.enlightenment.Efreet.service \
dbus-services/org.enlightenment.Ethumb.service

if HAVE_SYSTEMD_USER_SESSION
systemdunitsdir = @USER_SESSION_DIR@
systemdunits_DATA = \
systemd-services/efreet.service \
systemd-services/ethumb.service
endif
EXTRA_DIST += $(systemdunits_DATA)


.PHONY: doc benchmark examples install-examples
Expand Down
35 changes: 35 additions & 0 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -587,6 +587,35 @@ AC_ARG_ENABLE([systemd],
want_systemd="no"
])

systemd_dbus_prefix="# "
if test "${want_systemd}" = "yes"; then
systemd_dbus_prefix=""
fi
AC_SUBST(systemd_dbus_prefix)

AC_ARG_WITH([systemdunitdir],
AC_HELP_STRING([--with-systemdunitdir=DIR],
[path to systemd user services directory]),
[USER_SESSION_DIR=${withval}])
if test "$want_systemd" == "no"; then
have_systemd_user_session="no"
elif test -n "${USER_SESSION_DIR}"; then
have_systemd_user_session="yes"
AC_MSG_NOTICE([Using systemd user services directory as ${USER_SESSION_DIR}])
else
# Detect systemd user session directory properly
EFL_PKG_CHECK_VAR([USER_SESSION_DIR], [systemd >= 192], [systemduserunitdir],
[have_systemd_user_session="yes"], [have_systemd_user_session="no"])

if test "$want_systemd" = "yes" -a "$have_systemd_user_session" = "no"; then
AC_MSG_ERROR([systemd support wanted, but systemd was not found.])
fi
fi

AM_CONDITIONAL([HAVE_SYSTEMD_USER_SESSION], [test "x${have_systemd_user_session}" = "xyes"])
AC_SUBST([USER_SESSION_DIR])


if test "x${have_systemd_pkg}" = "xauto" -o "x${have_systemd_pkg}" = "xyes"; then
PKG_CHECK_MODULES([SYSTEMD], [libsystemd-daemon >= 192 libsystemd-journal >= 192],
[have_systemd_pkg="yes"],
Expand Down Expand Up @@ -4105,6 +4134,8 @@ pc/ethumb.pc
pc/ethumb_client.pc
dbus-services/org.enlightenment.Efreet.service
dbus-services/org.enlightenment.Ethumb.service
systemd-services/efreet.service
systemd-services/ethumb.service
$po_makefile_in
cmakeconfig/EinaConfig.cmake
cmakeconfig/EinaConfigVersion.cmake:cmakeconfig/EFLConfigVersion.cmake.in
Expand Down Expand Up @@ -4250,6 +4281,10 @@ fi
echo " "
echo "Installation....: make install (as root if needed, with 'su' or 'sudo')"
echo " prefix........: $prefix"
echo " dbus units....: $dbusservicedir"
if test "${have_systemd_user_session}" = "yes"; then
echo " systemd units.: $USER_SESSION_DIR"
fi
echo

if test "x${have_systemd_pkg}" = "xyes" -a "x${want_systemd}" = "xno"; then
Expand Down
1 change: 1 addition & 0 deletions dbus-services/org.enlightenment.Efreet.service.in
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
[D-BUS Service]
Name=org.enlightenment.Efreet
Exec=@prefix@/bin/efreetd
@systemd_dbus_prefix@SystemdService=efreet.service
1 change: 1 addition & 0 deletions dbus-services/org.enlightenment.Ethumb.service.in
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
[D-BUS Service]
Name=org.enlightenment.Ethumb
Exec=@prefix@/bin/ethumbd
@systemd_dbus_prefix@SystemdService=ethumb.service
14 changes: 14 additions & 0 deletions m4/pkg_var.m4
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
# -------------------------------------------
# Retrieves the value of the pkg-config variable for the given module.
AC_DEFUN([EFL_PKG_CHECK_VAR],
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl
_PKG_CONFIG([$1], [variable="][$3]["], [$2])
AS_VAR_COPY([$1], [pkg_cv_][$1])
AS_VAR_IF([$1], [""], [$5], [$4])dnl
])# PKG_CHECK_VAR

2 changes: 2 additions & 0 deletions systemd-services/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/efreet.service
/ethumb.service
7 changes: 7 additions & 0 deletions systemd-services/efreet.service.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
[Unit]
Description=Efreet Enlightenment FreeDesktop.Org Daemon

[Service]
Type=dbus
BusName=org.enlightenment.Efreet
ExecStart=@prefix@/bin/efreetd
7 changes: 7 additions & 0 deletions systemd-services/ethumb.service.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
[Unit]
Description=Enlightenment Thumbnailer

[Service]
Type=dbus
BusName=org.enlightenment.Ethumb
ExecStart=@prefix@/bin/ethumbd

0 comments on commit c52da37

Please sign in to comment.