Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 878941

Summary: sys-auth/elogind: make daemon installation optional (was: sys-auth/seatd[elogind] should not install the entire elogind package)
Product: Gentoo Linux Reporter: Cavernosa <cvrns>
Component: Current packagesAssignee: Andreas Sturmlechner <asturm>
Status: UNCONFIRMED ---    
Severity: normal CC: arthurzam, contact, gentoo, jstein, kensington, proxy-maint, slashbeast
Priority: Normal    
Version: unspecified   
Hardware: All   
OS: Linux   
Whiteboard:
Package list:
Runtime testing required: ---

Description Cavernosa 2022-11-01 02:33:05 UTC
sys-auth/seatd with USE="elogind" should only require the elogind libs, not the entire elogind.
i.e. Artix Linux has a separate package that provides these libs, named 'libelogind'. Should probably implement something like that in Gentoo.

Also, the full sys-auth/elogind package has a dbus initscript which causes incompatibility with seatd.
Comment 1 Matt Turner gentoo-dev 2022-11-01 18:43:09 UTC
(In reply to Cavernosa from comment #0)
> sys-auth/seatd with USE="elogind" should only require the elogind libs, not
> the entire elogind.

Why would this be beneficial?
Comment 2 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2022-11-01 23:33:31 UTC
I doubt that more divergence with upstream logind is worthwhile.

What's the issue with the init script?
Comment 3 Cavernosa 2022-11-02 05:18:19 UTC
(In reply to Sam James from comment #2) 
> What's the issue with the init script?
There is an initscript in /usr/share/dbus-1/system-services/ which starts elogind-daemon when something needs it, ignoring that seatd is already running. Which makes seatd pretty useless at that point.

Actually I deleted that dbus initscript manually and elogind-daemon no longer starts automatically but seatd still doesn't work with libelogind, can't open X.org... but with elogind-daemon it works. :/ 

(In reply to Matt Turner from comment #1)
> Why would this be beneficial?
I guess it would be easier to use seatd with libelogind instead of elogind-daemon. Because right now I have to manually patch elogind-daemon to make seatd with libelogind run without elogind-daemon just running on top of it.
Comment 4 Piotr Karbowski (RETIRED) gentoo-dev 2022-11-02 11:31:43 UTC
(In reply to Cavernosa from comment #3)
> Actually I deleted that dbus initscript manually and elogind-daemon no
> longer starts automatically but seatd still doesn't work with libelogind,
> can't open X.org... but with elogind-daemon it works. :/ 

If you removing the dbus service does not fix your issue, I doubt that ebuild does not installing it in first place would yield any different results too.

As far as Xorg is concerned, what elogind does is assigning you permissions in /dev to input devices and gpu and tty, as well as some other external devices like disk drives, if such exist. The seatd does not seems to do either, so you'd need to grant the permissions yourself I suspect.

I'd be okay with adding 'minimal' IUSE flag that would install only library and not daemon and dbus service, but you'd need to help get this operational with seatd to make it worthwhile. Then seatd users can setup this flag on elogind and do not ran into clash of logind interface.
Comment 5 Cavernosa 2022-11-02 17:00:19 UTC
(In reply to Piotr Karbowski from comment #4)
> (In reply to Cavernosa from comment #3)
> > Actually I deleted that dbus initscript manually and elogind-daemon no
> > longer starts automatically but seatd still doesn't work with libelogind,
> > can't open X.org... but with elogind-daemon it works. :/ 
> 
> If you removing the dbus service does not fix your issue, I doubt that
> ebuild does not installing it in first place would yield any different
> results too.

Yeah, there's 2 issues. elogind-daemon spawning on top of seatd, and seatd not working.

> As far as Xorg is concerned, what elogind does is assigning you permissions
> in /dev to input devices and gpu and tty, as well as some other external
> devices like disk drives, if such exist. The seatd does not seems to do
> either, so you'd need to grant the permissions yourself I suspect.

You mean the groups right? I added myself to video and input but it still doesn't work, it gives fatal error "Cannot open /dev/tty0 (Permission denied)"
I tried to add myself to tty group but then it gives a different error "Cannot open virtual console 7 (Permission denied)"
Weird because my Artix system works flawlessly with the same configuration.

> I'd be okay with adding 'minimal' IUSE flag that would install only library and not
> daemon and dbus service, but you'd need to help get this operational with seatd to make 
> it worthwhile. Then seatd users can setup this flag on elogind and do not ran into clash 
> of logind interface.
I'm fine with that.
Comment 6 Piotr Karbowski (RETIRED) gentoo-dev 2022-11-02 17:46:38 UTC
Historically Xorg running as root were opening /dev/tty7 and above and starting X there, with root-less X we use the login tty, and elogind or systemd-logind grants the ownership of $TTY. This is via the PAM integration with elogind via sys-auth/pambase[elogind]. For more information see https://wiki.gentoo.org/wiki/Non_root_Xorg

I think you should resolve your seatd-rootless-X in separated bug, and then poke this one once you get it figured out, if you can get it working, we can then get minimal IUSE added here, otherwise I do not consider it to be elogind problem if seatd do not work with its interfaces, since the actual elogind works flawlessly.