aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Bramkamp <crest+freebsd@rlwinm.de>2026-04-24 17:06:26 +0000
committerRobert Clausecker <fuz@FreeBSD.org>2026-04-27 00:01:10 +0000
commita37192b4896e3ef9438e610cf6bf31c451ef11dc (patch)
treeb3a1be2e7d16694c57d6bf1f126dc14ad038649a
parente666ccc7dbeb1b6e07eb331b93136366feedea30 (diff)
sysutils/s6-frontend: Frontend to the s6 init system
s6-frontend is a frontend to the s6 init system. It provides the one-stop-shop s6 command, that is used to address every part of the s6 init system. WWW: https://www.skarnet.org/software/s6-frontend/ Event: Wiesbaden Hackathon 202604
-rw-r--r--sysutils/Makefile1
-rw-r--r--sysutils/s6-frontend/Makefile84
-rw-r--r--sysutils/s6-frontend/distinfo3
-rw-r--r--sysutils/s6-frontend/pkg-descr6
-rw-r--r--sysutils/s6-frontend/pkg-plist22
5 files changed, 116 insertions, 0 deletions
diff --git a/sysutils/Makefile b/sysutils/Makefile
index bb0ec5d13e59..d27cf03f24e3 100644
--- a/sysutils/Makefile
+++ b/sysutils/Makefile
@@ -1304,6 +1304,7 @@
SUBDIR += rw-tui
SUBDIR += s-tui
SUBDIR += s6
+ SUBDIR += s6-frontend
SUBDIR += s6-rc
SUBDIR += safe-rm
SUBDIR += safecat
diff --git a/sysutils/s6-frontend/Makefile b/sysutils/s6-frontend/Makefile
new file mode 100644
index 000000000000..0c048e0af0e8
--- /dev/null
+++ b/sysutils/s6-frontend/Makefile
@@ -0,0 +1,84 @@
+PORTNAME= s6-frontend
+DISTVERSION= 0.0.1.1
+CATEGORIES= sysutils
+MASTER_SITES= http://www.skarnet.org/software/${PORTNAME}/
+
+MAINTAINER= crest@rlwinm.de
+COMMENT= Frontend to the s6 init system
+WWW= https://www.skarnet.org/software/s6-frontend/
+
+LICENSE= ISCL
+LICENSE_FILE= ${WRKSRC}/COPYING
+
+FLAVORS= hier run
+FLAVOR?= ${FLAVORS:[1]}
+.if ${FLAVOR} == run # Follow hier(7)
+BUILD_DEPENDS= execline>=2.9.8.1:lang/execline \
+ skalibs>=2.14.5.1:devel/skalibs \
+ s6>=2.14.0.1:sysutils/s6 \
+ s6-rc-run>=0.6.0.0:sysutils/s6-rc
+RUN_DEPENDS= execline>=2.9.8.1:lang/execline \
+ skalibs>=2.14.5.1:devel/skalibs \
+ s6>=2.14.0.1:sysutils/s6 \
+ s6-rc-run>=0.6.0.0:sysutils/s6-rc
+.else
+BUILD_DEPENDS= execline>=2.9.8.1:lang/execline \
+ skalibs>=2.14.5.1:devel/skalibs \
+ s6>=2.14.0.1:sysutils/s6 \
+ s6-rc>=0.6.0.0:sysutils/s6-rc
+RUN_DEPENDS= execline>=2.9.8.1:lang/execline \
+ skalibs>=2.14.5.1:devel/skalibs \
+ s6>=2.14.0.1:sysutils/s6 \
+ s6-rc>=0.6.0.0:sysutils/s6-rc
+.endif
+LIB_DEPENDS= libs6.so:sysutils/s6 \
+ libskarnet.so:devel/skalibs
+
+USES= gmake
+USE_LDCONFIG= yes
+HAS_CONFIGURE= yes
+
+run_PKGNAMESUFFIX= -run
+
+# The only difference between the hier and the run flavors is the default live directory path
+# hard coded into the s6-rc utilities allowing their use without passing -l <live_dir>.
+# A FreeBSD port should follow the operating system file system layout, but there is a corner
+# case where s6-rc replacing base system init system *has* to deviate from hier(7).
+# The problem is that s6-rc requires a writeable file system
+# (to track service state, bind unix sockets, create named fifos)
+# very early in the boot process before FreeBSD used to mount /var and /var/run.
+# One way to satisfy this requirement is to mount a tmpfs directly under /.
+# The live directory shouldn't be kept on /tmp because this often a small
+# file system that could be exhausted by accident breaking s6-rc.
+# Adding a small /run tmpfs dedicated to s6-rc solves this problem.
+.if ${FLAVOR} == run # Follow hier(7)
+LIVEDIR?= /run/${PORTNAME}
+SCANDIR?= /run/service
+STMPDIR?= /run/s6-frontend
+.endif
+LIVEDIR?= /var/run/${PORTNAME}
+SCANDIR?= /var/run/service
+STMPDIR?= /var/run/s6-frontend
+
+CFLAGS+= -D__BSD_VISIBLE
+
+CONFIGURE_ARGS+=--prefix=${PREFIX} \
+ --with-include=${LOCALBASE}/include \
+ --with-lib=${LOCALBASE}/lib \
+ --with-lib=${LOCALBASE}/lib/execline \
+ --with-lib=${LOCALBASE}/lib/s6 \
+ --with-dynlib=${LOCALBASE}/lib \
+ --disable-s6li \
+ --livedir=${LIVEDIR} \
+ --scandir=${SCANDIR} \
+ --enable-shared
+
+DOCS= AUTHORS COPYING INSTALL README doc/*.html
+OPTIONS_DEFINE= DOCS
+
+post-install:
+ ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/*
+ @${MKDIR} ${STAGEDIR}${DOCSDIR}
+ cd ${WRKSRC} && ${INSTALL_DATA} ${DOCS} ${STAGEDIR}${DOCSDIR}
+
+.include <bsd.port.mk>
diff --git a/sysutils/s6-frontend/distinfo b/sysutils/s6-frontend/distinfo
new file mode 100644
index 000000000000..b055efd5c79b
--- /dev/null
+++ b/sysutils/s6-frontend/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1769445127
+SHA256 (s6-frontend-0.0.1.1.tar.gz) = 2c1ac4f64b04400cd7c81cd9be222be52b07b7d8955a876b9f9f3f8c2328dfeb
+SIZE (s6-frontend-0.0.1.1.tar.gz) = 56413
diff --git a/sysutils/s6-frontend/pkg-descr b/sysutils/s6-frontend/pkg-descr
new file mode 100644
index 000000000000..189dfa30aa1f
--- /dev/null
+++ b/sysutils/s6-frontend/pkg-descr
@@ -0,0 +1,6 @@
+s6-rc is a service manager for s6-based systems, i.e. a suite of programs
+that can start and stop services, both long-running daemons and one-time
+initialization scripts, in the proper order according to a dependency tree.
+
+It ensures that long-running daemons are supervised by the s6 infrastructure,
+and that one-time scripts are also run in a controlled environment.
diff --git a/sysutils/s6-frontend/pkg-plist b/sysutils/s6-frontend/pkg-plist
new file mode 100644
index 000000000000..30cae389949d
--- /dev/null
+++ b/sysutils/s6-frontend/pkg-plist
@@ -0,0 +1,22 @@
+bin/s6
+include/s6-frontend/config.h
+libexec/s6-frontend
+libexec/s6-frontend-helper-echo
+libexec/s6-frontend-helper-kill
+%%PORTDOCS%%%%DOCSDIR%%/AUTHORS
+%%PORTDOCS%%%%DOCSDIR%%/COPYING
+%%PORTDOCS%%%%DOCSDIR%%/INSTALL
+%%PORTDOCS%%%%DOCSDIR%%/README
+%%PORTDOCS%%%%DOCSDIR%%/index.html
+%%PORTDOCS%%%%DOCSDIR%%/overview.html
+%%PORTDOCS%%%%DOCSDIR%%/s6-frontend-helper-echo.html
+%%PORTDOCS%%%%DOCSDIR%%/s6-frontend-helper-kill.html
+%%PORTDOCS%%%%DOCSDIR%%/s6-frontend.conf.html
+%%PORTDOCS%%%%DOCSDIR%%/s6-frontend.html
+%%PORTDOCS%%%%DOCSDIR%%/s6.html
+%%PORTDOCS%%%%DOCSDIR%%/s6_live.html
+%%PORTDOCS%%%%DOCSDIR%%/s6_process.html
+%%PORTDOCS%%%%DOCSDIR%%/s6_repository.html
+%%PORTDOCS%%%%DOCSDIR%%/s6_set.html
+%%PORTDOCS%%%%DOCSDIR%%/s6_system.html
+%%PORTDOCS%%%%DOCSDIR%%/upgrade.html