mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2025-01-13 06:36:37 -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")
|
(group "messagebus")
|
||||||
(system? #t)
|
(system? #t)
|
||||||
(comment "D-Bus system bus user")
|
(comment "D-Bus system bus user")
|
||||||
(home-directory "/var/run/dbus")
|
(home-directory "/run/dbus")
|
||||||
(shell (file-append shadow "/sbin/nologin")))))
|
(shell (file-append shadow "/sbin/nologin")))))
|
||||||
|
|
||||||
(define dbus-setuid-programs
|
(define dbus-setuid-programs
|
||||||
|
@ -186,7 +186,38 @@ (define (dbus-activation config)
|
||||||
(let ((user (getpwnam "messagebus")))
|
(let ((user (getpwnam "messagebus")))
|
||||||
;; This directory contains the daemon's socket so it must be
|
;; This directory contains the daemon's socket so it must be
|
||||||
;; world-readable.
|
;; 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")
|
(unless (file-exists? "/etc/machine-id")
|
||||||
(format #t "creating /etc/machine-id...~%")
|
(format #t "creating /etc/machine-id...~%")
|
||||||
|
@ -210,7 +241,7 @@ (define dbus-shepherd-service
|
||||||
'(#:environment-variables '("DBUS_VERBOSE=1")
|
'(#:environment-variables '("DBUS_VERBOSE=1")
|
||||||
#:log-file "/var/log/dbus-daemon.log")
|
#:log-file "/var/log/dbus-daemon.log")
|
||||||
'())
|
'())
|
||||||
#:pid-file "/var/run/dbus/pid"))
|
#:pid-file "/run/dbus/pid"))
|
||||||
(stop #~(make-kill-destructor)))))))
|
(stop #~(make-kill-destructor)))))))
|
||||||
|
|
||||||
(define dbus-root-service-type
|
(define dbus-root-service-type
|
||||||
|
|
Loading…
Reference in a new issue