commit:     be651952c529c93e7e06303e160de69ef69ee2ea
Author:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
AuthorDate: Sat Mar 14 02:49:16 2026 +0000
Commit:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
CommitDate: Sat Mar 14 03:06:46 2026 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=be651952

sys-apps/systemd: optimize multilib build

For non-native ABIs:

- Disable auto-features
- Build only libsystemd, libudev, nss, pam.

Signed-off-by: Mike Gilbert <floppym <AT> gentoo.org>

 sys-apps/systemd/systemd-9999.ebuild | 190 +++++++++++++++++++----------------
 1 file changed, 104 insertions(+), 86 deletions(-)

diff --git a/sys-apps/systemd/systemd-9999.ebuild 
b/sys-apps/systemd/systemd-9999.ebuild
index 40dfa8a16751..507e07c0ac87 100644
--- a/sys-apps/systemd/systemd-9999.ebuild
+++ b/sys-apps/systemd/systemd-9999.ebuild
@@ -55,8 +55,7 @@ RESTRICT="!test? ( test )"
 MINKV="4.15"
 
 COMMON_DEPEND="
-       >=sys-apps/util-linux-2.32:0=[${MULTILIB_USEDEP}]
-       sys-libs/libcap:0=[${MULTILIB_USEDEP}]
+       >=sys-apps/util-linux-2.32:0=
        virtual/libcrypt:=[${MULTILIB_USEDEP}]
        acl? ( sys-apps/acl:0= )
        apparmor? ( >=sys-libs/libapparmor-2.13:0= )
@@ -68,7 +67,7 @@ COMMON_DEPEND="
        fido2? (
                dev-libs/libfido2:0=
        )
-       gcrypt? ( >=dev-libs/libgcrypt-1.4.5:0=[${MULTILIB_USEDEP}] )
+       gcrypt? ( >=dev-libs/libgcrypt-1.4.5:0= )
        gnutls? ( >=net-libs/gnutls-3.6.0:0= )
        http? ( >=net-libs/libmicrohttpd-0.9.33:0=[epoll(+)] )
        idn? ( net-dns/libidn2:= )
@@ -77,8 +76,8 @@ COMMON_DEPEND="
                virtual/zlib:=
        )
        kmod? ( >=sys-apps/kmod-15:0= )
-       lz4? ( >=app-arch/lz4-0_p131:0=[${MULTILIB_USEDEP}] )
-       lzma? ( >=app-arch/xz-utils-5.0.5-r1:0=[${MULTILIB_USEDEP}] )
+       lz4? ( >=app-arch/lz4-0_p131:0= )
+       lzma? ( >=app-arch/xz-utils-5.0.5-r1:0= )
        iptables? ( net-firewall/iptables:0= )
        openssl? ( >=dev-libs/openssl-1.1.0:0= )
        pam? ( sys-libs/pam:=[${MULTILIB_USEDEP}] )
@@ -91,7 +90,7 @@ COMMON_DEPEND="
        selinux? ( >=sys-libs/libselinux-2.1.9:0= )
        tpm? ( app-crypt/tpm2-tss:0= )
        xkb? ( >=x11-libs/libxkbcommon-0.4.1:0= )
-       zstd? ( >=app-arch/zstd-1.4.0:0=[${MULTILIB_USEDEP}] )
+       zstd? ( >=app-arch/zstd-1.4.0:0= )
 "
 
 # Newer linux-headers needed by ia64, bug #480218
