aboutsummaryrefslogtreecommitdiff
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)
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;
+ };
+
+}