Personal tools

GHC under Wine

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
(Created)
 
(note wine bottler and a workaround for ghc 6.12.3)
(15 intermediate revisions by 4 users not shown)
Line 1: Line 1:
GHC runs fairly well under wine. Here's a guide on how to get it working.
+
[[Category:GHC|Wine]]
  +
[[GHC]] runs flawlessly under Wine. Here's a guide on how to get it working.
  +
==Installation==
  +
First, get the latest version of Wine from http://www.winehq.com/site/download . For mac users, WineBottler works well.
   
Firstly get the letest version of wine from http://www.winehq.com/site/download and install it.
+
Next, grab the latest [[windows]] version of GHC from http://haskell.org/ghc/download.html
   
Next, grab the latest windows version of GHC from http://haskell.org/ghc/download.html
+
installing ghc is as simple as typing: <code>wine ghc-6.8.2-i386-unknown-mingw32.exe</code>
   
I used the precompiled version of ghc. It's distributed using MSI which can pose a small problem for wine. Luckily, work has been done on developing a native version of MSI for wine. Get it at http://wiki.winehq.org/NativeMsi and follow the instructions to install it.
+
Once this is all done, you should be good to start using GHC.
   
Now go to the directory where you've put your download of ghc. install it:
+
==Testing==
<code>wine msiexec.exe /i ghc-VERSION.msi</code>
 
 
This should start up the installer and walk you through the installation.
 
 
Once it's all done, you should be good to start using GHC. You might want to add GHC to your path. To do this fire up regedit:<br/>
 
<code>wine regedit</code><br/>
 
and go to <code>HKEY_LOCAL_MACHINE->System->CurrentControlSet->Control->Session Manager->Environment->Path</code> and add GHC's installation to the pathlist. It will probably be something like <code>C:\ghc\ghc-VERSION\bin</code>
 
 
Now test it.
 
   
 
Create a simple haskell program to compile. Hello World examples are good. Try compiling it:<br/>
 
Create a simple haskell program to compile. Hello World examples are good. Try compiling it:<br/>
<code><pre>$ wine ghc -o hello --make HelloWorld.hs
+
<code><pre>$ WINEDEBUG=-all wine ghc --make hello.hs
Chasing modules from: HelloWorld.hs
+
[1 of 1] Compiling Main ( hello.hs, hello.o )
Compiling Main ( HelloWorld.hs, HelloWorld.o )
 
fixme:msvcrt:MSVCRT__sopen : pmode 0x01b6 ignored
 
fixme:msvcrt:MSVCRT__sopen : pmode 0x01b6 ignored
 
 
Linking ...
 
Linking ...
Wine exited with a successful status</pre></code>
+
</pre></code>
 
And try running it:
 
   
 
<code><pre>$ wine hello
 
<code><pre>$ wine hello
 
Hello, world!
 
Hello, world!
Wine exited with a successful status</pre></code>
+
</pre></code>
  +
  +
If it all works well then you should be able to compile your Haskell programs for windows with GHC on Wine.
  +
  +
  +
If you encounter specific, reproducible issues that are present in the latest release of wine you should file a bug report with the Wine project http://bugs.winehq.org (so long as one doesn't already exist for the issue)
  +
  +
== Known problems ==
  +
  +
