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