<p>Hello cafe-subscribers,</p>
<p>I saw some issues about installing haskell bindings for cURL under Windows, and now I&#39;m trapped too. <br>So, here is actions&#39; log for everything (very detail; you can PgDn to the end with questions):</p>
<p>1. Windows Vista without UAC<br>2. ghc-6.10.1-i386-windows.exe is installed to C:\Program Files\Haskell<br>&nbsp;&nbsp;&nbsp; &quot;C:\Program Files\Haskell\package.conf&quot; wasn&#39;t touched after installation (Cabal nor manually)<br>
3. MinGW-5.1.4 installed to C:\temp\MinGW<br>4. MSys-1.0 installed to C:\temp\msys\1.0\<br>5. curl-7.19.3.tar.bz2 had taken from <a href="http://curl.haxx.se/download/curl-7.19.3.tar.bz2">http://curl.haxx.se/download/curl-7.19.3.tar.bz2</a><br>
6. Under msys, curl-7.19.3.tar.bz2 is untared into /home/Kuznetsov/curl-7.19.3<br>7. cURL is made as:<br>&nbsp; cd curl-7.19.3 <br>$&nbsp; ./configure<br>configure: Configured to build curl/libcurl:<br>...<br>&nbsp; curl version:&nbsp;&nbsp;&nbsp; 7.19.3<br>
&nbsp; Host setup:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i686-pc-mingw32<br>&nbsp; Install prefix:&nbsp; /usr/local<br>&nbsp; Compiler:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gcc<br>&nbsp; SSL support:&nbsp;&nbsp;&nbsp;&nbsp; no&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (--with-ssl / --with-gnutls)<br>&nbsp; SSH support:&nbsp;&nbsp;&nbsp;&nbsp; no&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (--with-libssh2)<br>&nbsp; zlib support:&nbsp;&nbsp;&nbsp; no&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (--with-zlib)<br>
&nbsp; krb4 support:&nbsp;&nbsp;&nbsp; no&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (--with-krb4*)<br>&nbsp; GSSAPI support:&nbsp; no&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (--with-gssapi)<br>&nbsp; SPNEGO support:&nbsp; no&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (--with-spnego)<br>&nbsp; c-ares support:&nbsp; no&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (--enable-ares)<br>&nbsp; ipv6 support:&nbsp;&nbsp;&nbsp; no&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (--enable-ipv6)<br>
&nbsp; IDN support:&nbsp;&nbsp;&nbsp;&nbsp; no&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (--with-libidn)<br>&nbsp; Build libcurl:&nbsp;&nbsp; Shared=yes, Static=yes<br>&nbsp; Built-in manual: no&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (--enable-manual)<br>&nbsp; Verbose errors:&nbsp; enabled (--disable-verbose)<br>&nbsp; SSPI support:&nbsp;&nbsp;&nbsp; no&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (--enable-sspi)<br>
&nbsp; ca cert bundle:&nbsp; no<br>&nbsp; ca cert path:&nbsp;&nbsp;&nbsp; no<br>&nbsp; LDAP support:&nbsp;&nbsp;&nbsp; enabled (winldap)<br>&nbsp; LDAPS support:&nbsp;&nbsp; no&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (--enable-ldaps)</p>
<p>$&nbsp; make <br>...<br>make[2]: Leaving directory `/home/Kuznetsov/curl-7.19.3/src&#39;<br>make[1]: Leaving directory `/home/Kuznetsov/curl-7.19.3/src&#39;<br>make[1]: Entering directory `/home/Kuznetsov/curl-7.19.3&#39;<br>
make[1]: Nothing to be done for `all-am&#39;.<br>make[1]: Leaving directory `/home/Kuznetsov/curl-7.19.3&#39;</p>
<p>$&nbsp; make install<br>...<br>libtool: install: /bin/install -c .libs/libcurl.dll.a /usr/local/lib/libcurl.dll.a<br>libtool: install: base_file=`basename <a href="http://libcurl.la">libcurl.la</a>`<br>libtool: install:&nbsp; dlpath=`/bin/sh 2&gt;&amp;1 -c &#39;. .libs/&#39;<a href="http://libcurl.la">libcurl.la</a>&#39;i; echo libcurl-4.dll&#39;`<br>
libtool: install:&nbsp; dldir=/usr/local/lib/`dirname ../bin/libcurl-4.dll`<br>libtool: install:&nbsp; test -d /usr/local/lib/../bin || mkdir -p /usr/local/lib/../bin<br>libtool: install:&nbsp; /bin/install -c .libs/libcurl-4.dll /usr/local/lib/../bin/libcurl-4.dll<br>
libtool: install:&nbsp; chmod a+x /usr/local/lib/../bin/libcurl-4.dll<br>libtool: install:&nbsp; if test -n &#39;&#39; &amp;&amp; test -n &#39;strip --strip-unneeded&#39;; then eval &#39;strip --strip-unneeded /usr/local/lib/../bin/libcurl-4.dll&#39; || exit 0; fi<br>
libtool: install: /bin/install -c .libs/libcurl.lai /usr/local/lib/<a href="http://libcurl.la">libcurl.la</a><br>libtool: install: /bin/install -c .libs/libcurl.a /usr/local/lib/libcurl.a<br>libtool: install: chmod 644 /usr/local/lib/libcurl.a<br>
libtool: install: ranlib /usr/local/lib/libcurl.a<br>----------------------------------------------------------------------<br>Libraries have been installed in:<br>&nbsp;&nbsp; /usr/local/lib</p>
<p>If you ever happen to want to link against installed libraries<br>in a given directory, LIBDIR, you must either use libtool, and<br>specify the full pathname of the library, or use the `-LLIBDIR&#39;<br>flag during linking and do at least one of the following:<br>
&nbsp;&nbsp; - add LIBDIR to the `PATH&#39; environment variable<br>&nbsp;&nbsp;&nbsp;&nbsp; during execution<br>&nbsp;&nbsp; - add LIBDIR to the `LD_RUN_PATH&#39; environment variable<br>&nbsp;&nbsp;&nbsp;&nbsp; during linking<br>&nbsp;&nbsp; - use the `-LLIBDIR&#39; linker flag<br>...<br>
&nbsp;/bin/install -c -m 644 &#39;curl.h&#39; &#39;/usr/local/include/curl/curl.h&#39;<br>&nbsp;/bin/install -c -m 644 &#39;curlver.h&#39; &#39;/usr/local/include/curl/curlver.h&#39;<br>&nbsp;/bin/install -c -m 644 &#39;easy.h&#39; &#39;/usr/local/include/curl/easy.h&#39;<br>
&nbsp;/bin/install -c -m 644 &#39;mprintf.h&#39; &#39;/usr/local/include/curl/mprintf.h&#39;<br>&nbsp;/bin/install -c -m 644 &#39;stdcheaders.h&#39; &#39;/usr/local/include/curl/stdcheaders.h&#39;<br>&nbsp;/bin/install -c -m 644 &#39;types.h&#39; &#39;/usr/local/include/curl/types.h&#39;<br>
&nbsp;/bin/install -c -m 644 &#39;multi.h&#39; &#39;/usr/local/include/curl/multi.h&#39;<br>&nbsp;/bin/install -c -m 644 &#39;typecheck-gcc.h&#39; &#39;/usr/local/include/curl/typecheck-gcc.h&#39;<br>&nbsp;/bin/install -c -m 644 &#39;curlbuild.h&#39; &#39;/usr/local/include/curl/curlbuild.h&#39;<br>
&nbsp;/bin/install -c -m 644 &#39;curlrules.h&#39; &#39;/usr/local/include/curl/curlrules.h&#39;<br>...</p>
<p>8. $ which curl &amp;&amp; curl <br>/usr/local/bin/curl<br>curl: try &#39;curl --help&#39; for more information</p>
<p>I have following files in C:\temp\msys\1.0\local\bin\&nbsp; (/usr/local/bin in Unix-scheme):</p>
<p>02.02.2009&nbsp; 15:10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;029 curl-config<br>02.02.2009&nbsp; 15:10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 98&nbsp;591 curl.exe<br>02.02.2009&nbsp; 15:09&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 262&nbsp;934 libcurl-4.dll</p>
<p>In /usr/local/include/curl ten includes:<br>02.02.2009&nbsp; 15:10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 67&nbsp;183 curl.h<br>02.02.2009&nbsp; 15:10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5&nbsp;865 curlbuild.h<br>02.02.2009&nbsp; 15:10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7&nbsp;478 curlrules.h<br>02.02.2009&nbsp; 15:10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp;799 curlver.h<br>
02.02.2009&nbsp; 15:10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp;526 easy.h<br>02.02.2009&nbsp; 15:10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp;850 mprintf.h<br>02.02.2009&nbsp; 15:10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 13&nbsp;039 multi.h<br>02.02.2009&nbsp; 15:10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;383 stdcheaders.h<br>02.02.2009&nbsp; 15:10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 33&nbsp;337 typecheck-gcc.h<br>
02.02.2009&nbsp; 15:10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 15 types.h</p>
<p>----<br>Sorry for many details, but now I can show the wrong behaviour of the haskell bindings for cURL under windows:</p>
<p>9. curl-1.3.4 is taken from hackage and unzipped to /home/Kuznetsov<br>$ cd ~/curl-1.3.4 </p>
<p>$ runhaskell Setup.hs configure --extra-include-dirs=/usr/local/include --extra-lib-dirs=/usr/local/lib<br>Configuring curl-1.3.4...</p>
<p>$ runhaskell Setup.hs build<br>Preprocessing library curl-1.3.4...<br>Building curl-1.3.4...<br>[1 of 8] Compiling Network.Curl.Debug ( Network\Curl\Debug.hs, dist\build\Network\Curl\Debug.o )<br>[2 of 8] Compiling Network.Curl.Types ( Network\Curl\Types.hs, dist\build\Network\Curl\Types.o )<br>
[3 of 8] Compiling Network.Curl.Post ( Network\Curl\Post.hs, dist\build\Network\Curl\Post.o )<br>[4 of 8] Compiling Network.Curl.Opts ( Network\Curl\Opts.hs, dist\build\Network\Curl\Opts.o )<br>[5 of 8] Compiling Network.Curl.Code ( Network\Curl\Code.hs, dist\build\Network\Curl\Code.o )<br>
[6 of 8] Compiling <a href="http://Network.Curl.Info">Network.Curl.Info</a> ( Network\Curl\Info.hs, dist\build\Network\Curl\Info.o )</p>
<p>Network\Curl\Info.hs:80:0:<br>&nbsp;&nbsp;&nbsp; Warning: Defined but not used: `stringTag&#39;</p>
<p>Network\Curl\Info.hs:83:0: Warning: Defined but not used: `longTag&#39;</p>
<p>Network\Curl\Info.hs:86:0:<br>&nbsp;&nbsp;&nbsp; Warning: Defined but not used: `doubleTag&#39;</p>
<p>Network\Curl\Info.hs:89:0:<br>&nbsp;&nbsp;&nbsp; Warning: Defined but not used: `slistTag&#39;<br>[7 of 8] Compiling Network.Curl.Easy ( Network\Curl\Easy.hs, dist\build\Network\Curl\Easy.o )<br>[8 of 8] Compiling Network.Curl&nbsp;&nbsp;&nbsp;&nbsp; ( Network\Curl.hs, dist\build\Network\Curl.o )<br>
C:\Program Files\Haskell\bin\ar.exe: creating dist\build\libHScurl-1.3.4.a</p>
<p>$ runhaskell Setup.hs install<br>Installing library in C:\Program Files\Haskell\curl-1.3.4\ghc-6.10.1<br>Registering curl-1.3.4...<br>Reading package info from &quot;dist\\installed-pkg-config&quot; ... done.<br>Writing new package config file... done.</p>

