home: hub: mkinitfs

Download patch

ref: 21366c854a411880fe83b68aceaf20596d2b374e
parent: b9ad256b04db3965bf21ed7ee25ddfd7c166d102
author: Natanael Copa <ncopa@alpinelinux.org>
date: Fri Jun 3 04:02:38 CDT 2011

mkinitfs-rundep: new tool for tracing runtime deps

--- a/Makefile
+++ b/Makefile
@@ -5,7 +5,7 @@
 datarootdir	?= /usr/share
 datadir		?= $(datarootdir)/mkinitfs
 
-SBIN_FILES	:= mkinitfs bootchartd
+SBIN_FILES	:= mkinitfs bootchartd mkinitfs-rundep
 SHARE_FILES	:= initramfs-init fstab passwd group
 CONF_FILES	:= mkinitfs.conf \
 		modules.d/ata \
--- /dev/null
+++ b/mkinitfs-rundep.in
@@ -1,0 +1,36 @@
+#!/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() {
+	bin=$1
+	resolve_links $(ldd $bin 2>/dev/null | awk -F'=>' '{print $2}' | sed 's/(.*//')
+}
+
+while [ $# -gt 0 ]; do
+	find_deps $1 || exit 1
+	shift
+done
+
+