由于gtk-0.14.2构建错误,安装haskell-chart失败



我试图从这里安装haskell_chart (github),我克隆它,安装堆栈,运行堆栈设置(它成功安装GHC),但随后我运行使与消息失败:

...
Chart-cairo-1.8: copy/register
Chart-diagrams-1.8: copy/register
Progress: 4/6
--  While building package gtk-0.14.2 using:
      /tmp/stack4807/gtk-0.14.2/.stack-work/dist/x86_64-linux/Cabal-1.22.5.0/setup/setup --builddir=.stack-work/dist/x86_64-linux/Cabal-1.22.5.0 build --ghc-options " -ddump-hi -ddump-to-file"
    Process exited with code: ExitFailure 1
...
[ 22 of 209] Compiling Graphics.UI.Gtk.Embedding.Plug ( .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Graphics/UI/Gtk/Embedding/Plug.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Graphics/UI/Gtk/Embedding/Plug.o )
    /tmp/stack4807/gtk-0.14.2/Graphics/UI/Gtk/Embedding/Plug.chs:120:6:
        Couldn't match expected type ‘CUInt’
                    with actual type ‘Maybe DrawWindow’
        In the first argument of ‘gtk_plug_new’, namely...

栈版本为1.1.2 x86_64 hpack-0.14.1, LTS Haskell 5.18 (ghc-7.10.3)。我该如何处理这些错误?

为了在linux上从github源构建haskell_chart,应该替换stack.yaml

flags:
    gtk:
        have-quartz-gtk: true

flags: {}

因为Linux不使用Quartz标志have-quartz-gtk,并且构建gtk不需要Quartz (Windows也不使用Quartz)。

使用brew我将gtk+从2.24.25版本升级到2.24.30,并安装了最新版本的XQuartz(版本2.7.9 -我无法确定我最初安装的是哪个版本)

通过这些更改,我能够成功地使用stack build构建项目。

特定命令:

$ brew cask install xquartz --force
$ brew upgrade gtk

注意,您实际上不必使用gtk。图表库有两个呈现后端——一个基于gtk2hs的cairo,另一个基于图表库。cairo后端明显更快,而图表后端是纯haskell,因此更容易构建。

默认情况下,两个后端都被构建,但是你可以只构建核心库和图表后端:

stack build ./chart ./chart-diagrams

最新更新