From: Jonas Gorski Date: Tue, 18 Nov 2014 15:19:46 +0000 (+0000) Subject: base-files: properly fix copying ld*.so with eglibc X-Git-Tag: reboot~5325 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=2e95b1fda74eb8c64f91e1c801195d9893d80986;p=oweals%2Fopenwrt.git base-files: properly fix copying ld*.so with eglibc r36107 ("base-files: sysupgrade fail with eglibc") tried to fix sysupgrade by changing the ld-soname to what is expected, but only fixed MIPS while breaking ARM. The underlying issue is that the ld.so name varies widely across different architectures for eglibc: eglibc-2.19-r25243$ grep -r "ld-soname :=" . | awk '{ print $3 }' | sort -u ld64.so.1 ld64.so.2 ld-linux-aarch64_be.so.1 ld-linux-aarch64.so.1 ld-linux-armhf.so.3 ld-linux-mipsn8.so.1 ld-linux.so.2 ld-linux.so.3 ld-linux-x32.so.2 ld-linux-x86-64.so.2 ld.so.1 Instead of adding each different soname to check for and copy it, replace the awk script with a sed script to extract it properly and drop the hardcoded so-name. Signed-off-by: Jonas Gorski SVN-Revision: 43295 --- diff --git a/package/base-files/files/lib/upgrade/common.sh b/package/base-files/files/lib/upgrade/common.sh index 327322605a..9123359d1b 100644 --- a/package/base-files/files/lib/upgrade/common.sh +++ b/package/base-files/files/lib/upgrade/common.sh @@ -3,7 +3,7 @@ RAM_ROOT=/tmp/root [ -x /usr/bin/ldd ] || ldd() { LD_TRACE_LOADED_OBJECTS=1 $*; } -libs() { ldd $* | awk '{print $3}'; } +libs() { ldd $* | sed -r 's/(.* => )?(.*) .*/\2/'; } install_file() { # [ ... ] for file in "$@"; do @@ -21,9 +21,6 @@ install_bin() { # [ ... ] files=$1 [ -x "$src" ] && files="$src $(libs $src)" install_file $files - [ -e /lib/ld.so.1 ] && { - install_file /lib/ld.so.1 - } shift for link in "$@"; do { dest="$RAM_ROOT/$link"