Gentoo Archives: gentoo-commits

From: "Ulrich Mueller (ulm)" <ulm@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] eselect r579 - in trunk: . modules
Date: Sat, 06 Jun 2009 08:37:08
Message-Id: E1MCrOk-0005Jq-VN@stork.gentoo.org
1 Author: ulm
2 Date: 2009-06-06 08:37:06 +0000 (Sat, 06 Jun 2009)
3 New Revision: 579
4
5 Modified:
6 trunk/ChangeLog
7 trunk/NEWS
8 trunk/modules/kernel.eselect
9 Log:
10 Sort kernel versions properly, bug 207889.
11
12 Modified: trunk/ChangeLog
13 ===================================================================
14 --- trunk/ChangeLog 2009-06-05 19:07:36 UTC (rev 578)
15 +++ trunk/ChangeLog 2009-06-06 08:37:06 UTC (rev 579)
16 @@ -1,3 +1,8 @@
17 +2009-06-06 Ulrich Mueller <ulm@g.o>
18 +
19 + * modules/kernel.eselect (sort_kernel_versions): New function.
20 + (find_targets): Sort kernel versions properly. Fixes bug 207889.
21 +
22 2009-06-05 Ulrich Mueller <ulm@g.o>
23
24 * modules/rc.eselect (is_script): Symlinks are implicitly
25
26 Modified: trunk/NEWS
27 ===================================================================
28 --- trunk/NEWS 2009-06-05 19:07:36 UTC (rev 578)
29 +++ trunk/NEWS 2009-06-06 08:37:06 UTC (rev 579)
30 @@ -2,6 +2,9 @@
31 ChangeLog file for a more detailed listing of changes/bug fixes.
32
33 trunk:
34 + Bug fixes:
35 + - Fixed bug #207889: The kernel module now sorts versions properly.
36 +
37 New features:
38 - Add a test if the selected package manager is valid.
39 - Extended syntax in editor-variable library.
40
41 Modified: trunk/modules/kernel.eselect
42 ===================================================================
43 --- trunk/modules/kernel.eselect 2009-06-05 19:07:36 UTC (rev 578)
44 +++ trunk/modules/kernel.eselect 2009-06-06 08:37:06 UTC (rev 579)
45 @@ -7,12 +7,32 @@
46 SVN_DATE='$Date$'
47 VERSION=$(svn_date_to_version "${SVN_DATE}")
48
49 +# sort function for kernel versions, to be used in a pipe
50 +sort_kernel_versions() {
51 + local vsort="sort --version-sort"
52 + # Test if our sort supports the --version-sort option
53 + # (it should since the kernel module is Linux specific)
54 + ${vsort} </dev/null &>/dev/null || vsort=sort
55 +
56 + # We sort kernel versions as follows:
57 + # 1. Run sed to prepend the version string by the numeric version
58 + # and an additional rank indicator that is 0 for release candidates
59 + # or 1 otherwise. After this step we have, for example:
60 + # 2.6.29 1 linux-2.6.29
61 + # 2.6.29 0 linux-2.6.29-rc8
62 + # 2. sort --version-sort
63 + # 3. Run sed again to remove the prepended keys from step 1.
64 + sed -e 's/^\(linux-\)\?\([[:digit:].]\+\)[-_]rc/\2 0 &/' \
65 + -e 't;s/^\(linux-\)\?\([[:digit:].]\+\)/\2 1 &/' \
66 + | ${vsort} | sed 's/.* //'
67 +}
68 +
69 # find a list of kernel symlink targets
70 find_targets() {
71 local f
72 for f in "${ROOT}"/usr/src/linux-[[:digit:]]* ; do
73 [[ -d ${f} ]] && basename "${f}"
74 - done
75 + done | sort_kernel_versions
76 }
77
78 # try to remove the kernel symlink