#installkernel +ukify is pulling in systemd on an OpenRC profile

1 messages · Page 1 of 1 (latest)

cedar ruin
#

My computer is running an OpenRC profile with -systemd and I've been using a unified kernel image built with uGRD and ukify via installkernel and gentoo-kernel. On syncing today and running a world update I'm being given an error that installkernel is pulling in systemd and everything fails due to use flags not being set. Here's the error:

> sudo emerge -auDNv --with-bdeps=y @world

These are the packages that would be merged, in order:

Calculating dependencies... done!
Dependency resolution took 36.56 s (backtrack: 0/20).


emerge: there are no ebuilds built with USE flags to satisfy ">=sys-apps/systemd-256[boot(-),ukify(-)]".
!!! One of the following packages is required to complete your request:
- sys-apps/systemd-257.9::gentoo (Change USE: +boot +ukify)
(dependency required by "sys-kernel/installkernel-64::gentoo[ukify]" [ebuild])
(dependency required by "sys-kernel/gentoo-kernel-6.12.47::gentoo[initramfs]" [installed])
(dependency required by "@selected" [set])
(dependency required by "@world" [argument])

Previously systemd-utils was being pulled in for ukify support, have things changed in some way that makes this configuration invalid?

regal venture
#

Seems odd, I have a similar setup, I'll run an update and see what's what

#

I can't replicate this. Can we see your world file (/var/lib/portage/world) and emerge --info and your make.conf?

soft nimbus
#

ukify is basically a systemd tool

#

so it won't work with -systemd everywhere

cedar ruin
#

I realize it's a systemd tool but it's provided by systemd-utils, so systemd shouldn't be getting emerged. All it's doing is building the UKI. Unfortunately it seems to be the only game in town other than dracut and dracut is broken when it comes to yubikey/gpg and luks, hence ugrd and ukify.

My world file: https://bpa.st/ENNQ
emerge --info: https://bpa.st/FHCQ
make.conf: https://bpa.st/GQ7A

soft nimbus
#

i think even dracut needs the systemd boot stuff for uki

cedar ruin
#

It doesn't need ukify, though, as far as I understand. Neither should need systemd, only systemd-utils. I chose OpenRC to not have systemd on my machine. I do not want systemd as my init system or any other part of its opinionated services that I can avoid. Installing the systemd package is a no-go.

lucid mason
#

Kinda corny but why not boot without initramfs

cedar ruin
#

Encrypted root, no boot

lucid mason
#

Ah makes sense

cedar ruin
#

Ok, the issue appears to be that that installkernel-64 has been updated to depend on a specific version of systemd or systemd-utils when the ukify USE flag is on.
From installkernel-63.ebuild:

    ukify? (
        || (
            sys-apps/systemd[boot(-),ukify(-)]
            sys-apps/systemd-utils[boot(-),ukify(-)]
        )
    )

From installkernel-64.ebuild:

    ukify? (
        || (
            >=sys-apps/systemd-256[boot(-),ukify(-)]
            >=sys-apps/systemd-utils-256[boot(-),ukify(-)]
        )
    )

But systemd-utils-256.x are all masked ~amd64. And instead of suggesting unmasking the new systemd-utils, portage suggested emerging a new package, systemd, with updated USE flags, which would ultimately break my system.

#

Adding an accepted keyword for a version of systemd-utils-256 fixed the issue for me.

julia@pinkmint ~> cat /etc/portage/package.accept_keywords/uki
=sys-apps/systemd-utils-256.17 ~amd64
#

Perhaps the OpenRC profiles should be masking the sys-apps/systemd package so that it is less likely to be suggested by portage as a solution. Or portage shouldn't suggest installing a new alternative package as a dependency when there is an update available for the other already installed dependency which simply requires, for instance, unmasking. Ultimately, likely the systemd-utils packages should be unmasked at the same time as the systemd versions.

#

For now I've also added an entry masking systemd to try to avoid this:

pinkmint /etc/portage/package.mask # cat systemd 
sys-apps/systemd
soft nimbus
#

you could also just not use a uki

#

but i think you need ukify if you want a uki but aren't using dracut