Hi,

(I submitted the patch that Johan linked to)
Network/Socket/Internal.hsc has the following code:

#if defined(WITH_WINSOCK) || defined(cygwin32_HOST_OS)
type CSaFamily = (#type unsigned short)
#elif defined(darwin_HOST_OS)
type CSaFamily = (#type u_char)
#else
type CSaFamily = (#type sa_family_t)
#endif

You have patched this part to always use 'unsigned short'. But the real issue is that WITH_WINSOCK is not defined, even though it should be. The reason for this lies in include/HsNet.h:

#if defined(HAVE_WINSOCK_H) && !defined(cygwin32_HOST_OS)
# define WITH_WINSOCK  1
#endif

The problem here is that it checks for HAVE_WINSOCK_H, but the configure script never defines this variable. Instead it defines HAVE_WINSOCK2_H. It seems that the network library used Winsock1 in the past and in the transition to Winsock2 someone forgot to change a few of the #ifdefs.

My patch just changes all occurences of HAVE_WINSOCK_H to HAVE_WINSOCK2_H. You might want to try that and report back if it works for you.

2012/2/7 Alberto G. Corona <agocorona@gmail.com>
Hi Johan,
The patch is not for the current version of network and the code is
quite different. Basically it is necesary to  define this variable as
"unsigned short" that is the thing intended in the patch. however I
put it by brute force, without regard of the prerpocessor directives.
With this change the code compiles well with:

http://neilmitchell.blogspot.com/2010/12/installing-haskell-network-library-on.html

However my compiled library lack the methods defined as foreign. IŽll
keep trying.

2012/2/6 Johan Tibell <johan.tibell@gmail.com>:
> Hi,
>
> Someone recently contributed a fix that should make network build with
> 7.4: https://github.com/haskell/network/pull/25
>
> Can you see if that works for you? I haven't yet had time to merge and
> release that fix (I'm on vacation.)
>
> -- Johan
>

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe