Merge pull request #44632 from matthewbauer/putty

Support building putty for windows

authored by Matthew Bauer and committed by GitHub fca6cdc3 0b124c1e

+130 -173
+18 -5
pkgs/applications/networking/remote/putty/default.nix
··· 1 { stdenv, fetchurl, autoconf, automake, pkgconfig, libtool 2 - , gtk2, halibut, ncurses, perl }: 3 4 stdenv.mkDerivation rec { 5 version = "0.70"; ··· 13 sha256 = "1gmhwwj1y7b5hgkrkxpf4jddjpk9l5832zq5ibhsiicndsfs92mv"; 14 }; 15 16 - preConfigure = '' 17 perl mkfiles.pl 18 ( cd doc ; make ); 19 sed -e '/AM_PATH_GTK(/d' \ ··· 21 -e '/AC_OUTPUT/iAM_PROG_AR' -i configure.ac 22 ./mkauto.sh 23 cd unix 24 ''; 25 26 nativeBuildInputs = [ autoconf automake halibut libtool perl pkgconfig ]; 27 - buildInputs = [ gtk2 ncurses ]; 28 enableParallelBuilding = true; 29 30 - meta = with stdenv.lib; { 31 description = "A Free Telnet/SSH Client"; 32 longDescription = '' 33 PuTTY is a free implementation of Telnet and SSH for Windows and Unix ··· 36 ''; 37 homepage = https://www.chiark.greenend.org.uk/~sgtatham/putty/; 38 license = licenses.mit; 39 - platforms = platforms.linux; 40 }; 41 }
··· 1 { stdenv, fetchurl, autoconf, automake, pkgconfig, libtool 2 + , gtk2, halibut, ncurses, perl 3 + , hostPlatform, lib }: 4 5 stdenv.mkDerivation rec { 6 version = "0.70"; ··· 14 sha256 = "1gmhwwj1y7b5hgkrkxpf4jddjpk9l5832zq5ibhsiicndsfs92mv"; 15 }; 16 17 + preConfigure = lib.optionalString hostPlatform.isUnix '' 18 perl mkfiles.pl 19 ( cd doc ; make ); 20 sed -e '/AM_PATH_GTK(/d' \ ··· 22 -e '/AC_OUTPUT/iAM_PROG_AR' -i configure.ac 23 ./mkauto.sh 24 cd unix 25 + '' + lib.optionalString hostPlatform.isWindows '' 26 + cd windows 27 ''; 28 29 + TOOLPATH = stdenv.cc.targetPrefix; 30 + makefile = if hostPlatform.isWindows then "Makefile.mgw" else null; 31 + 32 + installPhase = if hostPlatform.isWindows then '' 33 + for exe in *.exe; do 34 + install -D $exe $out/bin/$exe 35 + done 36 + '' else null; 37 + 38 nativeBuildInputs = [ autoconf automake halibut libtool perl pkgconfig ]; 39 + buildInputs = [] 40 + ++ lib.optionals hostPlatform.isUnix [ gtk2 ncurses ]; 41 enableParallelBuilding = true; 42 43 + meta = with lib; { 44 description = "A Free Telnet/SSH Client"; 45 longDescription = '' 46 PuTTY is a free implementation of Telnet and SSH for Windows and Unix ··· 49 ''; 50 homepage = https://www.chiark.greenend.org.uk/~sgtatham/putty/; 51 license = licenses.mit; 52 + platforms = platforms.unix ++ platforms.windows; 53 }; 54 }
+29
pkgs/os-specific/windows/default.nix
···
··· 1 + { newScope, crossLibcStdenv }: let 2 + 3 + callPackage = newScope self; 4 + 5 + self = { 6 + cygwinSetup = callPackage ./cygwin-setup { }; 7 + 8 + jom = callPackage ./jom { }; 9 + 10 + w32api = callPackage ./w32api { }; 11 + 12 + mingwrt = callPackage ./mingwrt { }; 13 + mingw_runtime = self.mingwrt; 14 + 15 + mingw_w64 = callPackage ./mingw-w64 { 16 + stdenv = crossLibcStdenv; 17 + }; 18 + 19 + mingw_w64_headers = callPackage ./mingw-w64/headers.nix { }; 20 + 21 + mingw_w64_pthreads = callPackage ./mingw-w64/pthreads.nix { }; 22 + 23 + pthreads = callPackage ./pthread-w32 { }; 24 + 25 + wxMSW = callPackage ./wxMSW-2.8 { }; 26 + 27 + libgnurx = callPackage ./libgnurx { }; 28 + }; 29 + in self
+1 -1
pkgs/os-specific/windows/jom/default.nix
··· 16 nativeBuildInputs = [ flex qmake4Hook ]; 17 18 QTDIR = qt48; 19 - 20 # cmakeFlags = "-DWIN32=1 -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_RC_COMPILER=${stdenv.cc.targetPrefix}windres"; 21 22 preBuild = stdenv.lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) ''
··· 16 nativeBuildInputs = [ flex qmake4Hook ]; 17 18 QTDIR = qt48; 19 + 20 # cmakeFlags = "-DWIN32=1 -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_RC_COMPILER=${stdenv.cc.targetPrefix}windres"; 21 22 preBuild = stdenv.lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) ''
+4
pkgs/os-specific/windows/libgnurx/default.nix
··· 8 url = "mirror://sourceforge/mingw/Other/UserContributed/regex/mingw-regex-${version}/mingw-${name}-src.tar.gz"; 9 sha256 = "0xjxcxgws3bblybw5zsp9a4naz2v5bs1k3mk8dw00ggc0vwbfivi"; 10 }; 11 }
··· 8 url = "mirror://sourceforge/mingw/Other/UserContributed/regex/mingw-regex-${version}/mingw-${name}-src.tar.gz"; 9 sha256 = "0xjxcxgws3bblybw5zsp9a4naz2v5bs1k3mk8dw00ggc0vwbfivi"; 10 }; 11 + 12 + meta = { 13 + platforms = stdenv.lib.platforms.windows; 14 + }; 15 }
-13
pkgs/os-specific/windows/mingw-headers/default.nix
··· 1 - {stdenv, mingw_runtime_headers, w32api_headers}: 2 - 3 - stdenv.mkDerivation { 4 - name = "mingw-headers"; 5 - 6 - phases = [ "installPhase" ]; 7 - 8 - installPhase = '' 9 - mkdir -p $out/include 10 - cp -R ${mingw_runtime_headers}/include/* $out/include 11 - cp -R ${w32api_headers}/include/* $out/include 12 - ''; 13 - }
···
-16
pkgs/os-specific/windows/mingw-w64/common.nix
··· 1 - { fetchurl }: 2 - 3 - rec { 4 - version = "5.0.3"; 5 - name = "mingw-w64-${version}"; 6 - 7 - src = fetchurl { 8 - url = "mirror://sourceforge/mingw-w64/mingw-w64-v${version}.tar.bz2"; 9 - sha256 = "1d4wrjfdlq5xqpv9zg6ssw4lm8jnv6522xf7d6zbjygmkswisq1a"; 10 - }; 11 - 12 - configureFlags = [ 13 - "--enable-idl" 14 - "--enable-secure-api" 15 - ]; 16 - }
···
+21 -3
pkgs/os-specific/windows/mingw-w64/default.nix
··· 1 - { stdenv, callPackage, windows }: 2 3 - stdenv.mkDerivation { 4 - inherit (callPackage ./common.nix {}) name src; 5 buildInputs = [ windows.mingw_w64_headers ]; 6 dontStrip = true; 7 hardeningDisable = [ "stackprotector" "fortify" ]; 8 }
··· 1 + { stdenv, windows, fetchurl }: 2 3 + let 4 + version = "5.0.4"; 5 + in stdenv.mkDerivation { 6 + name = "mingw-w64-${version}"; 7 + 8 + src = fetchurl { 9 + url = "mirror://sourceforge/mingw-w64/mingw-w64-v${version}.tar.bz2"; 10 + sha256 = "00zq3z1hbzd5yzmskskjg79xrzwsqx7ihyprfaxy4hb897vf29sm"; 11 + }; 12 + 13 + configureFlags = [ 14 + "--enable-idl" 15 + "--enable-secure-api" 16 + ]; 17 + 18 buildInputs = [ windows.mingw_w64_headers ]; 19 dontStrip = true; 20 hardeningDisable = [ "stackprotector" "fortify" ]; 21 + patches = [ ./osvi.patch ]; 22 + 23 + meta = { 24 + platforms = stdenv.lib.platforms.windows; 25 + }; 26 }
+6 -6
pkgs/os-specific/windows/mingw-w64/headers.nix
··· 1 - { stdenvNoCC, callPackage }: 2 3 - let 4 - inherit (callPackage ./common.nix {}) name src; 5 6 - in stdenvNoCC.mkDerivation { 7 - name = name + "-headers"; 8 - inherit src; 9 10 preConfigure = '' 11 cd mingw-w64-headers 12 ''; 13 }
··· 1 + { stdenvNoCC, mingw_w64 }: 2 3 + stdenvNoCC.mkDerivation { 4 + name = "${mingw_w64.name}-headers"; 5 + inherit (mingw_w64) src meta; 6 7 + patches = [ ./osvi.patch ]; 8 9 preConfigure = '' 10 cd mingw-w64-headers 11 ''; 12 + 13 }
+14
pkgs/os-specific/windows/mingw-w64/osvi.patch
···
··· 1 + Fix `error: osvi undeclared (first use in this function)' issue. 2 + 3 + See: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=863064 4 + --- a/mingw-w64-headers/include/multimon.h 5 + +++ b/mingw-w64-headers/include/multimon.h 6 + @@ -127,7 +127,7 @@ 7 + WINBOOL IsPlatformNT() { 8 + OSVERSIONINFOA oi = { 0 }; 9 + 10 + - oi.dwOSVersionInfoSize = sizeof (osvi); 11 + + oi.dwOSVersionInfoSize = sizeof (oi); 12 + GetVersionExA ((OSVERSIONINFOA *) &oi); 13 + return (oi.dwPlatformId == VER_PLATFORM_WIN32_NT); 14 + }
+4 -7
pkgs/os-specific/windows/mingw-w64/pthreads.nix
··· 1 - { stdenv, callPackage }: 2 3 - let 4 - inherit (callPackage ./common.nix {}) name src; 5 - 6 - in stdenv.mkDerivation { 7 - name = name + "-pthreads"; 8 - inherit src; 9 10 preConfigure = '' 11 cd mingw-w64-libraries/winpthreads
··· 1 + { stdenv, mingw_w64 }: 2 3 + stdenv.mkDerivation { 4 + name = "${mingw_w64.name}-pthreads"; 5 + inherit (mingw_w64) src meta; 6 7 preConfigure = '' 8 cd mingw-w64-libraries/winpthreads
-12
pkgs/os-specific/windows/mingwrt/common.nix
··· 1 - { lib, fetchurl }: 2 - 3 - rec { 4 - name = "mingwrt-3.20"; 5 - 6 - src = fetchurl { 7 - url = "mirror://sourceforge/mingw/MinGW/Base/mingw-rt/${name}-mingw32-src.tar.gz"; 8 - sha256 = "02pydg1m8y35nxb4k34nlb5c341y2waq76z42mgdzlcf661r91pi"; 9 - }; 10 - 11 - meta.platforms = [ lib.systems.inspect.isMinGW ]; 12 - }
···
+13 -3
pkgs/os-specific/windows/mingwrt/default.nix
··· 1 - { stdenv, callPackage }: 2 3 - stdenv.mkDerivation { 4 - inherit (callPackage ./common.nix {}) name src meta; 5 dontStrip = true; 6 hardeningDisable = [ "stackprotector" "fortify" ]; 7 }
··· 1 + { stdenv, lib, fetchurl }: 2 3 + stdenv.mkDerivation rec { 4 + name = "mingwrt-5.0.2"; 5 + 6 + src = fetchurl { 7 + url = "mirror://sourceforge/mingw/MinGW/Base/mingw-rt/${name}-mingw32-src.tar.gz"; 8 + sha256 = "02pydg1m8y35nxb4k34nlb5c341y2waq76z42mgdzlcf661r91p0"; 9 + }; 10 + 11 + meta = { 12 + platforms = lib.platforms.windows; 13 + }; 14 + 15 dontStrip = true; 16 hardeningDisable = [ "stackprotector" "fortify" ]; 17 }
-17
pkgs/os-specific/windows/mingwrt/headers.nix
··· 1 - { stdenvNoCC, callPackage }: 2 - 3 - let 4 - inherit (callPackage ./common.nix {}) name src meta; 5 - 6 - in stdenvNoCC.mkDerivation { 7 - name = name + "-headers"; 8 - 9 - inherit src meta; 10 - 11 - phases = [ "unpackPhase" "installPhase" ]; 12 - 13 - installPhase = '' 14 - mkdir -p $out 15 - cp -R include $out 16 - ''; 17 - }
···
+2 -2
pkgs/os-specific/windows/pthread-w32/default.nix
··· 1 - { fetchurl, stdenv, hostPlatform, buildPlatform }: 2 3 # This file is tweaked for cross-compilation only. 4 assert hostPlatform != buildPlatform; ··· 18 s/dlltool/i686-pc-mingw32-dlltool/g' 19 ''; 20 21 - buildInputs = [ mingw_headers ]; 22 23 buildPhase = "make GC"; # to build the GNU C dll with C cleanup code 24
··· 1 + { fetchurl, stdenv, hostPlatform, buildPlatform, mingwrt }: 2 3 # This file is tweaked for cross-compilation only. 4 assert hostPlatform != buildPlatform; ··· 18 s/dlltool/i686-pc-mingw32-dlltool/g' 19 ''; 20 21 + buildInputs = [ mingwrt ]; 22 23 buildPhase = "make GC"; # to build the GNU C dll with C cleanup code 24
-14
pkgs/os-specific/windows/w32api/common.nix
··· 1 - { fetchurl, xz }: 2 - 3 - rec { 4 - name = "w32api-3.17-2"; 5 - 6 - src = fetchurl { 7 - url = "mirror://sourceforge/mingw/MinGW/Base/w32api/w32api-3.17/${name}-mingw32-src.tar.lzma"; 8 - sha256 = "09rhnl6zikmdyb960im55jck0rdy5z9nlg3akx68ixn7khf3j8wb"; 9 - }; 10 - 11 - nativeBuildInputs = [ xz ]; 12 - 13 - meta.platforms = [ lib.systems.inspect.isMinGW ]; 14 - }
···
+13 -3
pkgs/os-specific/windows/w32api/default.nix
··· 1 - { stdenv, callPackage }: 2 3 - stdenv.mkDerivation { 4 - inherit (callPackage ./common.nix {}) name src nativeBuildInputs meta; 5 dontStrip = true; 6 }
··· 1 + { stdenv, fetchurl, xz, lib }: 2 3 + stdenv.mkDerivation rec { 4 + name = "w32api-3.17-2"; 5 + 6 + src = fetchurl { 7 + url = "mirror://sourceforge/mingw/MinGW/Base/w32api/w32api-3.17/${name}-mingw32-src.tar.lzma"; 8 + sha256 = "09rhnl6zikmdyb960im55jck0rdy5z9nlg3akx68ixn7khf3j8wb"; 9 + }; 10 + 11 + meta = { 12 + platforms = lib.platforms.windows; 13 + }; 14 + 15 dontStrip = true; 16 }
-17
pkgs/os-specific/windows/w32api/headers.nix
··· 1 - { stdenvNoCC, callPackage }: 2 - 3 - let 4 - inherit (callPackage ./common.nix {}) name src meta; 5 - 6 - in stdenvNoCC.mkDerivation { 7 - name = name + "-headers"; 8 - 9 - inherit src nativeBuildInputs meta; 10 - 11 - phases = [ "unpackPhase" "installPhase" ]; 12 - 13 - installPhase = '' 14 - mkdir -p $out 15 - cp -R include $out 16 - ''; 17 - }
···
+4 -2
pkgs/os-specific/windows/wxMSW-2.8/default.nix
··· 2 , hostPlatform 3 }: 4 5 - assert hostPlatform.isWindows; 6 - 7 stdenv.mkDerivation { 8 name = "wxMSW-2.8.11"; 9 ··· 32 "; 33 34 passthru = {inherit compat24 compat26 unicode;}; 35 }
··· 2 , hostPlatform 3 }: 4 5 stdenv.mkDerivation { 6 name = "wxMSW-2.8.11"; 7 ··· 30 "; 31 32 passthru = {inherit compat24 compat26 unicode;}; 33 + 34 + meta = { 35 + platforms = stdenv.lib.platforms.windows; 36 + }; 37 }
+1 -52
pkgs/top-level/all-packages.nix
··· 6442 libc = libcCross1; 6443 }; 6444 6445 - # Only needed for mingw builds 6446 - gccCrossMingw2 = assert targetPlatform != buildPlatform; wrapCCWith { 6447 - name = "gcc-cross-wrapper"; 6448 - cc = gccCrossStageStatic.gcc; 6449 - libc = windows.mingw_headers2; 6450 - inherit binutils; 6451 - }; 6452 - 6453 gcc48 = lowPrio (wrapCC (callPackage ../development/compilers/gcc/4.8 { 6454 inherit noSysDirs; 6455 ··· 14573 14574 vndr = callPackage ../development/tools/vndr { }; 14575 14576 - windows = rec { 14577 - cygwinSetup = callPackage ../os-specific/windows/cygwin-setup { }; 14578 - 14579 - jom = callPackage ../os-specific/windows/jom { }; 14580 - 14581 - w32api = callPackage ../os-specific/windows/w32api { }; 14582 - 14583 - w32api_headers = callPackage ../os-specific/windows/w32api/headers { }; 14584 - 14585 - mingw_runtime = callPackage ../os-specific/windows/mingwrt { }; 14586 - 14587 - mingw_runtime_headers = callPackage ../os-specific/windows/mingwrt/headers.nix { }; 14588 - 14589 - mingw_headers1 = buildEnv { 14590 - name = "mingw-headers-1"; 14591 - paths = [ w32api_headers mingw_runtime_headers ]; 14592 - }; 14593 - 14594 - mingw_headers2 = buildEnv { 14595 - name = "mingw-headers-2"; 14596 - paths = [ w32api mingw_runtime_headers ]; 14597 - }; 14598 - 14599 - mingw_headers3 = buildEnv { 14600 - name = "mingw-headers-3"; 14601 - paths = [ w32api mingw_runtime ]; 14602 - }; 14603 - 14604 - mingw_w64 = callPackage ../os-specific/windows/mingw-w64 { 14605 - stdenv = crossLibcStdenv; 14606 - }; 14607 - 14608 - mingw_w64_headers = callPackage ../os-specific/windows/mingw-w64/headers.nix { }; 14609 - 14610 - mingw_w64_pthreads = callPackage ../os-specific/windows/mingw-w64/pthreads.nix { }; 14611 - 14612 - pthreads = callPackage ../os-specific/windows/pthread-w32 { 14613 - mingw_headers = mingw_headers3; 14614 - }; 14615 - 14616 - wxMSW = callPackage ../os-specific/windows/wxMSW-2.8 { }; 14617 - 14618 - libgnurx = callPackage ../os-specific/windows/libgnurx { }; 14619 - }; 14620 14621 wirelesstools = callPackage ../os-specific/linux/wireless-tools { }; 14622
··· 6442 libc = libcCross1; 6443 }; 6444 6445 gcc48 = lowPrio (wrapCC (callPackage ../development/compilers/gcc/4.8 { 6446 inherit noSysDirs; 6447 ··· 14565 14566 vndr = callPackage ../development/tools/vndr { }; 14567 14568 + windows = callPackages ../os-specific/windows {}; 14569 14570 wirelesstools = callPackage ../os-specific/linux/wireless-tools { }; 14571