summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan Bauer2019-11-05 13:03:13 +0100
committerJonathan Bauer2019-11-05 13:03:13 +0100
commitbab49856460612dad2dbc72d2547d307bab310db (patch)
treea3669c12f28e7b70fda81358647430cec8e7ce23
parent[slx-addon] simplify addon setup (diff)
downloadsystemd-init-bab49856460612dad2dbc72d2547d307bab310db.tar.gz
systemd-init-bab49856460612dad2dbc72d2547d307bab310db.tar.xz
systemd-init-bab49856460612dad2dbc72d2547d307bab310db.zip
[slx-addon] auto ldconfig post addon
-rwxr-xr-xbuilder/modules.d/slx-addons/module-setup.sh2
-rw-r--r--builder/modules.d/slx-addons/scripts/setup-addons.sh52
-rw-r--r--builder/modules.d/slx-addons/services/post-addon-ldconfig.service7
3 files changed, 45 insertions, 16 deletions
diff --git a/builder/modules.d/slx-addons/module-setup.sh b/builder/modules.d/slx-addons/module-setup.sh
index 296b3fe4..52278731 100755
--- a/builder/modules.d/slx-addons/module-setup.sh
+++ b/builder/modules.d/slx-addons/module-setup.sh
@@ -9,4 +9,6 @@ depends() {
}
install() {
inst_hook pre-pivot 30 "$moddir/scripts/setup-addons.sh"
+ inst "${moddir}/services/post-addon-ldconfig.service" \
+ "/opt/openslx/services/post-addon-ldconfig.service"
}
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
diff --git a/builder/modules.d/slx-addons/services/post-addon-ldconfig.service b/builder/modules.d/slx-addons/services/post-addon-ldconfig.service
new file mode 100644
index 00000000..a303f244
--- /dev/null
+++ b/builder/modules.d/slx-addons/services/post-addon-ldconfig.service
@@ -0,0 +1,7 @@
+[Unit]
+Description=Run ldconfig post-addon
+Before=graphical.target
+
+[Service]
+Type=oneshot
+ExecStart=ldconfig