On systemd, it uses libsystemd but it's already installed in LFS. On
sysv, we use -Dsystemd=false so libsystemd (a.k.a libelogind) not
needed.
But it invokes logind API via D-bus call (in js/ui/endSessionDialog.js),
so logind is a runtime dependency.
I cannot see how g-s-d needs systemd or elogind. The only reference to
systemd from g-s-d is through gnome-desktop (using
sd_pid_get_user_unit), which should be satisified by LFS systemd, and
useless with sysv.
It uses logind API in libsystemd.so/libelogind.so. Not sure if it's
strong enough to be "recommended", we may demote it later.
Q: Why systemd dependency is runtime, but elogind not?
A: LFS systemd provides libsystemd.so, which contains the logind APIs.
But these APIs will fail at runtime because systemd-logind is missing in
LFS, so we need a runtime dependency. LFS sysv does not provide
libsystemd.so, and libsystemd.so is a symlink to libelogind.so which is
a part of elogind, so it's a build time dependency.
xorg-server itself does not need libelogind/libsystemd to invoke the
logind D-Bus API. elogind/systemd-logind works for Xorg server when you
login: once you've logged in on a TTY, pam_systemd or pam_elogind
invokes systemd-logind or elogind to modify the ACL of the device node
of GPU for you:
$ getfacl /dev/dri/card1
getfacl: Removing leading '/' from absolute path names
# file: dev/dri/card1
# owner: root
# group: video
user::rw-
user:xry111:rw-
group::rw-
mask::rw-
other::---
Note that the "user:xry111:rw-" line allows the user logged in (in this
example, xry111, my user account) to operate on the GPU. If
systemd-logind or elogind is not installed, there will be no such a line
and you need to setuid bit for Xorg executable, which is not
recommended.
FWIW logind is smart enough not to add the ACL entry if you've logged in
via SSH.
You may need to logout and login again to use startx if you've installed
pam_{elogind,systemd} and Xorg server & xinit in a continous login
session, but this is already mentioned on xorg-config.xml.
You may ask why Xorg server links to libsystemd or libelogind. It uses
sd_notify and sd_listen_fds API so the Xorg server can function as a
socket-activated systemd service. This is useless in SysV: elogind is
a logind, not a service manager. In Systemd the libsystemd.so installed
in LFS should be enough, and we've never provided instructions to run
Xorg server in BLFS as a systemd service.
Reported-by: Rainer Fiebig <jrf@mailbox.org>
Well, now we are rotating changelog after each release, so why keeping
those old changelogs here?
If you need some historical reference, you can get them back from
version control anyway.
- dbus is not needed for building (and strictly speaking, it is
not needed for running, but strongly recommended)
- polkit was said to be runtime but role="runtime" was missing
- only valgrind is needed for tests
- there is no trace of gobject-introspection in the deps.