我从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。
答案 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"
到您的配置