Das Grundproblem:Haskell gtk installieren Typ Konflikte
Ich versuche Haskells gtk
Paket mit der standard mac instructions auf OSX 10.10.4 zu installieren. Insbesondere möchte ich threadscope
ausführen, also brauche ich gtk
. Frühe Stadien mit homebrew
und der gtk buildtools
Arbeit in Ordnung, aber wenn ich
cabal install gtk
oder verwende
cabal install --with-gcc=gcc-4.8 gtk
Ich erhalte die folgenden Kompilierungsfehler:
Graphics/UI/Gtk/Embedding/Plug.chs:120:6:
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:
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:
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)
cabal: Error: some packages failed to install:
Ich hatte vorher Haskells gtk
Bibliothek und threadscope
Anwendung installiert und läuft, bevor ich meine Haskell-Plattform vonaktualisiert 210 bis ghc 7.10.2
. Zuerst nahm ich einen Installationskonflikt an, aber ich habe wiederholt die Haskell-Plattform von meinem System mit der thorough removal instructions entfernt und die threadscope
Installation ohne Erfolg wiederholt. Ich habe sogar die zugrunde liegenden gtk+
und verwandten Pakete mit homebrew
entfernt und erneut installiert, wieder kein Erfolg.
Ich bin nicht sicher, wo die Typen Ptr()
und Maybe DrawWindow
stammen und daher, wo der Konflikt herkommen könnte. Irgendwelche Ideen, was schief gehen könnte, wären willkommen!
Hallo, danke für deine Antwort! Leider führte dies während des Builds von gtk zu den gleichen Fehlern wie oben. –
Verwenden Sie GHC 7.10.2? Das obige Rezept erstellt Threadscope in einer Sandbox, so dass Sie es verfolgen können, ohne Ihre installierten Pakete zu stören, wenn Sie sich gerade auf einer anderen Version von GHC befinden. – ErikR
Ja, ich benutze GHC 7.10.2, und ich bin sehr verwirrt, warum das Rezept nicht funktioniert hat, da eine Sandbox meine sichere Sache des letzten Ausweges war. –