由于gtk-0.14.2生成错误,haskell图表安装失败
我正在尝试从(github)安装haskell图表,我克隆了它,安装了stack,运行了stack安装程序(它成功安装了GHC),但我运行了make,但失败了,并显示以下消息:由于gtk-0.14.2生成错误,haskell图表安装失败,haskell,haskell-stack,gtk2hs,Haskell,Haskell Stack,Gtk2hs,我正在尝试从(github)安装haskell图表,我克隆了它,安装了stack,运行了stack安装程序(它成功安装了GHC),但我运行了make,但失败了,并显示以下消息: ... 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/.
...
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)。如何处理此错误?使用brew我将gtk+从2.24.25版升级到2.24.30版,并安装了最新版本的XQuartz(2.7.9版-我无法确定最初安装的版本) 通过这些更改,我能够成功地使用
堆栈构建构建项目
特定命令:
$ brew cask install xquartz --force
$ brew upgrade gtk
使用brew我将gtk+从2.24.25版升级到2.24.30版,并安装了最新版本的XQuartz(2.7.9版-我无法确定最初安装的版本)
通过这些更改,我能够成功地使用堆栈构建构建项目
特定命令:
$ brew cask install xquartz --force
$ brew upgrade gtk
为了在linux上从github源代码构建haskell图表,应该在stack.yaml
flags:
gtk:
have-quartz-gtk: true
与
因为Linux不使用Quartz flag有Quartz gtk
,并且构建gtk不需要Quartz(Windows也不使用Quartz)。为了在Linux上从github源代码构建haskell图表,应该在堆栈中替换。yaml
flags:
gtk:
have-quartz-gtk: true
与
因为Linux不使用Quartz flag而拥有Quartz gtk
,并且构建gtk不需要Quartz(Windows也不使用Quartz)。请注意,您实际上不必使用gtk。图表库有两个渲染后端-一个基于gtk2hs,另一个基于库。cairo后端速度明显更快,而diagrams后端是纯haskell的,因此更容易构建
默认情况下,会生成两个后端,但您可以使用以下内容仅构建核心库和后端关系图:
堆栈构建./chart./chart图表
请注意,您实际上不必使用gtk。图表库有两个渲染后端-一个基于gtk2hs,另一个基于库。cairo后端速度明显更快,而diagrams后端是纯haskell的,因此更容易构建
默认情况下,会生成两个后端,但您可以使用以下内容仅构建核心库和后端关系图:
堆栈构建./chart./chart图表
您是否使用较新的LTS解析器进行了尝试?我尝试了使用gtk-0.13.9的LTS-3.22,但在gtk-0.14.2上出现了相同的错误。我是haskell和stack的新手,但使用lts-3.22的stack要求我提供另一个版本的ghc(这意味着stack实际上使用lts-3.22)。最近的解析器与haskell图表依赖项的要求冲突。您是否使用过更新的lts解析器?我尝试过使用gtk-0.13.9的lts-3.22,但在gtk-0.14.2方面得到了相同的错误。我是haskell和stack的新手,但使用lts-3.22的stack要求我提供另一个版本的ghc(这意味着stack确实使用lts-3.22)。最近的解析器与haskell图表依赖项的要求冲突。实际上,此标志已经在stack.yaml中。另外,stack build——flag gtk:have quartz gtk
也会导致相同的错误。我的操作系统是Arch Linux,而不是mac。我通过Arch package manager将gtk从2.24.28升级到2.24.30,但是stack build
会导致完全相同的错误。实际上,这个标志已经在stack.yaml中了。另外堆栈构建--flag gtk:have quartz gtk
也会导致相同的错误。我的操作系统是Arch Linux,而不是mac。我通过Arch package manager将gtk从2.24.28升级到2.24.30,但是堆栈构建
会导致完全相同的错误。实际上,我现在正在使用cairo进行PDF输出。我遵循您的建议,将我的数字作为一个“包”,包含自己的stack.yaml和cabal文件。我现在明白了,我不必使用gtk,但我只是想看看源代码内部,也许做一些修改,等等,并由此学习Haskell。实际上,我现在使用cairo进行PDF输出。我遵循您的建议,将我的数字作为一个“包”,包含自己的stack.yaml和cabal文件。我现在明白了,我不必使用gtk,但我只是想看看源代码内部,也许会做一些修改,等等,然后通过这个来学习Haskell。谢谢你的回答。我把它添加到感谢的答案中。我把它添加到