diff options
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-x | modules.d/slx-addons/module-setup.sh | 15 | ||||
-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.service | 11 |
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 |