<p>10. <br>&nbsp;In package.conf I have seen:<br>&nbsp;InstalledPackageInfo {package = PackageIdentifier {pkgName = PackageName &quot;curl&quot;, pkgVersion = Version {versionBranch = [1,3,4], versionTags = []}}, license = BSD3, copyright = &quot;&quot;, maintainer = &quot;Sigbjorn Finne &lt;<a href="mailto:sigbjorn.finne@gmail.com">sigbjorn.finne@gmail.com</a>&gt;&quot;, author = &quot;Sigbjorn Finne&quot;, stability = &quot;&quot;, homepage = &quot;&quot;, pkgUrl = &quot;&quot;, description = &quot;libcurl is a client-side URL transfer library, supporting FTP, FTPS, HTTP,\nHTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS and FILE.\nlibcurl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading,\nHTTP form based upload, proxies, cookies, user+password authentication\n(Basic, Digest, NTLM, Negotiate, Kerberos4), file transfer resume,\nhttp proxy tunneling and more!\n\nThis package provides a Haskell binding to libcurl.&quot;, category = &quot;Network&quot;, exposed = True, exposedModules = [&quot;Network.Curl&quot;,&quot;Network.Curl.Code&quot;,&quot;<a href="http://Network.Curl.Info">Network.Curl.Info</a>&quot;,&quot;Network.Curl.Opts&quot;,&quot;Network.Curl.Post&quot;,&quot;Network.Curl.Types&quot;,&quot;Network.Curl.Easy&quot;,&quot;Network.Curl.Debug&quot;], hiddenModules = [], importDirs = [&quot;C:\\Program Files\\Haskell\\curl-1.3.4\\ghc-6.10.1&quot;], libraryDirs = [&quot;C:\\Program Files\\Haskell\\curl-1.3.4\\ghc-6.10.1&quot;,&quot;C:/temp/msys/1.0/local/lib&quot;], hsLibraries = [&quot;HScurl-1.3.4&quot;], extraLibraries = [&quot;curl&quot;], extraGHCiLibraries = [], includeDirs = [&quot;C:/temp/msys/1.0/local/include&quot;], includes = [], depends = [PackageIdentifier {pkgName = PackageName &quot;base&quot;, pkgVersion = Version {versionBranch = [3,0,3,0], versionTags = []}},PackageIdentifier {pkgName = PackageName &quot;bytestring&quot;, pkgVersion = Version {versionBranch = [0,9,1,4], versionTags = []}},PackageIdentifier {pkgName = PackageName &quot;containers&quot;, pkgVersion = Version {versionBranch = [0,2,0,0], versionTags = []}}], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = [&quot;C:\\Program Files\\Haskell\\doc\\curl-1.3.4\\html\\curl.haddock&quot;], haddockHTMLs = [&quot;C:\\Program Files\\Haskell\\doc\\curl-1.3.4\\html&quot;]}</p>

