[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