2015-10-13 24 views
5

temel sorunu takın. Spesifik olarak, threadscope'u çalıştırmak istiyorum, bu yüzden gtk'a ihtiyacım var.Haskell gtk Tipi Çatışmalar

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: 

Ben daha önce Haskell'ın gtk kütüphanesi vardı ve: homebrew ve gtk buildtools çalışma cezası ama

cabal install gtk 

veya

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

kullandığımda olsun aşağıdaki derleme hatası ile ilk aşamaları Haskell platformumu'ten güncellemeden önce threadscope uygulaması yüklü ve çalışıyor 210 ila ghc 7.10.2. İlk başta bir yükleme çakışması olduğunu düşündüm, ancak thorough removal instructions'u kullanarak sistemimden Haskell platformunu tekrar tekrar kaldırdım ve threadscope kurulumunu başarı ile tekrar denedim. Altında yatan gtk+ ve ilgili paketleri homebrew kullanarak yeniden yükledim ve yeniden başaramadım.

Ptr() ve Maybe DrawWindow türlerinin nereden kaynaklandığını ve bu nedenle çakışmanın nereden gelebileceğini bilmiyorum. Neyin yanlış gidebileceği hakkında herhangi bir fikir memnuniyetle karşılanacaktır!

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

"GTK sandbox" için sayfa Arama:

cevap

1

edsko en blog GTK ve threadscope yüklemek için bir reçete yoktur.

Güncelleme

Ben ghc-7.10.2 ile yukarıdaki talimatları kullanarak threadscope inşa edebildi.

belirli komutlar kullandığım: kum havuzu yüklü paketlerin

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 

belirli sürümleri:

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

Merhaba, cevabınız için teşekkürler! Ne yazık ki bu, gtk yapısı sırasında yukarıdaki ile aynı hatalarla sonuçlandı. –

+0

GHC 7.10.2 kullanıyor musunuz? Yukarıdaki tarif, threadcope'u bir sanal alanda oluşturur, bu yüzden şu anda GHC'nin farklı bir sürümünde bulunuyorsanız kurulu paketlerinizi rahatsız etmeden onu takip edebilirsiniz. – ErikR

+0

Evet, GHC 7.10.2 kullanıyorum ve tarifin neden işe yaramadığı konusunda kafam çok karışıktı çünkü bir sandbox son çare olarak eminim. –

3

belki bu hat ile gtk yüklemeye deneyebilirsiniz

cabal install gtk -fhave-quartz-gtk

+2

Yığın varyantı: 'stack install --flag gtk: have-quartz-gtk threadscope' –