On 2026-07-20 15:24, Luca Boccassi wrote:
The issue with that is it's not a static choice, some distros like
Debian support dynamically switching at runtime an existing
installation between systemd and anything else.
I don't think we designed Gnulib or coreutils with that possibility in
mind. Not surprisingly.
Please correct me if I'm wrong in the following analysis.
I assume that by "dynamically" you mean "the sysadmin can switch the
regime, effectively at reboot time, but cannot switch the regime again
until the next reboot", not "anybody can switch whenever they like". I
also assume that regardless of regime, old logins are logged to
/var/log/wtmp.db in a consistent format, so that programs like 'last'
work even for old logins done under a different regime. So under this
approach, programs like Coreutils 'who' have two problems:
1. Figuring out who's logged in right now, since the systemd and
non-systemd camps disagree about how to make this info available.
Currently Gnulib readutmp supports only the systemd regime on Debian.
2. Accessing /var/log/wtmp.db via libwtmpdb, a library I never heard
about until looking into this just now, and something that Gnulib
readutmp I suppose should link to, if its callers want historical data.
Gnulib readutmp doesn't do that now, which means coreutils 'who' doesn't
work to access old data on Debian, regardless of whether the sysadmin
has chosen systemd.
From my point of view both of these issues are more serious than the
relatively minor packaging issue. Is there a good way to address the two
issues? Or have I misdiagnosed this?
But aside from that, how can something that is required be optional?
Obviously Debian can't decide that a dependency is both required and
optional. It must decide one way or another (or it can decide that the
dependency is entirely unnecessary). But that's Debian's job, not
coreutils's.
Saying it's required but it can be
disabled is contradictory.
Absolutely! But the idea was that the decision was up to the distro
maintainers. If Debian configures coreutils with --enable-systemd it has
decided to making libsystemd a dependency for Debian coreutils;
otherwise, not. Whether the depenendency is required or recommended or
suggested is up to Debian.
As I understand things, Bruno suggested that Coreutils do nothing about
this issue, and simply document it. Although that's of course the
least-work option for coreutils maintainers, I'm thinking that maybe it
would be better if coreutils uses something along the lines of the
sd-dlopen module being drafted, so that Debian can more easily make the
dependency recommended (or suggested) according to Debian's rules.
The proposed changes to Gnulib's selinux and readutmp are more
problematic. Some Coreutils programs (e.g., chcon) should stay the way
they are, because they almost always need libselinux. Other programs
(e.g., mkdir) would benefit from the proposed changes, as they rarely
need libselinux. The preference there is per-app, not per-package, as
Coreutils has both kinds of apps. But the proposed changes force all the
apps into the mkdir-like camp, which is overkill.