aboutsummaryrefslogtreecommitdiffstats
path: root/mkinitfs.in
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2014-03-25 09:01:39 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2014-03-25 09:01:39 +0000
commit94aeb47ddf730050067f3135115a8aabac24480a (patch)
treee4c2ee9865794c504e75ab218389a35338768530 /mkinitfs.in
parent5b394a62d30b42d2a4d9d69a6187c34c4c540f64 (diff)
downloadmkinitfs-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.
Diffstat (limited to 'mkinitfs.in')
-rwxr-xr-xmkinitfs.in14
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"
}