Replace lib.crossLists with lib.cartesianProductOfSets

post-mortem
Emery Hemingway 2 years ago
parent f12d27872a
commit 6f9f1b7069
  1. 6
      flake.lock
  2. 14
      flake.nix
  3. 90
      tests/default.nix

@ -2,11 +2,11 @@
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1611784459,
"narHash": "sha256-f5ZAW9dK/m2W2F+Gsb9nVuGTcVbnhkUezfaqWYaXAF8=",
"lastModified": 1611948132,
"narHash": "sha256-mH7hD1ps1FcRaVdP36jZWZFHdESVPY5rdTNJR16z7D4=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "5547b2f67042994ec0155cef24296681dc7fba5a",
"rev": "aa48e205a2e0516ff4b96c79eeb666aaaccd418c",
"type": "github"
},
"original": {

@ -1,25 +1,27 @@
{
description = "Genode packages";
outputs = { self, nixpkgs }:
let
localSystems = [ "x86_64-linux" ];
crossSystems = [ "aarch64-genode" "x86_64-genode" ];
systems = {
localSystem = [ "x86_64-linux" ];
crossSystem = [ "aarch64-genode" "x86_64-genode" ];
};
systemSpace = nixpkgs.lib.cartesianProductOfSets systems;
forAllLocalSystems = f:
nixpkgs.lib.genAttrs localSystems (system: f system);
nixpkgs.lib.genAttrs systems.localSystem (system: f system);
forAllCrossSystems = f:
with builtins;
let
f' = localSystem: crossSystem:
f' = { localSystem, crossSystem }:
let system = localSystem + "-" + crossSystem;
in {
name = system;
value = f { inherit system localSystem crossSystem; };
};
list = nixpkgs.lib.lists.crossLists f' [ localSystems crossSystems ];
list = map f' systemSpace;
attrSet = listToAttrs list;
in attrSet;

@ -7,59 +7,59 @@ let
testingPython = import ./lib/testing-python.nix;
testSpecs = map (p: import p) [
./ahci.nix
./bash.nix
./hello.nix
./log.nix
./vmm_x86.nix
./x86.nix
];
testSpace = lib.cartesianProductOfSets {
cores = [
/* {
prefix = "hw-pc-";
testingPython = testingPython {
inherit flake system localSystem crossSystem pkgs;
extraConfigurations = [ ../nixos-modules/base-hw-pc.nix ];
};
specs = [ "x86" "hw" ];
platforms = [ "x86_64-genode" ];
}
*/
/* {
prefix = "hw-virt_qemu-";
testingPython = testingPython {
inherit flake system localSystem crossSystem pkgs;
extraConfigurations = [ ../nixos-modules/base-hw-virt_qemu.nix ];
};
specs = [ "aarch64" "hw" ];
platforms = [ "aarch64-genode" ];
}
*/
{
prefix = "nova-";
testingPython = testingPython {
inherit flake system localSystem crossSystem pkgs;
extraConfigurations = [ ../nixos-modules/nova.nix ];
};
specs = [ "x86" "nova" ];
platforms = [ "x86_64-genode" ];
}
];
test = map (p: import p) [
./ahci.nix
./bash.nix
./hello.nix
./log.nix
./vmm_x86.nix
./x86.nix
];
cores' = builtins.filter (core:
builtins.any (x: x == pkgs.stdenv.hostPlatform.system) core.platforms)
cores;
core = builtins.filter (core:
builtins.any (x: x == pkgs.stdenv.hostPlatform.system) core.platforms) [
/* {
prefix = "hw-pc-";
testingPython = testingPython {
inherit flake system localSystem crossSystem pkgs;
extraConfigurations = [ ../nixos-modules/base-hw-pc.nix ];
};
specs = [ "x86" "hw" ];
platforms = [ "x86_64-genode" ];
}
*/
/* {
prefix = "hw-virt_qemu-";
testingPython = testingPython {
inherit flake system localSystem crossSystem pkgs;
extraConfigurations = [ ../nixos-modules/base-hw-virt_qemu.nix ];
};
specs = [ "aarch64" "hw" ];
platforms = [ "aarch64-genode" ];
}
*/
{
prefix = "nova-";
testingPython = testingPython {
inherit flake system localSystem crossSystem pkgs;
extraConfigurations = [ ../nixos-modules/nova.nix ];
};
specs = [ "x86" "nova" ];
platforms = [ "x86_64-genode" ];
}
];
};
testList = let
f = core: test:
f = { core, test }:
if (test.constraints or (_: true)) core.specs then {
name = core.prefix + test.name;
value = core.testingPython.makeTest test;
} else
null;
in lib.lists.crossLists f [ cores' testSpecs ];
in map f testSpace;
in builtins.listToAttrs (builtins.filter (_: _ != null) testList)

Loading…
Cancel
Save