[packages/dinit] initial
mis
mis at pld-linux.org
Wed Oct 7 14:07:51 CEST 2026
commit dba96659e59594a0bb3ce04d0961aa925d188c53
Author: mis <mis at pld-linux.org>
Date: Wed Oct 7 14:00:53 2026 +0200
initial
dinit.boot | 3 ++
dinit.init | 96 +++++++++++++++++++++++++++++++++++++++++
dinit.spec | 132 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
dinit.sysconfig | 9 ++++
4 files changed, 240 insertions(+)
---
diff --git a/dinit.spec b/dinit.spec
new file mode 100644
index 0000000..e964f8f
--- /dev/null
+++ b/dinit.spec
@@ -0,0 +1,132 @@
+#
+# Conditional build:
+%bcond_without tests # don't run unit tests
+%bcond_without cgroups # cgroup support (service process tracking, resource limits)
+%bcond_with shutdown # build shutdown/halt/reboot/poweroff/soft-reboot utilities
+
+Summary: Service manager and init system
+Name: dinit
+Version: 0.22.1
+Release: 0.3
+License: Apache v2.0
+Group: System/Base
+Source0: https://github.com/davmac314/dinit/releases/download/v%{version}/%{name}-%{version}.tar.xz
+# Source0-md5: da50530d41098918f763af7e20357644
+Source1: %{name}.init
+Source2: %{name}.sysconfig
+Source3: %{name}.boot
+URL: https://davmac.org/projects/dinit/
+BuildRequires: gcc-c++
+Requires(post,preun): /sbin/chkconfig
+BuildRequires: libcap-devel
+BuildRequires: make >= 4.0
+BuildRequires: m4
+BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
+
+%description
+Dinit is a service supervisor with dependency support which can also act as
+the system "init" program. It can launch multiple services in parallel, with
+dependency management, monitor processes, and restart them if they die.
+
+%package -n bash-completion-%{name}
+Summary: Bash completion for dinitctl
+Summary(pl.UTF-8): Bashowe dopełnianie parametrów dla dinitctl
+Group: Applications/Shells
+Requires: %{name} = %{version}-%{release}
+Requires: bash-completion >= 2.0
+BuildArch: noarch
+
+%description -n bash-completion-%{name}
+Bash completion for dinitctl.
+
+%description -n bash-completion-%{name} -l pl.UTF-8
+Bashowe dopełnianie parametrów dla dinitctl.
+
+%prep
+%setup -q
+
+%build
+./configure \
+ --prefix=%{_prefix} \
+ --exec-prefix=%{_exec_prefix} \
+ --bindir=%{_bindir} \
+ --sbindir=%{_sbindir} \
+ --mandir=%{_mandir} \
+ --syscontrolsocket=/run/dinitctl \
+ --disable-strip \
+ %{?with_shutdown:--enable-shutdown}%{!?with_shutdown:--disable-shutdown} \
+ %{?with_cgroups:--enable-cgroups}%{!?with_cgroups:--disable-cgroups} \
+ --enable-capabilities \
+ --enable-ioprio \
+ --enable-oom-adj \
+ --enable-initgroups \
+ %{nil}
+
+%{__make}
+
+%install
+rm -rf $RPM_BUILD_ROOT
+%{__make} install \
+ DESTDIR=$RPM_BUILD_ROOT
+
+install -d $RPM_BUILD_ROOT/etc/rc.d/init.d
+install -p %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name}
+install -d $RPM_BUILD_ROOT/etc/dinit.d
+install -p %{SOURCE3} $RPM_BUILD_ROOT/etc/dinit.d/boot
+install -d $RPM_BUILD_ROOT/etc/sysconfig
+install -p %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/%{name}
+
+install -d $RPM_BUILD_ROOT%{bash_compdir}
+install -p contrib/shell-completion/bash/dinitctl $RPM_BUILD_ROOT%{bash_compdir}/dinitctl
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post
+/sbin/chkconfig --add %{name}
+%service %{name} restart
+
+%preun
+if [ "$1" = "0" ]; then
+ %service -q %{name} stop
+ /sbin/chkconfig --del %{name}
+fi
+
+%if %{with tests}
+%check
+%{__make} check
+%endif
+
+%files
+%defattr(644,root,root,755)
+%doc CONTRIBUTORS NEWS README.md TODO
+%license LICENSE
+%attr(755,root,root) %{_bindir}/dinit
+%attr(755,root,root) %{_bindir}/dinit-check
+%attr(755,root,root) %{_bindir}/dinit-monitor
+%attr(755,root,root) %{_bindir}/dinitctl
+%dir /etc/dinit.d
+%config(noreplace) /etc/dinit.d/boot
+%attr(754,root,root) /etc/rc.d/init.d/%{name}
+%config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/%{name}
+%{_mandir}/man5/dinit-service.5*
+
+%files -n bash-completion-%{name}
+%defattr(644,root,root,755)
+%{bash_compdir}/dinitctl
+%{_mandir}/man8/dinit.8*
+%{_mandir}/man8/dinit-check.8*
+%{_mandir}/man8/dinit-monitor.8*
+%{_mandir}/man8/dinitctl.8*
+%if %{with shutdown}
+%attr(755,root,root) %{_sbindir}/shutdown
+%{_sbindir}/halt
+%{_sbindir}/poweroff
+%{_sbindir}/reboot
+%{_sbindir}/soft-reboot
+%{_mandir}/man8/shutdown.8*
+%{_mandir}/man8/halt.8*
+%{_mandir}/man8/poweroff.8*
+%{_mandir}/man8/reboot.8*
+%{_mandir}/man8/soft-reboot.8*
+%endif
diff --git a/dinit.boot b/dinit.boot
new file mode 100644
index 0000000..9588297
--- /dev/null
+++ b/dinit.boot
@@ -0,0 +1,3 @@
+# Default boot target for dinit.
+# Add services that should start automatically as dependencies of this target.
+type = internal
diff --git a/dinit.init b/dinit.init
new file mode 100644
index 0000000..04fe74f
--- /dev/null
+++ b/dinit.init
@@ -0,0 +1,96 @@
+#!/bin/sh
+#
+# dinit dinit service supervisor
+#
+# chkconfig: 2345 99 01
+# description: dinit is a service supervisor with dependency support
+# process name: dinit
+# pidfile: /var/run/dinit.pid
+# config: /etc/dinit.d
+
+# Source function library
+. /etc/rc.d/init.d/functions
+
+# Get service config
+[ -f /etc/sysconfig/dinit ] && . /etc/sysconfig/dinit
+
+DINIT_MODE=${DINIT_MODE:-container}
+case "$DINIT_MODE" in
+ user) DINIT_FLAGS="--user" ;;
+ container|*) DINIT_FLAGS="--container" ;;
+esac
+DINIT_FLAGS="$DINIT_FLAGS $DINIT_EXTRA_FLAGS"
+
+SERVICES_DIR=/etc/dinit.d
+SOCKET_PATH=/run/dinitctl
+PIDFILE=/var/run/dinit.pid
+
+start() {
+ # Check if the service is already running?
+ if [ ! -f /var/lock/subsys/dinit ]; then
+ rm -f "$SOCKET_PATH"
+ msg_starting dinit
+ daemon --pidfile "$PIDFILE" --makepid /usr/bin/dinit $DINIT_FLAGS --socket-path "$SOCKET_PATH" -d "$SERVICES_DIR" boot
+ RETVAL=$?
+ [ $RETVAL -eq 0 ] && touch /var/lock/subsys/dinit
+ else
+ msg_already_running dinit
+ fi
+}
+
+stop() {
+ # Stop daemon.
+ if [ -f /var/lock/subsys/dinit ]; then
+ msg_stopping dinit
+ if [ -S "$SOCKET_PATH" ]; then
+ /usr/bin/dinitctl --socket-path "$SOCKET_PATH" shutdown >/dev/null 2>&1
+ fi
+ # wait for graceful shutdown
+ for i in 1 2 3 4 5; do
+ if [ ! -f "$PIDFILE" ] || ! kill -0 "$(cat "$PIDFILE")" 2>/dev/null; then
+ break
+ fi
+ sleep 1
+ done
+ if [ -f "$PIDFILE" ] && kill -0 "$(cat "$PIDFILE")" 2>/dev/null; then
+ killproc -p "$PIDFILE" dinit
+ else
+ ok
+ fi
+ rm -f /var/lock/subsys/dinit "$PIDFILE" "$SOCKET_PATH"
+ else
+ msg_not_running dinit
+ fi
+}
+
+restart() {
+ stop
+ start
+}
+
+dinit_status() {
+ status -p "$PIDFILE" dinit
+}
+
+RETVAL=0
+# See how we were called.
+
+case "$1" in
+ start)
+ start
+ ;;
+ stop)
+ stop
+ ;;
+ restart|reload)
+ restart
+ ;;
+ status)
+ dinit_status
+ ;;
+ *)
+ msg_usage "$0 {start|stop|restart|reload|status}"
+ exit 1
+esac
+
+exit $RETVAL
diff --git a/dinit.sysconfig b/dinit.sysconfig
new file mode 100644
index 0000000..3440648
--- /dev/null
+++ b/dinit.sysconfig
@@ -0,0 +1,9 @@
+# Dinit runtime mode for init script
+# container - run without system management functions (default)
+# user - run as a user service manager
+# Note: to run dinit as PID 1 (real system init), specify it as init= in kernel
+# command line; the init script is not used then.
+DINIT_MODE=container
+
+# Extra flags passed to dinit, e.g. --cgroup-path /sys/fs/cgroup
+DINIT_EXTRA_FLAGS=
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/dinit.git/commitdiff/dba96659e59594a0bb3ce04d0961aa925d188c53
More information about the pld-cvs-commit
mailing list