Harald Hoyer b7366e
From c08bc8109d4c43beacfa4bcdc20a356102da6d02 Mon Sep 17 00:00:00 2001
Harald Hoyer b7366e
From: Harald Hoyer <harald@redhat.com>
Harald Hoyer b7366e
Date: Mon, 17 May 2021 11:00:22 +0200
Harald Hoyer b7366e
Subject: [PATCH] fix(base): split out `dracut-dev-lib.sh`
Harald Hoyer b7366e
Harald Hoyer b7366e
To share the `wait_for_dev` function and use it without side effects on
Harald Hoyer b7366e
install time, split out the needed functions in an extra library.
Harald Hoyer b7366e
---
Harald Hoyer b7366e
 modules.d/99base/dracut-dev-lib.sh | 119 +++++++++++++++++++++++++++++++++++++
Harald Hoyer b7366e
 modules.d/99base/dracut-lib.sh     | 115 +----------------------------------
Harald Hoyer b7366e
 modules.d/99base/module-setup.sh   |   9 ++-
Harald Hoyer b7366e
 test/TEST-01-BASIC/test.sh         |   1 +
Harald Hoyer b7366e
 test/TEST-02-SYSTEMD/test.sh       |   1 +
Harald Hoyer b7366e
 test/TEST-03-USR-MOUNT/test.sh     |   1 +
Harald Hoyer b7366e
 test/TEST-04-FULL-SYSTEMD/test.sh  |   1 +
Harald Hoyer b7366e
 test/TEST-10-RAID/test.sh          |   1 +
Harald Hoyer b7366e
 test/TEST-11-LVM/test.sh           |   1 +
Harald Hoyer b7366e
 test/TEST-12-RAID-DEG/test.sh      |   1 +
Harald Hoyer b7366e
 test/TEST-13-ENC-RAID-LVM/test.sh  |   1 +
Harald Hoyer b7366e
 test/TEST-14-IMSM/test.sh          |   1 +
Harald Hoyer b7366e
 test/TEST-15-BTRFSRAID/test.sh     |   1 +
Harald Hoyer b7366e
 test/TEST-16-DMSQUASH/test.sh      |   1 +
Harald Hoyer b7366e
 test/TEST-17-LVM-THIN/test.sh      |   1 +
Harald Hoyer b7366e
 test/TEST-20-NFS/test.sh           |   1 +
Harald Hoyer b7366e
 test/TEST-30-ISCSI/test.sh         |   1 +
Harald Hoyer b7366e
 test/TEST-35-ISCSI-MULTI/test.sh   |   1 +
Harald Hoyer b7366e
 test/TEST-40-NBD/test.sh           |   2 +
Harald Hoyer b7366e
 test/TEST-50-MULTINIC/test.sh      |   1 +
Harald Hoyer b7366e
 test/TEST-98-GETARG/test.sh        |   2 +
Harald Hoyer b7366e
 21 files changed, 145 insertions(+), 118 deletions(-)
