Files
finit/test/setup-sysroot.sh
Joachim Wiberg f51aee1ec5 test: keep the replacement libsystemd out of the sysroot
dbus-broker fails, the bus never comes up:

    Service dbus[19] died (exit status: 127), restarting

The sysroot stages dbus-daemon from the host, which links the real
libsystemd, and since v5.0 builds ours by default the install puts a
second libsystemd.so.0 in the sysroot.  It wins the ld.so cache, and
dbus-daemon finds neither sd_journal_stream_fd nor the LIBSYSTEMD_209
symbol versions in it.

Uninstall the library from the sysroot after the install.  The test serv
compiles sd-daemon.c in, so nothing there needs it.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-08-29 14:28:59 +02:00

37 lines
1.2 KiB
Bash
Executable File

#!/bin/sh
set -eu
# shellcheck disable=SC2154
make -C "$top_builddir" DESTDIR="$SYSROOT" install
# The dbus-daemon staged from the host links the real libsystemd, ours
# installs under the same soname and wins the sysroot ld.so cache. The
# test serv links sd-daemon.c directly, so drop the library here.
if [ -d "$top_builddir/libsystemd" ]; then
make -C "$top_builddir/libsystemd" DESTDIR="$SYSROOT" uninstall
fi
mkdir -p "$SYSROOT/sbin/"
cp "$top_builddir/test/src/serv" "$SYSROOT/sbin/"
if [ -x "$top_builddir/test/src/dbus-auth-client" ]; then
cp "$top_builddir/test/src/dbus-auth-client" "$SYSROOT/sbin/"
fi
# shellcheck disable=SC2154
FINITBIN="$(pwd)/$top_builddir/src/finit" DEST="$SYSROOT" make -f "$srcdir/lib/sysroot.mk"
# Drop plugins we don't need in test, only causes confusing FAIL in logs.
for plugin in tty.so urandom.so rtc.so modprobe.so; do
find "$SYSROOT" -name $plugin -delete
done
# Drop system .conf files we don't need in test, same as above
# shellcheck disable=SC2043
for conf in 10-hotplug.conf; do
find "$SYSROOT" -name $conf -delete
done
# Update dynamic linker cache for /usr/local/lib libraries
ldconfig -r "$SYSROOT" || echo "Warning: ldconfig failed with exit code $?"