From a12b74b878220dc796e4e4cb44d277466212113e Mon Sep 17 00:00:00 2001 From: "A. Wilcox" Date: Fri, 15 Jun 2018 00:38:04 -0500 Subject: system/s6: new package --- system/s6/APKBUILD | 49 ++++++++++++++++++++++++++++++++++++++++++++++++ system/s6/s6-svscanboot | 32 +++++++++++++++++++++++++++++++ system/s6/s6.initd | 15 +++++++++++++++ system/s6/s6.pre-install | 6 ++++++ system/s6/s6.pre-upgrade | 6 ++++++ system/s6/s6.trigger | 3 +++ 6 files changed, 111 insertions(+) create mode 100644 system/s6/APKBUILD create mode 100644 system/s6/s6-svscanboot create mode 100644 system/s6/s6.initd create mode 100644 system/s6/s6.pre-install create mode 100644 system/s6/s6.pre-upgrade create mode 100644 system/s6/s6.trigger diff --git a/system/s6/APKBUILD b/system/s6/APKBUILD new file mode 100644 index 000000000..77a123cd9 --- /dev/null +++ b/system/s6/APKBUILD @@ -0,0 +1,49 @@ +# Contributor: John Regan +# Maintainer: Laurent Bercot +pkgname=s6 +pkgver=2.7.1.1 +pkgrel=0 +pkgdesc="skarnet.org's small & secure supervision software suite" +url="https://skarnet.org/software/$pkgname/" +arch="all" +options="!check" # No test suite. +license="ISC" +makedepends="skalibs-dev execline-dev" +install="s6.pre-install s6.pre-upgrade" +subpackages="$pkgname-dev $pkgname-doc $pkgname-openrc" +triggers="s6.trigger=/run/service" +source="https://skarnet.org/software/$pkgname/$pkgname-$pkgver.tar.gz + s6-svscanboot + s6.initd" + + +build() { + cd "$builddir" + ./configure \ + --enable-shared \ + --enable-static \ + --disable-allstatic \ + --libdir=/usr/lib \ + --libexecdir="/lib/$pkgname" \ + --with-dynlib=/lib + make +} + +package() { + cd "$builddir" + make DESTDIR="$pkgdir" install + cp -f "$srcdir/s6-svscanboot" "$pkgdir/lib/s6/s6-svscanboot" + mkdir -p "$pkgdir/etc/init.d" + cp -f "$srcdir/s6.initd" "$pkgdir/etc/init.d/s6" + chmod 0755 "$pkgdir/lib/s6/s6-svscanboot" "$pkgdir/etc/init.d/s6" +} + +doc() { + default_doc + mkdir -p "$subpkgdir/usr/share/doc" + cp -a "$builddir/doc" "$subpkgdir/usr/share/doc/$pkgname" +} + +sha512sums="59b0a611eaa0bbdeae3133a182e933e14806151d3b8d44c7f4258a63693cf2fa487fce91a4ea37527ed0f52f211a5391b3fcf6202773b0a80d6ce7f3de60ff79 s6-2.7.1.1.tar.gz +871ca1f86b354b7c63ce1d3bef8794627e176f993144ed67a17d0a069f5ac2164d94aba980711f61ad349dcd4fe2bf928195f2121a75e611c9897d73f1af12a0 s6-svscanboot +e7f4fcdc04fc7f72df4419018d048e14f80d50d01ebc284b6d208d6bada3201ca91be0a110930618a26fb0e6bcc1603de01467f6f1dc635c8dcae60f1a0b1b9b s6.initd" diff --git a/system/s6/s6-svscanboot b/system/s6/s6-svscanboot new file mode 100644 index 000000000..2b41d2916 --- /dev/null +++ b/system/s6/s6-svscanboot @@ -0,0 +1,32 @@ +#!/bin/execlineb -S1 + +foreground { redirfd -w 2 /dev/null mkdir -p /run/uncaught-logs } +if { chown catchlog:catchlog /run/uncaught-logs } +if { chmod 2700 /run/uncaught-logs } +foreground { redirfd -w 2 /dev/null mkdir -p ${1}/.s6-svscan ${1}/s6-svscan-log } +foreground { redirfd -w 2 /dev/null ln -sf /bin/false ${1}/.s6-svscan/crash } +if +{ + redirfd -w 1 ${1}/.s6-svscan/finish + heredoc 0 "#!/bin/execlineb -P\ns6-svc -X -- \"${1}/s6-svscan-log\"\n" + cat +} +if { chmod 0755 ${1}/.s6-svscan/finish } +foreground { redirfd -w 2 /dev/null mkfifo -m 0600 ${1}/s6-svscan-log/fifo } +if +{ + redirfd -w 1 ${1}/s6-svscan-log/run + heredoc 0 "#!/bin/execlineb -P +redirfd -w 2 /dev/console +redirfd -rnb 0 fifo +s6-setuidgid catchlog +exec -c +s6-log t /run/uncaught-logs\n" + cat +} +if { chmod 0755 ${1}/s6-svscan-log/run } + +redirfd -r 0 /dev/null +redirfd -wnb 1 ${1}/s6-svscan-log/fifo +fdmove -c 2 1 +s6-svscan -St0 ${1} diff --git a/system/s6/s6.initd b/system/s6/s6.initd new file mode 100644 index 000000000..9f984cc13 --- /dev/null +++ b/system/s6/s6.initd @@ -0,0 +1,15 @@ +#!/sbin/openrc-run +# Copyright 2016 Laurent Bercot +# Distributed under the terms of the ISC License. +# +# We currently start the supervision tree under OpenRC because +# it's easy integration. It's not perfect: the supervision tree +# should ideally be rooted in process 1, and here it's not. +# But it's only temporary: in a later Alpine release, s6-svscan +# will *be* process 1. + +name="s6" +command="/lib/s6/s6-svscanboot" +command_args="/run/service" +pidfile="/run/s6.pid" +start_stop_daemon_args="-b -m -k 022" diff --git a/system/s6/s6.pre-install b/system/s6/s6.pre-install new file mode 100644 index 000000000..19804af6d --- /dev/null +++ b/system/s6/s6.pre-install @@ -0,0 +1,6 @@ +#!/bin/sh + +addgroup -S catchlog 2>/dev/null +adduser -S -D -H -s /bin/false -G catchlog -g catchlog catchlog 2>/dev/null +echo 'Run "rc-update add s6 default" to automatically start a s6 supervision tree on /run/service at boot time.' 1>&2 +exit 0 diff --git a/system/s6/s6.pre-upgrade b/system/s6/s6.pre-upgrade new file mode 100644 index 000000000..19804af6d --- /dev/null +++ b/system/s6/s6.pre-upgrade @@ -0,0 +1,6 @@ +#!/bin/sh + +addgroup -S catchlog 2>/dev/null +adduser -S -D -H -s /bin/false -G catchlog -g catchlog catchlog 2>/dev/null +echo 'Run "rc-update add s6 default" to automatically start a s6 supervision tree on /run/service at boot time.' 1>&2 +exit 0 diff --git a/system/s6/s6.trigger b/system/s6/s6.trigger new file mode 100644 index 000000000..8db8d9a5a --- /dev/null +++ b/system/s6/s6.trigger @@ -0,0 +1,3 @@ +#!/bin/execlineb -P + +s6-svscanctl -aN /run/service -- cgit v1.2.3-70-g09d2