标签: cabal-install

尽管安装了依赖项,尝试配置Setup.hs时依赖项的问题

我已经获得了一个Setup.hs文件,以及另一个包含源代码的.hs文件.每当我尝试通过以下方式配置安装时:

runhaskell Setup.hs配置

我收到错误:

设置:至少缺少以下依赖项:binary> = 0.4.0 && <0.6.0,haskeline == 0.6.*

我已经使用cabal安装了这些依赖项,但是当我尝试再次运行Setup configure命令时,我得到了同样的错误.我对Haskell完全不熟悉 - 在尝试再次运行安装程序之前,在安装了cabal之后是否还有其他一步?

haskell cabal cabal-install

6
推荐指数
1
解决办法
1873
查看次数

开始xmonad

我是xmonad的新手,但我想开始使用它来提高我的工作效率.

这是我一直在使用的指南(我正在使用Apple OS X Snow Leopard) http://xmonad.org/tour.html#start

到目前为止,我已经成功安装了Haskell-Platform,Cabal,dMenu和xmonad(使用cabal安装).

当我尝试从终端运行xmonad时,我遇到了这个错误:

SDGL0990Z464C:~ cflynn$ echo $PATH
/Users/cflynn/.cabal/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/X11/bin
SDGL0990Z464C:~ cflynn$ xmonad
/Users/cflynn/.xmonad/xmonad-i386-darwin: executeFile: does not exist (No such file or directory)
X Error of failed request:  BadAccess (attempt to access private resource denied)
  Major opcode of failed request:  2 (X_ChangeWindowAttributes)
  Serial number of failed request:  7
  Current serial number in output stream:  8
Run Code Online (Sandbox Code Playgroud)

有谁能解释这意味着什么?谢谢!

haskell xmonad cabal cabal-install

6
推荐指数
1
解决办法
4633
查看次数

cabal安装hspec时出错

我正在尝试安装hspec,但我得到了这个:

$ cabal install hspec
Resolving dependencies...                                                                                                                                               
cabal: dependencies conflict: ghc-7.2.2 requires containers ==0.4.2.0 however                                                                                           
containers-0.4.2.0 was excluded because ghc-7.2.2 requires containers                                                                                                   
==0.4.1.0                                                  
Run Code Online (Sandbox Code Playgroud)

这甚至意味着什么?

另外,使用ghc 7.2.2,cabal 10.2.

haskell cabal cabal-install

6
推荐指数
1
解决办法
417
查看次数

Haskell - 带有定制预处理器的包装cabal包

我已经实现了一个自定义预处理器,它可以创建*.hs文件,形成*.tpl文件.它Setup.hs通过使用a 指定Build-Type: Custom.一切正常,但我无法从中创建tar.gz包(使用cabal sdist).

Cabal抱怨说,它找不到预处理器生成的暴露模块.错误消息是

cabal: Error: Could not find module with any
suffix: ["gc","chs","hsc","x","y","ly","cpphs","hs","lhs"]
Run Code Online (Sandbox Code Playgroud)

我怎样才能让Cabal意识到模块没有丢失,或者可能将tpl添加到已知的文件扩展名,或者什么?

haskell cabal cabal-install

6
推荐指数
1
解决办法
540
查看次数

如何找到cabal失败的地方和原因 - 无法解决依赖关系

我今天早上尝试安装几个模块以使Eclipse FP工作,scion-browser和buildwrapper失败.

[root@localhost ghc-mod]# cabal install scion-browser
Resolving dependencies...
cabal: Could not resolve dependencies:
trying: scion-browser-0.3.0

[root@localhost ghc-mod]# cabal install buildwrapper
Resolving dependencies...
cabal: Could not resolve dependencies:
trying: buildwrapper-0.8.0
Run Code Online (Sandbox Code Playgroud)

我简单地继续#haskell IRC,但无法得到答案,但我没有在IRC中长时间闲逛.然后我放弃了EclipseFP并与vim一起走上了快乐的道路.我之前使用过vim用于其他语言,我认为即使我可能没有调试器也会很好.但好奇心让我安装了一些插件,可以增强我在haskell的编码体验,但其中一个插件需要ghc-mod所以我想我会cabal install再去一次.我最终得到了以下错误.

