From a860a5fa95a743093cbda5540fb5be7800439a9f Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Tue, 7 Dec 2021 22:48:39 -0500 Subject: services: dbus: Add a VERBOSE? configuration option. * gnu/services/dbus.scm ()[verbose?]: New field. (dbus-shepherd-service): Use it. (dbus-service)[verbose?]: Add argument and update doc. * doc/guix.texi (Desktop Services): Document it. --- doc/guix.texi | 9 +++++++-- gnu/services/dbus.scm | 22 +++++++++++++++++----- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 967145a627..4c2c856c79 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -21767,9 +21767,14 @@ The actual service definitions included in @code{%desktop-services} and provided by @code{(gnu services dbus)} and @code{(gnu services desktop)} are described below. -@deffn {Scheme Procedure} dbus-service [#:dbus @var{dbus}] [#:services '()] +@deffn {Scheme Procedure} dbus-service [#:dbus @var{dbus}] [#:services '()] @ + [#:verbose?] Return a service that runs the ``system bus'', using @var{dbus}, with -support for @var{services}. +support for @var{services}. When @var{verbose?} is true, it causes the +@samp{DBUS_VERBOSE} environment variable to be set to @samp{1}; a +verbose-enabled D-Bus package such as @code{dbus-verbose} should be +provided as @var{dbus} in this scenario. The verbose output is logged +to @file{/var/log/dbus-daemon.log}. @uref{https://dbus.freedesktop.org/, D-Bus} is an inter-process communication facility. Its system bus is used to allow system services to communicate diff --git a/gnu/services/dbus.scm b/gnu/services/dbus.scm index ef6b82c572..52cb1e3a51 100644 --- a/gnu/services/dbus.scm +++ b/gnu/services/dbus.scm @@ -53,7 +53,9 @@ (dbus dbus-configuration-dbus ;file-like (default dbus)) (services dbus-configuration-services ;list of - (default '()))) + (default '())) + (verbose? dbus-configuration-verbose? ;boolean + (default #f))) (define (system-service-directory services) "Return the system service directory, containing @code{.service} files for @@ -191,7 +193,7 @@ includes the @code{etc/dbus-1/system.d} directories of each package listed in (define dbus-shepherd-service (match-lambda - (($ dbus) + (($ dbus _ verbose?) (list (shepherd-service (documentation "Run the D-Bus system daemon.") (provision '(dbus-system)) @@ -199,6 +201,12 @@ includes the @code{etc/dbus-1/system.d} directories of each package listed in (start #~(make-forkexec-constructor (list (string-append #$dbus "/bin/dbus-daemon") "--nofork" "--system" "--syslog-only") + #$@(if verbose? + ;; Since the verbose output goes to the console, + ;; not syslog, add a log file to capture it. + '(#:environment-variables '("DBUS_VERBOSE=1") + #:log-file "/var/log/dbus-daemon.log") + '()) #:pid-file "/var/run/dbus/pid")) (stop #~(make-kill-destructor))))))) @@ -234,9 +242,12 @@ includes the @code{etc/dbus-1/system.d} directories of each package listed in bus. It allows programs and daemons to communicate and is also responsible for spawning (@dfn{activating}) D-Bus services on demand."))) -(define* (dbus-service #:key (dbus dbus) (services '())) +(define* (dbus-service #:key (dbus dbus) (services '()) verbose?) "Return a service that runs the \"system bus\", using @var{dbus}, with -support for @var{services}. +support for @var{services}. When @var{verbose?} is true, it causes the +@samp{DBUS_VERBOSE} environment variable to be set to @samp{1}; a +verbose-enabled D-Bus package such as @code{dbus-verbose} should be provided +as @var{dbus} in this scenario. @uref{http://dbus.freedesktop.org/, D-Bus} is an inter-process communication facility. Its system bus is used to allow system services to communicate and @@ -248,7 +259,8 @@ and policy files. For example, to allow avahi-daemon to use the system bus, @var{services} must be equal to @code{(list avahi)}." (service dbus-root-service-type (dbus-configuration (dbus dbus) - (services services)))) + (services services) + (verbose? verbose?)))) (define (wrapped-dbus-service service program variables) "Return a wrapper for @var{service}, a package containing a D-Bus service, -- cgit v1.2.3