diff options
author | aszlig <aszlig@redmoonstudios.org> | 2014-03-04 08:13:22 +0100 |
---|---|---|
committer | aszlig <aszlig@redmoonstudios.org> | 2014-03-04 09:22:18 +0100 |
commit | bd2d120c0856f0489869b7cdd78b3bc43a300aa3 (patch) | |
tree | a809f24e961eb48c38e773d1606c445c7517c5a8 /pkgs/build-support | |
parent | c4d5757e294b9e894fc6781a04d546cff6e1da82 (diff) | |
download | nixlib-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')
-rw-r--r-- | pkgs/build-support/vm/windows/bootstrap.nix | 5 | ||||
-rw-r--r-- | pkgs/build-support/vm/windows/cygwin-iso/default.nix | 16 |
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 |