From c614159fbc539c8b1f556fe9ced2d13963b6d6f9 Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Tue, 7 Dec 2021 22:48:39 -0500 Subject: [PATCH 2/5] 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 | 20 +++++++++++++++----- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 58625666c1..4b1297e5de 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -20280,9 +20280,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 85a4c3ec9a..da167f2e36 100644 --- a/gnu/services/dbus.scm +++ b/gnu/services/dbus.scm @@ -53,7 +53,9 @@ (define-record-type* (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 @@ -187,7 +189,7 @@ (define (dbus-activation config) (define dbus-shepherd-service (match-lambda - (($ dbus) + (($ dbus _ verbose?) (list (shepherd-service (documentation "Run the D-Bus system daemon.") (provision '(dbus-system)) @@ -195,6 +197,10 @@ (define dbus-shepherd-service (start #~(make-forkexec-constructor (list (string-append #$dbus "/bin/dbus-daemon") "--nofork" "--system" "--syslog-only") + #$@(if verbose? + '(#:environment-variables '("DBUS_VERBOSE=1") + #:log-file "/var/log/dbus-daemon.log") + '()) #:pid-file "/var/run/dbus/pid")) (stop #~(make-kill-destructor))))))) @@ -230,9 +236,12 @@ (define dbus-root-service-type 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 @@ -244,7 +253,8 @@ (define* (dbus-service #:key (dbus dbus) (services '())) @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, -- 2.34.0