diff options
Diffstat (limited to 'system/s6-linux-init')
-rw-r--r-- | system/s6-linux-init/README | 77 | ||||
-rw-r--r-- | system/s6-linux-init/s6-linux-init.SlackBuild | 149 | ||||
-rw-r--r-- | system/s6-linux-init/s6-linux-init.info | 10 | ||||
-rw-r--r-- | system/s6-linux-init/slack-desc | 19 |
4 files changed, 255 insertions, 0 deletions
diff --git a/system/s6-linux-init/README b/system/s6-linux-init/README new file mode 100644 index 0000000000..1b0669f679 --- /dev/null +++ b/system/s6-linux-init/README @@ -0,0 +1,77 @@ +s6-linux-init is a set of minimalistic tools used to create a s6-based +init system, including a /sbin/init binary, on a Linux kernel. + +The resulting architecture follows the Unix philosophy (one job -> one +tool) as closely as possible, and is fully dedicated to the s6 way of +managing a system: +- s6-svscan runs as process 1 for the whole machine lifetime. +- Every daemon is supervised. +- No logs are ever lost. +- Policy is entirely left to the user. Typically, any service manager + can be run on top of s6-linux-init. + +Nevertheless, the architecture is fully compliant with various empirical +and historical specifications. For instance, it provides: +- utmp management compatible with sysvinit, +- runlevel management, with a configurable default, overridable from the + kernel command line, +- sysvinit-like commands to shut the system down, including a shutdown + command that follows the LSB specification. + +Optional dependencies: +nsss (https://skarnet.org/software/nsss/) (not available at SBo) +utmps (https://skarnet.org/software/utmps/) (not available at SBo) + +NOTE: +s6-linux-init has some skeleton files that will be used to build a +complete s6-based init system. These files will be placed under +/etc/s6-linux-init/skel by default. You can change this by passing +SKEL_DIR=/path/to/directory environment variable to this SlackBuild +script like below: + + SKEL_DIR=/path/to/directory ./s6-linux-init.SlackBuild + +The s6-based init system created by s6-linux-init needs an early boot +tmpfs to work properly. By default, the created init system assumes that +this tmpfs will be mounted on /run. You can change this by passing +TMPFS_DIR=/path/to/directory to the script like below: + + TMPFS_DIR=/path/to/directory ./s6-linux-init.SlackBuild + +At some point in boot time, an instance of s6-svscan will become PID 1, +using $TMPFS_DIR/service as its scan directory by default. This can be +altered by passing SCAN_DIR=path/to/directory to the script, changing +the scan directory to $TMPFS_DIR/path/to/directory. For example, if you +want to change the scan directory to /run/s6/service, you can pass +SCAN_DIR=s6/service to the script like below: + + SCAN_DIR=s6/service ./s6-linux-init.SlackBuild + +Note that we don't use absolute path for SCAN_DIR here, since it is +relative to $TMPFS_DIR, which defaults to /run (as mentioned +previously). + +Upstream recommends building skarnet.org software with static libraries, +as most of skarnet.org software are small enough that shared libraries +are generally not worth using. Therefore, by default, shared libraries +are not built and binaries are linked against the static versions of the +skarnet.org libraries. + +If you want to also build the shared libraries, pass BUILD_SHARED=yes to +the script like below: + + BUILD_SHARED=yes ./s6-linux-init.SlackBuild + +Similarly, to avoid building the static libraries, you can pass +BUILD_STATIC=no to the script. For example, to only build the shared +libraries and not the static ones, you can do something like: + + BUILD_SHARED=yes BUILD_STATIC=no ./s6-linux-init.SlackBuild + +If you just want to build and use skarnet.org software, building only +the static libraries should be sufficient. + +If you want the binaries to be linked against the shared versions of the +skarnet.org libraries, pass LINK_SHARED=yes to the script, i.e., + + LINK_SHARED=yes ./s6-linux-init.SlackBuild diff --git a/system/s6-linux-init/s6-linux-init.SlackBuild b/system/s6-linux-init/s6-linux-init.SlackBuild new file mode 100644 index 0000000000..77ff74dd25 --- /dev/null +++ b/system/s6-linux-init/s6-linux-init.SlackBuild @@ -0,0 +1,149 @@ +#!/bin/bash + +# Slackware build script for s6-linux-init + +# Copyright 2020 Muhammad Mahendra Subrata Depok, Indonesia +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# 20220413 bkw: Modified by SlackBuilds.org, BUILD=2: +# - fix doc permissions. +# - remove useless INSTALL from doc dir. + +cd $(dirname $0) ; CWD=$(pwd) + +PRGNAM=s6-linux-init +VERSION=${VERSION:-1.1.2.0} +BUILD=${BUILD:-1} +TAG=${TAG:-_SBo} +PKGTYPE=${PKGTYPE:-tgz} + +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) ARCH=i586 ;; + arm*) ARCH=arm ;; + *) ARCH=$( uname -m ) ;; + esac +fi + +if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then + echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE" + exit 0 +fi + +TMP=${TMP:-/tmp/SBo} +PKG=$TMP/package-$PRGNAM +OUTPUT=${OUTPUT:-/tmp} + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +# By default, only static libraries are built. If you want to also build the +# shared libraries, just pass BUILD_SHARED=yes to this script. +BUILD_STATIC=${BUILD_STATIC:-yes} +BUILD_SHARED=${BUILD_SHARED:-no} +[ "$BUILD_STATIC" = "no" ] && LIBS_CONF="--disable-static" +[ "$BUILD_SHARED" = "yes" ] && LIBS_CONF="--enable-shared $LIBS_CONF" + +# By default, all binaries are linked against the static versions of the +# skarnet.org libraries. Pass LINK_SHARED=yes to link the binaries against the +# shared versions of the skarnet.org libraries. If you only built the shared +# versions of the skarnet.org libraries, the binaries will be linked against +# shared libraries automatically, as though LINK_SHARED=yes is passed to this +# script. +LINK_SHARED=${LINK_SHARED:-no} +[ "$LINK_SHARED" = "yes" ] && LIBS_CONF="--disable-allstatic $LIBS_CONF" + +# By default, all skeleton files from s6-linux-init are placed under +# /etc/s6-linux-init/skel. Pass SKEL_DIR=/path/to/directory to this script if +# you want to place them somewhere else. +SKEL_DIR=${SKEL_DIR:-/etc/s6-linux-init/skel} + +# By default, a s6-based init system created by s6-linux-init assumes that the +# initial tmpfs will be mounted on /run. Pass TMPFS_DIR=/path/to/directory to +# this script if you want to change it. +TMPFS_DIR=${TMPFS_DIR:-/run} + +# By default, the PID 1 s6-svscan will use $TMPFS_DIR/service as its scan +# directory. Pass SCAN_DIR=path/to/directory to this script if you want to +# change it. Note that $SCAN_DIR will be relative to $TMPFS_DIR, so the final +# path will be $TMPFS_DIR/$SCAN_DIR. +SCAN_DIR=${SCAN_DIR:-service} + +set -e + +rm -rf $PKG +mkdir -p $TMP $PKG $OUTPUT +cd $TMP +rm -rf $PRGNAM-$VERSION +tar xvf $CWD/$PRGNAM-$VERSION.tar.gz +cd $PRGNAM-$VERSION +chown -R root:root . +find -L . \ + \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ + -o -perm 511 \) -exec chmod 755 {} \+ -o \ + \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ + -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+ + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +./configure \ + --dynlibdir=/lib${LIBDIRSUFFIX} \ + --bindir=/sbin \ + --libexecdir=/usr/libexec \ + --libdir=/usr/lib${LIBDIRSUFFIX}/s6-linux-init \ + --includedir=/usr/include \ + --skeldir=${SKEL_DIR} \ + --tmpfsdir=${TMPFS_DIR} \ + --scandir=${SCAN_DIR} \ + --with-sysdeps=/usr/lib${LIBDIRSUFFIX}/skalibs/sysdeps \ + --with-lib=/usr/lib${LIBDIRSUFFIX}/skalibs \ + --with-lib=/usr/lib${LIBDIRSUFFIX}/execline \ + --with-lib=/usr/lib${LIBDIRSUFFIX}/s6 \ + $LIBS_CONF + +make +make strip +make install DESTDIR=$PKG + +# 20220413 bkw: how annoying is this? "chmod 0755" doesn't actually +# remove the setgid bit. why upstream thinks it's a good idea to have +# setgid doc directories, I'll never know (and never care). +chmod a-s doc + +mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION +cp -a AUTHORS COPYING NEWS README doc $PKG/usr/doc/$PRGNAM-$VERSION +cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE diff --git a/system/s6-linux-init/s6-linux-init.info b/system/s6-linux-init/s6-linux-init.info new file mode 100644 index 0000000000..df267ce6fd --- /dev/null +++ b/system/s6-linux-init/s6-linux-init.info @@ -0,0 +1,10 @@ +PRGNAM="s6-linux-init" +VERSION="1.1.2.0" +HOMEPAGE="https://skarnet.org/software/s6-linux-init/" +DOWNLOAD="https://skarnet.org/software/s6-linux-init/s6-linux-init-1.1.2.0.tar.gz" +MD5SUM="872b2a839330c4f2893db8f15482fa77" +DOWNLOAD_x86_64="" +MD5SUM_x86_64="" +REQUIRES="s6" +MAINTAINER="Muhammad Mahendra Subrata" +EMAIL="mumahendras3@gmail.com" diff --git a/system/s6-linux-init/slack-desc b/system/s6-linux-init/slack-desc new file mode 100644 index 0000000000..2df638d9b3 --- /dev/null +++ b/system/s6-linux-init/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. +# Line up the first '|' above the ':' following the base package name, and +# the '|' on the right side marks the last column you can put a character in. +# You must make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':' except on otherwise blank lines. + + |-----handy-ruler------------------------------------------------------| +s6-linux-init: s6-linux-init (a set of small tools to create an s6-based init system) +s6-linux-init: +s6-linux-init: s6-linux-init is a set of minimalistic tools used to create an +s6-linux-init: s6-based init system, including a /sbin/init binary, on a Linux +s6-linux-init: kernel. The resulting architecture follows the Unix philosophy (one +s6-linux-init: job -> one tool) as closely as possible, and is fully dedicated to +s6-linux-init: the s6 way of managing a system while still be fully compliant with +s6-linux-init: various empirical and historical specifications. +s6-linux-init: +s6-linux-init: Homepage: https://skarnet.org/software/s6-linux-init/ +s6-linux-init: |