diff options
author | Muhammad Mahendra Subrata <mumahendras3@gmail.com> | 2020-01-16 23:01:43 +0700 |
---|---|---|
committer | Willy Sudiarto Raharjo <willysr@slackbuilds.org> | 2020-01-16 23:01:43 +0700 |
commit | aebd921950b034c144da10c237a2113e1f038aae (patch) | |
tree | 5cad62fd2247deaee131bb870bf991f102081455 /system/s6-linux-init | |
parent | 8d4e92af1b93b658db05cf44bedb6c01670dffc9 (diff) |
system/s6-linux-init: Added (tools to create s6-based init system).
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
Diffstat (limited to 'system/s6-linux-init')
-rw-r--r-- | system/s6-linux-init/README | 62 | ||||
-rw-r--r-- | system/s6-linux-init/s6-linux-init.SlackBuild | 131 | ||||
-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, 222 insertions, 0 deletions
diff --git a/system/s6-linux-init/README b/system/s6-linux-init/README new file mode 100644 index 000000000000..387a7d31820c --- /dev/null +++ b/system/s6-linux-init/README @@ -0,0 +1,62 @@ +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 the +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 the SlackBuild +script like below: + + SKEL_DIR=/path/to/directory ./s6-linux-init.SlackBuild + +The init system created by s6-linux-init will need an early boot tmpfs +in order to work properly. By default, s6-linux-init will assume that +this initial tmpfs will be mounted on /run. You can change this by +passing TMPFS_DIR=/path/to/directory to the script + +Upstream recommends building skarnet.org softwares with static libraries +as most of skarnet.org softwares are small enough that using 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 softwares, 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. 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 000000000000..c3dbe5125d47 --- /dev/null +++ b/system/s6-linux-init/s6-linux-init.SlackBuild @@ -0,0 +1,131 @@ +#!/bin/sh + +# 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. + +PRGNAM=s6-linux-init +VERSION=${VERSION:-1.0.3.1} +BUILD=${BUILD:-1} +TAG=${TAG:-_SBo} + +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) ARCH=i586 ;; + arm*) ARCH=arm ;; + *) ARCH=$( uname -m ) ;; + esac +fi + +CWD=$(pwd) +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 need to build the shared libraries, just pass +# BUILD_SHARED=yes to this script +BUILD_STATIC=${BUILD_STATIC:-yes} +BUILD_SHARED=${BUILD_SHARED:-no} + +if [ "$BUILD_STATIC" = "no" ]; then + LIBS_CONF="--disable-static" +fi + +if [ "$BUILD_SHARED" = "yes" ]; then + LIBS_CONF="--enable-shared $LIBS_CONF" +fi + +# 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 +# Also, 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} + +if [ "$LINK_SHARED" = "yes" ]; then + LIBS_CONF="--disable-allstatic $LIBS_CONF" +fi + +# By default, all the 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 it somewhere else +SKEL_DIR=${SKEL_DIR:-/etc/s6-linux-init/skel} + +# By default, s6-linux-init will assume that the initial tmpfs is mounted on /run +# Pass TMPFS_DIR=/path/to/directory to this script if you want to change it +TMPFS_DIR=${TMPFS_DIR:-/run} + +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=/bin \ + --libexecdir=/usr/libexec \ + --libdir=/usr/lib${LIBDIRSUFFIX}/s6-linux-init \ + --includedir=/usr/include \ + --skeldir=${SKEL_DIR} \ + --tmpfsdir=${TMPFS_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 + +mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION +cp -a AUTHORS COPYING INSTALL 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:-tgz} 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 000000000000..754d95ec6f69 --- /dev/null +++ b/system/s6-linux-init/s6-linux-init.info @@ -0,0 +1,10 @@ +PRGNAM="s6-linux-init" +VERSION="1.0.3.1" +HOMEPAGE="https://skarnet.org/software/s6-linux-init/" +DOWNLOAD="https://skarnet.org/software/s6-linux-init/s6-linux-init-1.0.3.1.tar.gz" +MD5SUM="f48f29c3466aa313d4c9fc633b1c291b" +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 000000000000..f427fdb0ffe1 --- /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 (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: |