堆栈1.5.1的自定义快照

时间:2017-09-18 22:18:56

标签: haskell haskell-stack

我从stack-1.5.1升级到stack-1.4.0,然后突然开始拒绝我的stack.yaml自定义快照。这是stack.yaml

的开头
resolver:
  name: integer-simple-snapshot
  location: deps/flaw/integer-simple-snapshot.yaml

...

因此它使用位于子目录中的自定义快照文件,该子目录包含以下解析程序:

resolver: lts-9.0

现在,当我尝试构建任何东西时,堆栈会打印以下内容:

Could not parse '<path to project>/stack.yaml':
Aeson exception:
Error in $.resolver: failed to parse field 'resolver': expected ResolverWith (), encountered Object
See http://docs.haskellstack.org/en/stable/yaml_configuration/

我尝试使用非对象解析器,如resolver: "deps/flaw/integer-simple-snapshot.yaml"和其他对象和非对象变体,但我能得到的是关于错误格式的各种神秘错误。

我在http://docs.haskellstack.org/en/stable/yaml_configuration/看不到有关解析程序格式的任何更改,页面https://docs.haskellstack.org/en/stable/custom_snapshot/仍然包含自定义快照的示例。我还查看了更改日志,但未找到与快照或解析程序格式相关的任何内容。

在堆栈升级之前,项目完全可以使用这些文件构建。发生了什么变化?我现在如何使用自定义快照?

如果重要的话,我使用Arch Linux和标准stack包中的stack-1.5.1。

1 个答案:

答案 0 :(得分:2)

可扩展快照的内容已经成为一种实验性功能,但我认为它正在稳定下来。请参阅此博客文章了解更改 - https://www.fpcomplete.com/blog/2017/07/stacks-new-extensible-snapshots

编辑:实际上,该博文中的变化尚未发布。是否有可能是运送堆栈的主版本?那将是有趣的..&#34; stack --version&#34;说什么?

虽然未明确提及,但我认为它使用了解析器的对象,因为&#34;名称&#34;这个领域并不是很有用。所以现在只是

resolver: deps/flaw/integer-simple-snapshot.yaml

将来,我们应该尝试要求&#34; require-stack-version:...&#34;在他们依赖新功能的配置中。为了使用户更清楚,添加

可能会有所帮助

require-stack-version: ">= 1.5"

到您的配置