使用堆栈测试Hackage包的工作流程(不在Stackage中)

时间:2017-01-02 15:47:16

标签: haskell haskell-stack

使用堆栈预先形成孤立下载和安装(用于测试和实验)Hackage中的Haskell软件包,而不是Stackage中的工作流程是什么?

例如

stack new tester
cd tester
# Then add the package PKG to 'extra-deps'
stack build . --force-dirty

是不够的,并且当尝试包的import部分时,会导致错误("当前程序中的模块,或任何已知的包")。

使用

显式构建软件包(似乎不应该这样做)
stack build PKG

也不起作用(导致警告它"是隐藏包PKG的成员......")。

如果我改为

stack new tester --force 
cd tester 
stack build PKG

我得到了相同的"隐藏的包"我尝试在stack ghci会话中导入包的组件时出错。

使用Haskell堆栈为Hackage上的特定包创建独立临时安装的(最佳实践)工作流程是什么?

1 个答案:

答案 0 :(得分:1)

要使用Stackage上不可用的软件包,我通常首先尝试在全局项目中构建它:

$ cd ~/
$ stack build the-package
$ stack ghci

如果这不起作用,通常是因为缺少依赖关系或边界问题,我采用以下工作流程:

$ stack new playground
$ cd playground
# In playground.cabal, add the-package to the library build-depends section 
$ stack solver --update-config
$ stack ghci
# Play with the package