Author: jogo
Date: 2014-11-18 16:19:46 +0100 (Tue, 18 Nov 2014)
New Revision: 43295

Modified:
   trunk/package/base-files/files/lib/upgrade/common.sh
Log:
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 <[email protected]>

Modified: trunk/package/base-files/files/lib/upgrade/common.sh
===================================================================
--- trunk/package/base-files/files/lib/upgrade/common.sh        2014-11-18 
09:40:39 UTC (rev 43294)
+++ trunk/package/base-files/files/lib/upgrade/common.sh        2014-11-18 
15:19:46 UTC (rev 43295)
@@ -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() { # <file> [ <file> ... ]
        for file in "$@"; do
@@ -21,9 +21,6 @@
        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"
_______________________________________________
openwrt-commits mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-commits

Reply via email to