From ac823e0e7c59f3697b487ea414130912c77106b2 Mon Sep 17 00:00:00 2001 From: Jonathan Bauer Date: Fri, 8 Nov 2019 15:34:14 +0100 Subject: [slx-addon] support for pre-gen. ld.so.cache --- builder/modules.d/slx-addons/module-setup.sh | 4 ++-- builder/modules.d/slx-addons/scripts/setup-addons.sh | 19 ++++++++++++++++--- .../modules.d/slx-addons/services/ldconfig.service | 8 ++++++++ .../slx-addons/services/post-addon-ldconfig.service | 7 ------- 4 files changed, 26 insertions(+), 12 deletions(-) create mode 100644 builder/modules.d/slx-addons/services/ldconfig.service delete mode 100644 builder/modules.d/slx-addons/services/post-addon-ldconfig.service diff --git a/builder/modules.d/slx-addons/module-setup.sh b/builder/modules.d/slx-addons/module-setup.sh index 52278731..d75b38ad 100755 --- a/builder/modules.d/slx-addons/module-setup.sh +++ b/builder/modules.d/slx-addons/module-setup.sh @@ -9,6 +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" + inst "${moddir}/services/ldconfig.service" \ + "/opt/openslx/services/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 ed12d6c7..1fff2810 100644 --- a/builder/modules.d/slx-addons/scripts/setup-addons.sh +++ b/builder/modules.d/slx-addons/scripts/setup-addons.sh @@ -36,8 +36,8 @@ fi # 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" +activate_stage4_ldconfig() { + local service_path="/opt/openslx/services/ldconfig.service" [ -e "$service_path" ] || return 1 local target_dir="${NEWROOT}/etc/systemd/system/sysinit.target.wants" mkdir -p "$target_dir" @@ -77,11 +77,24 @@ setup_addon() { cd - &>/dev/null } +active=() for addon in "${NEWROOT}/opt/openslx/addons/"*; do if setup_addon "$addon"; then + active+=("$addon") info "Activated '$addon' (@ $(date +%s))" - prepare_ldconfig fi done +# if only one addon was installed, use its pre-generated ld.so.cache +# if more than one were installed, make sure ldconfig is called in stage4 +if [ "${#active[@]}" -eq 1 ]; then + addon_cache="${NEWROOT}/opt/openslx/etc/${active[0]}.ld.so.cache" + if [ -e "$addon_cache" ]; then + mv -f -- "$addon_cache" "${NEWROOT}/etc/ld.so.cache" + exit 0 + fi +elif [ "${#active[@]}" -gt 1 ]; then + activate_stage4_ldconfig +fi + : diff --git a/builder/modules.d/slx-addons/services/ldconfig.service b/builder/modules.d/slx-addons/services/ldconfig.service new file mode 100644 index 00000000..b821f743 --- /dev/null +++ b/builder/modules.d/slx-addons/services/ldconfig.service @@ -0,0 +1,8 @@ +[Unit] +Description=Run ldconfig +Before=graphical.target +DefaulltDependencies=no + +[Service] +Type=oneshot +ExecStart=/sbin/ldconfig diff --git a/builder/modules.d/slx-addons/services/post-addon-ldconfig.service b/builder/modules.d/slx-addons/services/post-addon-ldconfig.service deleted file mode 100644 index 18c6c4c3..00000000 --- a/builder/modules.d/slx-addons/services/post-addon-ldconfig.service +++ /dev/null @@ -1,7 +0,0 @@ -[Unit] -Description=Run ldconfig post-addon -Before=graphical.target - -[Service] -Type=oneshot -ExecStart=/sbin/ldconfig -- cgit v1.2.3-55-g7522