Cabal安装Wx导致mac-os失败

时间:2018-12-05 17:13:18

标签: haskell wxwidgets cabal

我正在与Haskell库建立一种爱恨交织的关系。确实无论如何都想深入学习Haskell,但是图书馆大多数时候都在劝阻我(或者鼓励我自己写书,但是我还不行)。想要尝试Wx for UI。阴谋集团开始一切快乐,但以地狱的消息结束。至少我认为是。

Downloading the latest package list from hackage.haskell.org
clang: warning: argument unused during compilation: '-nopie' [-Wunused-command-line-argument]
Resolving dependencies...
Downloading fgl-5.7.0.1...
Downloading old-locale-1.0.0.7...
Configuring old-locale-1.0.0.7...
Downloading stm-2.5.0.0...
Configuring fgl-5.7.0.1...
Configuring stm-2.5.0.0...
Building old-locale-1.0.0.7...
Building fgl-5.7.0.1...
Building stm-2.5.0.0...
Installed old-locale-1.0.0.7
Downloading old-time-1.1.0.3...
Configuring old-time-1.1.0.3...
Building old-time-1.1.0.3...
Installed stm-2.5.0.0
Installed old-time-1.1.0.3
Downloading wxcore-0.11.1.2...
Configuring wxcore-0.11.1.2...
Failed to install wxcore-0.11.1.2
Build log ( /Users/administrator/.cabal/logs/ghc-8.4.3/wxcore-0.11.1.2-7WkQ04B76zVGNKKljmrN1g.log ):
cabal: Entering directory '/var/folders/81/50s00bl11pv7fn8dw4n0w03m0000gn/T/cabal-tmp-1098/wxcore-0.11.1.2'
error: Unknown option "--sysconfdir=/Users/administrator/Library/Haskell/etc". Use "--help" to show valid options.

cabal: Leaving directory '/var/folders/81/50s00bl11pv7fn8dw4n0w03m0000gn/T/cabal-tmp-1098/wxcore-0.11.1.2'
Installed fgl-5.7.0.1
Updating documentation index
/Users/administrator/Library/Haskell/share/doc/x86_64-osx-ghc-8.4.3/index.html
cabal: Error: some packages failed to install:
wx-0.11.1.2-3RIijI82LEqAoB6cQuvIlr depends on wx-0.11.1.2 which failed to
install.
wxcore-0.11.1.2-7WkQ04B76zVGNKKljmrN1g failed during the configure step. The
exception was:
ExitFailure 2

有什么建议吗?请不要说“使用Gtk”,因为这甚至更糟。如果有人可以帮助我,那将很棒。尽管航站楼是一个安全的住所,但我还是想最终突破它,探索世界。 “你好,世界!”

2 个答案:

答案 0 :(得分:1)

Haskell脱离了需要共同的功能语言定义和实现的多元化研究人员的需求。许多研究人员都积极参与编程语言理论和函数式编程理论,因此他们将扩展或重新定义语言以满足他们的需求。该生态系统具有一组多样化的库,其中许多库的开发水平尚未达到专业维护的软件水平。

话虽这么说,随着Haskell开始受到大公司的接受,大力推动提供一种语言和一组可协同工作的库成为现实。

我看到的最一致的努力是Haskell Stack。他们从 stack 工具开始,该工具是程序包管理器和构建工具;它使用 cabal 进行下载和安装,并(通常)使用 ghc 进行编译,以及计算机上具有的任何构建工具。 Stack使用 lts (我认为是长期支持)配置文件,该配置文件标识了一组已知可以相互配合的软件包版本。您可以告诉堆栈为项目使用特定的 lts 配置文件,即使添加特定的程序包,它也将其作为构建配置文件的一部分进行维护。

从构建输出中,您尝试使用hackage.haskell.org中的最新软件包。每个软件包都在其自己的时间范围内进行更新,这与任何其他软件包完全不同。堆栈方法是确定可以协同工作的软件包,这通常意味着可能需要较早版本的编译器。

我记得,最新的Wx Haskell在Mac OS X上不起作用。可能有一个堆栈lts配置文件,可用于使Wx Haskell在Mac OS X上工作。

答案 1 :(得分:1)

由于我未知的原因,您的安装选择的是wxcore(0.11)的非常旧的版本。

您在hackage以及github repo上都有更现代的版本: https://github.com/wxHaskell/wxHaskell/

github的版本是最新的(0.93),在大多数情况下效果很好,但是您需要在wxcore中更改darwin的cc标志:

-      cc-options: "-stdlib=libstdc++"
+      cc-options: "-stdlib=libc++"

(我已经向邮件列表发送了一封电子邮件,以记录此更改,并要求更新黑客版本。)

否则,我可以确认wxHaskell在新的Mac上可以正常编译并且可以工作。