Harald Hoyer b7366e
Harald Hoyer b7366e
diff --git a/modules.d/99base/dracut-dev-lib.sh b/modules.d/99base/dracut-dev-lib.sh
Harald Hoyer b7366e
new file mode 100755
Harald Hoyer b7366e
index 00000000..5083f4f2
Harald Hoyer b7366e
--- /dev/null
Harald Hoyer b7366e
+++ b/modules.d/99base/dracut-dev-lib.sh
Harald Hoyer b7366e
@@ -0,0 +1,119 @@
Harald Hoyer b7366e
+#!/bin/sh
Harald Hoyer b7366e
+
Harald Hoyer b7366e
+# get a systemd-compatible unit name from a path
Harald Hoyer b7366e
+# (mimicks unit_name_from_path_instance())
Harald Hoyer b7366e
+dev_unit_name() {
Harald Hoyer b7366e
+    local dev="$1"
Harald Hoyer b7366e
+
Harald Hoyer b7366e
+    if command -v systemd-escape > /dev/null; then
Harald Hoyer b7366e
+        systemd-escape -p -- "$dev"
Harald Hoyer b7366e
+        return $?
Harald Hoyer b7366e
+    fi
Harald Hoyer b7366e
+
Harald Hoyer b7366e
+    if [ "$dev" = "/" -o -z "$dev" ]; then
Harald Hoyer b7366e
+        printf -- "-"
Harald Hoyer b7366e
+        return 0
Harald Hoyer b7366e
+    fi
Harald Hoyer b7366e
+
Harald Hoyer b7366e
+    dev="${1%%/}"
Harald Hoyer b7366e
+    dev="${dev##/}"
Harald Hoyer b7366e
+    # shellcheck disable=SC1003
Harald Hoyer b7366e
+    dev="$(str_replace "$dev" '\' '\x5c')"
Harald Hoyer b7366e
+    dev="$(str_replace "$dev" '-' '\x2d')"
Harald Hoyer b7366e
+    if [ "${dev##.}" != "$dev" ]; then
Harald Hoyer b7366e
+        dev="\x2e${dev##.}"
Harald Hoyer b7366e
+    fi
Harald Hoyer b7366e
+    dev="$(str_replace "$dev" '/' '-')"
Harald Hoyer b7366e
+
Harald Hoyer b7366e
+    printf -- "%s" "$dev"
Harald Hoyer b7366e
+}
Harald Hoyer b7366e
+
Harald Hoyer b7366e
+# set_systemd_timeout_for_dev [-n] <dev> [<timeout>]
Harald Hoyer b7366e
+# Set 'rd.timeout' as the systemd timeout for <dev>
Harald Hoyer b7366e
+set_systemd_timeout_for_dev() {
Harald Hoyer b7366e
+    local _name
Harald Hoyer b7366e
+    local _needreload
Harald Hoyer b7366e
+    local _noreload
Harald Hoyer b7366e
+    local _timeout
Harald Hoyer b7366e
+
Harald Hoyer b7366e
+    [ -z "$DRACUT_SYSTEMD" ] && return 0
Harald Hoyer b7366e
+
Harald Hoyer b7366e
+    if [ "$1" = "-n" ]; then
Harald Hoyer b7366e
+        _noreload=1
Harald Hoyer b7366e
+        shift
Harald Hoyer b7366e
+    fi
Harald Hoyer b7366e
+
Harald Hoyer b7366e
+    if [ -n "$2" ]; then
Harald Hoyer b7366e
+        _timeout="$2"
Harald Hoyer b7366e
+    else
Harald Hoyer b7366e
+        _timeout=$(getarg rd.timeout)
Harald Hoyer b7366e
+    fi
Harald Hoyer b7366e
+
Harald Hoyer b7366e
+    _timeout=${_timeout:-0}
Harald Hoyer b7366e
+
Harald Hoyer b7366e
+    _name=$(dev_unit_name "$1")
Harald Hoyer b7366e
+    if ! [ -L "${PREFIX}/etc/systemd/system/initrd.target.wants/${_name}.device" ]; then
Harald Hoyer b7366e
+        [ -d "${PREFIX}"/etc/systemd/system/initrd.target.wants ] || mkdir -p "${PREFIX}"/etc/systemd/system/initrd.target.wants
Harald Hoyer b7366e
+        ln -s ../"${_name}".device "${PREFIX}/etc/systemd/system/initrd.target.wants/${_name}.device"
Harald Hoyer b7366e
+        type mark_hostonly > /dev/null 2>&1 && mark_hostonly /etc/systemd/system/initrd.target.wants/"${_name}".device
Harald Hoyer b7366e
+        _needreload=1
Harald Hoyer b7366e
+    fi
Harald Hoyer b7366e
+
Harald Hoyer b7366e
+    if ! [ -f "${PREFIX}/etc/systemd/system/${_name}.device.d/timeout.conf" ]; then
Harald Hoyer b7366e
+        mkdir -p "${PREFIX}/etc/systemd/system/${_name}.device.d"
Harald Hoyer b7366e
+        {
Harald Hoyer b7366e
+            echo "[Unit]"
Harald Hoyer b7366e
+            echo "JobTimeoutSec=$_timeout"
Harald Hoyer b7366e
+            echo "JobRunningTimeoutSec=$_timeout"
Harald Hoyer b7366e
+        } > "${PREFIX}/etc/systemd/system/${_name}.device.d/timeout.conf"
Harald Hoyer b7366e
+        type mark_hostonly > /dev/null 2>&1 && mark_hostonly /etc/systemd/system/"${_name}".device.d/timeout.conf
Harald Hoyer b7366e
+        _needreload=1
Harald Hoyer b7366e
+    fi
Harald Hoyer b7366e
+
Harald Hoyer b7366e
+    if [ -z "$PREFIX" ] && [ "$_needreload" = 1 ] && [ -z "$_noreload" ]; then
Harald Hoyer b7366e
+        /sbin/initqueue --onetime --unique --name daemon-reload systemctl daemon-reload
Harald Hoyer b7366e
+    fi
Harald Hoyer b7366e
+}
Harald Hoyer b7366e
+
Harald Hoyer b7366e
+# wait_for_dev <dev> [<timeout>]
Harald Hoyer b7366e
+#
Harald Hoyer b7366e
+# Installs a initqueue-finished script,
Harald Hoyer b7366e
+# which will cause the main loop only to exit,
Harald Hoyer b7366e
+# if the device <dev> is recognized by the system.
Harald Hoyer b7366e
+wait_for_dev() {
Harald Hoyer b7366e
+    local _name
Harald Hoyer b7366e
+    local _noreload
Harald Hoyer b7366e
+
Harald Hoyer b7366e
+    if [ "$1" = "-n" ]; then
Harald Hoyer b7366e
+        _noreload=-n
Harald Hoyer b7366e
+        shift
Harald Hoyer b7366e
+    fi
Harald Hoyer b7366e
+
Harald Hoyer b7366e
+    _name="$(str_replace "$1" '/' '\x2f')"
Harald Hoyer b7366e
+
Harald Hoyer b7366e
+    type mark_hostonly > /dev/null 2>&1 && mark_hostonly "$hookdir/initqueue/finished/devexists-${_name}.sh"
Harald Hoyer b7366e
+
Harald Hoyer b7366e
+    [ -e "${PREFIX}$hookdir/initqueue/finished/devexists-${_name}.sh" ] && return 0
Harald Hoyer b7366e
+
Harald Hoyer b7366e
+    printf '[ -e "%s" ]\n' "$1" \
Harald Hoyer b7366e
+        >> "${PREFIX}$hookdir/initqueue/finished/devexists-${_name}.sh"
Harald Hoyer b7366e
+    {
Harald Hoyer b7366e
+        printf '[ -e "%s" ] || ' "$1"
Harald Hoyer b7366e
+        printf 'warn "\"%s\" does not exist"\n' "$1"
Harald Hoyer b7366e
+    } >> "${PREFIX}$hookdir/emergency/80-${_name}.sh"
Harald Hoyer b7366e
+
Harald Hoyer b7366e
+    set_systemd_timeout_for_dev $_noreload "$@"
Harald Hoyer b7366e
+}
Harald Hoyer b7366e
+
Harald Hoyer b7366e
+cancel_wait_for_dev() {
Harald Hoyer b7366e
+    local _name
Harald Hoyer b7366e
+    _name="$(str_replace "$1" '/' '\x2f')"
Harald Hoyer b7366e
+    rm -f -- "$hookdir/initqueue/finished/devexists-${_name}.sh"
Harald Hoyer b7366e
+    rm -f -- "$hookdir/emergency/80-${_name}.sh"
Harald Hoyer b7366e
+    if [ -n "$DRACUT_SYSTEMD" ]; then
Harald Hoyer b7366e
+        _name=$(dev_unit_name "$1")
Harald Hoyer b7366e
+        rm -f -- "${PREFIX}/etc/systemd/system/initrd.target.wants/${_name}.device"
Harald Hoyer b7366e
+        rm -f -- "${PREFIX}/etc/systemd/system/${_name}.device.d/timeout.conf"
Harald Hoyer b7366e
+        /sbin/initqueue --onetime --unique --name daemon-reload systemctl daemon-reload
Harald Hoyer b7366e
+    fi
Harald Hoyer b7366e
+}
Harald Hoyer b7366e
diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh
Harald Hoyer b7366e
index c35658fa..dc94e93f 100755
Harald Hoyer b7366e
--- a/modules.d/99base/dracut-lib.sh
Harald Hoyer b7366e
+++ b/modules.d/99base/dracut-lib.sh
Harald Hoyer b7366e
@@ -1,5 +1,7 @@
Harald Hoyer b7366e
 #!/bin/sh
