2015-08-13 10 views
20

Próbuję zainstalować GTK poprzez kabała jednak Dostaję następujące błędy typu kiedy budowa ToCabal zainstalować GTK braku

[ 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 

Aby zainstalować ten pakiet, trzeba „gtk2hsC2hs” i typ Błędy są w plikach .chs, które prawdopodobnie są generowane z narzędzia gtk2hsC2hs. Czy jest to znany problem z gtk2hsC2hs? Czy ktoś inny był w stanie zbudować ten pakiet? Ktoś wie o rozwiązaniu?

Jestem na 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 

Zrobiłem cabal update, więc wszystkie moje pakiety wydają się być na bieżąco. Próbowałem także budować niektóre ze starszych wersji dostępnych w hackage, ale otrzymuję te same błędy.

Edit

Błędy w generowanych plikach, wydaje się wszystkim zajmują się przywozem FFI że są coraz generowanych przez gtk2hsC2hs. Na dole pliku, Dostaję

Wydaje stale mieszać Ptr() z Maybe DrawWindow. Czy wygenerowany typ Ptr() jest nieprawidłowy, czy też jest nieprawidłowy?

+0

Tylko szybki komentarz, nie mieli czasu, aby spojrzeć na tyle, aby napisać odpowiedź: pliki '.chs' nie są generowane przez' gtk2hsC2hs'; są one pisane ręcznie i przetwarzane przez 'gtk2hsC2hs' w celu utworzenia plików' .hs'. Jeśli chcesz, możesz zajrzeć do tych plików; 'cabal' przechowuje je w katalogu' dist'. Próby wskazują na powrót z pliku '.hs' do pliku' .chs', w ten sposób GHC wie, gdzie w pliku '.chs' wskazuje jego błędy. –

+0

Ok dzięki za cynk. Zajrzę w to. – Matt

Odpowiedz

21

To miało naprawdę proste rozwiązanie.

cabal install gtk -fhave-quartz-gtk 

Byłoby miło, gdyby było to więcej dobrze udokumentowane, ale mam nadzieję, że to pomoże ktoś inny, który kończy się w podobnej sytuacji

+1

Pomogło mi to. Mogę potwierdzić, że działa na MacOSX 10.8. Dzięki! :) –

+2

Wariant stosu (np. Do instalacji threadscope): 'instalacja stosu --flag gtk: have-quartz-gtk threadscope' –