2015-10-13 14 views
5

podstawowy problem:Haskell gtk Install Type konfliktów

Ja próbuje zainstalować gtk pakiet Haskell za pomocą standard mac instructions na OSX 10.10.4. W szczególności chcę uruchomić threadscope, więc potrzebuję gtk. Wczesne stadia z homebrew i grzywny gtk buildtools pracy, ale kiedy

cabal install gtk 

lub użyj

cabal install --with-gcc=gcc-4.8 gtk 

otrzymuję następujący błąd kompilacji:

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: 

I poprzednio miał gtk bibliotekę Haskell i threadscope aplikacja zainstalowana i działająca przed aktualizacją mojej platformy Haskell z ghc 7.8.4 do ghc 7.10.2. Najpierw założyłem konflikt instalacyjny, ale wielokrotnie usunąłem platformę Haskell z mojego systemu przy użyciu thorough removal instructions i ponownie spróbowałem instalacji threadscope bez powodzenia. Usunąłem i ponownie zainstalowałem podstawowy gtk+ i powiązane pakiety przy użyciu homebrew, znowu bez powodzenia.

Nie jestem pewien, skąd pochodzą typy Ptr() i Maybe DrawWindow, a zatem skąd może pochodzić konflikt. Wszelkie pomysły na to, co może pójść źle, będą mile widziane!

Odpowiedz

1

Jest to przepis na instalowanie GTK i threadscope na blogu edsko za:

http://www.edsko.net/2015/03/09/sandboxes-revisited/

Szukaj stronę dla GTK "sandbox".

Aktualizacja

udało mi się zbudować threadscope stosując powyższe instrukcje z ghc-7.10.2.

Poszczególne komendy użyłem:

export PATH=/opt/X11/lib/pkgconfig 
brew install gtk+      # installed gtk+-2.24.25 
brew install poppler     # installed poppler-0.35.0 
cabal sandbox init 
cabal install gtk2hs-buildtools 
cabal install gtk 
cabal install poppler --with-gcc=gcc-4.9 --extra-include-dirs=/usr/local/include 
cabal install threadscope 

Poszczególne wersje pakietów zainstalowanych w piaskownicy:

cairo-0.13.1.0 
ghc-events-0.4.4.0 
gio-0.13.1.0 
glib-0.13.2.1 
gtk-0.13.9 
hashtables-1.2.0.2 
pango-0.13.1.0 
poppler-0.13.1 
utf8-string-1.0.1.1 
+0

Witam, dziękuję za odpowiedź! Niestety spowodowało to te same błędy, co powyżej podczas budowania gtk. –

+0

Czy używasz GHC 7.10.2? Powyższy przepis buduje threadscope w piaskownicy, dzięki czemu można go śledzić bez naruszania zainstalowanych pakietów, jeśli aktualnie używasz innej wersji GHC. – ErikR

+0

Tak, używam GHC 7.10.2 i jestem bardzo zdezorientowany, dlaczego przepis nie zadziałał, ponieważ piaskownica była moją ostatnią deską ratunku. –

3

może można spróbować zainstalować GTK z tej linii

cabal install gtk -fhave-quartz-gtk

+2

Wariant stosu: 'instalacja stosu --flag gtk: have-quartz-gtk threadscope' –