From 430e95ea3388442e45dc012c88940c1e61156278 Mon Sep 17 00:00:00 2001 From: Alex Denes Date: Sat, 10 Dec 2022 12:03:57 +0000 Subject: [PATCH] Fix statekeeping in manager and add nameif for persistent interface naming, fix mount autoimport --- main/nnd-s6-services/APKBUILD | 2 +- main/nnd-s6-services/manage.sh | 25 +++++++++---------- .../rc/nameif/dependencies.d/mdevd.coldplug | 0 main/nnd-s6-services/rc/nameif/run | 12 +++++++++ main/nnd-s6-services/rc/nameif/type | 1 + main/nnd-s6-services/tmpl/mount | 2 +- 6 files changed, 27 insertions(+), 15 deletions(-) create mode 100644 main/nnd-s6-services/rc/nameif/dependencies.d/mdevd.coldplug create mode 100755 main/nnd-s6-services/rc/nameif/run create mode 100644 main/nnd-s6-services/rc/nameif/type diff --git a/main/nnd-s6-services/APKBUILD b/main/nnd-s6-services/APKBUILD index 1e21d2c..32687c6 100644 --- a/main/nnd-s6-services/APKBUILD +++ b/main/nnd-s6-services/APKBUILD @@ -3,7 +3,7 @@ . ../../APKBUILD.template pkgname=nnd-s6-services -pkgver=2.1 +pkgver=2.3 pkgrel=0 pkgdesc="Base services for s6" depends="s6-rc s6-portable-utils s6-linux-utils" diff --git a/main/nnd-s6-services/manage.sh b/main/nnd-s6-services/manage.sh index ba574b1..020a135 100755 --- a/main/nnd-s6-services/manage.sh +++ b/main/nnd-s6-services/manage.sh @@ -18,12 +18,12 @@ alt_ab() { : ${S6_SV_PATH:="$S6_PATH/sv"} # A/B mode, always keep last copy -DB_FRESH_ACT="" -DB_FRESH_NAC="" +DB_FRESH_ACT() { + readlink "$S6_SV_PATH/current" | cut -d. -f2 # if it fails (missing), it will be empty and 'a' will be used as inactive by default +} -cstate() { - DB_FRESH_ACT="$(readlink "$S6_SV_PATH/current" | cut -d. -f2)" # if it fails (missing), it will be empty and 'a' will be used as inactive by default - DB_FRESH_NAC="$(alt_ab "$DB_FRESH_ACT")" +DB_FRESH_NAC() { + alt_ab "$(DB_FRESH_ACT)" } generate() { @@ -32,28 +32,28 @@ generate() { return "$?" fi - # A/B current - if [ -d "$S6_SV_PATH/current.$DB_FRESH_NAC" ]; then - if ! rm -rf "$S6_SV_PATH/current.$DB_FRESH_NAC"; then + local NAC="$(DB_FRESH_NAC)" + if [ -d "$S6_SV_PATH/current.$NAC" ]; then + if ! rm -rf "$S6_SV_PATH/current.$NAC"; then error "Failed to remove inactive database path" return "$?" fi fi - if ! s6-rc-compile "$S6_SV_PATH/current.$DB_FRESH_NAC" "$S6_RC_PATH"; then + if ! s6-rc-compile "$S6_SV_PATH/current.$NAC" "$S6_RC_PATH"; then error "Failed to compile current s6 database" return "$?" fi } swap() { - local new="current.$DB_FRESH_NAC" + local new="current.$(DB_FRESH_NAC)" if ! [ -d "$S6_SV_PATH/$new" ]; then error "There's no database to switch to" return 1 fi if ! s6-rc-db -c "$S6_SV_PATH/$new" check; then - error "Database $DB_FRESH_NAC is invalid" + error "Database $new is invalid" return "$?" fi @@ -64,7 +64,7 @@ swap() { } update() { - if ! s6-rc-update "$S6_SV_PATH/current.$DB_FRESH_ACT"; then + if ! s6-rc-update "$S6_SV_PATH/current.$(DB_FRESH_ACT)"; then error "Failed to update live state of the database" return "$?" fi @@ -159,7 +159,6 @@ removedangle() { cmd="$1" shift -cstate if [ -z "$cmd" ]; then generate || return "$?" swap || return "$?" diff --git a/main/nnd-s6-services/rc/nameif/dependencies.d/mdevd.coldplug b/main/nnd-s6-services/rc/nameif/dependencies.d/mdevd.coldplug new file mode 100644 index 0000000..e69de29 diff --git a/main/nnd-s6-services/rc/nameif/run b/main/nnd-s6-services/rc/nameif/run new file mode 100755 index 0000000..9dbc9e5 --- /dev/null +++ b/main/nnd-s6-services/rc/nameif/run @@ -0,0 +1,12 @@ +#!/bin/execlineb -P +s6-envdir -i /etc/s6/env/path +importas -i PATH PATH + +s6-envdir -I /etc/s6/env/nameif +importas -D /etc/mactab CONFIG CONFIG + +emptyenv + +export PATH $PATH + +exec nameif -c $CONFIG diff --git a/main/nnd-s6-services/rc/nameif/type b/main/nnd-s6-services/rc/nameif/type new file mode 100644 index 0000000..5883cff --- /dev/null +++ b/main/nnd-s6-services/rc/nameif/type @@ -0,0 +1 @@ +longrun diff --git a/main/nnd-s6-services/tmpl/mount b/main/nnd-s6-services/tmpl/mount index 5adafc2..5102328 100755 --- a/main/nnd-s6-services/tmpl/mount +++ b/main/nnd-s6-services/tmpl/mount @@ -13,7 +13,7 @@ export PATH $PATH foreground { mkdir -p $DEST } # Resolve LABEL and UUID -backtick -e -D $SRCPROVIDED SRC { findfs $SRCPROVIDED } +backtick -E -D $SRCPROVIDED SRC { findfs $SRCPROVIDED } ifelse { redirfd -w 1 /dev/null findmnt -t $FSTYPE $DEST