Instalar wxHaskell 0.90 en Windows 7

Recientemente publicaron la versión 0.90 de wxHaskell(2da semana de Abril), la cual trabaja con wxWidgets 2.9.x, anteriormente trabajaba con la versión 2.8. Desde entonces, he estado con cierto interés en probar las nuevas características.

Bueno, instalar wxHaskell en linux es relativamente sencillo (aquí Antonio muestra los pasos), pero instalarlo en Windows 7 ha sido todo un desafió para mi, y me gustaría compartir una serie de pasos y comentarios para facilitar la vida a otros.

WxHaskell es una librería gráfica para hacer GUI’s en Haskell(la forma fácil de obtener Haskell es a través del Haskell Platform); WxHaskell utiliza como librería base al conocido WxWidgets (WxHaskell es algo así como un ‘wrapper’ de WxWidgets). Y para probarlo necesitaremos instalar WxWidgets primero, ademas en Windows necesitaremos de MinGW para compilar el WxWidgets. Entre otras cosas, también necesitaremos el wx-config, una herramienta de linea de comandos que ayuda en la compilación de codigo wxWidgets.

Les comparto los pasos que hice para instalar el WxWidgets:

  1. Descargar e instalar el MinGW. Yo me descargue la ultima versión desde aquí. He seleccionado las opciones del compilador de C++ y el MinGW Developer Toolkit, así como lo recomienda Sky TreeBird en su tutorial. No olvidar añadir al path de Windows el directorio ‘bin’ del MinGW instalado.
  2. Descargar e instalar el wx-config. Yo he tenido varias dificultades aquí. Encontré varias copias de esta herramienta, y algunas de ellas impidieron que se compile bien el WxWidgets. Yo recomiendo que se descarguen el código fuente de wx-config desde aqui. Y luego lo compilan de esta manera (obtenido de WikiHaskell):
    g++ wx-config.cpp -o wx-config.exe

    Luego podrían copiar el .exe generado a un lugar publico en su pc y visible desde el cmd (añadir la dirección de .exe al path de variables publicas de windows).

    Lo otro que pueden hacer, pero que no lo he probado, es descargar el .exe directamente de aquí.

    Para probar si funciona bien su wx-config, pueden hacer wx-config –help en la consola. En varios casos a mi me salio un error feisimo de la aplicación.

  3. Configurar variables de entorno. Se necesitará configurar las siguientes variables recomendadas por el WikiHaskell:
    • CABAL_DIR: C:\Users\XXX\AppData\Roaming\cabal
    • GHC_VERSION: 7.0.4 (o la que tengas en sus maquinas)
    • WXC_VERSION: 0.90.0.2
    • WXWIN: C:\wxWidgets-2.9.3 (o el lugar donde descargaran el WxWidgets)
    • WXCFG: gcc_dll\mswu
    • PATH: (add these) %WXWIN%\lib\gcc_dll;%WXWIN%;%CABAL_DIR%\wxc-%WXC_VERSION%\%GHC_VERSION%
  4. Descargar e instalar WxWidgets 2.9.3. Descargan las fuentes desde aquí, y lo compilan siguiendo las instrucciones del Readme.txt, yo lo hice así:
    cd c:\wx\build\msw
    mingw32-make -f makefile.gcc BUILD=debug

    Esto tomará nomas bastante tiempo. Luego, es importante probar algún ejemplo de wxWidgets. Hay varios ejemplos para ver. Yo solo seguí el Readme.txt para probar los ejemplos:

    cd c:\wx\samples\minimal
    mingw32-make -f makefile.gcc BUILD=debug

Hasta aquí ya se hizo gran parte de la instalación, :).

end installed wxwidgets

Lo que ahora sigue es instalar WxHaskell. Para ello, nos beneficiaremos de cabal, el cual ya viene instalado en el Haskell Platform (por si acaso hacer cabal update) y el mismo que se encargará de resolver todas las dependencias con un simple comando, que super!, :).

cabal install wx

Algunas recomendaciones necesarias:

  • Error de UTF-8.
    :0:5: lexical error (UTF-8 decoding error)
    cabal: Error: some packages failed to install:
    strict-0.3.2 failed during the building phase. The exception was:
    ExitFailure 1
    wxdirect-0.90.0.1 depends on strict-0.3.2 which failed to install.

    Es arreglado colocando en la consola set LANG=C.

  • Error de que faltan algunas librerias
    Missing dependencies on foreign libraries:
    * Missing C libraries: wxmsw29ud_all, wxtiffd, wxjpegd, wxpngd, wxzlibd, wxregexud, wxexpatd, wxregexud
    This problem can usually be solved by installing the system packages that
    provide these libraries (you may need the “-dev” versions). If the libraries
    are already installed but in a non-standard location then you can use the
    flags –extra-include-dirs= and –extra-lib-dirs= to specify where they are.
    cabal: Error: some packages failed to install:
    wxc-0.90.0.2 failed during the configure step. The exception was:
    ExitFailure 1

    Es arreglado descargando el wx-config desde aquí. Descargar el .exe y reemplazarlo por el que tenias.

  • Otras recomendaciones las puedes encontrar en el WikiHaskel.

Probando WxHaskell.
Para probar, instalemos un pequeño juego:

cabal install wxAsteroids

Después de instalarlo, cuando se intenta ejecutar el juego, a mi me apareció un error de que no encuentra el archivo wxc.dll. Ese archivo lo encontre en C:\Users\XXX\AppData\Roaming\cabal\wxc-0.90.0.2\ghc-7.0.4 y luego lo copie a un lugar publico para Windows, o en la misma carpeta de donde se esta llamando al programa.

Para terminar, le dejo con la imagen del juego instalado. Y a disfrutar con WxHaskell.

wxasteroids

About these ads
This entry was posted in wxHaskell and tagged , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s