Harald Hoyer b7366e
 
Harald Hoyer b7366e
+type wait_for_dev > /dev/null 2>&1 || . /lib/dracut-dev-lib.sh
Harald Hoyer b7366e
+
Harald Hoyer b7366e
 export DRACUT_SYSTEMD
Harald Hoyer b7366e
 export NEWROOT
Harald Hoyer b7366e
 if [ -n "$NEWROOT" ]; then
Harald Hoyer b7366e
@@ -838,119 +840,6 @@ wait_for_mount() {
Harald Hoyer b7366e
     } >> "$hookdir/emergency/90-${_name}.sh"
Harald Hoyer b7366e
 }
Harald Hoyer b7366e
 
Harald Hoyer b7366e
-# get a systemd-compatible unit name from a path
Harald Hoyer b7366e
-# (mimicks unit_name_from_path_instance())
Harald Hoyer b7366e
-dev_unit_name() {
Harald Hoyer b7366e
-    local dev="$1"
Harald Hoyer b7366e
-
Harald Hoyer b7366e
-    if command -v systemd-escape > /dev/null; then
Harald Hoyer b7366e
-        systemd-escape -p -- "$dev"
Harald Hoyer b7366e
-        return
Harald Hoyer b7366e
-    fi
Harald Hoyer b7366e
-
Harald Hoyer b7366e
-    if [ "$dev" = "/" -o -z "$dev" ]; then
Harald Hoyer b7366e
-        printf -- "-"
Harald Hoyer b7366e
-        exit 0
Harald Hoyer b7366e
-    fi
Harald Hoyer b7366e
-
Harald Hoyer b7366e
-    dev="${1%%/}"
Harald Hoyer b7366e
-    dev="${dev##/}"
Harald Hoyer b7366e
-    # shellcheck disable=SC1003
Harald Hoyer b7366e
-    dev="$(str_replace "$dev" '\' '\x5c')"
Harald Hoyer b7366e
-    dev="$(str_replace "$dev" '-' '\x2d')"
Harald Hoyer b7366e
-    if [ "${dev##.}" != "$dev" ]; then
Harald Hoyer b7366e
-        dev="\x2e${dev##.}"
Harald Hoyer b7366e
-    fi
Harald Hoyer b7366e
-    dev="$(str_replace "$dev" '/' '-')"
Harald Hoyer b7366e
-
Harald Hoyer b7366e
-    printf -- "%s" "$dev"
Harald Hoyer b7366e
-}
Harald Hoyer b7366e
-
Harald Hoyer b7366e
-# set_systemd_timeout_for_dev <dev>
Harald Hoyer b7366e
-# Set 'rd.timeout' as the systemd timeout for <dev>
Harald Hoyer b7366e
-
Harald Hoyer b7366e
-set_systemd_timeout_for_dev() {
Harald Hoyer b7366e
-    local _name
Harald Hoyer b7366e
-    local _needreload
Harald Hoyer b7366e
-    local _noreload
Harald Hoyer b7366e
-    local _timeout
Harald Hoyer b7366e
-
Harald Hoyer b7366e
-    if [ "$1" = "-n" ]; then
Harald Hoyer b7366e
-        _noreload=1
Harald Hoyer b7366e
-        shift
Harald Hoyer b7366e
-    fi
Harald Hoyer b7366e
-
Harald Hoyer b7366e
-    _timeout=$(getarg rd.timeout)
Harald Hoyer b7366e
-    _timeout=${_timeout:-0}
Harald Hoyer b7366e
-
Harald Hoyer b7366e
-    if [ -n "$DRACUT_SYSTEMD" ]; then
Harald Hoyer b7366e
-        _name=$(dev_unit_name "$1")
Harald Hoyer b7366e
-        if ! [ -L "${PREFIX}/etc/systemd/system/initrd.target.wants/${_name}.device" ]; then
Harald Hoyer b7366e
-            [ -d "${PREFIX}"/etc/systemd/system/initrd.target.wants ] || mkdir -p "${PREFIX}"/etc/systemd/system/initrd.target.wants
Harald Hoyer b7366e
-            ln -s ../"${_name}".device "${PREFIX}/etc/systemd/system/initrd.target.wants/${_name}.device"
Harald Hoyer b7366e
-            type mark_hostonly > /dev/null 2>&1 && mark_hostonly /etc/systemd/system/initrd.target.wants/"${_name}".device
Harald Hoyer b7366e
-            _needreload=1
Harald Hoyer b7366e
-        fi
Harald Hoyer b7366e
-
Harald Hoyer b7366e
-        if ! [ -f "${PREFIX}/etc/systemd/system/${_name}.device.d/timeout.conf" ]; then
Harald Hoyer b7366e
-            mkdir -p "${PREFIX}/etc/systemd/system/${_name}.device.d"
Harald Hoyer b7366e
-            {
Harald Hoyer b7366e
-                echo "[Unit]"
Harald Hoyer b7366e
-                echo "JobTimeoutSec=$_timeout"
Harald Hoyer b7366e
-                echo "JobRunningTimeoutSec=$_timeout"
Harald Hoyer b7366e
-            } > "${PREFIX}/etc/systemd/system/${_name}.device.d/timeout.conf"
Harald Hoyer b7366e
-            type mark_hostonly > /dev/null 2>&1 && mark_hostonly /etc/systemd/system/"${_name}".device.d/timeout.conf
Harald Hoyer b7366e
-            _needreload=1
Harald Hoyer b7366e
-        fi
Harald Hoyer b7366e
-
Harald Hoyer b7366e
-        if [ -z "$PREFIX" ] && [ "$_needreload" = 1 ] && [ -z "$_noreload" ]; then
Harald Hoyer b7366e
-            /sbin/initqueue --onetime --unique --name daemon-reload systemctl daemon-reload
Harald Hoyer b7366e
-        fi
Harald Hoyer b7366e
-    fi
Harald Hoyer b7366e
-}
Harald Hoyer b7366e
-# wait_for_dev <dev>
Harald Hoyer b7366e
-#
Harald Hoyer b7366e
-# Installs a initqueue-finished script,
Harald Hoyer b7366e
-# which will cause the main loop only to exit,
Harald Hoyer b7366e
-# if the device <dev> is recognized by the system.
Harald Hoyer b7366e
-wait_for_dev() {
Harald Hoyer b7366e
-    local _name
Harald Hoyer b7366e
-    local _noreload
Harald Hoyer b7366e
-
Harald Hoyer b7366e
-    if [ "$1" = "-n" ]; then
Harald Hoyer b7366e
-        _noreload=-n
Harald Hoyer b7366e
-        shift
Harald Hoyer b7366e
-    fi
Harald Hoyer b7366e
-
Harald Hoyer b7366e
-    _name="$(str_replace "$1" '/' '\x2f')"
Harald Hoyer b7366e
-
Harald Hoyer b7366e
-    type mark_hostonly > /dev/null 2>&1 && mark_hostonly "$hookdir/initqueue/finished/devexists-${_name}.sh"
Harald Hoyer b7366e
-
Harald Hoyer b7366e
-    [ -e "${PREFIX}$hookdir/initqueue/finished/devexists-${_name}.sh" ] && return 0
Harald Hoyer b7366e
-
Harald Hoyer b7366e
-    printf '[ -e "%s" ]\n' "$1" \
Harald Hoyer b7366e
-        >> "${PREFIX}$hookdir/initqueue/finished/devexists-${_name}.sh"
Harald Hoyer b7366e
-    {
Harald Hoyer b7366e
-        printf '[ -e "%s" ] || ' "$1"
Harald Hoyer b7366e
-        printf 'warn "\"%s\" does not exist"\n' "$1"
Harald Hoyer b7366e
-    } >> "${PREFIX}$hookdir/emergency/80-${_name}.sh"
Harald Hoyer b7366e
-
Harald Hoyer b7366e
-    set_systemd_timeout_for_dev $_noreload "$1"
Harald Hoyer b7366e
-}
Harald Hoyer b7366e
-
Harald Hoyer b7366e
-cancel_wait_for_dev() {
Harald Hoyer b7366e
-    local _name
Harald Hoyer b7366e
-    _name="$(str_replace "$1" '/' '\x2f')"
Harald Hoyer b7366e
-    rm -f -- "$hookdir/initqueue/finished/devexists-${_name}.sh"
Harald Hoyer b7366e
-    rm -f -- "$hookdir/emergency/80-${_name}.sh"
Harald Hoyer b7366e
-    if [ -n "$DRACUT_SYSTEMD" ]; then
Harald Hoyer b7366e
-        _name=$(dev_unit_name "$1")
Harald Hoyer b7366e
-        rm -f -- "${PREFIX}/etc/systemd/system/initrd.target.wants/${_name}.device"
Harald Hoyer b7366e
-        rm -f -- "${PREFIX}/etc/systemd/system/${_name}.device.d/timeout.conf"
Harald Hoyer b7366e
-        /sbin/initqueue --onetime --unique --name daemon-reload systemctl daemon-reload
Harald Hoyer b7366e
-    fi
Harald Hoyer b7366e
-}
Harald Hoyer b7366e
-
Harald Hoyer b7366e
 killproc() {
Harald Hoyer b7366e
     debug_off
Harald Hoyer b7366e
     local _exe
Harald Hoyer b7366e
diff --git a/modules.d/99base/module-setup.sh b/modules.d/99base/module-setup.sh
Harald Hoyer b7366e
index a52c643e..7eb0a277 100755
Harald Hoyer b7366e
--- a/modules.d/99base/module-setup.sh
Harald Hoyer b7366e
+++ b/modules.d/99base/module-setup.sh
Harald Hoyer b7366e
@@ -50,6 +50,7 @@ install() {
Harald Hoyer b7366e
     mkdir -p "${initdir}"/tmp
Harald Hoyer b7366e
 
Harald Hoyer b7366e
     inst_simple "$moddir/dracut-lib.sh" "/lib/dracut-lib.sh"
Harald Hoyer b7366e
+    inst_simple "$moddir/dracut-dev-lib.sh" "/lib/dracut-dev-lib.sh"
Harald Hoyer b7366e
     mkdir -p "${initdir}"/var
Harald Hoyer b7366e
 
Harald Hoyer b7366e
     if ! dracut_module_included "systemd"; then
Harald Hoyer b7366e
@@ -117,10 +118,8 @@ install() {
Harald Hoyer b7366e
                 fi
Harald Hoyer b7366e
                 export PREFIX="$initdir"
Harald Hoyer b7366e
 
Harald Hoyer b7366e
-                # suppress getarg for `rd.memdebug`
Harald Hoyer b7366e
-                export DEBUG_MEM_LEVEL=0
Harald Hoyer b7366e
-                # shellcheck source=dracut-lib.sh
Harald Hoyer b7366e
-                . "$moddir/dracut-lib.sh"
Harald Hoyer b7366e
+                # shellcheck source=dracut-dev-lib.sh
Harald Hoyer b7366e
+                . "$moddir/dracut-dev-lib.sh"
Harald Hoyer b7366e
 
Harald Hoyer b7366e
                 for _dev in "${host_devs[@]}"; do
Harald Hoyer b7366e
                     for _dev2 in "${root_devs[@]}"; do
Harald Hoyer b7366e
@@ -137,7 +136,7 @@ install() {
Harald Hoyer b7366e
                     _pdev=$(get_persistent_dev "$_dev")
Harald Hoyer b7366e
 
Harald Hoyer b7366e
                     case "$_pdev" in
Harald Hoyer b7366e
-                        /dev/?*) wait_for_dev "$_pdev" ;;
Harald Hoyer b7366e
+                        /dev/?*) wait_for_dev "$_pdev" 0 ;;
Harald Hoyer b7366e
                         *) ;;
Harald Hoyer b7366e
                     esac
Harald Hoyer b7366e
                 done
Harald Hoyer b7366e
diff --git a/test/TEST-01-BASIC/test.sh b/test/TEST-01-BASIC/test.sh
Harald Hoyer b7366e
index 7ac2a8b9..012f2e5a 100755
Harald Hoyer b7366e
--- a/test/TEST-01-BASIC/test.sh
Harald Hoyer b7366e
+++ b/test/TEST-01-BASIC/test.sh
Harald Hoyer b7366e
@@ -49,6 +49,7 @@ test_setup() {
Harald Hoyer b7366e
         inst "$basedir/modules.d/35network-legacy/ifup.sh" "/sbin/ifup"
Harald Hoyer b7366e
 
Harald Hoyer b7366e
         inst_simple "${basedir}/modules.d/99base/dracut-lib.sh" "/lib/dracut-lib.sh"
Harald Hoyer b7366e
+        inst_simple "${basedir}/modules.d/99base/dracut-dev-lib.sh" "/lib/dracut-dev-lib.sh"
Harald Hoyer b7366e
         inst_binary "${basedir}/dracut-util" "/usr/bin/dracut-util"
Harald Hoyer b7366e
         ln -s dracut-util "${initdir}/usr/bin/dracut-getarg"
Harald Hoyer b7366e
         ln -s dracut-util "${initdir}/usr/bin/dracut-getargs"
Harald Hoyer b7366e
diff --git a/test/TEST-02-SYSTEMD/test.sh b/test/TEST-02-SYSTEMD/test.sh
Harald Hoyer b7366e
index a8185b09..8b6b5930 100755
Harald Hoyer b7366e
--- a/test/TEST-02-SYSTEMD/test.sh
Harald Hoyer b7366e
+++ b/test/TEST-02-SYSTEMD/test.sh
Harald Hoyer b7366e
@@ -48,6 +48,7 @@ test_setup() {
Harald Hoyer b7366e
         inst "$basedir/modules.d/35network-legacy/ifup.sh" "/sbin/ifup"
Harald Hoyer b7366e
 
Harald Hoyer b7366e
         inst_simple "${basedir}/modules.d/99base/dracut-lib.sh" "/lib/dracut-lib.sh"
Harald Hoyer b7366e
+        inst_simple "${basedir}/modules.d/99base/dracut-dev-lib.sh" "/lib/dracut-dev-lib.sh"
Harald Hoyer b7366e
         inst_binary "${basedir}/dracut-util" "/usr/bin/dracut-util"
Harald Hoyer b7366e
         ln -s dracut-util "${initdir}/usr/bin/dracut-getarg"
Harald Hoyer b7366e
         ln -s dracut-util "${initdir}/usr/bin/dracut-getargs"
Harald Hoyer b7366e
diff --git a/test/TEST-03-USR-MOUNT/test.sh b/test/TEST-03-USR-MOUNT/test.sh
Harald Hoyer b7366e
index 13361173..3bb7fab7 100755
Harald Hoyer b7366e
--- a/test/TEST-03-USR-MOUNT/test.sh
Harald Hoyer b7366e
+++ b/test/TEST-03-USR-MOUNT/test.sh
Harald Hoyer b7366e
@@ -69,6 +69,7 @@ test_setup() {
Harald Hoyer b7366e
         inst "$basedir/modules.d/35network-legacy/ifup.sh" "/sbin/ifup"
Harald Hoyer b7366e
 
Harald Hoyer b7366e
         inst_simple "${basedir}/modules.d/99base/dracut-lib.sh" "/lib/dracut-lib.sh"
Harald Hoyer b7366e
+        inst_simple "${basedir}/modules.d/99base/dracut-dev-lib.sh" "/lib/dracut-dev-lib.sh"
Harald Hoyer b7366e
         inst_binary "${basedir}/dracut-util" "/usr/bin/dracut-util"
Harald Hoyer b7366e
         ln -s dracut-util "${initdir}/usr/bin/dracut-getarg"
Harald Hoyer b7366e
         ln -s dracut-util "${initdir}/usr/bin/dracut-getargs"
Harald Hoyer b7366e
diff --git a/test/TEST-04-FULL-SYSTEMD/test.sh b/test/TEST-04-FULL-SYSTEMD/test.sh
Harald Hoyer b7366e
index 9b8fab24..38cb1464 100755
Harald Hoyer b7366e
--- a/test/TEST-04-FULL-SYSTEMD/test.sh
Harald Hoyer b7366e
+++ b/test/TEST-04-FULL-SYSTEMD/test.sh
Harald Hoyer b7366e
@@ -93,6 +93,7 @@ test_setup() {
Harald Hoyer b7366e
         inst_multiple -o {,/usr}/lib/systemd/system/"dracut*"
Harald Hoyer b7366e
 
Harald Hoyer b7366e
         inst_simple "${basedir}/modules.d/99base/dracut-lib.sh" "/lib/dracut-lib.sh"
Harald Hoyer b7366e
+        inst_simple "${basedir}/modules.d/99base/dracut-dev-lib.sh" "/lib/dracut-dev-lib.sh"
Harald Hoyer b7366e
         inst_binary "${basedir}/dracut-util" "/usr/bin/dracut-util"
Harald Hoyer b7366e
         ln -s dracut-util "${initdir}/usr/bin/dracut-getarg"
Harald Hoyer b7366e
         ln -s dracut-util "${initdir}/usr/bin/dracut-getargs"
Harald Hoyer b7366e
diff --git a/test/TEST-10-RAID/test.sh b/test/TEST-10-RAID/test.sh
Harald Hoyer b7366e
index f03d2952..918d2a71 100755
Harald Hoyer b7366e
--- a/test/TEST-10-RAID/test.sh
Harald Hoyer b7366e
+++ b/test/TEST-10-RAID/test.sh
Harald Hoyer b7366e
@@ -46,6 +46,7 @@ test_setup() {
Harald Hoyer b7366e
         inst_multiple -o ${_terminfodir}/l/linux
Harald Hoyer b7366e
 
Harald Hoyer b7366e
         inst_simple "${basedir}/modules.d/99base/dracut-lib.sh" "/lib/dracut-lib.sh"
Harald Hoyer b7366e
+        inst_simple "${basedir}/modules.d/99base/dracut-dev-lib.sh" "/lib/dracut-dev-lib.sh"
Harald Hoyer b7366e
         inst_binary "${basedir}/dracut-util" "/usr/bin/dracut-util"
Harald Hoyer b7366e
         ln -s dracut-util "${initdir}/usr/bin/dracut-getarg"
Harald Hoyer b7366e
         ln -s dracut-util "${initdir}/usr/bin/dracut-getargs"
Harald Hoyer b7366e
diff --git a/test/TEST-11-LVM/test.sh b/test/TEST-11-LVM/test.sh
Harald Hoyer b7366e
index e44b21ff..12384c09 100755
Harald Hoyer b7366e
--- a/test/TEST-11-LVM/test.sh
Harald Hoyer b7366e
+++ b/test/TEST-11-LVM/test.sh
Harald Hoyer b7366e
@@ -50,6 +50,7 @@ test_setup() {
Harald Hoyer b7366e
         inst "$basedir/modules.d/35network-legacy/ifup.sh" "/sbin/ifup"
Harald Hoyer b7366e
 
Harald Hoyer b7366e
         inst_simple "${basedir}/modules.d/99base/dracut-lib.sh" "/lib/dracut-lib.sh"
Harald Hoyer b7366e
+        inst_simple "${basedir}/modules.d/99base/dracut-dev-lib.sh" "/lib/dracut-dev-lib.sh"
Harald Hoyer b7366e
         inst_binary "${basedir}/dracut-util" "/usr/bin/dracut-util"
Harald Hoyer b7366e
         ln -s dracut-util "${initdir}/usr/bin/dracut-getarg"
Harald Hoyer b7366e
         ln -s dracut-util "${initdir}/usr/bin/dracut-getargs"
Harald Hoyer b7366e
diff --git a/test/TEST-12-RAID-DEG/test.sh b/test/TEST-12-RAID-DEG/test.sh
Harald Hoyer b7366e
index 8d56f658..beb81381 100755
Harald Hoyer b7366e
--- a/test/TEST-12-RAID-DEG/test.sh
Harald Hoyer b7366e
+++ b/test/TEST-12-RAID-DEG/test.sh
Harald Hoyer b7366e
@@ -80,6 +80,7 @@ test_setup() {
Harald Hoyer b7366e
         inst "$basedir/modules.d/35network-legacy/ifup.sh" "/sbin/ifup"
Harald Hoyer b7366e
 
Harald Hoyer b7366e
         inst_simple "${basedir}/modules.d/99base/dracut-lib.sh" "/lib/dracut-lib.sh"
Harald Hoyer b7366e
+        inst_simple "${basedir}/modules.d/99base/dracut-dev-lib.sh" "/lib/dracut-dev-lib.sh"
Harald Hoyer b7366e
         inst_binary "${basedir}/dracut-util" "/usr/bin/dracut-util"
Harald Hoyer b7366e
         ln -s dracut-util "${initdir}/usr/bin/dracut-getarg"
Harald Hoyer b7366e
         ln -s dracut-util "${initdir}/usr/bin/dracut-getargs"
Harald Hoyer b7366e
diff --git a/test/TEST-13-ENC-RAID-LVM/test.sh b/test/TEST-13-ENC-RAID-LVM/test.sh
Harald Hoyer b7366e
index 2d76c982..968eafe7 100755
Harald Hoyer b7366e
--- a/test/TEST-13-ENC-RAID-LVM/test.sh
Harald Hoyer b7366e
+++ b/test/TEST-13-ENC-RAID-LVM/test.sh
Harald Hoyer b7366e
@@ -78,6 +78,7 @@ test_setup() {
Harald Hoyer b7366e
         inst "$basedir/modules.d/35network-legacy/ifup.sh" "/sbin/ifup"
Harald Hoyer b7366e
 
Harald Hoyer b7366e
         inst_simple "${basedir}/modules.d/99base/dracut-lib.sh" "/lib/dracut-lib.sh"
Harald Hoyer b7366e
+        inst_simple "${basedir}/modules.d/99base/dracut-dev-lib.sh" "/lib/dracut-dev-lib.sh"
Harald Hoyer b7366e
         inst_binary "${basedir}/dracut-util" "/usr/bin/dracut-util"
Harald Hoyer b7366e
         ln -s dracut-util "${initdir}/usr/bin/dracut-getarg"
Harald Hoyer b7366e
         ln -s dracut-util "${initdir}/usr/bin/dracut-getargs"
Harald Hoyer b7366e
diff --git a/test/TEST-14-IMSM/test.sh b/test/TEST-14-IMSM/test.sh
Harald Hoyer b7366e
index ab4f8119..78b087f5 100755
Harald Hoyer b7366e
--- a/test/TEST-14-IMSM/test.sh
Harald Hoyer b7366e
+++ b/test/TEST-14-IMSM/test.sh
Harald Hoyer b7366e
@@ -75,6 +75,7 @@ test_setup() {
Harald Hoyer b7366e
         inst "$basedir/modules.d/35network-legacy/ifup.sh" "/sbin/ifup"
Harald Hoyer b7366e
 
Harald Hoyer b7366e
         inst_simple "${basedir}/modules.d/99base/dracut-lib.sh" "/lib/dracut-lib.sh"
Harald Hoyer b7366e
+        inst_simple "${basedir}/modules.d/99base/dracut-dev-lib.sh" "/lib/dracut-dev-lib.sh"
Harald Hoyer b7366e
         inst_binary "${basedir}/dracut-util" "/usr/bin/dracut-util"
Harald Hoyer b7366e
         ln -s dracut-util "${initdir}/usr/bin/dracut-getarg"
Harald Hoyer b7366e
         ln -s dracut-util "${initdir}/usr/bin/dracut-getargs"
Harald Hoyer b7366e
diff --git a/test/TEST-15-BTRFSRAID/test.sh b/test/TEST-15-BTRFSRAID/test.sh
Harald Hoyer b7366e
index 75e97703..47edac81 100755
Harald Hoyer b7366e
--- a/test/TEST-15-BTRFSRAID/test.sh
Harald Hoyer b7366e
+++ b/test/TEST-15-BTRFSRAID/test.sh
Harald Hoyer b7366e
@@ -53,6 +53,7 @@ test_setup() {
Harald Hoyer b7366e
         inst "$basedir/modules.d/35network-legacy/ifup.sh" "/sbin/ifup"
Harald Hoyer b7366e
 
Harald Hoyer b7366e
         inst_simple "${basedir}/modules.d/99base/dracut-lib.sh" "/lib/dracut-lib.sh"
Harald Hoyer b7366e
+        inst_simple "${basedir}/modules.d/99base/dracut-dev-lib.sh" "/lib/dracut-dev-lib.sh"
Harald Hoyer b7366e
         inst_binary "${basedir}/dracut-util" "/usr/bin/dracut-util"
Harald Hoyer b7366e
         ln -s dracut-util "${initdir}/usr/bin/dracut-getarg"
Harald Hoyer b7366e
         ln -s dracut-util "${initdir}/usr/bin/dracut-getargs"
Harald Hoyer b7366e
diff --git a/test/TEST-16-DMSQUASH/test.sh b/test/TEST-16-DMSQUASH/test.sh
Harald Hoyer b7366e
index 73c4c7f1..2a68f305 100755
Harald Hoyer b7366e
--- a/test/TEST-16-DMSQUASH/test.sh
Harald Hoyer b7366e
+++ b/test/TEST-16-DMSQUASH/test.sh
Harald Hoyer b7366e
@@ -88,6 +88,7 @@ test_setup() {
Harald Hoyer b7366e
         inst "$basedir/modules.d/35network-legacy/ifup.sh" "/sbin/ifup"
Harald Hoyer b7366e
 
Harald Hoyer b7366e
         inst_simple "${basedir}/modules.d/99base/dracut-lib.sh" "/lib/dracut-lib.sh"
Harald Hoyer b7366e
+        inst_simple "${basedir}/modules.d/99base/dracut-dev-lib.sh" "/lib/dracut-dev-lib.sh"
Harald Hoyer b7366e
         inst_binary "${basedir}/dracut-util" "/usr/bin/dracut-util"
Harald Hoyer b7366e
         ln -s dracut-util "${initdir}/usr/bin/dracut-getarg"
Harald Hoyer b7366e
         ln -s dracut-util "${initdir}/usr/bin/dracut-getargs"
Harald Hoyer b7366e
diff --git a/test/TEST-17-LVM-THIN/test.sh b/test/TEST-17-LVM-THIN/test.sh
Harald Hoyer b7366e
index 6f6886ec..7dbcca51 100755
Harald Hoyer b7366e
--- a/test/TEST-17-LVM-THIN/test.sh
Harald Hoyer b7366e
+++ b/test/TEST-17-LVM-THIN/test.sh
Harald Hoyer b7366e
@@ -48,6 +48,7 @@ test_setup() {
Harald Hoyer b7366e
         inst "$basedir/modules.d/35network-legacy/ifup.sh" "/sbin/ifup"
Harald Hoyer b7366e
 
Harald Hoyer b7366e
         inst_simple "${basedir}/modules.d/99base/dracut-lib.sh" "/lib/dracut-lib.sh"
Harald Hoyer b7366e
+        inst_simple "${basedir}/modules.d/99base/dracut-dev-lib.sh" "/lib/dracut-dev-lib.sh"
Harald Hoyer b7366e
         inst_binary "${basedir}/dracut-util" "/usr/bin/dracut-util"
Harald Hoyer b7366e
         ln -s dracut-util "${initdir}/usr/bin/dracut-getarg"
Harald Hoyer b7366e
         ln -s dracut-util "${initdir}/usr/bin/dracut-getargs"
Harald Hoyer b7366e
diff --git a/test/TEST-20-NFS/test.sh b/test/TEST-20-NFS/test.sh
Harald Hoyer b7366e
index dc9fa0b0..0be60a80 100755
Harald Hoyer b7366e
--- a/test/TEST-20-NFS/test.sh
Harald Hoyer b7366e
+++ b/test/TEST-20-NFS/test.sh
Harald Hoyer b7366e
@@ -320,6 +320,7 @@ test_setup() {
Harald Hoyer b7366e
         done
Harald Hoyer b7366e
 
Harald Hoyer b7366e
         inst_simple "${basedir}/modules.d/99base/dracut-lib.sh" "/lib/dracut-lib.sh"
Harald Hoyer b7366e
+        inst_simple "${basedir}/modules.d/99base/dracut-dev-lib.sh" "/lib/dracut-dev-lib.sh"
Harald Hoyer b7366e
         inst_binary "${basedir}/dracut-util" "/usr/bin/dracut-util"
Harald Hoyer b7366e
         ln -s dracut-util "${initdir}/usr/bin/dracut-getarg"
Harald Hoyer b7366e
         ln -s dracut-util "${initdir}/usr/bin/dracut-getargs"
Harald Hoyer b7366e
diff --git a/test/TEST-30-ISCSI/test.sh b/test/TEST-30-ISCSI/test.sh
Harald Hoyer b7366e
index e1d10265..5f0063f8 100755
Harald Hoyer b7366e
--- a/test/TEST-30-ISCSI/test.sh
Harald Hoyer b7366e
+++ b/test/TEST-30-ISCSI/test.sh
Harald Hoyer b7366e
@@ -162,6 +162,7 @@ test_setup() {
Harald Hoyer b7366e
         inst_simple /etc/os-release
Harald Hoyer b7366e
 
Harald Hoyer b7366e
         inst_simple "${basedir}/modules.d/99base/dracut-lib.sh" "/lib/dracut-lib.sh"
Harald Hoyer b7366e
+        inst_simple "${basedir}/modules.d/99base/dracut-dev-lib.sh" "/lib/dracut-dev-lib.sh"
Harald Hoyer b7366e
         inst_binary "${basedir}/dracut-util" "/usr/bin/dracut-util"
Harald Hoyer b7366e
         ln -s dracut-util "${initdir}/usr/bin/dracut-getarg"
Harald Hoyer b7366e
         ln -s dracut-util "${initdir}/usr/bin/dracut-getargs"
Harald Hoyer b7366e
diff --git a/test/TEST-35-ISCSI-MULTI/test.sh b/test/TEST-35-ISCSI-MULTI/test.sh
Harald Hoyer b7366e
index 09b939ab..628131e0 100755
Harald Hoyer b7366e
--- a/test/TEST-35-ISCSI-MULTI/test.sh
Harald Hoyer b7366e
+++ b/test/TEST-35-ISCSI-MULTI/test.sh
Harald Hoyer b7366e
@@ -174,6 +174,7 @@ test_setup() {
Harald Hoyer b7366e
         inst_simple /etc/os-release
Harald Hoyer b7366e
 
Harald Hoyer b7366e
         inst_simple "${basedir}/modules.d/99base/dracut-lib.sh" "/lib/dracut-lib.sh"
Harald Hoyer b7366e
+        inst_simple "${basedir}/modules.d/99base/dracut-dev-lib.sh" "/lib/dracut-dev-lib.sh"
Harald Hoyer b7366e
         inst_binary "${basedir}/dracut-util" "/usr/bin/dracut-util"
Harald Hoyer b7366e
         ln -s dracut-util "${initdir}/usr/bin/dracut-getarg"
Harald Hoyer b7366e
         ln -s dracut-util "${initdir}/usr/bin/dracut-getargs"
Harald Hoyer b7366e
diff --git a/test/TEST-40-NBD/test.sh b/test/TEST-40-NBD/test.sh
Harald Hoyer b7366e
index df1bcb2f..178dff40 100755
Harald Hoyer b7366e
--- a/test/TEST-40-NBD/test.sh
Harald Hoyer b7366e
+++ b/test/TEST-40-NBD/test.sh
Harald Hoyer b7366e
@@ -219,6 +219,7 @@ make_encrypted_root() {
Harald Hoyer b7366e
         inst_multiple -o ${_terminfodir}/l/linux
Harald Hoyer b7366e
 
Harald Hoyer b7366e
         inst_simple "${basedir}/modules.d/99base/dracut-lib.sh" "/lib/dracut-lib.sh"
Harald Hoyer b7366e
+        inst_simple "${basedir}/modules.d/99base/dracut-dev-lib.sh" "/lib/dracut-dev-lib.sh"
Harald Hoyer b7366e
         inst_binary "${basedir}/dracut-util" "/usr/bin/dracut-util"
Harald Hoyer b7366e
         ln -s dracut-util "${initdir}/usr/bin/dracut-getarg"
Harald Hoyer b7366e
         ln -s dracut-util "${initdir}/usr/bin/dracut-getargs"
Harald Hoyer b7366e
@@ -299,6 +300,7 @@ make_client_root() {
Harald Hoyer b7366e
         inst_multiple -o ${_terminfodir}/l/linux
Harald Hoyer b7366e
 
Harald Hoyer b7366e
         inst_simple "${basedir}/modules.d/99base/dracut-lib.sh" "/lib/dracut-lib.sh"
Harald Hoyer b7366e
+        inst_simple "${basedir}/modules.d/99base/dracut-dev-lib.sh" "/lib/dracut-dev-lib.sh"
Harald Hoyer b7366e
         inst_binary "${basedir}/dracut-util" "/usr/bin/dracut-util"
Harald Hoyer b7366e
         ln -s dracut-util "${initdir}/usr/bin/dracut-getarg"
Harald Hoyer b7366e
         ln -s dracut-util "${initdir}/usr/bin/dracut-getargs"
Harald Hoyer b7366e
diff --git a/test/TEST-50-MULTINIC/test.sh b/test/TEST-50-MULTINIC/test.sh
Harald Hoyer b7366e
index e96cef7c..81b1f685 100755
Harald Hoyer b7366e
--- a/test/TEST-50-MULTINIC/test.sh
Harald Hoyer b7366e
+++ b/test/TEST-50-MULTINIC/test.sh
Harald Hoyer b7366e
@@ -270,6 +270,7 @@ test_setup() {
Harald Hoyer b7366e
         done
Harald Hoyer b7366e
 
Harald Hoyer b7366e
         inst_simple "${basedir}/modules.d/99base/dracut-lib.sh" "/lib/dracut-lib.sh"
Harald Hoyer b7366e
+        inst_simple "${basedir}/modules.d/99base/dracut-dev-lib.sh" "/lib/dracut-dev-lib.sh"
Harald Hoyer b7366e
         inst_binary "${basedir}/dracut-util" "/usr/bin/dracut-util"
Harald Hoyer b7366e
         ln -s dracut-util "${initdir}/usr/bin/dracut-getarg"
Harald Hoyer b7366e
         ln -s dracut-util "${initdir}/usr/bin/dracut-getargs"
Harald Hoyer b7366e
diff --git a/test/TEST-98-GETARG/test.sh b/test/TEST-98-GETARG/test.sh
Harald Hoyer b7366e
index 9a00470b..012396ba 100755
Harald Hoyer b7366e
--- a/test/TEST-98-GETARG/test.sh
Harald Hoyer b7366e
+++ b/test/TEST-98-GETARG/test.sh
Harald Hoyer b7366e
@@ -15,6 +15,7 @@ test_setup() {
Harald Hoyer b7366e
     ln -sfnr "$basedir"/dracut-util "$TESTDIR"/dracut-getarg
Harald Hoyer b7366e
     ln -sfnr "$basedir"/dracut-util "$TESTDIR"/dracut-getargs
Harald Hoyer b7366e
     ln -sfnr "$basedir"/modules.d/99base/dracut-lib.sh "$TESTDIR"/dracut-lib.sh
Harald Hoyer b7366e
+    ln -sfnr "$basedir"/modules.d/99base/dracut-dev-lib.sh "$TESTDIR"/dracut-dev-lib.sh
Harald Hoyer b7366e
     return 0
Harald Hoyer b7366e
 }
Harald Hoyer b7366e
 
Harald Hoyer b7366e
@@ -85,6 +86,7 @@ test_run() {
Harald Hoyer b7366e
 
Harald Hoyer b7366e
         export PATH=".:$PATH"
Harald Hoyer b7366e
 
Harald Hoyer b7366e
+        . dracut-dev-lib.sh
Harald Hoyer b7366e
         . dracut-lib.sh
Harald Hoyer b7366e
 
Harald Hoyer b7366e
         debug_off() {
Harald Hoyer b7366e