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:
		@@ -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"
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user