haskell - 什么会导致 `stack build` 每次都取消注册本地依赖项?

标签 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-unregister-loop。

所以我想,从昨天开始,我的地方州还能在哪里被破坏? ~/.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

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

我还有一个可以尝试的想法:这个特定的项目依赖于一些本地包,并且 afaik 他们的.stack-work文件夹可能在其中发挥作用。所以也许我也可以(重新)移动它们。

如果上述想法失败了,还有什么想法吗?

最佳答案

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

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

我从 --dry-run 得到了一个线索标记它报告的一些缺失包是构建时的 haskell 包依赖项,例如 alex , happy , ETC...

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

而且我也很遗憾,这一事件破坏了我对堆栈可重现构建 promise 的一些信任,作为(AFAIK 声称是安全的)stack upgrade (甚至随后降级)突然让我的一个项目几天都无法构建。

无论如何,如果

  • stack在对我的系统进行破坏性更改之前会警告并询问我,特别是如果它会导致数小时的重新编译。 (这实际上对我来说意味着几天的头疼,因为我尝试过任何想法都必须等待相当长的时间。)
  • 它可以使用与 nix 类似的构建存储,而即使我更改了某些配置,我也可以轻松切换回以前的工作配置。
  • 关于haskell - 什么会导致 `stack build` 每次都取消注册本地依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45770444/

    相关文章:

    haskell - 我可以要求 GHC 在开发过程中为每个模块导入 Debug.Trace 吗?

    Haskell Stack 和 C 库

    haskell - 我可以将自定义包链接放入 stack.yaml 吗?

    performance - Haskell:不同功能组成的性能差异?

    haskell - 使用 DataKinds 扩展的更简洁的写作方式(Proxy::Proxy 42)

    class - 为什么 Haskell 说这是模棱两可的?

    ghc - `stack` 和 Windows 上的文件路径限制

    haskell - 将 setter/getter 组合成折叠

    Haskell 枚举比较

    haskell - Haskell Stack 项目 : How to cache built libraries? 的 gitlab-CI