[projects/geninitrd] search binaries from multiple initrd dirs

glen glen at pld-linux.org
Wed Feb 25 22:58:08 CET 2015


commit c45a111ca18cffe5b6752a64e85faa509818ee71
Author: Elan Ruusamäe <glen at delfi.ee>
Date:   Wed Feb 25 23:57:37 2015 +0200

    search binaries from multiple initrd dirs

 geninitrd | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)
---
diff --git a/geninitrd b/geninitrd
index 3907387..b8ee2a3 100755
--- a/geninitrd
+++ b/geninitrd
@@ -115,7 +115,7 @@ die() {
 # find program from specified paths
 find_tool() {
 	local x p b n
-	local paths="$initrd_dir /bin /sbin /usr/bin /usr/sbin"
+	local paths="$initrd_dirs /bin /sbin /usr/bin /usr/sbin"
 	for x in "$@"; do
 		debug "find_tool: checking $x"
 		if [ -x "$x" ]; then
@@ -534,7 +534,7 @@ inst_exec() {
 
 	inst "$@" $dest
 
-	local obj lib libs
+	local obj lib libs libdir
 	for obj in "$@"; do
 		case "$obj" in
 			/lib/ld-linux.so.2 | /lib64/ld-linux-x86-64.so.2 | /libx32/ld-linux-x32.so.2)
@@ -1348,13 +1348,21 @@ if [ "$(id -u)" != 0 ]; then
 	die "You need to be root to generate initrd"
 fi
 
-if [ -d /lib64 -a -d /usr/lib64 ]; then
+for dir in libx32 lib64 lib; do
+	initrd_dir=/usr/$dir/initrd
+	if [ -d "$initrd_dir" ]; then
+		initrd_dirs="$initrd_dirs $initrd_dir"
+	fi
+done
+
+if [ -d /libx32 -a -d /usr/libx32 ]; then
+	_lib=libx32
+elif [ -d /lib64 -a -d /usr/lib64 ]; then
 	_lib=lib64
 else
 	_lib=lib
 fi
 
-initrd_dir=/usr/$_lib/initrd
 kernel_version=$(echo "$kernel" | awk -F. '{gsub(/[_-].*/, "", $0); print sprintf("%03d%03d",$1,$2)}')
 kernel_version_long=$(echo "$kernel" | awk -F. '{gsub(/[_-].*/, "", $0); print sprintf("%03d%03d%03d",$1,$2,$3)}')
 
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/projects/geninitrd.git/commitdiff/c45a111ca18cffe5b6752a64e85faa509818ee71



More information about the pld-cvs-commit mailing list