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
+
+