dracut.sh: do not rely on the presence of lib64, check with ldd
authorHarald Hoyer <harald@redhat.com>
Mon, 4 Jun 2012 09:33:29 +0000 (11:33 +0200)
committerHarald Hoyer <harald@redhat.com>
Mon, 4 Jun 2012 09:33:29 +0000 (11:33 +0200)
dracut.sh

index b52c691..d8535db 100755 (executable)
--- a/dracut.sh
+++ b/dracut.sh
@@ -527,16 +527,23 @@ ddebug "Executing $0 $dracut_args"
 }
 
 # Detect lib paths
-[[ $libdir ]] || for libdir in /lib64 /lib; do
-    [[ -d $libdir ]] && libdirs+=" $libdir" && break
-done || {
-    dfatal 'No lib directory?!!!'
-    exit 1
-}
-
-[[ $usrlibdir ]] || for usrlibdir in /usr/lib64 /usr/lib; do
-    [[ -d $usrlibdir ]] && libdirs+=" $usrlibdir" && break
-done || dwarn 'No usr/lib directory!'
+if ! [[ $libdir ]] || ! [[ $usrlibdir ]] ; then
+    if strstr "$(ldd /bin/sh)" "/lib64/" &>/dev/null \
+        && [[ -d /lib64 ]]; then
+        libdir=/lib64
+        usrlibdir=/usr/lib64
+    else
+        libdir=/lib
+        usrlibdir=/usr/lib
+    fi
+    for i in $libdir $usrlibdir; do
+        if [[ -d $i ]]; then
+            libdirs+=" $i"
+        else
+            dwarn 'No $i directory??!!'
+        fi
+    done
+fi
 
 # This is kinda legacy -- eventually it should go away.
 case $dracutmodules in