<p>In &quot;C:\Program Files\Haskell\curl-1.3.4\ghc-6.10.1\&quot; I have seen HScurl-1.3.4.o , libHScurl-1.3.4.a&nbsp; and other Curl files.</p>
<p>11. Final tests:<br>&nbsp; under msys: <br>$ ghci<br>Prelude&gt; :m Network.Curl<br>module `Network.Curl&#39; is not loaded</p>
<p>Bad, but not a disaster.</p>
<p>under windows:<br>C:\&gt; ghci<br>GHCi, version 6.10.1: <a href="http://www.haskell.org/ghc/">http://www.haskell.org/ghc/</a>&nbsp; :? for help<br>Loading package ghc-prim ... linking ... done.<br>Loading package integer ... linking ... done.<br>
Loading package base ... linking ... done.<br>Prelude&gt; :m Network.Curl</p>
<p>Prelude Network.Curl&gt; let a = curlGet<br>Loading package syb ... linking ... done.<br>Loading package base-3.0.3.0 ... linking ... done.<br>Loading package array-0.2.0.0 ... linking ... done.<br>Loading package containers-0.2.0.0 ... linking ... done.<br>
Loading package bytestring-0.9.1.4 ... linking ... done.<br>Loading package curl-1.3.4 ... &lt;interactive&gt;: curl: Не найден указанный модуль. (text in russian here because of localized Vista. The message is near &quot;Can&#39;t load specified module&quot;)<br>
can&#39;t load .so/.DLL for: curl (addDLL: could not load DLL)<br>Prelude Network.Curl&gt;</p>
<p>So, the question is why curl doesn&#39;t work? I tried to use Cabal but it failed with building too. <br>How can I test the fact that C:\temp\msys\1.0\local\bin\libcurl-4.dll is used in curl-1.3.4 ?</p>
<p><br>-- <br>Iliya Kuznetsov<br>+7-916-878-75-70<br></p>