summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--gnu-system.am1
-rw-r--r--gnu/packages/glib.scm12
-rw-r--r--gnu/packages/patches/dbus-helper-search-path.patch18
3 files changed, 31 insertions, 0 deletions
diff --git a/gnu-system.am b/gnu-system.am
index 859b123c2c..3daec42e28 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -427,6 +427,7 @@ dist_patch_DATA =						\
   gnu/packages/patches/cssc-missing-include.patch               \
   gnu/packages/patches/clucene-contribs-lib.patch               \
   gnu/packages/patches/cursynth-wave-rand.patch			\
+  gnu/packages/patches/dbus-helper-search-path.patch		\
   gnu/packages/patches/dealii-p4est-interface.patch		\
   gnu/packages/patches/diffutils-gets-undeclared.patch		\
   gnu/packages/patches/dfu-programmer-fix-libusb.patch		\
diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index 6ef64e4b73..e4bf6ad0fc 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -59,6 +59,7 @@
     (name "dbus")
     (version "1.10.0")
     (source (origin
+              ;; TODO: Apply patch from DBUS/ACTIVATION below.
               (method url-fetch)
               (uri (string-append
                     "http://dbus.freedesktop.org/releases/dbus/dbus-"
@@ -123,6 +124,17 @@ or through unencrypted TCP/IP suitable for use behind a firewall with
 shared NFS home directories.")
     (license license:gpl2+)))                     ; or Academic Free License 2.1
 
+(define-public dbus/activation
+  ;; D-Bus with a patch to fix service activation.
+  ;; TODO: Merge with DBUS above.
+  (package
+    (inherit dbus)
+    (version (string-append (package-version dbus) ".a"))
+    (source (origin
+              (inherit (package-source dbus))
+              (patches
+               (list (search-patch "dbus-helper-search-path.patch")))))))
+
 (define glib
   (package
    (name "glib")
diff --git a/gnu/packages/patches/dbus-helper-search-path.patch b/gnu/packages/patches/dbus-helper-search-path.patch
new file mode 100644
index 0000000000..30c142312b
--- /dev/null
+++ b/gnu/packages/patches/dbus-helper-search-path.patch
@@ -0,0 +1,18 @@
+The setuid helper of D-Bus is responsible for "service activation".
+It looks for '.service' files in fixed locations, but the default locations
+make no sense (see below), so replace them with /etc/dbus-1/system-services.
+
+--- dbus-1.10.0/dbus/dbus-sysdeps-util-unix.c	2015-10-22 00:07:03.829251854 +0200
++++ dbus-1.10.0/dbus/dbus-sysdeps-util-unix.c	2015-10-22 00:07:14.893445175 +0200
+@@ -1410,10 +1410,7 @@ _dbus_get_standard_system_servicedirs (D
+    * be available.
+    */
+   static const char standard_search_path[] =
+-    "/usr/local/share:"
+-    "/usr/share:"
+-    DBUS_DATADIR ":"
+-    "/lib";
++    "/etc";
+   DBusString servicedir_path;
+ 
+   _dbus_string_init_const (&servicedir_path, standard_search_path);