lib.systems.doubles: only typecheck in CI
This commit is contained in:
@@ -39,6 +39,7 @@
|
||||
/lib/derivations.nix @NixOS/stdenv
|
||||
/lib/fetchers.nix @alyssais @NixOS/stdenv
|
||||
/lib/meta.nix @alyssais @NixOS/stdenv
|
||||
/lib/meta-types.nix @infinisil @adisbladis @NixOS/stdenv
|
||||
/lib/source-types.nix @alyssais @NixOS/stdenv
|
||||
/lib/systems @alyssais @NixOS/stdenv
|
||||
## Libraries / Module system
|
||||
@@ -67,7 +68,6 @@
|
||||
/pkgs/stdenv/generic/problems.nix @infinisil
|
||||
/pkgs/test/problems @infinisil
|
||||
/pkgs/stdenv/generic/check-meta.nix @infinisil @Ericson2314 @adisbladis @NixOS/stdenv
|
||||
/pkgs/stdenv/generic/meta-types.nix @infinisil @adisbladis @NixOS/stdenv
|
||||
/pkgs/stdenv/cross @Ericson2314 @NixOS/stdenv
|
||||
/pkgs/build-support @philiptaron
|
||||
/pkgs/build-support/cc-wrapper @Ericson2314
|
||||
|
||||
+19
-3
@@ -1,7 +1,15 @@
|
||||
{ lib }:
|
||||
let
|
||||
inherit (lib) lists;
|
||||
inherit (lib)
|
||||
lists
|
||||
splitString
|
||||
;
|
||||
inherit (lib.systems) parse;
|
||||
inherit (parse)
|
||||
mkSystemFromSkeleton
|
||||
mkSkeletonFromList
|
||||
doubleFromSystem
|
||||
;
|
||||
inherit (lib.systems.inspect) predicates;
|
||||
inherit (lib.attrsets) matchAttrs;
|
||||
|
||||
@@ -117,9 +125,17 @@ let
|
||||
"x86_64-uefi"
|
||||
];
|
||||
|
||||
allParsed = map parse.mkSystemFromString all;
|
||||
uncheckedSystemFromString =
|
||||
let
|
||||
systemType = {
|
||||
_type = "system";
|
||||
};
|
||||
in
|
||||
s: mkSystemFromSkeleton (mkSkeletonFromList (splitString "-" s)) // systemType;
|
||||
|
||||
filterDoubles = f: map parse.doubleFromSystem (lists.filter f allParsed);
|
||||
allParsed = map uncheckedSystemFromString all;
|
||||
|
||||
filterDoubles = f: map doubleFromSystem (lists.filter f allParsed);
|
||||
|
||||
in
|
||||
{
|
||||
|
||||
@@ -903,6 +903,8 @@ rec {
|
||||
or (throw "system string '${lib.concatStringsSep "-" l}' has invalid number of hyphen-separated components");
|
||||
|
||||
# This should revert the job done by config.guess from the gcc compiler.
|
||||
# Note: this does _not_ verify that the system is valid
|
||||
# `mkSystemFromString` is recommended for external use
|
||||
mkSystemFromSkeleton =
|
||||
let
|
||||
getCpu = name: cpuTypes.${name} or (throw "Unknown CPU type: ${name}");
|
||||
@@ -960,9 +962,9 @@ rec {
|
||||
};
|
||||
|
||||
in
|
||||
mkSystem parsed;
|
||||
parsed;
|
||||
|
||||
mkSystemFromString = s: mkSystemFromSkeleton (mkSkeletonFromList (splitString "-" s));
|
||||
mkSystemFromString = s: mkSystem (mkSystemFromSkeleton (mkSkeletonFromList (splitString "-" s)));
|
||||
|
||||
kernelName =
|
||||
kernel: if kernel ? version then kernel.name + toString kernel.version else kernel.name;
|
||||
|
||||
@@ -215,6 +215,22 @@ lib.runTests (
|
||||
})
|
||||
|
||||
// {
|
||||
test_platforms_pass_typecheck = {
|
||||
# To improve performance, the result of parsing all 70+ systems in
|
||||
# `lib.platforms` into their attrset representations aren't typechecked.
|
||||
# The results are expected to be constant, and avoiding the slow
|
||||
# validation gives a meaningful improvement to evaluation speed. We ensure
|
||||
# that all systems pass validation here
|
||||
expr = builtins.filter (
|
||||
system:
|
||||
let
|
||||
evalResult = builtins.tryEval (lib.systems.parse.mkSystemFromString system);
|
||||
in
|
||||
evalResult.success == false
|
||||
) lib.platforms.all;
|
||||
|
||||
expected = [ ];
|
||||
};
|
||||
test_equals_example_x86_64-linux = {
|
||||
expr = lib.systems.equals (lib.systems.elaborate "x86_64-linux") (
|
||||
lib.systems.elaborate "x86_64-linux"
|
||||
|
||||
Reference in New Issue
Block a user