2015-10-13 15 views
5

基本的な問題をインストールします。具体的には、threadscopeを実行したいので、gtkが必要です。私は以前Haskellのgtkライブラリを持っていたし、Haskellのgtkのは、タイプの競合

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: 

homebrewgtk buildtools作業罰金が、私

cabal install gtk 

または

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

を使用するには、私は、次のコンパイルエラーを取得して初期段階Haskellプラットフォームをから更新する前に、threadscopeアプリケーションがインストールされ、実行されています。 210〜ghc 7.10.2。最初はインストールの競合が想定されていましたが、私はthorough removal instructionsを使用してHaskellプラットフォームを繰り返し削除し、threadscopeインストールを再試行しましたが、成功しませんでした。私はさらに、homebrewを使って基底のgtk+と関連パッケージを削除して再インストールしましたが、やはり成功しませんでした。

タイプPtr()Maybe DrawWindowがどこに由来するのかわからないので、競合が発生する可能性があります。間違っている可能性のあるアイデアは大歓迎です!

答えて

1

edskoのブログでGTKとthreadscopeをインストールするためのレシピがあります:

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

は "GTKサンドボックス" のページを検索します。

更新

私はGHC-7.10.2で上記の手順を使用してthreadscopeを構築することができました。

私が使用した特定のコマンド:

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 

サンドボックスにインストールされたパッケージの特定のバージョン:

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

こんにちは、ありがとうございます!残念ながら、これはgtkのビルド中に上記と同じエラーが発生しました。 –

+0

GHC 7.10.2を使用していますか?上記のレシピは、サンドボックス内にスレッドスコープを構築するので、現在GHCの異なるバージョンを使用している場合は、インストールされたパッケージに影響を与えることなく追跡できます。 – ErikR

+0

はい、私はGHC 7.10.2を使用していますが、なぜサンドボックスが私の最後の手段であるのか、非常に混乱しています。 –

3

多分あなたは、この行

cabal install gtk -fhave-quartz-gtk

とGTKをインストールしようとすることができ
+2

スタックの変形: 'stack install --flag gtk:have-quartz-gtk threadscope' –