Compiling the haskell module on win32 / cygwin

I am trying to compile Network.HTTP ( http://hackage.haskell.org/package/network ) on win32 / cygwin. However, it does not work with the following message:

Setup.hs: Missing dependency on a foreign library: * Missing (or bad) header file: HsNet.h This problem can usually be solved by installing the system package that provides this library (you may need the "-dev" version). If the library is already installed but in a non-standard location then you can use the flags --extra-include-dirs= and --extra-lib-dirs= to specify where it is. If the header file does exist, it may contain errors that are caught by the C compiler at the preprocessing stage. In this case you can re-run configure with the verbosity flag -v3 to see the error messages. 

Undoubtedly, this does not give more clues. HsNet.h includes sys / uio.h, which, in fact, should not be included, and should be configured correctly.

+4
source share
3 answers

Do not use cygwin, instead follow Johan Tibells way

MSYS installation

 Install the latest Haskell Platform. Use the default settings. Download version 1.0.11 of MSYS. You'll need the following files: MSYS-1.0.11.exe msysDTK-1.0.1.exe msysCORE-1.0.11-bin.tar.gz The files are all hosted on haskell.org as they're quite hard to find in the official MinGW/MSYS repo. Run MSYS-1.0.11.exe followed by msysDTK-1.0.1.exe. The former asks you if you want to run a normalization step. You can skip that. Unpack msysCORE-1.0.11-bin.tar.gz into C:\msys\1.0. Note that you can't do that using an MSYS shell, because you can't overwrite the files in use, so make a copy of C:\msys\1.0, unpack it there, and then rename the copy back to C:\msys\1.0. Add C:\Program Files\Haskell Platform\VERSION\mingw\bin to your PATH. This is neccesary if you ever want to build packages that use a configure script, like network, as configure scripts need access to a C compiler. 

These steps are what Tibell uses to compile the Network for win package, and I used it myself several times on most haskell releases.

+3
source

You can create a network on win32 / cygwin. And the above steps, although helpful (from Jonke), might not be necessary.

When completing the configuration step, specify

 runghc Setup.hs configure --configure-option="--build=mingw32" 

In order for the library to be configured for mingw32, otherwise you will get a link or "undefined links" if you try to link or use a network library.

+1
source

This coupled with @Yogesh Sajanikar's answer made it work for me (on win64 / cygwin):

  • Make sure gcc in your path is not Mingw / Cygwin, but C: \ GHC \ GHC-6.12.1 \ MinGW \ Bin \ gcc.exe

(Run

 export PATH="/cygdrive/.../ghc-7.8.2/mingw/bin:$PATH" 

before running cabal install network in Cygwin shell)

+1
source

Source: https://habr.com/ru/post/1485917/


All Articles