sps-extra · log · files · refs · tags · releases · people · languages · GitHub · commit
fa02731
Add s6, runit, dinit, and Shepherd as first-class inits.
Parents
Stat
devel/guile-fibers/recipe | 13 +++++++ devel/guile/recipe | 23 ++++++++++++ libs/gc/recipe | 10 ++++++ libs/libunistring/recipe | 10 ++++++ libs/skalibs/recipe | 10 ++++++ sys/dinit/recipe | 15 ++++++++ sys/execline/recipe | 11 ++++++ sys/init-dinit/files/agetty-tty1 | 3 ++ sys/init-dinit/files/agetty-tty2 | 3 ++ sys/init-dinit/files/agetty-ttyS0 | 3 ++ sys/init-dinit/files/boot | 3 ++ sys/init-dinit/recipe | 25 +++++++++++++ sys/init-openrc/recipe | 9 +++-- sys/init-runit/files/1 | 18 ++++++++++ sys/init-runit/files/2 | 5 +++ sys/init-runit/files/3 | 7 ++++ sys/init-runit/files/sv/agetty-tty1/run | 3 ++ sys/init-runit/files/sv/agetty-tty2/run | 3 ++ sys/init-runit/files/sv/agetty-ttyS0/run | 3 ++ sys/init-runit/recipe | 25 +++++++++++++ sys/init-s6/files/s6-pid1 | 41 +++++++++++++++++++++ sys/init-s6/files/sv/agetty-tty1/run | 3 ++ sys/init-s6/files/sv/agetty-tty2/run | 3 ++ sys/init-s6/files/sv/agetty-ttyS0/run | 3 ++ sys/init-s6/recipe | 24 +++++++++++++ sys/init-shepherd/files/init.scm | 61 ++++++++++++++++++++++++++++++++ sys/init-shepherd/files/shepherd-init | 2 ++ sys/init-shepherd/recipe | 19 ++++++++++ sys/init-systemd/recipe | 9 +++-- sys/openrc/recipe | 6 +++- sys/runit/recipe | 17 +++++++++ sys/s6-linux-init/recipe | 18 ++++++++++ sys/s6/recipe | 17 +++++++++ sys/shepherd/recipe | 20 +++++++++++ sys/systemd/recipe | 6 +++- term/fastfetch/recipe | 1 + 36 files changed, 444 insertions(+), 8 deletions(-)
Diff
diff --git a/devel/guile-fibers/recipe b/devel/guile-fibers/recipe
new file mode 100644
index 0000000..8e2c2c4
--- /dev/null
+++ b/devel/guile-fibers/recipe
@@ -0,0 +1,13 @@
+name guile-fibers
+version 1.3.1
+release 1
+description guile-fibers: concurrent ML-style fibers for Guile
+source https://github.com/wingo/fibers/releases/download/v1.3.1/fibers-1.3.1.tar.gz
+hash sha256:a5e1a9c49c0efe7ac6f355662041430d4b64e59baa538d2b8fb5ef7528d81dbf
+depend filesystem
+depend guile
+builddep guile
+builddep pkgconf
+configure ./configure --prefix=/usr
+build make -j"$MAKEJOBS"
+install make install DESTDIR="$PKG"
diff --git a/devel/guile/recipe b/devel/guile/recipe
new file mode 100644
index 0000000..bde9e56
--- /dev/null
+++ b/devel/guile/recipe
@@ -0,0 +1,23 @@
+name guile
+version 3.0.10
+release 1
+description guile: GNU Ubiquitous Intelligent Language for Extensions
+source https://ftp.gnu.org/gnu/guile/guile-3.0.10.tar.xz
+hash sha256:bd7168517fd526333446d4f7ab816527925634094fbd37322e17e2b8d8e76388
+depend filesystem
+depend gmp
+depend libffi
+depend libunistring
+depend gc
+depend libtool
+depend readline
+depend ncurses
+builddep pkgconf
+builddep gmp
+builddep libffi
+builddep libunistring
+builddep gc
+builddep libtool
+configure ./configure --prefix=/usr --disable-static --disable-error-on-warning
+build make -j"$MAKEJOBS"
+install make install DESTDIR="$PKG"
diff --git a/libs/gc/recipe b/libs/gc/recipe
new file mode 100644
index 0000000..833a21d
--- /dev/null
+++ b/libs/gc/recipe
@@ -0,0 +1,10 @@
+name gc
+version 8.2.8
+release 1
+description gc: Boehm-Demers-Weiser conservative garbage collector
+source https://github.com/ivmai/bdwgc/releases/download/v8.2.8/gc-8.2.8.tar.gz
+hash sha256:7649020621cb26325e1fb5c8742590d92fb48ce5c259b502faf7d9fb5dabb160
+depend filesystem
+configure ./configure --prefix=/usr --disable-static --enable-cplusplus
+build make -j"$MAKEJOBS"
+install make install DESTDIR="$PKG"
diff --git a/libs/libunistring/recipe b/libs/libunistring/recipe
new file mode 100644
index 0000000..5820e98
--- /dev/null
+++ b/libs/libunistring/recipe
@@ -0,0 +1,10 @@
+name libunistring
+version 1.3
+release 1
+description libunistring: Unicode string library
+source https://ftp.gnu.org/gnu/libunistring/libunistring-1.3.tar.xz
+hash sha256:f245786c831d25150f3dfb4317cda1acc5e3f79a5da4ad073ddca58886569527
+depend filesystem
+configure ./configure --prefix=/usr --disable-static
+build make -j"$MAKEJOBS"
+install make install DESTDIR="$PKG"
diff --git a/libs/skalibs/recipe b/libs/skalibs/recipe
new file mode 100644
index 0000000..acd1d7f
--- /dev/null
+++ b/libs/skalibs/recipe
@@ -0,0 +1,10 @@
+name skalibs
+version 2.15.1.0
+release 1
+description skalibs: skarnet.org C support library
+source https://skarnet.org/software/skalibs/skalibs-2.15.1.0.tar.gz
+hash sha256:f9c905e74935c6fe911c7e344e3e89d5fbd2014c1a04650b524b15ce9b5635d1
+depend filesystem
+configure ./configure --prefix=/usr --libdir=/usr/lib64 --dynlibdir=/usr/lib64 --sysdepdir=/usr/lib64/skalibs/sysdeps --enable-shared --disable-allstatic
+build make -j"$MAKEJOBS"
+install make install DESTDIR="$PKG"
diff --git a/sys/dinit/recipe b/sys/dinit/recipe
new file mode 100644
index 0000000..9e8f927
--- /dev/null
+++ b/sys/dinit/recipe
@@ -0,0 +1,15 @@
+name dinit
+version 0.19.4
+release 1
+description dinit: service manager and init
+source https://github.com/davmac314/dinit/releases/download/v0.19.4/dinit-0.19.4.tar.xz
+hash sha256:a7d472186c9e8b19a8b88019a99c64c417c59abee244b1893b6c2ae03024df1e
+depend filesystem
+conflict systemd
+conflict openrc
+conflict s6
+conflict runit
+conflict shepherd
+configure ./configure --prefix=/usr --exec-prefix=/usr --sbindir=/usr/sbin --enable-shutdown --shutdown-prefix=dinit-
+build make -j"$MAKEJOBS"
+install make DESTDIR="$PKG" install
diff --git a/sys/execline/recipe b/sys/execline/recipe
new file mode 100644
index 0000000..db1fed7
--- /dev/null
+++ b/sys/execline/recipe
@@ -0,0 +1,11 @@
+name execline
+version 2.9.9.2
+release 1
+description execline: non-interactive scripting language
+source https://skarnet.org/software/execline/execline-2.9.9.2.tar.gz
+hash sha256:908ed4db3a6b3a23a205d8fd4cf2a71089156f2aeae0f54656045aafad2dee32
+depend filesystem
+depend skalibs
+configure ./configure --prefix=/usr --libdir=/usr/lib64 --dynlibdir=/usr/lib64 --bindir=/usr/bin --libexecdir=/usr/libexec --enable-shared --disable-allstatic --with-sysdeps="${SPS_ROOT:-}/usr/lib64/skalibs/sysdeps"
+build make -j"$MAKEJOBS"
+install make install DESTDIR="$PKG"
diff --git a/sys/init-dinit/files/agetty-tty1 b/sys/init-dinit/files/agetty-tty1
new file mode 100644
index 0000000..1d3cbb5
--- /dev/null
+++ b/sys/init-dinit/files/agetty-tty1
@@ -0,0 +1,3 @@
+type = process
+command = /sbin/agetty --noclear tty1 linux
+restart = true
diff --git a/sys/init-dinit/files/agetty-tty2 b/sys/init-dinit/files/agetty-tty2
new file mode 100644
index 0000000..f7ec76b
--- /dev/null
+++ b/sys/init-dinit/files/agetty-tty2
@@ -0,0 +1,3 @@
+type = process
+command = /sbin/agetty tty2 linux
+restart = true
diff --git a/sys/init-dinit/files/agetty-ttyS0 b/sys/init-dinit/files/agetty-ttyS0
new file mode 100644
index 0000000..14a930c
--- /dev/null
+++ b/sys/init-dinit/files/agetty-ttyS0
@@ -0,0 +1,3 @@
+type = process
+command = /sbin/agetty -L 115200 ttyS0 vt100
+restart = true
diff --git a/sys/init-dinit/files/boot b/sys/init-dinit/files/boot
new file mode 100644
index 0000000..6479f2c
--- /dev/null
+++ b/sys/init-dinit/files/boot
@@ -0,0 +1,3 @@
+type = internal
+restart = false
+waits-for.d = /etc/dinit.d/boot.d
diff --git a/sys/init-dinit/recipe b/sys/init-dinit/recipe
new file mode 100644
index 0000000..05e421c
--- /dev/null
+++ b/sys/init-dinit/recipe
@@ -0,0 +1,25 @@
+name init-dinit
+version 1.0
+release 1
+arch any
+description init-dinit: dinit as PID 1, with eudev and elogind
+depend filesystem
+depend dinit
+depend eudev
+depend elogind
+conflict init-systemd
+conflict init-openrc
+conflict init-s6
+conflict init-runit
+conflict init-shepherd
+install mkdir -p "$PKG/usr/share/sps/sets" "$PKG/etc/sps" "$PKG/sbin" "$PKG/etc/dinit.d/boot.d"
+install printf '%s\n' "init-dinit" >"$PKG/usr/share/sps/sets/init-dinit"
+install printf '%s\n' dinit >"$PKG/etc/sps/init"
+install install -m 0644 "$SRC/files/boot" "$PKG/etc/dinit.d/boot"
+install install -m 0644 "$SRC/files/agetty-tty1" "$PKG/etc/dinit.d/agetty-tty1"
+install install -m 0644 "$SRC/files/agetty-tty2" "$PKG/etc/dinit.d/agetty-tty2"
+install install -m 0644 "$SRC/files/agetty-ttyS0" "$PKG/etc/dinit.d/agetty-ttyS0"
+install ln -sf ../agetty-tty1 "$PKG/etc/dinit.d/boot.d/agetty-tty1"
+install ln -sf ../agetty-tty2 "$PKG/etc/dinit.d/boot.d/agetty-tty2"
+install ln -sf ../agetty-ttyS0 "$PKG/etc/dinit.d/boot.d/agetty-ttyS0"
+install ln -sf /usr/sbin/dinit "$PKG/sbin/init"
diff --git a/sys/init-openrc/recipe b/sys/init-openrc/recipe
index ee63295..75436b2 100644
--- a/sys/init-openrc/recipe
+++ b/sys/init-openrc/recipe
@@ -1,14 +1,17 @@
name init-openrc
version 1.0
-release 1
+release 2
arch any
description init-openrc: OpenRC plus eudev and elogind
-
depend filesystem
depend openrc
depend eudev
depend elogind
-
+conflict init-systemd
+conflict init-s6
+conflict init-runit
+conflict init-dinit
+conflict init-shepherd
install mkdir -p "$PKG/usr/share/sps/sets" "$PKG/etc/sps"
install printf '%s\n' "init-openrc" >"$PKG/usr/share/sps/sets/init-openrc"
install printf '%s\n' openrc >"$PKG/etc/sps/init"
diff --git a/sys/init-runit/files/1 b/sys/init-runit/files/1
new file mode 100755
index 0000000..1f94f1e
--- /dev/null
+++ b/sys/init-runit/files/1
@@ -0,0 +1,18 @@
+#!/bin/sh
+PATH=/usr/bin:/usr/sbin:/bin:/sbin
+export PATH
+mount -t proc proc /proc 2>/dev/null || :
+mount -t sysfs sysfs /sys 2>/dev/null || :
+mount -t devtmpfs devtmpfs /dev 2>/dev/null || :
+mkdir -p /dev/pts /dev/shm /run
+mount -t devpts devpts /dev/pts 2>/dev/null || :
+mount -t tmpfs shm /dev/shm 2>/dev/null || :
+mount -t tmpfs tmpfs /run 2>/dev/null || :
+if [ -r /etc/hostname ]; then
+ hostname "$(cat /etc/hostname)" 2>/dev/null || :
+fi
+if [ -x /sbin/udevd ] || [ -x /usr/sbin/udevd ]; then
+ udevd --daemon 2>/dev/null || /usr/sbin/udevd --daemon 2>/dev/null || :
+ udevadm trigger --action=add 2>/dev/null || :
+ udevadm settle --timeout=8 2>/dev/null || :
+fi
diff --git a/sys/init-runit/files/2 b/sys/init-runit/files/2
new file mode 100755
index 0000000..31fd2d8
--- /dev/null
+++ b/sys/init-runit/files/2
@@ -0,0 +1,5 @@
+#!/bin/sh
+PATH=/usr/bin:/usr/sbin:/bin:/sbin
+export PATH
+mkdir -p /etc/runit/runsvdir/default
+exec runsvdir -P /etc/runit/runsvdir/default
diff --git a/sys/init-runit/files/3 b/sys/init-runit/files/3
new file mode 100755
index 0000000..c1a7b3c
--- /dev/null
+++ b/sys/init-runit/files/3
@@ -0,0 +1,7 @@
+#!/bin/sh
+PATH=/usr/bin:/usr/sbin:/bin:/sbin
+export PATH
+sv force-shutdown /etc/runit/runsvdir/default/* >/dev/null 2>&1 || :
+udevadm control --exit >/dev/null 2>&1 || :
+swapoff -a >/dev/null 2>&1 || :
+umount -a -r >/dev/null 2>&1 || :
diff --git a/sys/init-runit/files/sv/agetty-tty1/run b/sys/init-runit/files/sv/agetty-tty1/run
new file mode 100755
index 0000000..d37fbb6
--- /dev/null
+++ b/sys/init-runit/files/sv/agetty-tty1/run
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /sbin/agetty --noclear tty1 linux
diff --git a/sys/init-runit/files/sv/agetty-tty2/run b/sys/init-runit/files/sv/agetty-tty2/run
new file mode 100755
index 0000000..57b0d2e
--- /dev/null
+++ b/sys/init-runit/files/sv/agetty-tty2/run
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /sbin/agetty tty2 linux
diff --git a/sys/init-runit/files/sv/agetty-ttyS0/run b/sys/init-runit/files/sv/agetty-ttyS0/run
new file mode 100755
index 0000000..1f2725f
--- /dev/null
+++ b/sys/init-runit/files/sv/agetty-ttyS0/run
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /sbin/agetty -L 115200 ttyS0 vt100
diff --git a/sys/init-runit/recipe b/sys/init-runit/recipe
new file mode 100644
index 0000000..c5de062
--- /dev/null
+++ b/sys/init-runit/recipe
@@ -0,0 +1,25 @@
+name init-runit
+version 1.0
+release 1
+arch any
+description init-runit: runit as PID 1, with eudev and elogind
+depend filesystem
+depend runit
+depend eudev
+depend elogind
+conflict init-systemd
+conflict init-openrc
+conflict init-s6
+conflict init-dinit
+conflict init-shepherd
+install mkdir -p "$PKG/usr/share/sps/sets" "$PKG/etc/sps" "$PKG/sbin" "$PKG/etc/runit" "$PKG/etc/sv" "$PKG/etc/runit/runsvdir/default"
+install printf '%s\n' "init-runit" >"$PKG/usr/share/sps/sets/init-runit"
+install printf '%s\n' runit >"$PKG/etc/sps/init"
+install install -m 0755 "$SRC/files/1" "$PKG/etc/runit/1"
+install install -m 0755 "$SRC/files/2" "$PKG/etc/runit/2"
+install install -m 0755 "$SRC/files/3" "$PKG/etc/runit/3"
+install ln -sf /usr/bin/runit-init "$PKG/sbin/init"
+install cp -a "$SRC/files/sv/." "$PKG/etc/sv/"
+install ln -sf /etc/sv/agetty-tty1 "$PKG/etc/runit/runsvdir/default/agetty-tty1"
+install ln -sf /etc/sv/agetty-tty2 "$PKG/etc/runit/runsvdir/default/agetty-tty2"
+install ln -sf /etc/sv/agetty-ttyS0 "$PKG/etc/runit/runsvdir/default/agetty-ttyS0"
diff --git a/sys/init-s6/files/s6-pid1 b/sys/init-s6/files/s6-pid1
new file mode 100755
index 0000000..d3ca7b6
--- /dev/null
+++ b/sys/init-s6/files/s6-pid1
@@ -0,0 +1,41 @@
+#!/bin/sh
+# Stage 1 for s6: mounts, udev, seed /run/service, then exec s6-svscan as PID 1.
+PATH=/usr/bin:/usr/sbin:/bin:/sbin
+export PATH
+
+mount -t proc proc /proc 2>/dev/null || :
+mount -t sysfs sysfs /sys 2>/dev/null || :
+mount -t devtmpfs devtmpfs /dev 2>/dev/null || :
+mkdir -p /dev/pts /dev/shm /run /run/service
+mount -t devpts devpts /dev/pts 2>/dev/null || :
+mount -t tmpfs shm /dev/shm 2>/dev/null || :
+mount -t tmpfs tmpfs /run 2>/dev/null || :
+mkdir -p /run/service
+
+if [ -r /etc/hostname ]; then
+ hostname "$(cat /etc/hostname)" 2>/dev/null || :
+fi
+
+if [ -x /sbin/udevd ] || [ -x /usr/sbin/udevd ]; then
+ udevd --daemon 2>/dev/null || /usr/sbin/udevd --daemon 2>/dev/null || :
+ udevadm trigger --action=add 2>/dev/null || :
+ udevadm settle --timeout=8 2>/dev/null || :
+fi
+
+seed() {
+ _src=$1
+ _name=${_src##*/}
+ [ -d "$_src" ] || return 0
+ [ -f "$_src/run" ] || return 0
+ rm -rf "/run/service/$_name"
+ cp -a "$_src" "/run/service/$_name"
+}
+
+if [ -d /etc/s6/enabled ]; then
+ for _svc in /etc/s6/enabled/*; do
+ [ -e "$_svc" ] || continue
+ seed "$_svc"
+ done
+fi
+
+exec /usr/bin/s6-svscan /run/service
diff --git a/sys/init-s6/files/sv/agetty-tty1/run b/sys/init-s6/files/sv/agetty-tty1/run
new file mode 100755
index 0000000..d37fbb6
--- /dev/null
+++ b/sys/init-s6/files/sv/agetty-tty1/run
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /sbin/agetty --noclear tty1 linux
diff --git a/sys/init-s6/files/sv/agetty-tty2/run b/sys/init-s6/files/sv/agetty-tty2/run
new file mode 100755
index 0000000..57b0d2e
--- /dev/null
+++ b/sys/init-s6/files/sv/agetty-tty2/run
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /sbin/agetty tty2 linux
diff --git a/sys/init-s6/files/sv/agetty-ttyS0/run b/sys/init-s6/files/sv/agetty-ttyS0/run
new file mode 100755
index 0000000..1f2725f
--- /dev/null
+++ b/sys/init-s6/files/sv/agetty-ttyS0/run
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /sbin/agetty -L 115200 ttyS0 vt100
diff --git a/sys/init-s6/recipe b/sys/init-s6/recipe
new file mode 100644
index 0000000..c3a21b3
--- /dev/null
+++ b/sys/init-s6/recipe
@@ -0,0 +1,24 @@
+name init-s6
+version 1.0
+release 1
+arch any
+description init-s6: s6 as PID 1, with eudev and elogind
+depend filesystem
+depend s6
+depend s6-linux-init
+depend execline
+depend eudev
+depend elogind
+conflict init-systemd
+conflict init-openrc
+conflict init-runit
+conflict init-dinit
+conflict init-shepherd
+install mkdir -p "$PKG/usr/share/sps/sets" "$PKG/etc/sps" "$PKG/sbin" "$PKG/etc/s6/sv" "$PKG/etc/s6/enabled"
+install printf '%s\n' "init-s6" >"$PKG/usr/share/sps/sets/init-s6"
+install printf '%s\n' s6 >"$PKG/etc/sps/init"
+install install -m 0755 "$SRC/files/s6-pid1" "$PKG/sbin/init"
+install cp -a "$SRC/files/sv/." "$PKG/etc/s6/sv/"
+install ln -sf /etc/s6/sv/agetty-tty1 "$PKG/etc/s6/enabled/agetty-tty1"
+install ln -sf /etc/s6/sv/agetty-tty2 "$PKG/etc/s6/enabled/agetty-tty2"
+install ln -sf /etc/s6/sv/agetty-ttyS0 "$PKG/etc/s6/enabled/agetty-ttyS0"
diff --git a/sys/init-shepherd/files/init.scm b/sys/init-shepherd/files/init.scm
new file mode 100644
index 0000000..3922883
--- /dev/null
+++ b/sys/init-shepherd/files/init.scm
@@ -0,0 +1,61 @@
+;; SPS PID 1 config for GNU Shepherd.
+(use-modules (ice-9 ftw)
+ (shepherd service))
+
+(define (directory? path)
+ (and (file-exists? path)
+ (eq? 'directory (stat:type (stat path)))))
+
+(define (scm-name? name)
+ (and (string-suffix? ".scm" name)
+ (not (string-prefix? "." name))))
+
+(define (name->symbol name)
+ (string->symbol (substring name 0 (- (string-length name) 4))))
+
+(define (load-service-dir dir)
+ (when (directory? dir)
+ (for-each
+ (lambda (name)
+ (when (scm-name? name)
+ (primitive-load (string-append dir "/" name))))
+ (or (scandir dir) '()))))
+
+(define agetty-tty1
+ (service '(agetty-tty1)
+ #:documentation "getty on tty1"
+ #:start (make-forkexec-constructor
+ '("/sbin/agetty" "--noclear" "tty1" "linux"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t))
+
+(define agetty-tty2
+ (service '(agetty-tty2)
+ #:documentation "getty on tty2"
+ #:start (make-forkexec-constructor
+ '("/sbin/agetty" "tty2" "linux"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t))
+
+(define agetty-ttyS0
+ (service '(agetty-ttyS0)
+ #:documentation "serial getty"
+ #:start (make-forkexec-constructor
+ '("/sbin/agetty" "-L" "115200" "ttyS0" "vt100"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t))
+
+(register-services (list agetty-tty1 agetty-tty2 agetty-ttyS0))
+(load-service-dir "/etc/shepherd.d")
+(start-in-the-background '(agetty-tty1 agetty-tty2 agetty-ttyS0))
+
+(let ((dir "/etc/shepherd.d"))
+ (when (directory? dir)
+ (for-each
+ (lambda (name)
+ (when (scm-name? name)
+ (catch #t
+ (lambda ()
+ (start-in-the-background (list (name->symbol name))))
+ (lambda args #f))))
+ (or (scandir dir) '()))))
diff --git a/sys/init-shepherd/files/shepherd-init b/sys/init-shepherd/files/shepherd-init
new file mode 100755
index 0000000..dcfab1b
--- /dev/null
+++ b/sys/init-shepherd/files/shepherd-init
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec /usr/bin/shepherd --config=/etc/shepherd/init.scm "$@"
diff --git a/sys/init-shepherd/recipe b/sys/init-shepherd/recipe
new file mode 100644
index 0000000..1495c47
--- /dev/null
+++ b/sys/init-shepherd/recipe
@@ -0,0 +1,19 @@
+name init-shepherd
+version 1.0
+release 1
+arch any
+description init-shepherd: GNU Shepherd as PID 1, with eudev and elogind
+depend filesystem
+depend shepherd
+depend eudev
+depend elogind
+conflict init-systemd
+conflict init-openrc
+conflict init-s6
+conflict init-runit
+conflict init-dinit
+install mkdir -p "$PKG/usr/share/sps/sets" "$PKG/etc/sps" "$PKG/sbin" "$PKG/etc/shepherd" "$PKG/etc/shepherd.d"
+install printf '%s\n' "init-shepherd" >"$PKG/usr/share/sps/sets/init-shepherd"
+install printf '%s\n' shepherd >"$PKG/etc/sps/init"
+install install -m 0644 "$SRC/files/init.scm" "$PKG/etc/shepherd/init.scm"
+install install -m 0755 "$SRC/files/shepherd-init" "$PKG/sbin/init"
diff --git a/sys/init-systemd/recipe b/sys/init-systemd/recipe
index 7d0726f..d27857e 100644
--- a/sys/init-systemd/recipe
+++ b/sys/init-systemd/recipe
@@ -1,12 +1,15 @@
name init-systemd
version 1.0
-release 1
+release 2
arch any
description init-systemd: systemd as PID 1, with udev and logind
-
depend filesystem
depend systemd
-
+conflict init-openrc
+conflict init-s6
+conflict init-runit
+conflict init-dinit
+conflict init-shepherd
install mkdir -p "$PKG/usr/share/sps/sets" "$PKG/etc/sps"
install printf '%s\n' "init-systemd" >"$PKG/usr/share/sps/sets/init-systemd"
install printf '%s\n' systemd >"$PKG/etc/sps/init"
diff --git a/sys/openrc/recipe b/sys/openrc/recipe
index b1bf519..8485c44 100644
--- a/sys/openrc/recipe
+++ b/sys/openrc/recipe
@@ -1,6 +1,6 @@
name openrc
version 0.62.6
-release 1
+release 2
description openrc: dependency-based init scripts
source https://github.com/OpenRC/openrc/archive/refs/tags/0.62.6.tar.gz
@@ -9,6 +9,10 @@ hash sha256:d5c15b37533e2b5d247d9fbab8b41f312614784b9ea11239ddcfe8e4528e7
depend filesystem
depend busybox
conflict systemd
+conflict s6
+conflict runit
+conflict dinit
+conflict shepherd
builddep meson
builddep ninja
builddep pkgconf
diff --git a/sys/runit/recipe b/sys/runit/recipe
new file mode 100644
index 0000000..95b6eee
--- /dev/null
+++ b/sys/runit/recipe
@@ -0,0 +1,17 @@
+name runit
+version 2.2.0
+release 1
+description runit: process supervision and init
+source http://smarden.org/runit/runit-2.2.0.tar.gz
+hash sha256:95ef4d2868b978c7179fe47901e5c578e11cf273d292bd6208bd3a7ccb029290
+depend filesystem
+conflict systemd
+conflict openrc
+conflict s6
+conflict dinit
+conflict shepherd
+configure printf '%s\n' 'gcc -O2 -Wall' > runit-2.2.0/src/conf-cc
+configure printf '%s\n' 'gcc -s' > runit-2.2.0/src/conf-ld
+build cd runit-2.2.0 && package/compile
+install mkdir -p "$PKG/usr/bin"
+install install -m755 runit-2.2.0/command/* "$PKG/usr/bin"
diff --git a/sys/s6-linux-init/recipe b/sys/s6-linux-init/recipe
new file mode 100644
index 0000000..e014cbc
--- /dev/null
+++ b/sys/s6-linux-init/recipe
@@ -0,0 +1,18 @@
+name s6-linux-init
+version 1.2.0.2
+release 1
+description s6-linux-init: tools to build an s6 PID 1
+source https://skarnet.org/software/s6-linux-init/s6-linux-init-1.2.0.2.tar.gz
+hash sha256:6fad014da162c0c81924197c57d16e1a75c133b34a20e423431a1b741e907b1d
+depend filesystem
+depend s6
+depend execline
+depend skalibs
+conflict systemd
+conflict openrc
+conflict runit
+conflict dinit
+conflict shepherd
+configure ./configure --prefix=/usr --libdir=/usr/lib64 --dynlibdir=/usr/lib64 --bindir=/usr/bin --libexecdir=/usr/libexec --enable-shared --disable-allstatic --with-sysdeps="${SPS_ROOT:-}/usr/lib64/skalibs/sysdeps"
+build make -j"$MAKEJOBS"
+install make install DESTDIR="$PKG"
diff --git a/sys/s6/recipe b/sys/s6/recipe
new file mode 100644
index 0000000..b007b01
--- /dev/null
+++ b/sys/s6/recipe
@@ -0,0 +1,17 @@
+name s6
+version 2.15.1.0
+release 1
+description s6: skarnet.org supervision suite
+source https://skarnet.org/software/s6/s6-2.15.1.0.tar.gz
+hash sha256:eab9c46e22b66b16135f9a05ec68a0ea287d9060b84d10defaaa2caad158ab52
+depend filesystem
+depend skalibs
+depend execline
+conflict systemd
+conflict openrc
+conflict runit
+conflict dinit
+conflict shepherd
+configure ./configure --prefix=/usr --libdir=/usr/lib64 --dynlibdir=/usr/lib64 --bindir=/usr/bin --libexecdir=/usr/libexec --enable-shared --disable-allstatic --with-sysdeps="${SPS_ROOT:-}/usr/lib64/skalibs/sysdeps"
+build make -j"$MAKEJOBS"
+install make install DESTDIR="$PKG"
diff --git a/sys/shepherd/recipe b/sys/shepherd/recipe
new file mode 100644
index 0000000..6bef21f
--- /dev/null
+++ b/sys/shepherd/recipe
@@ -0,0 +1,20 @@
+name shepherd
+version 1.0.8
+release 1
+description shepherd: GNU service manager and PID 1
+source https://ftp.gnu.org/gnu/shepherd/shepherd-1.0.8.tar.gz
+hash sha256:3beb005370bf0339c567d068a7ad9fb69f0e8850894db01c34635955f7717ff5
+depend filesystem
+depend guile
+depend guile-fibers
+conflict systemd
+conflict openrc
+conflict s6
+conflict runit
+conflict dinit
+builddep guile
+builddep guile-fibers
+builddep pkgconf
+configure ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
+build make -j"$MAKEJOBS"
+install make install DESTDIR="$PKG"
diff --git a/sys/systemd/recipe b/sys/systemd/recipe
index 9d66515..6bbe689 100644
--- a/sys/systemd/recipe
+++ b/sys/systemd/recipe
@@ -1,6 +1,6 @@
name systemd
version 257.9
-release 1
+release 2
description systemd: init, udev, logind, and service manager
source https://github.com/systemd/systemd/archive/refs/tags/v257.9.tar.gz
@@ -16,6 +16,10 @@ depend openssl
conflict openrc
conflict eudev
conflict elogind
+conflict s6
+conflict runit
+conflict dinit
+conflict shepherd
builddep meson
builddep ninja
builddep pkgconf
diff --git a/term/fastfetch/recipe b/term/fastfetch/recipe
index 4b74cd2..f625104 100644
--- a/term/fastfetch/recipe
+++ b/term/fastfetch/recipe
@@ -7,6 +7,7 @@ source https://github.com/fastfetch-cli/fastfetch/archive/refs/tags/2.67.1.
hash sha256:52489550d1fdeac8bde8b3442064e3bc78d28fda752a171dc46a6cd97454f237
depend filesystem
+# Branding (os-release, logos). cmake is a builddep and pulls openssl.
depend splux-base
builddep cmake
builddep ninja