mirror of
https://github.com/troglobit/finit.git
synced 2026-10-07 08:04:22 +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>
23 lines
947 B
Makefile
23 lines
947 B
Makefile
# libink — brokerless D-Bus library (server + client), born inside Finit
|
|
lib_LTLIBRARIES = libink.la
|
|
libink_la_SOURCES = server.c auth.c connection.c \
|
|
proto.c proto.h \
|
|
marshal.c marshal.h \
|
|
dispatch.c builtin.c \
|
|
match.c \
|
|
path.c \
|
|
client.c io.c \
|
|
internal.h
|
|
|
|
libink_la_LDFLAGS = -version-info 0:0:0
|
|
libink_la_CPPFLAGS = -D_GNU_SOURCE -D_DEFAULT_SOURCE -D_BSD_SOURCE
|
|
libink_la_CFLAGS = -W -Wall -Wextra -Wno-unused-parameter -std=gnu99
|
|
|
|
# pkg-config support
|
|
pkgconfigdir = $(libdir)/pkgconfig
|
|
pkgconfig_DATA = libink.pc
|
|
|
|
# Public headers install to $(includedir)/ink/
|
|
inkdir = $(includedir)/ink
|
|
ink_HEADERS = link.h path.h
|