aboutsummaryrefslogtreecommitdiffstats
path: root/mkinitfs-rundep.in
blob: ec53bddd5e536a3029f8abab59a4c6cbe0137ac5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/bin/sh

# resolve .so dependencies using ldd

find_path() {
	for i in /lib /usr/lib; do
		[ -e "$i/$1" ] && echo "$i/$1" && return 0
	done
	return 1
}

resolve_links() {
	local f
	while [ $# -gt 0 ]; do
		if [ -L "$1" ]; then
			local f=$(readlink $1)
			local p="$(find_path $f)"
#			echo "following $p"
			resolve_links $p
		fi
		echo "$1"
		shift
	done
}

find_deps() {
	local bin=$1
	resolve_links $(ldd $bin 2>/dev/null | awk -F'=>' '{print $2}' | sed 's/(.*//') | while read f; do
		case $f in
		/*) echo $f;;
		*) find_path $f
		esac
	done
}

while [ $# -gt 0 ]; do
	find_deps $1 || exit 1
	which $1
	shift
done | sort -u