【发布时间】:2017-08-16 07:00:09
【问题描述】:
我有一个由目录树中的几个包组成的项目。如果我更改其中一个包,那么堆栈通常会自动重新编译依赖于更改的包的包(有时自动化失败,我没有任何提示 - 但这不是问题的重点)。
在重新编译期间,我经常看到所有列为 extra-deps 的包的重新编译。这些都没有改变,重新编译是不必要的(但很耗时)。我知道有一些机制可以只编译一次这样的依赖项(只要它们没有改变)并被重用。我曾经从堆栈中看到一条消息,说某些以前的包编译被重用,指向这个缓存。
我在评论中被要求在项目目录中提供 stack.yaml(我也尝试过类似的条目
- location: /home/frank/Workspace8/repo8/litMain
extra-dep: true
但没看出区别):
flags: {}
extra-package-dbs: []
packages:
- litMain
- rdf4store
- rdfhextension
- uniform/uniform-strings
- uniform/uniform-error
- uniform/uniform-algebras
- uniform/uniform-convenience
- uniform/uniform-fileio
- uniform/uniform-time
extra-deps:
- chatter-0.8.0.1
- data-easy-0.7.0
- fullstop-0.1.4
- hgal-2.0.0.2
- non-negative-0.1.1
- numeric-prelude-0.4.2
- rdf4h-3.0.1
- test-invariant-0.4.5.0
- tokenize-0.3.0
resolver: lts-8.2
一般如何实现之前编译的、未改动的extra-deps的复用?
我尝试了构建、构建 --dependencies-only 和构建 --snapshot,但没有成功。所有依赖项都已重建...我在文档中找不到更多信息。
有用的 cmets 让我重新思考和编辑问题。我希望这个问题现在能更好地暴露出来。谢谢你的帮助!
【问题讨论】:
-
单个项目中有多个包还是有多个项目(和多个
stack.yamls)? -
也许可以给我们看看你的
stack.yaml(s)的轮廓?! -
stack.yaml 被编辑到问题中。我还找到了可能相关的信息,但我看不到如何在fpcomplete.com/blog/2015/09/stack-more-binary-package-sharing中使用
-
我仍然很难理解您对问题的描述。您的句子“如果我更改其中一个项目,则堆栈不会自动更新依赖于该项目的另一个项目。”表示有多个项目,但你真的只有一个?也许您可以open an issue for stack 并包括重现您的问题所需的所有步骤。
标签: haskell-stack