diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2011-06-03 09:02:38 +0000 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2011-06-03 09:02:38 +0000 |
commit | 21366c854a411880fe83b68aceaf20596d2b374e (patch) | |
tree | 9e4b81531e1b9f562c4efd4e0e403f725654d6c5 | |
parent | b9ad256b04db3965bf21ed7ee25ddfd7c166d102 (diff) | |
download | mkinitfs-21366c854a411880fe83b68aceaf20596d2b374e.tar.bz2 mkinitfs-21366c854a411880fe83b68aceaf20596d2b374e.tar.xz |
mkinitfs-rundep: new tool for tracing runtime deps
-rw-r--r-- | Makefile | 2 | ||||
-rwxr-xr-x | mkinitfs-rundep.in | 36 |
2 files changed, 37 insertions, 1 deletions
@@ -5,7 +5,7 @@ sysconfdir ?= /etc/mkinitfs 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 \ diff --git a/mkinitfs-rundep.in b/mkinitfs-rundep.in new file mode 100755 index 0000000..ee9bcdb --- /dev/null +++ b/mkinitfs-rundep.in @@ -0,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 + + |