[Toybox] sort -V
Rob Landley
rob at landley.net
Wed Dec 19 12:49:34 PST 2018
On 12/19/18 2:14 PM, enh wrote:
>> What is the _context_ of the users of sort -V? If I do try to implement
>> something, what does success look like here? (Do we have a sort.test patch we
>> can start with?)
>
> from most legit to least legit...
>
> someone trying to find the latest kernel version from git tags:
>
> https://android.googlesource.com/platform/tools/repohooks/+/master/tools/checkpatch.pl-update
>
> there also appears to be something directly in the kernel:
>
> https://android.googlesource.com/kernel/common/+/android-3.10/scripts/depmod.sh
>
> plus the usual suspects sort a directory of files called 0_foo, 1_bar,
> etc, (where the number always comes first) apparently with no need for
> -V at all.
>
> so really just kernel version tags?
My horrible regex was every package aboriginal linux was using plus all the ones
in Linux From Scratch and a reasonable chunk of beyond linux from scratch.
Hmmm... Ok, it sounds like what it needs is a sort where:
A) proceed through non-numeric bits sorted alphabetically, and both "-" and "."
are considered non-numeric.
B) groups of digits are sorted numerically. (So if isdigit(*a) && isdigit(*b)
That would handle most name-1.234-pre6.5b.tgz variants. The hitch being that
"1.234-pre6 comes _before_ 1.234", as would "1.234-rc2" (I forget what -rc vs
-pre was but it's historical and they don't do that no more.) Aha, but '-' is
less than '0' so if we alphasort when we _don't_ have two groups of digits, that
comes out ahead properly.
But "1.234" vs "1.234-rc1" and "1.234b" wanna go different ways. Ok, when one
string ends early, compare the first leftover character with the last character
o the previous string. - is <0, a is >9.
Let's see what "git describe" spits out...
$ git describe
v4.20-rc7-10-g62393db
Hmmm... 4.20-rc7 is before 4.20, but 4.20-rc7-10 is _after_ 4.20-rc7.
Grumble grumble. It's all horrible heuristics, but I would like to find some
simple horrible heuristics that work with the cases we care about.
(I could just hardwire in -rc and -pre...)
Rob
More information about the Toybox
mailing list