@@ -274,88 +273,25 @@ multilib_src_configure() {
        local myconf=(
                --localstatedir="${EPREFIX}/var"
                -Ddocdir="share/doc/${PF}"
-               # default is developer, bug 918671
-               -Dmode=release
+               -Dmode=release # default is developer, bug 918671
+               -Dlibc=$(usex elibc_musl musl glibc)
                -Dsupport-url="${BRANDING_OS_SUPPORT_URL}"
                -Dpamlibdir="$(getpam_mod_dir)"
-               -Dlibc=$(usex elibc_musl musl glibc)
-               # avoid bash-completion dep
                -Dbashcompletiondir="$(get_bashcompdir)"
                -Dzshcompletiondir="$(get_zshcompdir)"
                -Dsplit-bin=false
-               # Disable compatibility with sysvinit
-               -Dsysvinit-path=
-               -Dsysvrcnd-path=
-               # no deps
-               -Dima=true
-               # Match /etc/shells, bug 919749
-               -Ddebug-shell="${EPREFIX}/bin/sh"
+               -Dima=true # no deps
+               -Ddebug-shell="${EPREFIX}/bin/sh" # Match /etc/shells, bug 
919749
                -Ddefault-user-shell="${EPREFIX}/bin/bash"
-               # Optional components/dependencies
-               $(meson_native_use_feature acl)
-               $(meson_native_use_feature apparmor)
-               $(meson_native_use_feature audit)
-               $(meson_native_use_feature boot bootloader)
-               $(meson_native_use_feature bpf bpf-framework)
                -Dbpf-compiler=gcc
-               $(meson_native_use_feature cryptsetup libcryptsetup)
-               $(meson_native_use_feature curl libcurl)
-               $(meson_native_use_bool dns-over-tls dns-over-tls)
-               $(meson_native_use_feature elfutils)
-               $(meson_native_use_feature fido2 libfido2)
-               $(meson_feature gcrypt)
-               $(meson_native_use_feature gnutls)
-               $(meson_native_use_feature homed)
-               $(meson_native_use_feature http microhttpd)
-               $(meson_native_use_bool idn)
-               $(meson_native_use_feature importd)
-               $(meson_native_use_feature importd bzip2)
-               $(meson_native_use_feature importd zlib)
-               $(meson_native_use_bool kernel-install)
-               $(meson_native_use_feature kmod)
-               $(meson_feature lz4)
-               $(meson_feature lzma xz)
-               $(meson_feature zstd)
-               $(meson_native_use_feature iptables libiptc)
-               $(meson_native_use_feature openssl)
-               $(meson_feature pam)
-               $(meson_native_use_feature passwdqc)
-               $(meson_native_use_feature pkcs11 p11kit)
-               $(meson_native_use_feature pcre pcre2)
-               $(meson_native_use_feature policykit polkit)
-               $(meson_native_use_feature pwquality)
-               $(meson_native_use_feature qrcode qrencode)
-               $(meson_native_use_feature seccomp)
-               $(meson_native_use_feature selinux)
-               $(meson_native_use_feature tpm tpm2)
-               $(meson_native_use_feature test dbus)
-               $(meson_native_use_feature ukify)
-               $(meson_native_use_feature xkb xkbcommon)
                -Dntp-servers="0.gentoo.pool.ntp.org 1.gentoo.pool.ntp.org 
2.gentoo.pool.ntp.org 3.gentoo.pool.ntp.org"
                # Breaks screen, tmux, etc.
-               -Ddefault-kill-user-processes=false
+               #-Ddefault-kill-user-processes=false
                -Dcreate-log-dirs=false
-
-               # multilib options
-               $(meson_native_true backlight)
-               $(meson_native_true binfmt)
-               $(meson_native_true coredump)
-               $(meson_native_true environment-d)
-               $(meson_native_true firstboot)
-               $(meson_native_true hibernate)
-               $(meson_native_true hostnamed)
-               $(meson_native_true ldconfig)
-               $(meson_native_true localed)
-               $(meson_native_enabled man)
-               $(meson_native_true networkd)
-               $(meson_native_true quotacheck)
-               $(meson_native_true randomseed)
-               $(meson_native_true rfkill)
-               $(meson_native_true sysusers)
-               $(meson_native_true timedated)
-               $(meson_native_true timesyncd)
-               $(meson_native_true tmpfiles)
-               $(meson_native_true vconsole)
+               -Dlibcrypt=enabled
+               $(meson_feature !elibc_musl nss-mymachines)
+               $(meson_feature !elibc_musl nss-resolve)
+               $(meson_feature pam)
        )
 
        # workaround for bug 969103
@@ -365,18 +301,89 @@ multilib_src_configure() {
                myconf+=( $(meson_use test tests) )
        fi
 
-       case $(tc-arch) in
-               amd64|arm|arm64|loong|ppc|ppc64|riscv|s390|x86)
-                       # src/vmspawn/vmspawn-util.h: QEMU_MACHINE_TYPE
-                       myconf+=( $(meson_native_enabled vmspawn) ) ;;
-               *)
-                       myconf+=( -Dvmspawn=disabled ) ;;
-       esac
+       if multilib_is_native_abi; then
+               myconf+=(
+                       --auto-features=enabled
+                       -Dman=enabled
+                       -Dxenctrl=disabled
+
+                       # Optional components/dependencies
+                       $(meson_feature acl)
+                       $(meson_feature apparmor)
+                       $(meson_feature audit)
+                       $(meson_feature boot bootloader)
+                       $(meson_feature bpf bpf-framework)
+                       $(meson_feature cryptsetup libcryptsetup)
+                       $(meson_feature curl libcurl)
+                       $(meson_use dns-over-tls dns-over-tls)
+                       $(meson_feature elfutils)
+                       $(meson_feature fido2 libfido2)
+                       $(meson_feature gcrypt)
+                       $(meson_feature gnutls)
+                       $(meson_feature http microhttpd)
+                       $(meson_feature homed)
+                       $(meson_use idn)
+                       $(meson_feature importd)
+                       $(meson_feature importd bzip2)
+                       $(meson_feature importd zlib)
+                       $(meson_use kernel-install)
+                       $(meson_feature kmod)
+                       $(meson_feature lz4)
+                       $(meson_feature lzma xz)
+                       $(meson_feature zstd)
+                       $(meson_feature iptables libiptc)
+                       $(meson_feature openssl)
+                       $(meson_feature passwdqc)
+                       $(meson_feature pkcs11 p11kit)
+                       $(meson_feature pcre pcre2)
+                       $(meson_feature policykit polkit)
+                       $(meson_feature pwquality)
+                       $(meson_feature qrcode qrencode)
+                       $(meson_feature seccomp)
+                       $(meson_feature selinux)
+                       $(meson_feature tpm tpm2)
+                       $(meson_feature test dbus)
+                       $(meson_feature ukify)
+                       $(meson_feature xkb xkbcommon)
+               )
+
+               case $(tc-arch) in
+                       amd64|arm|arm64|loong|ppc|ppc64|riscv|s390|x86)
+                               # src/vmspawn/vmspawn-util.h: QEMU_MACHINE_TYPE
+                               myconf+=( $(meson_native_enabled vmspawn) ) ;;
+                       *)
+                               myconf+=( -Dvmspawn=disabled ) ;;
+               esac
+       else
+               myconf+=(
+                       --auto-features=disabled
+               )
+       fi
 
        meson_src_configure "${myconf[@]}"
 }
 
