mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2025-01-12 22:26:40 -05:00
gnu: dbus-service: Make the session bus available under /run/dbus.
According to https://gitlab.gnome.org/GNOME/glib/-/merge_requests/3101, glib now searches for the session bus socket in runstatedir. The dbus service must thus have its socket in /run/dbus. For interoperability with the dbus standard, /run/dbus is also symlinked to /var/run/dbus. * gnu/services/dbus.scm (dbus-activation): Symlink /run/dbus to /var/run/dbus. (%dbus-accounts): Run dbus in /run/dbus. (dbus-root-service-type): Save the pid file in /run/dbus. Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
This commit is contained in:
parent
24fee2615c
commit
6c2a6033b4
1 changed files with 34 additions and 3 deletions
|
@ -163,7 +163,7 @@ (define %dbus-accounts
|
|||
(group "messagebus")
|
||||
(system? #t)
|
||||
(comment "D-Bus system bus user")
|
||||
(home-directory "/var/run/dbus")
|
||||
(home-directory "/run/dbus")
|
||||
(shell (file-append shadow "/sbin/nologin")))))
|
||||
|
||||
(define dbus-setuid-programs
|
||||
|
@ -186,7 +186,38 @@ (define (dbus-activation config)
|
|||
(let ((user (getpwnam "messagebus")))
|
||||
;; This directory contains the daemon's socket so it must be
|
||||
;; world-readable.
|
||||
(mkdir-p/perms "/var/run/dbus" user #o755))
|
||||
(mkdir-p/perms "/run/dbus" user #o755))
|
||||
|
||||
(catch 'system-error
|
||||
(lambda ()
|
||||
(symlink "/run/dbus" "/var/run/dbus"))
|
||||
(lambda args
|
||||
(let ((errno (system-error-errno args)))
|
||||
(cond
|
||||
((= errno EEXIST)
|
||||
(let ((existing-name
|
||||
(false-if-exception
|
||||
(readlink "/var/run/dbus"))))
|
||||
(unless (equal? existing-name "/run/dbus")
|
||||
;; Move the content of /var/run/dbus to /run/dbus, and
|
||||
;; retry.
|
||||
(let ((dir (opendir "/var/run/dbus")))
|
||||
(let loop ((next (readdir dir)))
|
||||
(cond
|
||||
((eof-object? next) (closedir dir))
|
||||
((member next '("." "..")) (loop (readdir dir)))
|
||||
(else
|
||||
(begin
|
||||
(rename-file (string-append "/var/run/dbus/" next)
|
||||
(string-append "/run/dbus/" next))
|
||||
(loop (readdir dir))))))))
|
||||
(rmdir "/var/run/dbus")
|
||||
(symlink "/run/dbus" "/var/run/dbus")))
|
||||
(else
|
||||
(format (current-error-port)
|
||||
"Failed to symlink /run/dbus to /var/run/dbus: ~s~%"
|
||||
(strerror errno))
|
||||
(error "cannot create /var/run/dbus"))))))
|
||||
|
||||
(unless (file-exists? "/etc/machine-id")
|
||||
(format #t "creating /etc/machine-id...~%")
|
||||
|
@ -210,7 +241,7 @@ (define dbus-shepherd-service
|
|||
'(#:environment-variables '("DBUS_VERBOSE=1")
|
||||
#:log-file "/var/log/dbus-daemon.log")
|
||||
'())
|
||||
#:pid-file "/var/run/dbus/pid"))
|
||||
#:pid-file "/run/dbus/pid"))
|
||||
(stop #~(make-kill-destructor)))))))
|
||||
|
||||
(define dbus-root-service-type
|
||||
|
|
Loading…
Reference in a new issue