I see this patch made it in with a small typo, which got exposed now
that kernel 3.2.10 and 3.2.11 are out (grub-mkconfig used the regular
numbered sorting instead of the intended versioned sorting).

Attacing the trivial patch to fix it.

It is easy to verify, since 3.2.10 and 3.2.11 now get sorted as older
than 3.2.9.

Quoting Georgi Georgiev at 29/10/2011-12:08:19(+0900):
> Running this on a Gentoo system with kernel images generated by Gentoo's
> genkernel.
> 
> My kernel has CONFIG_LOCALVERSION="-kvm1" and I end up with the following 
> files
> in /boot (just the relevant section):
> 
> kernel-genkernel-x86_64-2.6.37.1-kvm1
> kernel-genkernel-x86_64-2.6.38.2-kvm1
> kernel-genkernel-x86_64-2.6.38.5-kvm1
> kernel-genkernel-x86_64-2.6.39.1-kvm1
> kernel-genkernel-x86_64-2.6.39.3-kvm1
> kernel-genkernel-x86_64-2.6.39-kvm1
> 
> grub-mkconfig generates the config in this order, with 2.6.39 being on top,
> while it should be lower.
> 
> grep Loading.*2.6. grub.conf | uniq -c
>       2         echo    'Loading Linux x86_64-2.6.39-kvm1 ...'
>       2         echo    'Loading Linux x86_64-2.6.39.3-kvm1 ...'
>       2         echo    'Loading Linux x86_64-2.6.39.1-kvm1 ...'
>       2         echo    'Loading Linux x86_64-2.6.38.5-kvm1 ...'
>       2         echo    'Loading Linux x86_64-2.6.38.2-kvm1 ...'
>       2         echo    'Loading Linux x86_64-2.6.37.1-kvm1 ...'
> 
> I have been using the attached patch for a while now and it solves the
> problem just fine. Simply using "sort -V" does the right thing. If the
> "-V" option is not available - revert to the old behavior.
> 
> This hasn't happened with the 3.x kernels as they don't have EXTRAVERSION but
> you never know when that would start.
> 
> -- 
> (    Georgi Georgiev   (  QOTD: "You want me to put *holes* in my    (
>  ) -------------------  ) ears and hang things from them? How...      )
> (  ------------------- (  tribal."                                   (

> >From 60bcbf59525d311ae1840db15d0fb10f7f1b9ad4 Mon Sep 17 00:00:00 2001
> From: Georgi Georgiev <[email protected]>
> Date: Fri, 18 Feb 2011 22:58:38 +0900
> Subject: [PATCH 1/1] Use proper version sorting if "sort" supports it
> 
> This way 2.6.37-sfx1 will be sorted as older than 2.6.37.1-sfx1.
> Currently it shows as newer.
> ---
>  util/grub-mkconfig_lib.in |   18 +++++++++++++++++-
>  1 files changed, 17 insertions(+), 1 deletions(-)
> 
> diff --git a/util/grub-mkconfig_lib.in b/util/grub-mkconfig_lib.in
> index 901b575..605299c 100644
> --- a/util/grub-mkconfig_lib.in
> +++ b/util/grub-mkconfig_lib.in
> @@ -165,6 +165,22 @@ grub_file_is_not_garbage ()
>    return 0
>  }
>  
> +sort_version()
> +{
> +  if [[ ${_sort_has_v:-undef} == "undef" ]]; then
> +    if sort -V < /dev/null &>/dev/null; then
> +      _sort_has_v=1
> +    else
> +      _sort_has_v=0
> +    fi
> +  fi
> +  if [[ ${_sort_has_v} == 1 ]]; then
> +    sort -V
> +  else
> +    sort -n
> +  fi
> +}
> +
>  version_test_numeric ()
>  {
>    local a="$1"
> @@ -181,7 +197,7 @@ version_test_numeric ()
>      a="$b"
>      b="$c"
>    fi
> -  if (echo "$a" ; echo "$b") | sort -n | head -n 1 | grep -qx "$b" ; then
> +  if (echo "$a" ; echo "$b") | sort_version | head -n 1 | grep -qx "$b" ; 
> then
>      return 0
>    else
>      return 1
> -- 
> 1.7.3.4
> 


-- 
(*   Georgi Georgiev   (* "I've seen it. It's rubbish." -- Marvin    (*
*)    [email protected]    *) the Paranoid Android                       *)
(*  +81(90)2877-8845   (*                                            (*
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: [email protected]
# target_branch: http://bzr.savannah.gnu.org/r/grub/trunk/grub/
# testament_sha1: ff9d44fe7dc7116a1de2dfdadf80ab847ef3db6b
# timestamp: 2012-03-16 00:31:14 +0900
# base_revision_id: [email protected]
# 
# Begin patch
=== modified file 'ChangeLog'
--- ChangeLog   2012-03-11 22:41:29 +0000
+++ ChangeLog   2012-03-15 15:30:33 +0000
@@ -1,3 +1,8 @@
+2012-03-16  Georgi Georgiev  <[email protected]>
+
+       * util/grub-mkconfig_lib.in: Properly detect if "sort" can do
+       versioned sorting.
+
 2012-03-11  Vladimir Serbinenko  <[email protected]>
 
        * grub-core/loader/i386/linux.c (allocate_pages): Don't allocate

=== modified file 'util/grub-mkconfig_lib.in'
--- util/grub-mkconfig_lib.in   2012-03-04 22:13:16 +0000
+++ util/grub-mkconfig_lib.in   2012-03-15 15:30:33 +0000
@@ -193,7 +193,7 @@
     no)
       LC_ALL=C sort -n;;
     *)
-      if sort -v </dev/null > /dev/null 2>&1; then
+      if sort -V </dev/null > /dev/null 2>&1; then
         version_sort_sort_has_v=yes
        LC_ALL=C sort -V
       else

# Begin bundle
IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWZzKzbgAAhNfgBAwUXP//1qE
1QC///9wUARZvJCpu6lKDdglFTxT0Qeqek2mMig0eptQDQAMQEpNFPENGgRGjE0BoAGgGgDFGgph
TZTanqeo00NAANBtTIAOYACYAAmAAAAAAkkCATTCnkaT0hglNqbakDI9RkHvOOeq1njFQzWjedgr
r0b6czVEjVgH0UQDmdTYXfcPMV/V43dVCKSV3sBFpcbkhR72tKEXuj5WTUtI3B+isaz3bM9Xm5iG
LRQ2c5rwIl+vTNduZIHWCsQMozhV3XLnz0rLD4RtAiBuRVdNGKOYfyv6npvlGtDIcIqIUzakPecl
0P7LJIOb05i9EN/w8Sl5mJA7xQrkCGeInVGxC4k+AQRpyKPUYtkCLvoNyFyJzaaBMpVSbK0L7wyP
rESIWFoNueyqlCmW1NmYLkauNu0D2Awzf3amlbcT9Kwp9zPoGE1iO7ITkLDHdQQDxYZEDCVmk7YS
DfoOTE2qJqgyZGV3KcprdWBMhuYjICCFCGTwK4WpeQOTxsSA9pBYeADn0sRZpgcFGr4sXz3Gm2BE
8UMcVgYk+za6QCsAomqmCD/1pGRXQ4pZQ0VaDVGJMvjfnLTF8GhXHC0LzYHdDKvgyLcsyigWZVcb
Bx6IysGt3DN6dLnOxUkMpmaccmMbpH84ClCTEJSwSCFaE4NKq1UsmWPQY5xv5QOgjOKpBksM1doy
ElSChkQWagchEoKGUcp7LWQvcsoT0G4NYnTgCNJFORIpL5mZvZMMZuYeXBj9c0J6FxKhsQ/drQqr
GBWpEusK7Tc/50kjZZvR+aPW8u5kdq9a0p11/4KUW8lb1eB0KVRrzv7bxMDUYFpmznUY9WZY9GeE
dODlFRR21aXRQpRD2RiZMreRnxzyrxvCQRLR8USPTf9AJL+EaGRWeSeUxvD5hsDAu1YpO3E6HImm
6MOlSMjXkSMlhUkY8S3yND2w2K3LiIEJ0tRQ4GOilUISHixqKEEhnuKUUIjBWD0R3DPuOLDblMvl
UjmZmo9jkO4psxE6PN7IY+4jAZHXkUM76I9DQX4caIfG4GiHYBpQ0OI3BZr470Fpl4oLPkkb+ZMq
DpIMOExH2R7Iugfjzzhol0R4OMe4eodQ3AcMkNQBQjNHYCk6AeIWIe4HiijP3NrRNqJtTshg1Qyn
Mai4LW+QxPKSqmeMoDDLgPeh64CGQ5PU3ACYUGDsOXHi25Fv+3jxSS5uREPNFJQvdGiOsVdQBlj4
MMDlBORLe61HkjYjK0CZGFTEzz1mIlxIYgPNjfwsYiIRSOgHqADjK6HgFepiVHAhgKRDRb2DCkiJ
DDQKOAm5VPYJseqqA33odPfTorBxUisHMF0RDxbYGsrqjsI6XKgCdR+IIkBU5FxN6oY8MRGFyuCf
gBx/8XckU4UJCcys24A=
_______________________________________________
Bug-grub mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/bug-grub

Reply via email to