diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2014-03-25 09:01:39 +0000 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2014-03-25 09:01:39 +0000 |
commit | 94aeb47ddf730050067f3135115a8aabac24480a (patch) | |
tree | e4c2ee9865794c504e75ab218389a35338768530 | |
parent | 5b394a62d30b42d2a4d9d69a6187c34c4c540f64 (diff) | |
download | mkinitfs-94aeb47ddf730050067f3135115a8aabac24480a.tar.bz2 mkinitfs-94aeb47ddf730050067f3135115a8aabac24480a.tar.xz |
mkinitfs: automatically resolv elf dependencies
This is so we don't need to manually manage the dependencies which gets
ugly when supporting multiple libc.
-rwxr-xr-x | mkinitfs.in | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/mkinitfs.in b/mkinitfs.in index c464397..cd10359 100755 --- a/mkinitfs.in +++ b/mkinitfs.in @@ -31,7 +31,7 @@ feature_files() { fi done done - done | sort -u + done } initfs_base() { @@ -44,12 +44,14 @@ initfs_base() { local oldpwd="$PWD" cd "${basedir}" - for file in $(feature_files "$basedir" files); do - echo "${file#$basedir}" - done | cpio -pdm "$tmpdir" || return 1 + lddtree -R "$basedir" -l --no-auto-root \ + $(feature_files "$basedir" files) \ + \ + | sed -e "s|^$basedir||" | sort -u \ + | cpio -pdm "$tmpdir" || return 1 # copy init - cd $startdir + cd "$startdir" install -m755 "$init" "$tmpdir"/init || return 1 for i in "$fstab" "$passwd" "$group"; do install -Dm644 "$i" "$tmpdir"/etc/${i##*/} || return 1 @@ -112,7 +114,7 @@ initfs_kmods() { cd "${basedir}" for file in $(find_kmods); do echo "${file#/}" - done | cpio -pdm "$tmpdir" || return 1 + done | sort -u | cpio -pdm "$tmpdir" || return 1 depmod $kernel -b "$tmpdir" cd "$oldpwd" } |