haskell - Cabal instalar gtk falla
c2hs (1)
Estoy tratando de instalar gtk a través de Cabal, sin embargo, obtengo los siguientes errores de tipo al construirlo
[ 22 of 209] Compiling Graphics.UI.Gtk.Embedding.Plug ( dist/build/Graphics/UI/Gtk/Embedding/Plug.hs, dist/build/Graphics/UI/Gtk/Embedding/Plug.o )
Graphics/UI/Gtk/Embedding/Plug.chs:120:6: error:
Couldn''t match expected type ‘Ptr ()’
with actual type ‘Maybe DrawWindow’
In the first argument of ‘gtk_plug_new’, namely
‘(fromNativeWindowId (fromMaybe nativeWindowIdNone socketId))’
In the second argument of ‘($)’, namely
‘gtk_plug_new
(fromNativeWindowId (fromMaybe nativeWindowIdNone socketId))’
Graphics/UI/Gtk/Embedding/Plug.chs:137:6: error:
Couldn''t match expected type ‘Ptr ()’
with actual type ‘Maybe DrawWindow’
In the second argument of ‘/ (Display arg1) arg2
-> withForeignPtr arg1
$ / argPtr1 -> gtk_plug_new_for_display argPtr1 arg2’, namely
‘(fromNativeWindowId (fromMaybe nativeWindowIdNone socketId))’
In the second argument of ‘($)’, namely
‘(/ (Display arg1) arg2
-> withForeignPtr arg1
$ / argPtr1 -> gtk_plug_new_for_display argPtr1 arg2)
display
(fromNativeWindowId (fromMaybe nativeWindowIdNone socketId))’
Graphics/UI/Gtk/Embedding/Plug.chs:151:3: error:
Couldn''t match type ‘Ptr ()’ with ‘Maybe DrawWindow’
Expected type: IO (Maybe DrawWindow)
Actual type: IO (Ptr ())
In the second argument of ‘($)’, namely
‘(/ (Plug arg1)
-> withForeignPtr arg1 $ / argPtr1 -> gtk_plug_get_id argPtr1)
(toPlug self)’
In the expression:
liftM toNativeWindowId
$ (/ (Plug arg1)
-> withForeignPtr arg1 $ / argPtr1 -> gtk_plug_get_id argPtr1)
(toPlug self)
Failed to install gtk-0.13.9
cabal: Error: some packages failed to install:
gtk-0.13.9 failed during the building phase. The exception was:
ExitFailure 1
Para instalar este paquete, necesita "gtk2hsC2hs" y los errores de tipo están en archivos .chs
, que presumiblemente se generan a partir de la herramienta gtk2hsC2hs. ¿Es este un problema conocido con gtk2hsC2hs? ¿Alguien más ha podido construir este paquete? Alguien sabe de una solución?
Estoy en Mac OS X Yosemite (10.10.4)
$ gtk2hsC2hs --version
C->Haskell Compiler, version 0.13.13 (gtk2hs branch) "Bin IO", 27 May 2012
$ cabal --version
cabal-install version 1.22.6.0
using version 1.22.4.0 of the Cabal library
He realizado una cabal update
, por lo que todos mis paquetes parecen estar actualizados. También he intentado compilar algunas de las versiones anteriores disponibles de hackage, pero obtengo los mismos errores.
Editar
Los errores en los archivos generados parecen lidiar con las importaciones de FFI generadas por gtk2hsC2hs. En la parte inferior del archivo, estoy recibiendo
foreign import ccall unsafe "gtk_plug_new"
gtk_plug_new :: ((Ptr ()) -> (IO (Ptr Widget)))
Parece que constantemente se mezcla Ptr()
con Maybe DrawWindow
. Entonces, ¿el tipo generado Ptr()
incorrecto, o su uso es incorrecto?
Esto tenía una solución muy simple.
cabal install gtk -fhave-quartz-gtk
Sería bueno si esto estuviera más bien documentado, pero espero que esto ayude a cualquier otra persona que termine en una situación similar.