mirror of
https://github.com/troglobit/finit.git
synced 2026-10-01 05:22:48 +07:00
Finit had no way to answer the question every service manager gets asked: what is running, and change it. D-Bus is how the rest of userspace asks, but linking libdbus, sd-bus or GIO into PID 1 buys a dependency, an allocator and a main loop we do not control. So libink: the wire format, an object tree, and a bus of Finit's own at /run/finit/bus, gated like INIT_SOCKET. It speaks the standard org.freedesktop.DBus, .Peer, .Introspectable interfaces, and Finit's own Manager1, Service1 and Cond1 on top. Methods that change something are marked privileged and answered only for a caller the kernel vouched for, via SO_PEERCRED. Server and client both, since initctl is the first thing that needs to talk to it, and its Start/Stop/Restart/Reload now go over the bus rather than the legacy socket. Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
55 lines
2.0 KiB
Bash
Executable File
55 lines
2.0 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
set -eu
|
|
|
|
echo "=== Finit Test Sysroot Setup ==="
|
|
echo "Date: $(date)"
|
|
echo "SYSROOT: $SYSROOT"
|
|
echo "top_builddir: $top_builddir"
|
|
echo "srcdir: $srcdir"
|
|
echo "================================"
|
|
echo
|
|
|
|
# shellcheck disable=SC2154
|
|
make -C "$top_builddir" DESTDIR="$SYSROOT" install
|
|
|
|
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
|
|
# Prefer the real ELF in .libs/ over the libtool wrapper script at
|
|
# $top_builddir/src/finit. Libtool generates a shell wrapper when
|
|
# the binary depends on an in-tree convenience library (e.g. libink),
|
|
# and `ldd <wrapper>` returns "not a dynamic executable", which
|
|
# silently makes sysroot.mk copy zero host libs into the sysroot.
|
|
if [ -f "$top_builddir/src/.libs/finit" ]; then
|
|
finitbin_for_ldd="$(pwd)/$top_builddir/src/.libs/finit"
|
|
else
|
|
finitbin_for_ldd="$(pwd)/$top_builddir/src/finit"
|
|
fi
|
|
FINITBIN="$finitbin_for_ldd" 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
|
|
echo "Running ldconfig in sysroot: $SYSROOT"
|
|
echo "Contents of $SYSROOT/etc/ld.so.conf:"
|
|
cat "$SYSROOT/etc/ld.so.conf" || echo "Warning: ld.so.conf not found"
|
|
echo "Libraries in $SYSROOT/usr/local/lib:"
|
|
ls -la "$SYSROOT/usr/local/lib/" 2>/dev/null || echo "Warning: /usr/local/lib not found in sysroot"
|
|
ldconfig -v -r "$SYSROOT" || echo "Warning: ldconfig failed with exit code $?"
|
|
echo "Verifying ldconfig cache was created:"
|
|
ls -la "$SYSROOT/etc/ld.so.cache" || echo "Warning: ld.so.cache not created"
|