summaryrefslogtreecommitdiffstats
path: root/builder/modules.d/slx-addons/scripts/setup-addons.sh
diff options
context:
space:
mode:
Diffstat (limited to 'builder/modules.d/slx-addons/scripts/setup-addons.sh')
-rw-r--r--builder/modules.d/slx-addons/scripts/setup-addons.sh52
1 files changed, 36 insertions, 16 deletions
diff --git a/builder/modules.d/slx-addons/scripts/setup-addons.sh b/builder/modules.d/slx-addons/scripts/setup-addons.sh
index 09ec9885..5d4e106f 100644
--- a/builder/modules.d/slx-addons/scripts/setup-addons.sh
+++ b/builder/modules.d/slx-addons/scripts/setup-addons.sh
@@ -33,23 +33,27 @@ if [ ! -d "$NEWROOT/opt/openslx/addons" ]; then
return 0
fi
-setup_addons() {
- local ADDONS_DIR="$NEWROOT/opt/openslx/addons/"
- cd "$ADDONS_DIR" || return 1
- for ADDON in *; do
- if ! setup_addon "$ADDON"; then
- info "Failed to setup $ADDON"
- fi
- done
+# This just activates the ldconfig service to run during the sysinit target
+# Since addons are likely to install libs, this is necessary to garantee
+# that the live system "sees" the libraries.
+prepare_ldconfig() {
+ local service_path="/opt/openslx/services/post-addon-ldconfig.service"
+ [ -e "$service_path" ] || return 1
+ local target_dir="${NEWROOT}/etc/systemd/system/sysinit.target.wants"
+ mkdir -p "$target_dir"
+ cp -f "$service_path" "${NEWROOT}/etc/systemd/system/${service_path##*/}"
+ ln -sf "../${service_path##*/}" "${target_dir}/${service_path##*/}"
}
setup_addon() {
- [ -z "$1" -o ! -d "$ADDONS_DIR/$1" ] && return 1
- local ADDON="$1"
- cd "$ADDONS_DIR/$ADDON" || return 1
-
+ if [ -d "$1" ]; then
+ warn "Given '$1' not a directory, skipping."
+ return 1
+ fi
+ local addon_dir="$1"
+ cd "$addon_dir"
if ! bash addon-required 2>&1 ; then
- info "'$ADDONS_DIR/$ADDON/addon-required' missing or returned non-zero, skipping..."
+ info "'$addon_dir/addon-required' missing or returned non-zero, skipping..."
return 1
fi
# purge addon-* files
@@ -69,8 +73,24 @@ setup_addon() {
rm -f "${NEWROOT}/${line}"
done < "$WHITEOUT"
done
+
+ cd - &>/dev/null
+}
+
+for addon in "${NEWROOT}/opt/openslx/addons/"*; do
+ if setup_addon "$addon"; then
+ info "Activated '$addon' (@ $(date +%s))"
+ prepare_ldconfig
+ fi
+done
+
+setup_addons() {
+ local ADDONS_DIR="$NEWROOT/opt/openslx/addons/"
+ cd "$ADDONS_DIR" || return 1
+ for ADDON in *; do
+ if ! setup_addon "$ADDON"; then
+ info "Failed to setup $ADDON"
+ fi
+ done
}
-if ! setup_addons; then
- warn "Failed to fully setup some addons! They will likely malfunction..."
-fi