Difference between revisions of "GHC under Wine"

From HaskellWiki
Jump to navigation Jump to search
(Known issues - add note about MSYS)
(7 intermediate revisions by 3 users not shown)
Line 1: Line 1:
[[Category:GHC|Wine]]
+
[[Category:GHC]]
  +
[[Category:How to]]
  +
[[Category:OS]]
 
[[GHC]] runs flawlessly under Wine. Here's a guide on how to get it working.
 
[[GHC]] runs flawlessly under Wine. Here's a guide on how to get it working.
 
==Installation==
 
==Installation==
First, get the latest version of Wine from http://www.winehq.com/site/download
+
First, get the latest stable version of Wine from your distribution's repository, or 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
+
Next, grab the latest [[Windows]] version of Haskell Platform from http://www.haskell.org/platform/windows.html
 
Installing Haskell is as simple as typing: <code>wine HaskellPlatform-2012.4.0.0-setup.exe</code>
 
installing ghc is as simple as typing: <code>wine ghc-6.8.2-i386-unknown-mingw32.exe</code>
 
   
 
Once this is all done, you should be good to start using GHC.
 
Once this is all done, you should be good to start using GHC.
Line 23: Line 25:
   
 
If it all works well then you should be able to compile your Haskell programs for windows with GHC on Wine.
 
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)
 
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)
Line 29: Line 30:
 
== Known problems ==
 
== Known problems ==
   
* MSYS does not integrate with MinGW correctly - [[http://bugs.winehq.org/show_bug.cgi?id=15949 See Wine bug 15949]]
+
* 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.'''
 
* 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").
  +
* ghci appears to not work at all on Wine-1.4/Linux-x86, but works OK on Wine-1.7.18/i386, HP 2014.2.0.0 and Ubuntu 12.04.5/x86_64.
   
 
===Native DLLs===
 
===Native DLLs===
Line 36: Line 39:
   
 
[http://wiki.winehq.org/winetricks winetricks] can be useful for installing common native dlls or software
 
[http://wiki.winehq.org/winetricks winetricks] can be useful for installing common native dlls or software
  +
  +
=== Code that uses gtk2hs ===
  +
  +
First, install GTK from http://www.gtk.org/download/win32.php, according to the instructions from http://www.haskell.org/haskellwiki/Gtk2Hs/Installation#Windows. For compilation of gtk, sometimes (e.g., on Ubuntu 12.04.5/x86_64 with Wine-1.7.18/i386, HP 2014.2.0.0, gtk2hs 0.13 and http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.24/gtk+-bundle_2.24.10-20120208_win32.zip) one needs to use the flag -f-fmode-binary, as described at [https://github.com/gtk2hs/gtk2hs/issues/23#issuecomment-40895472 the following ticket].
  +
  +
When compiling a program that depends on gtk2hs packages, [https://github.com/gtk2hs/gtk2hs/issues/52 a problem may be encountered], leading to the following error mesasge.
  +
  +
setup-Cabal-1.18.1.3-i386-windows-ghc-7.8.3.exe: The pkg-config package x11 is required but it could not be found
  +
  +
The hacky workaround below solves this problem for gtk2hs 0.13.
  +
  +
cp ~/.wine/drive_c/users/mikolaj/gtk/lib/pkgconfig/fontconfig.pc ~/.wine/drive_c/users/mikolaj/gtk/lib/pkgconfig/x11.pc
  +
  +
The same problem appears and the same workaround works on Windows Vista, so it's not Wine-specific.
  +
  +
=== Code that uses Template Haskell ===
  +
  +
If the code uses TH together with some external DLLs (e.g., gtk), it may have trouble finding library files, e.g., as reported at [https://ghc.haskell.org/trac/ghc/ticket/9553 #9553]. If so, a workaround similar to the one described in the ticket may help sidestep the problem for now.
   
 
==Debugging==
 
==Debugging==
   
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]].
+
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].
   
 
==External Links==
 
==External Links==
   
[[http://appdb.winehq.org/objectManager.php?sClass=application&iId=6691 GHC at the Wine AppDB]]
+
[http://appdb.winehq.org/objectManager.php?sClass=application&iId=6691 GHC at the Wine AppDB]

Revision as of 21:22, 4 September 2014

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

Installation

First, get the latest stable version of Wine from your distribution's repository, or from http://www.winehq.com/site/download. For Mac users, WineBottler works well.

Next, grab the latest Windows version of Haskell Platform from http://www.haskell.org/platform/windows.html Installing Haskell is as simple as typing: wine HaskellPlatform-2012.4.0.0-setup.exe

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

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)

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").
  • ghci appears to not work at all on Wine-1.4/Linux-x86, but works OK on Wine-1.7.18/i386, HP 2014.2.0.0 and Ubuntu 12.04.5/x86_64.

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

Code that uses gtk2hs

First, install GTK from http://www.gtk.org/download/win32.php, according to the instructions from http://www.haskell.org/haskellwiki/Gtk2Hs/Installation#Windows. For compilation of gtk, sometimes (e.g., on Ubuntu 12.04.5/x86_64 with Wine-1.7.18/i386, HP 2014.2.0.0, gtk2hs 0.13 and http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.24/gtk+-bundle_2.24.10-20120208_win32.zip) one needs to use the flag -f-fmode-binary, as described at the following ticket.

When compiling a program that depends on gtk2hs packages, a problem may be encountered, leading to the following error mesasge.

   setup-Cabal-1.18.1.3-i386-windows-ghc-7.8.3.exe: The pkg-config package x11 is required but it could not be found

The hacky workaround below solves this problem for gtk2hs 0.13.

   cp ~/.wine/drive_c/users/mikolaj/gtk/lib/pkgconfig/fontconfig.pc ~/.wine/drive_c/users/mikolaj/gtk/lib/pkgconfig/x11.pc

The same problem appears and the same workaround works on Windows Vista, so it's not Wine-specific.

Code that uses Template Haskell

If the code uses TH together with some external DLLs (e.g., gtk), it may have trouble finding library files, e.g., as reported at #9553. If so, a workaround similar to the one described in the ticket may help sidestep the problem for now.

Debugging

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

External Links

GHC at the Wine AppDB