gnu: dbus: Add variant with proper helper for service activation.

* gnu/packages/patches/dbus-helper-search-path.patch: New file.
* gnu-system.am (dist_patch_DATA): Add it.
* gnu/packages/glib.scm (dbus/activation): New variable.
This commit is contained in:
Ludovic Courtès 2015-10-22 00:25:03 +02:00
parent 4a663ca4e8
commit da51f5bb01
3 changed files with 31 additions and 0 deletions

View File

@ -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 \

View File

@ -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")

View File

@ -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);