home: hub: mkinitfs

Download patch

ref: 94aeb47ddf730050067f3135115a8aabac24480a
parent: 5b394a62d30b42d2a4d9d69a6187c34c4c540f64
author: Natanael Copa <ncopa@alpinelinux.org>
date: Tue Mar 25 04:01:39 CDT 2014

mkinitfs: automatically resolv elf dependencies

This is so we don't need to manually manage the dependencies which gets
ugly when supporting multiple libc.

--- a/mkinitfs.in
+++ b/mkinitfs.in
@@ -31,7 +31,7 @@
 				fi
 			done
 		done
-	done | sort -u
+	done
 }
 
 initfs_base() {
@@ -44,12 +44,14 @@
 
 	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 @@
 	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"
 }