aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGustavo Sverzut Barbieri <gustavo.barbieri@intel.com>2014-03-09 23:55:42 -0300
committerGustavo Sverzut Barbieri <gustavo.barbieri@intel.com>2014-03-10 00:09:12 -0300
commitc52da37d0b83cf2159704ccc7f0583df6fac7da6 (patch)
treeb840f98de057a3f47a5e47907c418e8eb385ff3b
parentEolian/Generator: more fixes related to stars to add to params. (diff)
downloadefl-c52da37d0b83cf2159704ccc7f0583df6fac7da6.tar.gz
link dbus and systemd services, allows systemd activation.
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.
-rw-r--r--Makefile.am8
-rw-r--r--configure.ac35
-rw-r--r--dbus-services/org.enlightenment.Efreet.service.in1
-rw-r--r--dbus-services/org.enlightenment.Ethumb.service.in1
-rw-r--r--m4/pkg_var.m414
-rw-r--r--systemd-services/.gitignore2
-rw-r--r--systemd-services/efreet.service.in7
-rw-r--r--systemd-services/ethumb.service.in7
8 files changed, 75 insertions, 0 deletions
diff --git a/Makefile.am b/Makefile.am
index 380b930fde..a2b70b5fff 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -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 \
@@ -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
diff --git a/configure.ac b/configure.ac
index 754ad09b3f..d30d7220ef 100644
--- a/configure.ac
+++ b/configure.ac
@@ -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"],
@@ -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
@@ -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
diff --git a/dbus-services/org.enlightenment.Efreet.service.in b/dbus-services/org.enlightenment.Efreet.service.in
index 94eedc87e3..5eb5d5326b 100644
--- a/dbus-services/org.enlightenment.Efreet.service.in
+++ b/dbus-services/org.enlightenment.Efreet.service.in
@@ -1,3 +1,4 @@
[D-BUS Service]
Name=org.enlightenment.Efreet
Exec=@prefix@/bin/efreetd
+@systemd_dbus_prefix@SystemdService=efreet.service
diff --git a/dbus-services/org.enlightenment.Ethumb.service.in b/dbus-services/org.enlightenment.Ethumb.service.in
index ece2e031c4..484427f65c 100644
--- a/dbus-services/org.enlightenment.Ethumb.service.in
+++ b/dbus-services/org.enlightenment.Ethumb.service.in
@@ -1,3 +1,4 @@
[D-BUS Service]
Name=org.enlightenment.Ethumb
Exec=@prefix@/bin/ethumbd
+@systemd_dbus_prefix@SystemdService=ethumb.service
diff --git a/m4/pkg_var.m4 b/m4/pkg_var.m4
new file mode 100644
index 0000000000..3d0a309bcb
--- /dev/null
+++ b/m4/pkg_var.m4
@@ -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
+
diff --git a/systemd-services/.gitignore b/systemd-services/.gitignore
new file mode 100644
index 0000000000..97355b6202
--- /dev/null
+++ b/systemd-services/.gitignore
@@ -0,0 +1,2 @@
+/efreet.service
+/ethumb.service
diff --git a/systemd-services/efreet.service.in b/systemd-services/efreet.service.in
new file mode 100644
index 0000000000..ee1becbfde
--- /dev/null
+++ b/systemd-services/efreet.service.in
@@ -0,0 +1,7 @@
+[Unit]
+Description=Efreet Enlightenment FreeDesktop.Org Daemon
+
+[Service]
+Type=dbus
+BusName=org.enlightenment.Efreet
+ExecStart=@prefix@/bin/efreetd
diff --git a/systemd-services/ethumb.service.in b/systemd-services/ethumb.service.in
new file mode 100644
index 0000000000..93bbff8bae
--- /dev/null
+++ b/systemd-services/ethumb.service.in
@@ -0,0 +1,7 @@
+[Unit]
+Description=Enlightenment Thumbnailer
+
+[Service]
+Type=dbus
+BusName=org.enlightenment.Ethumb
+ExecStart=@prefix@/bin/ethumbd