summaryrefslogtreecommitdiffstats
path: root/modules.d/slx-addons
diff options
context:
space:
mode:
Diffstat (limited to 'modules.d/slx-addons')
-rwxr-xr-x[-rw-r--r--]modules.d/slx-addons/hooks/s3-setup-addons.sh (renamed from modules.d/slx-addons/scripts/setup-addons.sh)15
-rwxr-xr-xmodules.d/slx-addons/module-setup.sh15
-rw-r--r--modules.d/slx-addons/services/ldconfig-stage4.service (renamed from modules.d/slx-addons/services/ldconfig.service)0
-rw-r--r--modules.d/slx-addons/services/s3-setup-addons.service11
4 files changed, 31 insertions, 10 deletions
diff --git a/modules.d/slx-addons/scripts/setup-addons.sh b/modules.d/slx-addons/hooks/s3-setup-addons.sh
index d4b94a1a..0a947f23 100644..100755
--- a/modules.d/slx-addons/scripts/setup-addons.sh
+++ b/modules.d/slx-addons/hooks/s3-setup-addons.sh
@@ -37,7 +37,7 @@ fi
# Since addons are likely to install libs, this is necessary to garantee
# that the live system "sees" the libraries.
activate_stage4_ldconfig() {
- local service_path="/opt/openslx/services/ldconfig.service"
+ local service_path="/opt/openslx/services/ldconfig-stage4.service"
[ -e "$service_path" ] || return 1
local target_dir="${NEWROOT}/etc/systemd/system/sysinit.target.wants"
mkdir -p "$target_dir"
@@ -51,7 +51,7 @@ setup_addon() {
return 1
fi
local addon_dir="$1"
- cd "$addon_dir"
+ cd "$addon_dir" || return 1
if ! bash addon-required 2>&1 ; then
info "'$addon_dir/addon-required' missing or returned non-zero, skipping..."
return 1
@@ -60,7 +60,8 @@ setup_addon() {
rm -f -- addon-*
# move all the files over
- for entry in $(find * -not -type d 2>/dev/null); do
+ find . -not -type d 2>/dev/null | while read -r entry || [ -n "$entry" ]; do
+ entry="${entry#./}"
[ "$entry" != "${entry%/*}" ] && mkdir -p "${NEWROOT}/${entry%/*}"
mv -f -- "$entry" "${NEWROOT}/${entry}"
done
@@ -69,8 +70,8 @@ setup_addon() {
# (e.g. they were removed during the addon installation)
for WHITEOUT in "$NEWROOT/opt/openslx/etc/"*.whiteout; do
[ -e "$WHITEOUT" ] || continue
- while read line; do
- rm -f "${NEWROOT}/${line}"
+ while read -r line; do
+ rm -f -- "${NEWROOT}/${line}"
done < "$WHITEOUT"
done
@@ -80,7 +81,7 @@ setup_addon() {
active=()
for addon in "${NEWROOT}/opt/openslx/addons/"*; do
if setup_addon "$addon"; then
- active+=("${addon#${NEWROOT}/opt/openslx/addons/}")
+ active+=("${addon#"${NEWROOT}/opt/openslx/addons/"}")
info "Activated '$addon' (@ $(date +%s))"
fi
done
@@ -95,7 +96,7 @@ if [ "${#active[@]}" -eq 1 ]; then
mv -f -- "$addon_cache" "${NEWROOT}/etc/ld.so.cache"
fi
elif [ "${#active[@]}" -gt 1 ]; then
- info "Activating ldconfig in stage4 due to multiple loaded addons: ${active[@]}"
+ info "Activating ldconfig in stage4 due to multiple loaded addons: ${active[*]}"
activate_stage4_ldconfig
fi
diff --git a/modules.d/slx-addons/module-setup.sh b/modules.d/slx-addons/module-setup.sh
index 7a2d78aa..5d84584c 100755
--- a/modules.d/slx-addons/module-setup.sh
+++ b/modules.d/slx-addons/module-setup.sh
@@ -8,7 +8,16 @@ depends() {
echo dnbd3-rootfs
}
install() {
- inst_hook pre-pivot 70 "$moddir/scripts/setup-addons.sh"
- inst "${moddir}/services/ldconfig.service" \
- "/opt/openslx/services/ldconfig.service"
+ inst "${moddir}/services/ldconfig-stage4.service" \
+ "/opt/openslx/services/ldconfig-stage4.service"
+ # Install service that enables addons
+ _name="s3-setup-addons"
+ inst "$moddir/hooks/${_name}.sh" \
+ "/usr/local/bin/${_name}.sh"
+ inst_simple "${moddir}/services/${_name}.service" \
+ "${systemdsystemunitdir}/${_name}.service"
+ mkdir --parents \
+ "${initdir}/${systemdsystemunitdir}/dracut-pre-pivot.service.requires"
+ ln_r "${systemdsystemunitdir}/${_name}.service" \
+ "${systemdsystemunitdir}/dracut-pre-pivot.service.requires/${_name}.service"
}
diff --git a/modules.d/slx-addons/services/ldconfig.service b/modules.d/slx-addons/services/ldconfig-stage4.service
index be799e66..be799e66 100644
--- a/modules.d/slx-addons/services/ldconfig.service
+++ b/modules.d/slx-addons/services/ldconfig-stage4.service
diff --git a/modules.d/slx-addons/services/s3-setup-addons.service b/modules.d/slx-addons/services/s3-setup-addons.service
new file mode 100644
index 00000000..ee6c203b
--- /dev/null
+++ b/modules.d/slx-addons/services/s3-setup-addons.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Enable SLX addons
+After=initrd-root-fs.target
+Before=initrd-switch-root.target
+DefaultDependencies=no
+IgnoreOnIsolate=true
+
+[Service]
+Type=oneshot
+RemainAfterExit=true
+ExecStart=/usr/local/bin/s3-setup-addons.sh