Кабал установить GTK не удалось
Я пытаюсь установить GTK через Cabal, однако я получаю следующие ошибки типа при его сборке
[ 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
Чтобы установить этот пакет, вам нужен "gtk2hsC2hs", а ошибки типа находятся в .chs
файлы, которые предположительно генерируются из инструмента gtk2hsC2hs. Это известная проблема с gtk2hsC2hs? Кто-нибудь еще смог собрать этот пакет? Кто-нибудь знает решение?
Я нахожусь на 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
Я сделал cabal update
так что все мои пакеты, похоже, актуальны. Я также пытался создать некоторые из более старых версий, доступных из hackage, но я получаю те же ошибки.
редактировать
Кажется, что все ошибки в сгенерированных файлах связаны с импортом FFI, который генерируется gtk2hsC2hs. В нижней части файла я получаю
foreign import ccall unsafe "gtk_plug_new"
gtk_plug_new :: ((Ptr ()) -> (IO (Ptr Widget)))
Кажется, постоянно смешиваться Ptr()
с Maybe DrawWindow
, Так что сгенерированный тип Ptr()
неверно или его использование некорректно?
1 ответ
Это было действительно простое решение.
cabal install gtk -fhave-quartz-gtk
Было бы неплохо, если бы это было более хорошо задокументировано, но, надеюсь, это поможет всем, кто окажется в подобной ситуации.