From 4cb3cb1b3ab4ade3ada5326d7c5ae84c67c16a21 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Fri, 25 Apr 2014 18:31:08 +0200 Subject: Improve ld cache handling a bit --- remote/modules/nvidia_libs/data/addon-init | 2 -- .../data/opt/openslx/scripts/systemd-setup_slx_addons | 5 ++++- remote/rootfs/rootfs-stage32/module.build | 11 +++++++++-- remote/rootfs/rootfs-stage32/module.conf | 1 + remote/setup_target | 8 ++------ 5 files changed, 16 insertions(+), 11 deletions(-) diff --git a/remote/modules/nvidia_libs/data/addon-init b/remote/modules/nvidia_libs/data/addon-init index 7e263976..061bff6b 100755 --- a/remote/modules/nvidia_libs/data/addon-init +++ b/remote/modules/nvidia_libs/data/addon-init @@ -6,7 +6,5 @@ while read line; do rm -f -- "$line" done < "/opt/openslx/etc/nvidia.whiteout" -ldconfig || ldconfig.real - exit 0 diff --git a/remote/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-setup_slx_addons b/remote/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-setup_slx_addons index 13543e9e..e6a1db6d 100755 --- a/remote/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-setup_slx_addons +++ b/remote/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-setup_slx_addons @@ -2,7 +2,7 @@ # Needs full bash # # Script to be called by systemd -# +# # Downloads and appends addons per sqfs/aufs. # ###################################################################################### @@ -82,6 +82,9 @@ if [ $# -eq 1 ]; then "$ADDON_MOUNT_POINT/addon-init" || \ slxlog --echo "addon-init" "Warning: Could not execute addon-init of $ADDON" fi + if ! grep -q '/opt/openslx/mnt/stage4' "/proc/mounts"; then + ldconfig 2> /dev/null || ldconfig.real 2> /dev/null + fi fi [ $# -gt 1 ] && { echo "Error - $0 only takes no or one argument. $# given." && exit 1; } diff --git a/remote/rootfs/rootfs-stage32/module.build b/remote/rootfs/rootfs-stage32/module.build index b12ca0a7..c5d0fbc4 100644 --- a/remote/rootfs/rootfs-stage32/module.build +++ b/remote/rootfs/rootfs-stage32/module.build @@ -5,18 +5,25 @@ fetch_source() { build() { if [ ! -z "$REQUIRED_CONTENT_PACKAGES" ]; then - COPYLIST="list_dpkg_output" + local COPYLIST="list_dpkg_output" [ -e "${COPYLIST}" ] && rm "${COPYLIST}" list_packet_files >> "${COPYLIST}" tarcopy "$(cat "${COPYLIST}" | sort -u)" "${MODULE_BUILD_DIR}" fi - FILELIST="list_binaries_and_files" + local FILELIST="list_binaries_and_files" [ -e "${FILELIST}" ] && rm "${FILELIST}" # Compile rdns mkdir -p "$MODULE_BUILD_DIR/opt/openslx/bin" gcc -o "$MODULE_BUILD_DIR/opt/openslx/bin/rdns" "$MODULE_DIR/rdns.c" || perror "Compiling rdns failed." + # Get ldconfig + mkdir -p "$MODULE_BUILD_DIR/sbin" + local LOC=$(which ldconfig.real) + [ -z "$LOC" ] && LOC=$(which ldconfig) + [ -z "$LOC" ] && perror "Cannot find ldconfig" + pdebug "Picking ldconfig from $LOC" + cp "$LOC" "$MODULE_BUILD_DIR/sbin/ldconfig" pinfo "Searching binaries from config file in system..." for BIN in ${REQUIRED_BINARIES} diff --git a/remote/rootfs/rootfs-stage32/module.conf b/remote/rootfs/rootfs-stage32/module.conf index 34d3507a..bafd33e6 100644 --- a/remote/rootfs/rootfs-stage32/module.conf +++ b/remote/rootfs/rootfs-stage32/module.conf @@ -37,6 +37,7 @@ REQUIRED_BINARIES=" rpc.statd pkill getent + ldconfig " REQUIRED_LIBRARIES=" libcap diff --git a/remote/setup_target b/remote/setup_target index 3a0b270d..5da8d0e7 100755 --- a/remote/setup_target +++ b/remote/setup_target @@ -459,12 +459,8 @@ post_process_target() { # figure out all relevant ld-paths pinfo "Running ldconfig" - local LDTEMP="$TARGET_BUILD_DIR/ldconf-temp" - grep -h '^\s*/' /etc/ld.so.conf /etc/ld.so.conf.d/* > "$LDTEMP" - # TODO: Echo other stuff to $LDTEMP (but figure out if first or last match wins) - ldconfig -v -r "${TARGET_BUILD_DIR}" -f "/ldconf-temp" - unlink "$LDTEMP" - + cp -r -L /etc/ld.so.conf* "${TARGET_BUILD_DIR}/etc/" + ldconfig -v -r "${TARGET_BUILD_DIR}" } clean_modules() { -- cgit v1.2.3-55-g7522