[root@localhost ghc-mod]# cabal install ghc-mod
Resolving dependencies...
Configuring ghc-mod-0.3.0...
Building ghc-mod-0.3.0...
Preprocessing executable 'ghc-mod' for ghc-mod-0.3.0...
[1 of 6] Compiling Param            ( Param.hs, dist/build/ghc-mod/ghc-mod-tmp/Param.o )
[2 of 6] Compiling Lang             ( Lang.hs, dist/build/ghc-mod/ghc-mod-tmp/Lang.o )
[3 of 6] Compiling List             ( List.hs, dist/build/ghc-mod/ghc-mod-tmp/List.o )
[4 of …
Run Code Online (Sandbox Code Playgroud)

haskell cabal cabal-install eclipse-fp

6
推荐指数
0
解决办法
1573
查看次数

沙盒中的cabal测试

假设我有三个自己的包,AB&C,依赖于Hackage中的许多其他包.我正在使用cabal 1.18.

  • C取决于A和B.
  • B取决于A.
  • A&B有测试套件.

我像这样设置了沙箱:

cd /path/to/sandbox
cabal sandbox init
cabal sandbox add-source /path/to/A
cabal sandbox add-source /path/to/B
cabal sandbox add-source /path/to/C
Run Code Online (Sandbox Code Playgroud)

我想构建所有包,在我的包上运行所有测试套件,但不运行依赖包,显示完整的测试输出.最好的方法是什么?

选项1

cd /path/to/sandbox
cabal install --enable-tests A B C
Run Code Online (Sandbox Code Playgroud)

问题:

  • 没有办法传递--show-details=alwayscabal install.
  • 测试输出隐藏在日志文件中,未显示.
  • 如果用户碰巧cabal install A先前做了,A将不会重建,测试将无法运行.

选项2

cd /path/to/A
cabal sandbox init --sandbox=/path/to/sandbox/.cabal-sandbox
cd /path/to/B
cabal sandbox init --sandbox=/path/to/sandbox/.cabal-sandbox

cd /path/to/A
cabal configure --enable-tests
cabal test --show-details=always
cd /path/to/B
cabal configure --enable-tests
cabal test --show-details=always
cabal install C
Run Code Online (Sandbox Code Playgroud)

问题:

  • 这会导致A和B库被不必要地重建. …

haskell cabal cabal-install

6
推荐指数
1
解决办法
302
查看次数

idris cabal安装失败."重新安装可能会破坏以下软件包"

我首先进行了cabal更新/升级过程,所以我有cabal-install-1.20.0.3.然后我做:

cabal install idris
Run Code Online (Sandbox Code Playgroud)

我明白了:

...
idris-0.9.14.1 (new version)
The following packages are likely to be broken by the reinstalls:
network-2.5.0.0
HTTP-4000.2.17
Use --force-reinstalls if you want to install anyway.
Run Code Online (Sandbox Code Playgroud)

(如果重要,我正在运行OS X 10.9.4)

cabal cabal-install idris

6
推荐指数
1
解决办法
1200
查看次数

与haddock的差异文档

如果我cabal build在我的库上执行操作,然后更改文件,下次运行时cabal build,我只需要重新编译受更改影响的文件.我没有得到与cabal haddock命令相同的行为:当我在更改文件后运行它时,cabal/haddock最终会丢弃所有以前的工作并从头开始.这相当耗时; 有没有办法获得文档的差异更新?

这是生成文档的命令cabal问题转储.

haskell cabal haddock cabal-install

6
推荐指数
1
解决办法
185
查看次数

Cabal 找不到本地来源(但已正确安装)的软件包

我最近升级到 Cabal 3.2(和 GHC 8.10),我遇到了一些重大问题,使我的某些项目不再可构建......

问题的详细描述

这是一个每次都失败的最小(非)工作配置:

  1. 我从一个干净的 Cabal 配置开始(删除~/.cabal);原因将在后面的帖子中出现。我运行cabal update以重新创建.cabal目录并确保 Cabal 正常工作。

  2. test1使用cabal init. 这是一个库项目,带有一个公开的模块(方便地命名Test1),该模块导出一些虚拟函数foo。我跑cabal build,然后cabal install --lib; 一切都运行顺利,到目前为止一切顺利。

  3. 可以肯定的是,我离开了项目目录并启动了 GHCi。我输入:m Test1以加载我之前创建的模块,它工作正常!我可以输入foo ...并查看我的函数执行情况。此外,我列出了目录的内容~/.cabal/store/ghc-8.10.xxx并看到该test1-xxx目录在那里。

  4. 然后我创建了一个新项目test2,仍然使用cabal init. 这一次,我将其配置为可执行文件,并将其添加test1为依赖项(使用build-depends字段)。但是这次当我运行时cabal build,我遇到了一些问题:

~/projects/haskell/test2> cabal build
Resolving dependencies...
cabal: Could not resolve dependencies:
[__0] trying: test2-0.1.0.0 (user goal)
[__1] …
Run Code Online (Sandbox Code Playgroud)

haskell cabal cabal-install

6
推荐指数
1
解决办法
1010
查看次数

如何使用 cabal(工具)或堆栈创建应用程序的二进制分发版

我已经用 Haskell 编写了一个应用程序,它开始对用户有点用处了。然而,我的应用程序并不是针对技术娴熟的人,更不用说 Haskell 开发人员了,所以从源代码构建我的应用程序并不是我真正可以期望他们做的事情。

因此,为了让我的用户可以使用我的应用程序,我想自己构建应用程序,将其可执行文件、数据文件、依赖项、依赖项的数据文件、所需的许可信息和其他所需的文件放入一个存档中,然后将该存档放在一个网站。现在,用户可以下载该存档,解压缩它并拥有运行我的应用程序所需的一切。

我上面描述的过程似乎是向我分发应用程序二进制文件的一种相当常见的方式。但是,我无法弄清楚要使用哪些工具或如何配置它们以将我的应用程序构建到上述二进制分发版中。

Cabal(图书馆)似乎具有所需的功能。通常的Setup.hs脚本(没有 cabal(工具)或堆栈作为包装器)支持诸如--prefix和 之类的选项,--enable-relocatable它允许您将包安装到给定的前缀并以这样的方式编译它们,以确保如果前缀(作为一个整体)被移动到其他地方。

但是使用 rawSetup.hs的缺点是它不处理自动安装依赖项。而且由于许多大小合适的 Haskell 应用程序将有数百个依赖项(或至少我的),手动配置和构建它们中的每一个并不是真正可行的。

安装依赖项问题的明显解决方案是使用包装器工具,例如 cabal(工具)或堆栈,因为它们是专门用于处理大型依赖项树的问题。但是,它们似乎都有问题阻止我将应用程序构建为二进制分发版:

  • stack build没有选项--prefixor--enable-relocatable而总是安装到.stack-workand ~/.stack

  • cabal v2-*有选项--prefix--enable-relocatable但似乎完全忽略它们,而是始终安装到dist-newstyle~/.cabal

  • cabal v1-*对于非常简单的情况,似乎可以做我想做的事情。然而,对于更复杂的情况,它会产生模糊的构建失败,其中 GHC 抱怨没有从依赖项中找到模块,而 cabal 抱怨部分安装的包。但即使将这些故障放在一边,对新工作流使用旧命令一般来说似乎也不是一个好主意。

那么,由于我似乎对这些工具不太走运,我可以使用哪些其他工具将 Haskell 应用程序构建为二进制发行版?或者,也许我列出的工具之一实际上可以满足我的需求,而我只是以错误的方式使用它?

范围的一些限制:

  • 现在我最感兴趣的是 Windows 的构建,但其他平台的解决方案也会很有趣。
  • 当我谈论依赖项时,我主要指的是 Haskell 依赖项(即 Cabal 包)。还捆绑外部 C 依赖项的解决方案会很有趣,但这不是一个严格的要求。

haskell cabal cabal-install haskell-stack cabal-new

6
推荐指数
1
解决办法
82
查看次数