summary refs log tree commit diff
path: root/pkgs/build-support/vm
diff options
context:
space:
mode:
authoraszlig <aszlig@redmoonstudios.org>2014-03-04 08:13:22 +0100
committeraszlig <aszlig@redmoonstudios.org>2014-03-04 09:22:18 +0100
commitbd2d120c0856f0489869b7cdd78b3bc43a300aa3 (patch)
treea809f24e961eb48c38e773d1606c445c7517c5a8 /pkgs/build-support/vm
parentc4d5757e294b9e894fc6781a04d546cff6e1da82 (diff)
downloadnixlib-bd2d120c0856f0489869b7cdd78b3bc43a300aa3.tar
nixlib-bd2d120c0856f0489869b7cdd78b3bc43a300aa3.tar.gz
nixlib-bd2d120c0856f0489869b7cdd78b3bc43a300aa3.tar.bz2
nixlib-bd2d120c0856f0489869b7cdd78b3bc43a300aa3.tar.lz
nixlib-bd2d120c0856f0489869b7cdd78b3bc43a300aa3.tar.xz
nixlib-bd2d120c0856f0489869b7cdd78b3bc43a300aa3.tar.zst
nixlib-bd2d120c0856f0489869b7cdd78b3bc43a300aa3.zip
vm/windows: Allow to specify a different arch.
So far, we determined this based on stdenv.is64bit, but there are cases
where you want to run/build a 32bit program on a 64 bit Windows.

This is now possible, by passing windowsImage.arch = "i686" | "x86_64"
to runInWindowsVM. Based an what was passed, the corresponding Cygwin
packages and setup.exe are bootstrapped.

Signed-off-by: aszlig <aszlig@redmoonstudios.org>
Diffstat (limited to 'pkgs/build-support/vm')
-rw-r--r--pkgs/build-support/vm/windows/bootstrap.nix5
-rw-r--r--pkgs/build-support/vm/windows/cygwin-iso/default.nix16
2 files changed, 11 insertions, 10 deletions
diff --git a/pkgs/build-support/vm/windows/bootstrap.nix b/pkgs/build-support/vm/windows/bootstrap.nix
index b2febf19a89e..47afce5b5a37 100644
--- a/pkgs/build-support/vm/windows/bootstrap.nix
+++ b/pkgs/build-support/vm/windows/bootstrap.nix
@@ -3,7 +3,7 @@
 , samba, socat, vde2, cdrkit, pathsFromGraph
 }:
 
-{ isoFile, productKey }:
+{ isoFile, productKey, arch ? null }:
 
 with stdenv.lib;
 
@@ -15,6 +15,9 @@ let
 
   mkCygwinImage = import ./cygwin-iso {
     inherit stdenv fetchurl runCommand python perl cdrkit pathsFromGraph;
+    arch = let
+      defaultArch = if stdenv.is64bit then "x86_64" else "i686";
+    in if arch == null then defaultArch else arch;
   };
 
   installer = import ./install {
diff --git a/pkgs/build-support/vm/windows/cygwin-iso/default.nix b/pkgs/build-support/vm/windows/cygwin-iso/default.nix
index 038ceaa0f829..d9801428a887 100644
--- a/pkgs/build-support/vm/windows/cygwin-iso/default.nix
+++ b/pkgs/build-support/vm/windows/cygwin-iso/default.nix
@@ -1,4 +1,6 @@
-{ stdenv, fetchurl, runCommand, python, perl, cdrkit, pathsFromGraph }:
+{ stdenv, fetchurl, runCommand, python, perl, cdrkit, pathsFromGraph
+, arch ? "x86_64"
+}:
 
 { packages ? []
 , mirror ? "http://ftp.gwdg.de/pub/linux/sources.redhat.com/cygwin"
@@ -6,7 +8,7 @@
 }:
 
 let
-  cygPkgList = if stdenv.is64bit then fetchurl {
+  cygPkgList = if arch == "x86_64" then fetchurl {
     url = "${mirror}/x86_64/setup.ini";
     sha256 = "0ljsxdkx9s916wp28kcvql3bjx80zzzidan6jicby7i9s3sm96n9";
   } else fetchurl {
@@ -20,13 +22,9 @@ let
       libc = "msvcrt";
       platform = {};
       openssl.system = "mingw64";
-    } // (if stdenv.is64bit then {
-      config = "x86_64-w64-mingw32";
-      arch = "x86_64";
-    } else {
-      config = "i686-w64-mingw32";
-      arch = "i686";
-    });
+      inherit arch;
+      config = "${arch}-w64-mingw32";
+    };
   }).windows.cygwinSetup.crossDrv;
 
   makeCygwinClosure = { packages, packageList }: let