* MSYS does not integrate with MinGW correctly - [[http://bugs.winehq.org/show_bug.cgi?id=15949 See Wine bug 15949]]
  +
* removeDirectoryRecursive did not work correctly prior to wine-1.1.4-538-g2e8dec4. This most notably broke cabal install. '''Use Wine 1.1.5 or newer.'''
  +
* GHC 6.12.3, Wine 1.2 (from WineBottler) on mac osx leopard: GHC's mingw/bin/gcc.exe exits with a "spawnv failed: errno 2: No such file or directory" error, which breaks cabal install. To work around, replace gcc.exe with a renamed copy of g++.exe, also in that directory ("ghc\bin\mingw> copy g++.exe gcc.exe").
   
If it all works well then you should hopefully be able to compile your haskell programs for windows from wine.
+
===Native DLLs===
  +
Wine isn't perfect (yet) but does offer a solution for using native dlls, as an alternative to builtin dlls if certain functions are not implemented or are buggy and not yet fixed. To configure this use winecfg where you can specify settings for the ordering of preferences for loading dlls, Builtin only, Native only, Builtin then Native and Native then Builtin.
   
  +
[http://wiki.winehq.org/winetricks winetricks] can be useful for installing common native dlls or software
   
== Known Problems ==
+
==Debugging==
   
hSetBuffering doesn't seem to work well from terminals. This creates problems with GHCi:
+
You can enable tracing of various components within Wine to aid in debugging issues with Wine by using [[http://wiki.winehq.org/DebugChannels Wine Debug Channels]].
   
<code><pre>$ wine ghci
+
==External Links==
WARNING: GHCi invoked via 'ghci.exe' in *nix-like shells (cygwin-bash, in particular)
 
doesn't handle Ctrl-C well; use the 'ghcii.sh' shell wrapper instead
 
___ ___ _
 
/ _ \ /\ /\/ __(_)
 
/ /_\// /_/ / / | | GHC Interactive, version 6.4.2, for Haskell 98.
 
/ /_\\/ __ / /___| | http://www.haskell.org/ghc/
 
\____/\/ /_/\____/|_| Type :? for help.
 
   
Loading package base-1.0 ... linking ... done.
+
[[http://appdb.winehq.org/objectManager.php?sClass=application&iId=6691 GHC at the Wine AppDB]]
<stdin>: hSetBuffering: failed (failed to set buffering)
 
Wine exited with a successful status</pre></code>
 

Revision as of 16:37, 24 August 2010

GHC runs flawlessly under Wine. Here's a guide on how to get it working.

Contents

1 Installation

First, get the latest version of Wine from http://www.winehq.com/site/download . For mac users, WineBottler works well.

Next, grab the latest windows version of GHC from http://haskell.org/ghc/download.html

installing ghc is as simple as typing: wine ghc-6.8.2-i386-unknown-mingw32.exe

Once this is all done, you should be good to start using GHC.

2 Testing

Create a simple haskell program to compile. Hello World examples are good. Try compiling it:

$ WINEDEBUG=-all wine ghc --make hello.hs
[1 of 1] Compiling Main             ( hello.hs, hello.o )
Linking ...
$ wine hello
Hello, world!

If it all works well then you should be able to compile your Haskell programs for windows with GHC on Wine.


If you encounter specific, reproducible issues that are present in the latest release of wine you should file a bug report with the Wine project http://bugs.winehq.org (so long as one doesn't already exist for the issue)

3 Known problems

  • MSYS does not integrate with MinGW correctly - [See Wine bug 15949]
  • removeDirectoryRecursive did not work correctly prior to wine-1.1.4-538-g2e8dec4. This most notably broke cabal install. Use Wine 1.1.5 or newer.
  • GHC 6.12.3, Wine 1.2 (from WineBottler) on mac osx leopard: GHC's mingw/bin/gcc.exe exits with a "spawnv failed: errno 2: No such file or directory" error, which breaks cabal install. To work around, replace gcc.exe with a renamed copy of g++.exe, also in that directory ("ghc\bin\mingw> copy g++.exe gcc.exe").

3.1 Native DLLs

Wine isn't perfect (yet) but does offer a solution for using native dlls, as an alternative to builtin dlls if certain functions are not implemented or are buggy and not yet fixed. To configure this use winecfg where you can specify settings for the ordering of preferences for loading dlls, Builtin only, Native only, Builtin then Native and Native then Builtin.

winetricks can be useful for installing common native dlls or software

4 Debugging

You can enable tracing of various components within Wine to aid in debugging issues with Wine by using [Wine Debug Channels].

5 External Links

[GHC at the Wine AppDB]