coqPackages.metaFetch: fix sort predicate stability
Incorrect sorting predicate was found as part of https://github.com/NixOS/nix/issues/12106 where `nix` was crashing on the code like: $ nix eval --expr 'builtins.sort (a: b: true) [ 1 2 3 ]' ... Aborted (core dumped) Note: the crash happens here because sorting predicate does not implement `lessThan` and triggers assertion failures for `std::stable_sort` that backs `builtins.sort`. The change restores `lessThan` semantic for `version sorting`.
This commit is contained in:
parent
9ceb1173fb
commit
ef6ac2dd6e
@ -27,7 +27,7 @@ let
|
|||||||
sort
|
sort
|
||||||
switch
|
switch
|
||||||
switch-if
|
switch-if
|
||||||
versionAtLeast
|
versionOlder
|
||||||
versions
|
versions
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -112,7 +112,7 @@ let
|
|||||||
shortVersion =
|
shortVersion =
|
||||||
x:
|
x:
|
||||||
if (isString x && match "^/.*" x == null) then
|
if (isString x && match "^/.*" x == null) then
|
||||||
findFirst (v: versions.majorMinor v == x) null (sort versionAtLeast (attrNames release))
|
findFirst (v: versions.majorMinor v == x) null (sort (l: r: versionOlder r l) (attrNames release))
|
||||||
else
|
else
|
||||||
null;
|
null;
|
||||||
isShortVersion = x: shortVersion x != null;
|
isShortVersion = x: shortVersion x != null;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user