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 <jogo@openwrt.org> SVN-Revision: 43295
This commit is contained in:
parent
d2e0fa517f
commit
2e95b1fda7
1 changed files with 1 additions and 4 deletions
|
@ -3,7 +3,7 @@
|
||||||
RAM_ROOT=/tmp/root
|
RAM_ROOT=/tmp/root
|
||||||
|
|
||||||
[ -x /usr/bin/ldd ] || ldd() { LD_TRACE_LOADED_OBJECTS=1 $*; }
|
[ -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> ... ]
|
install_file() { # <file> [ <file> ... ]
|
||||||
for file in "$@"; do
|
for file in "$@"; do
|
||||||
|
@ -21,9 +21,6 @@ install_bin() { # <file> [ <symlink> ... ]
|
||||||
files=$1
|
files=$1
|
||||||
[ -x "$src" ] && files="$src $(libs $src)"
|
[ -x "$src" ] && files="$src $(libs $src)"
|
||||||
install_file $files
|
install_file $files
|
||||||
[ -e /lib/ld.so.1 ] && {
|
|
||||||
install_file /lib/ld.so.1
|
|
||||||
}
|
|
||||||
shift
|
shift
|
||||||
for link in "$@"; do {
|
for link in "$@"; do {
|
||||||
dest="$RAM_ROOT/$link"
|
dest="$RAM_ROOT/$link"
|
||||||
|
|
Loading…
Reference in a new issue