Backport "supermin: Prevent multilib corruption (RHBZ#558593)" from libguestfs
[febootstrap.git] / febootstrap-supermin-helper.sh
index d11d82a..cd5cf19 100755 (executable)
@@ -32,7 +32,7 @@ eval set -- "$TEMP"
 
 usage ()
 {
-    echo "Usage: febootstrap-supermin-helper supermin.img hostfiles.txt kernel initrd"
+    echo "Usage: febootstrap-supermin-helper supermin.img hostfiles.txt host_cpu kernel initrd"
     echo "Please read febootstrap-supermin-helper(8) man page for more information."
 }
 
@@ -55,7 +55,7 @@ while true; do
     esac
 done
 
-if [ $# -ne 4 ]; then
+if [ $# -ne 5 ]; then
     usage
     exit 1
 fi
@@ -66,9 +66,11 @@ set -e
 supermin="$1"
 hostfiles="$2"
 
+host_cpu=$3
+
 # Output files.
-kernel="$3"
-initrd="$4"
+kernel="$4"
+initrd="$5"
 
 rm -f "$kernel" "$initrd"
 
@@ -80,11 +82,14 @@ rm -f "$kernel" "$initrd"
 # RHEL 5 didn't append the arch to the kernel name, so look for kernels
 # without arch second.
 
-arch=$(echo "@host_cpu@" | sed 's/^i.86$/i?86/')
-kernels=$(ls -1vr /boot/vmlinuz-*.$arch* 2>/dev/null | grep -v xen; ls -1vr /boot/vmlinuz-* 2>/dev/null | grep -v xen)
+arch=$(echo $host_cpu | sed 's/^i.86$/i?86/')
+kernels=$(
+    ls -1dvr /boot/vmlinuz-*.$arch* 2>/dev/null | grep -v xen ||: ;
+    ls -1dvr /boot/vmlinuz-* 2>/dev/null | grep -v xen
+)
 
 if [ -z "$kernels" ]; then
-    echo "$0: failed to find a suitable kernel" >&2
+    echo "$0: failed to find a suitable kernel in /boot directory" >&2
     exit 1
 fi