是什么导致“堆栈构建”每次都不断注销本地依赖项?

Wiz*_*zek 6 haskell haskell-stack

我已经尝试过stack clean,并且也要移除.stack-work。但是,每次我运行build时,它都会注销5个(相同)软件包。 stack build --dry-run告诉我列表,但没有任何原因。

我最近也从1.4.1升级了

另外,如果不是很简单如何解决这个问题,我想回到使用1.4.1。有任何简单的方法可以降级haskell-stack到该版本吗?

编辑1

降级至1.4.0并没有帮助。大约有70个软件包被取消注册并重建,然后我进入了相同的5个取消注册循环。

所以我想,自昨天以来,我的当地状态还有哪些地方可能遭到破坏?~/.stack!因此,我已经移动了我的~/.stack文件夹以及.stack-work文件夹,以为如果有什么地方出错了,那应该是在这两个地方,现在我的处境更糟了。现在,恒定的注销周期包括23个软件包(其中一些非常繁重),而不仅仅是5个。

Would unregister locally:
cairo-0.13.3.1 (missing dependencies: gtk2hs-buildtools)
dump-0.3.0 (missing dependencies: haskell-src-meta, interpolatedstring-perl6)
entropy-0.3.7
ghcjs-dom-0.2.4.0 (missing dependencies: glib, gtk3, webkitgtk3)
gio-0.13.3.1 (missing dependencies: glib, gtk2hs-buildtools)
glib-0.13.4.1 (missing dependencies: gtk2hs-buildtools)
gtk2hs-buildtools-0.13.2.2 (missing dependencies: happy)
gtk3-0.14.6 (missing dependencies: cairo, gio, glib, gtk2hs-buildtools, pango)
haskell-src-exts-1.17.1 (missing dependencies: happy)
haskell-src-meta-0.6.0.14 (missing dependencies: haskell-src-exts)
here-1.2.9 (missing dependencies: haskell-src-meta)
hs-di-0.4.0 (missing dependencies: haskell-src-meta, interpolate, interpolatedstring-perl6)
interpolate-0.1.0 (missing dependencies: haskell-src-meta)
interpolatedstring-perl6-1.0.0 (missing dependencies: haskell-src-meta)
pango-0.13.3.1 (missing dependencies: cairo, glib, gtk2hs-buildtools)
reflex-0.5.0 (missing dependencies: haskell-src-exts, haskell-src-meta)
reflex-dom-0.4 (missing dependencies: ghcjs-dom, glib, gtk3, reflex, webkitgtk3, webkitgtk3-javascriptcore)
threepenny-gui-0.7.1.0
uuid-1.3.13
webkitgtk3-0.14.2.1 (missing dependencies: cairo, glib, gtk2hs-buildtools, gtk3, pango)
webkitgtk3-javascriptcore-0.13.2.0 (missing dependencies: glib, gtk2hs-buildtools, gtk3, webkitgtk3)
websockets-0.9.8.2
websockets-snap-0.10.0.0
Run Code Online (Sandbox Code Playgroud)

@ user2407038,什么样的信息可能有助于开始诊断此问题?以上内容对您有帮助吗?在什么情况下会出现这种注销循环?

我还有一个可以尝试的想法:这个特定的项目取决于一些本地软件包,而afaik的.stack-work文件夹可能在其中起作用。因此,也许我也可以(重新)删除这些内容。

上述任何其他想法是否应该失败?

Wiz*_*zek 3

长话短说:更改resolver: lts-7.19resolver: lts-7.24instack.yaml似乎已经修复了我的错误。


我有一些猜测和预感,背景中可能出了什么问题,但我并不完全确定。

我从标志中得到了一条线索--dry-run,它报告的一些丢失的包是构建时 haskell 包依赖项,例如alexhappy等...

那么也许旧的lts没有正确安装这些?如果有人对这个主题更了解,我很乐意听到更多。

而且我也很伤心,这一事件破坏了我对 stack 可重复构建承诺的一些信任,因为(据我所知是安全的)stack upgrade(甚至随后降级)突然使我的一个项目无法构建好几天。

无论如何,我很乐意

  1. stack在对我的系统进行破坏性更改之前会警告并询问我,特别是如果它导致数小时的重新编译。(对于我来说,这实际上意味着几天的头痛,因为我尝试的任何想法都必须等待相当长的时间。)
  2. 它可以使用与 nix 类似的构建存储,而即使我更改了某些配置,我也可以轻松切换回以前的工作配置。