summary refs log tree commit diff
path: root/pkgs/test
diff options
context:
space:
mode:
authorMatthew Bauer <mjbauer95@gmail.com>2018-11-29 19:34:20 -0600
committerGitHub <noreply@github.com>2018-11-29 19:34:20 -0600
commitf435272ce351ed192e9ff9c643331a4cc063930e (patch)
tree09d2cd01d0062578f61c4712fb73ab6b29313b45 /pkgs/test
parent1cd300e57b35b5e075a56ba9bea348f209620191 (diff)
parent9c8fd412248ad907eee7547b19bf3f7583d2c411 (diff)
downloadnixpkgs-f435272ce351ed192e9ff9c643331a4cc063930e.tar
nixpkgs-f435272ce351ed192e9ff9c643331a4cc063930e.tar.gz
nixpkgs-f435272ce351ed192e9ff9c643331a4cc063930e.tar.bz2
nixpkgs-f435272ce351ed192e9ff9c643331a4cc063930e.tar.lz
nixpkgs-f435272ce351ed192e9ff9c643331a4cc063930e.tar.xz
nixpkgs-f435272ce351ed192e9ff9c643331a4cc063930e.tar.zst
nixpkgs-f435272ce351ed192e9ff9c643331a4cc063930e.zip
Merge pull request #50212 from matthewbauer/host-emulator
Add "emulator" function to systems
Diffstat (limited to 'pkgs/test')
-rw-r--r--pkgs/test/cross/default.nix62
1 files changed, 36 insertions, 26 deletions
diff --git a/pkgs/test/cross/default.nix b/pkgs/test/cross/default.nix
index 6f41447ca76..622799106cd 100644
--- a/pkgs/test/cross/default.nix
+++ b/pkgs/test/cross/default.nix
@@ -1,12 +1,11 @@
-{ pkgs, pkgsCross, lib }:
+{ pkgs, lib }:
 
 let
 
-  emulators = {
-    mingw32 = "WINEDEBUG=-all ${pkgs.winePackages.minimal}/bin/wine";
-    mingwW64 = "WINEDEBUG=-all ${pkgs.wineWowPackages.minimal}/bin/wine";
-    # TODO: add some qemu-based emulaltors here
-  };
+  testedSystems = lib.filterAttrs (name: value: let
+    platform = lib.systems.elaborate value;
+  in platform.isLinux || platform.isWindows
+  ) lib.systems.examples;
 
   getExecutable = pkgs: pkgFun: exec:
     "${pkgFun pkgs}${exec}${pkgs.hostPlatform.extensions.executable}";
@@ -17,6 +16,10 @@ let
   in pkgs.runCommand "test-${pkgName}-${crossPkgs.hostPlatform.config}" {
     nativeBuildInputs = [ pkgs.dos2unix ];
   } ''
+    # Just in case we are using wine, get rid of that annoying extra
+    # stuff.
+    export WINEDEBUG=-all
+
     HOME=$(pwd)
     mkdir -p $out
 
@@ -44,29 +47,29 @@ let
     fi
   '';
 
-in
+  mapMultiPlatformTest = test: lib.mapAttrs (name: system: test rec {
+    crossPkgs = import pkgs.path {
+      localSystem = { inherit (pkgs.hostPlatform) config; };
+      crossSystem = system;
+    };
 
-lib.mapAttrs (name: emulator: let
-  crossPkgs = pkgsCross.${name};
+    emulator = crossPkgs.hostPlatform.emulator pkgs;
 
-  # Apply some transformation on windows to get dlls in the right
-  # place. Unfortunately mingw doesn’t seem to be able to do linking
-  # properly.
-  platformFun = pkg: if crossPkgs.hostPlatform.isWindows then
-    pkgs.buildEnv {
-      name = "${pkg.name}-winlinks";
-      paths = [pkg] ++ pkg.buildInputs;
-    } else pkg;
-in {
+    # Apply some transformation on windows to get dlls in the right
+    # place. Unfortunately mingw doesn’t seem to be able to do linking
+    # properly.
+    platformFun = pkg: if crossPkgs.hostPlatform.isWindows then
+      pkgs.buildEnv {
+        name = "${pkg.name}-winlinks";
+        paths = [pkg] ++ pkg.buildInputs;
+      } else pkg;
+  }) testedSystems;
 
-  hello = compareTest {
-    inherit emulator crossPkgs;
-    hostPkgs = pkgs;
-    exec = "/bin/hello";
-    pkgFun = pkgs: pkgs.hello;
-  };
+in
+
+lib.mapAttrs (_: mapMultiPlatformTest) {
 
-  file = compareTest {
+  file = {platformFun, crossPkgs, emulator}: compareTest {
     inherit emulator crossPkgs;
     hostPkgs = pkgs;
     exec = "/bin/file";
@@ -77,4 +80,11 @@ in {
     pkgFun = pkgs: platformFun pkgs.file;
   };
 
-}) emulators
+  hello = {platformFun, crossPkgs, emulator}: compareTest {
+    inherit emulator crossPkgs;
+    hostPkgs = pkgs;
+    exec = "/bin/hello";
+    pkgFun = pkgs: pkgs.hello;
+  };
+
+}