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

Bug 758632

Summary: sys-auth/polkit-0.118[elogind]: polkitunixsession-systemd.c:33:10: fatal error: systemd/sd-login.h: No such file or directory
Product: Gentoo Linux Reporter: Andrew Savchenko <bircoph>
Component: Current packagesAssignee: Freedesktop bugs <freedesktop-bugs>
Status: RESOLVED INVALID    
Severity: normal CC: herrtimson, sam
Priority: Normal    
Version: unspecified   
Hardware: All   
OS: Linux   
Whiteboard:
Package list:
Runtime testing required: ---
Attachments: build.log
environment
emerge --info

Description Andrew Savchenko gentoo-dev 2020-12-05 11:31:56 UTC
Created attachment 676777 [details]
build.log

Hi!

polkit fails to build with elogind:

x86_64-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -DPACKAGE_LIBEXEC_DIR=\"/usr/libexec\" -DPACKAGE_SYSCONF_DIR=\"/etc\" -DPACKAGE_DATA_DIR=\"/usr/share\" -DPACKAGE_BIN_DIR=\"/usr/bin\" -DPACKAGE_LOCALSTATE_DIR=\"/var\" -DPACKAGE_LOCALE_DIR=\"/usr/share/locale\" -DPACKAGE_LIB_DIR=\"/usr/lib64\" -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT -D_POLKIT_COMPILATION -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/gio-unix-2.0 -I/usr/lib64/libffi/include -pthread -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/elogind -march=native -O3 -ftree-loop-im -fweb -frename-registers -fomit-frame-pointer -mfpmath=both -pipe -frecord-gcc-switches -c polkitunixsession-systemd.c  -fPIC -DPIC -o .libs/libpolkit_gobject_1_la-polkitunixsession-systemd.o
polkitunixsession-systemd.c:33:10: fatal error: systemd/sd-login.h: No such file or directory
   33 | #include <systemd/sd-login.h>
      |          ^~~~~~~~~~~~~~~~~~~~

See full build.log, environment and emerge --info below.

$ emerge -pvq sys-auth/polkit
[ebuild   R   ] sys-auth/polkit-0.118  USE="elogind gtk nls pam -examples -introspection* -jit -kde (-selinux) -systemd -test"
$ emerge -pvq elogind
[ebuild   R   ] sys-auth/elogind-243.7-r1  USE="acl pam policykit -audit -debug -doc (-selinux)"
Comment 1 Andrew Savchenko gentoo-dev 2020-12-05 11:32:25 UTC
Created attachment 676780 [details]
environment
Comment 2 Andrew Savchenko gentoo-dev 2020-12-05 11:33:04 UTC
Created attachment 676783 [details]
emerge --info
Comment 3 Andrew Savchenko gentoo-dev 2021-02-27 14:47:33 UTC
I've found the reason:

INSTALL_MASK="/*/systemd/"

elogind headers are now symlinks to /usr/include/systemd/ files which were purged by aforementioned install mask.

While this problem is my fault, it also indicates that "small files" policy is defective, because it becomes harder and harder to keep systemd "small files" out of a system. That's why a general mask was used, but such approach is no longer usable.
Comment 4 Mike Gilbert gentoo-dev 2021-02-27 15:35:18 UTC
My advice has always been to ignore the small files: they do no harm, and using INSTALL_MASK without care will cause problems like this one.
Comment 5 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2021-02-27 15:38:12 UTC
(In reply to Mike Gilbert from comment #4)
> My advice has always been to ignore the small files: they do no harm, and
> using INSTALL_MASK without care will cause problems like this one.

Especially given *.unit or whatever else is valid.
Comment 6 Andrew Savchenko gentoo-dev 2021-02-27 19:29:18 UTC
(In reply to Sam James from comment #5)
> (In reply to Mike Gilbert from comment #4)
> > My advice has always been to ignore the small files: they do no harm, and
> > using INSTALL_MASK without care will cause problems like this one.
> 
> Especially given *.unit or whatever else is valid.

Unit-files should not be necessary on non-systemd systems.
Comment 7 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2021-02-27 19:32:51 UTC
(In reply to Andrew Savchenko from comment #6)
> (In reply to Sam James from comment #5)
> > (In reply to Mike Gilbert from comment #4)
> > > My advice has always been to ignore the small files: they do no harm, and
> > > using INSTALL_MASK without care will cause problems like this one.
> > 
> > Especially given *.unit or whatever else is valid.
> 
> Unit-files should not be necessary on non-systemd systems.

They're not. So, add *.unit to your INSTALL_MASK.