+multilib_src_compile() {
+       local args=()
+       if ! multilib_is_native_abi; then
+               args+=(
+                       devel libsystemd libudev
+                       $(usex elibc_musl '' nss)
+                       $(usev pam)
+               )
+       fi
+       meson_src_compile "${args[@]}"
+}
+
 multilib_src_test() {
+       local args=( --timeout-multiplier=10 )
+       if ! multilib_is_native_abi; then
+               args+=(
+                       --suite libsystemd --suite libudev
+                       $(usex elibc_musl '' '--suite nss')
+                       $(usex pam '--suite pam' '')
+               )
+       fi
        (
                unset DBUS_SESSION_BUS_ADDRESS XDG_RUNTIME_DIR
                export COLUMNS=80
@@ -384,10 +391,21 @@ multilib_src_test() {
                addpredict /proc
                addpredict /run
                addpredict /sys/fs/cgroup
-               meson_src_test --timeout-multiplier=10
+               meson_src_test "${args[@]}"
        ) || die
 }
 
+multilib_src_install() {
+       local args=()
+       if ! multilib_is_native_abi; then
+               local tags=devel,libsystemd,libudev
+               use !elibc_musl && tags+=,nss
+               use pam && tags+=,pam
+               args+=( --tags "${tags}" )
+       fi
+       meson_src_install "${args[@]}"
+}
+
 multilib_src_install_all() {
        einstalldocs
        dodoc "${FILESDIR}"/nsswitch.conf

Reply via email to