我刚刚制作了叉子来修复html-导管中的一个bug,我的模板库依赖于这个bug。我维护了一个依赖于模板库的应用程序。
因此,我用stack.yaml指向分叉:
extra-deps:
[...]
- git: https://github.com/emhoracek/xml.git
commit: 3e1bd12882d7c452d76e39e1db1b95577f38d4d7
subdirs:
- xml-conduit
- html-conduit并编写了一个测试,以确保更新该依赖项修复了错误。它做到了!耶。
然后,我更新了我的应用程序,指向更新的模板库:
packages:
[...]
- location:
git: https://github.com/positiondev/larceny
commit: ba743c58ff4ac2606f67336e5e557deacb416ed8
extra-dep: true我检查了一下是否修复了我的应用程序中的bug,但是它没有,直到我把我的html-conduit叉添加到我的应用程序的附加程序中,它仍然有这个bug。
到底怎么回事?为什么Stack在决定应用程序应该使用哪个版本时,不使用我的库的stack.yaml中指定的stack.yaml版本?
发布于 2018-10-18 17:48:02
任何stack命令都只引用一个stack.yaml文件--一个位于当前目录中的文件,或者可能是某个父目录。您所依赖的库不需要有一个stack.yaml文件,如果它存在,它将被忽略。
这使版本规范保持简单。对于两个stack.yaml文件请求同一个库的不同版本的情况,没有任何规则可供处理,因为任何构建都不会参考两个stack.yaml文件。
另一方面,会查询每个库的.cabal文件,因此如果某些.cabal文件需要一个stack.yaml没有指定版本的库,或者如果.cabal中的版本界限与stack.yaml中的特定版本不匹配,那么在构建的早期就会出现错误。
https://stackoverflow.com/questions/52878734
复制相似问题