I tracked this down and created a patch to fix it.  update-grub converts
filenames with x.y.z versions in them to x.y.z.0, but the sed regex was
only matching when something follows the z--so /boot/vmlinuz-x.y.z-foo
and /boot/vmlinuz-x.y.z.a would work, but /boot/vmlinuz-x.y.z would end
up coming before the -rc versions (or -pre or any of the other special
suffixes update-grub knows about).

The attached patch to lets the x.y.z -> x.y.z.0 conversion also happen
when "z" is at the end of the filename.


-- 
-- Jason Rhinelander
--- old/update-grub	2007-02-05 13:17:25.000000000 -0400
+++ new/update-grub	2007-02-05 13:17:30.000000000 -0400
@@ -471,8 +471,8 @@
         v1=$(echo $1 | sed -e 's!^\(.*-\([0-9]\+\.\)\{2,3\}[0-9]\+\)\(.*\)!\1 \3!g')
 	v2=$(echo $2 | sed -e 's!^\(.*-\([0-9]\+\.\)\{2,3\}[0-9]\+\)\(.*\)!\1 \3!g')
 	#If the version number only has 3 digits then put in another .0
-        v1=$(echo $v1 | sed -e 's!^\(.*-\([0-9]\+\.\)\{2\}[0-9]\+\)\( .*\)!\1.0 \3!g')
-        v2=$(echo $v2 | sed -e 's!^\(.*-\([0-9]\+\.\)\{2\}[0-9]\+\)\( .*\)!\1.0 \3!g')
+        v1=$(echo $v1 | sed -e 's!^\(.*-\([0-9]\+\.\)\{2\}[0-9]\+\)\( .*\|$\)!\1.0 \3!g')
+        v2=$(echo $v2 | sed -e 's!^\(.*-\([0-9]\+\.\)\{2\}[0-9]\+\)\( .*\|$\)!\1.0 \3!g')
           
 	# Then split the version number and remove any '.' 's or dashes
 	v1=$(echo $v1 | sed -e 's![-\.]\+! !g' -e 's!\([0-9]\)\([[:alpha:]]\)!\1 \2!')

Reply via email to