是什么导致 `stack build` 每次都注销本地依赖项?
What can cause `stack build` to keep unregistering local dependencies every time?
我已经尝试 stack clean
,并且还删除了 .stack-work
。
但是,每次我 运行 构建它时,它都会注销 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,什么样的信息可能有助于开始诊断?以上内容对您有帮助吗?在什么情况下会出现这样的注销循环?
我还有一个可以尝试的想法:这个特定项目依赖于一些本地包,据我所知,它们的 .stack-work
文件夹可能在其中发挥了作用。所以也许我也可以(重新)移动它们。
上面的失败还有什么想法吗?
作为部分解决方案,我发现我可以
stack upgrade --binary-version 1.4.0
哪个容易执行降级:
Current Stack version: 1.5.1, available download version: 1.4.0
Forcing binary upgrade
Querying for archive location for platform: linux-x86_64-static
Downloading from: https://github.com/commercialhaskell/stack/releases/download/v1.4.0/stack
-1.4.0-linux-x86_64-static.tar.gz
Download complete, testing executable
Version 1.4.0, Git revision e714f1dd3fade19496d91bd6a017e435a96a6bcd (4640 commits) x86_64
hpack-0.17.0
New stack executable available at /home/user/.local/bin/stack
长话短说:在 stack.yaml
中将 resolver: lts-7.19
更改为 resolver: lts-7.24
似乎为我修复了错误。
我有一些猜测和预感可能在后台出了什么问题,但我不完全确定。
我从 --dry-run
标志中得到一条线索,它报告的一些缺失包是构建时 haskell 包依赖项,例如 alex
、happy
、等...
所以也许旧的 lts
没有正确安装?如果有人对这个问题有更多的了解,我很乐意听到更多。
我也很难过,这件事破坏了我对堆栈可重现构建承诺的一些信任,作为(据称是安全的)stack upgrade
(甚至随后降级) 突然让我的一个项目好几天都无法构建了。
无论如何,如果
stack
会在对我的系统进行破坏性更改之前警告并询问我,特别是如果它导致重新编译数小时。 (在我的案例中,这实际上意味着几天的挠头,因为我尝试过的任何想法都必须在两者之间等待相当长的时间。)
- 它可以使用与 nix 类似的构建存储,而即使我更改了一些配置,我也可以轻松切换回以前的工作配置。
可能是您遇到了这个错误:Better calculation of SourceMap, but again not enough information to tell for sure. Considering that this issue will get fixed soon, it shouldn't be a problem anymore, but if anyone is looking for a work around custom snapshots 似乎工作得很好。
自定义快照的要点是将所有不可变包从 extra-deps
移动到自定义快照中将防止堆栈重新计算这些包的依赖关系。
我已经尝试 stack clean
,并且还删除了 .stack-work
。
但是,每次我 运行 构建它时,它都会注销 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,什么样的信息可能有助于开始诊断?以上内容对您有帮助吗?在什么情况下会出现这样的注销循环?
我还有一个可以尝试的想法:这个特定项目依赖于一些本地包,据我所知,它们的 .stack-work
文件夹可能在其中发挥了作用。所以也许我也可以(重新)移动它们。
上面的失败还有什么想法吗?
作为部分解决方案,我发现我可以
stack upgrade --binary-version 1.4.0
哪个容易执行降级:
Current Stack version: 1.5.1, available download version: 1.4.0
Forcing binary upgrade
Querying for archive location for platform: linux-x86_64-static
Downloading from: https://github.com/commercialhaskell/stack/releases/download/v1.4.0/stack
-1.4.0-linux-x86_64-static.tar.gz
Download complete, testing executable
Version 1.4.0, Git revision e714f1dd3fade19496d91bd6a017e435a96a6bcd (4640 commits) x86_64
hpack-0.17.0
New stack executable available at /home/user/.local/bin/stack
长话短说:在 stack.yaml
中将 resolver: lts-7.19
更改为 resolver: lts-7.24
似乎为我修复了错误。
我有一些猜测和预感可能在后台出了什么问题,但我不完全确定。
我从 --dry-run
标志中得到一条线索,它报告的一些缺失包是构建时 haskell 包依赖项,例如 alex
、happy
、等...
所以也许旧的 lts
没有正确安装?如果有人对这个问题有更多的了解,我很乐意听到更多。
我也很难过,这件事破坏了我对堆栈可重现构建承诺的一些信任,作为(据称是安全的)stack upgrade
(甚至随后降级) 突然让我的一个项目好几天都无法构建了。
无论如何,如果
stack
会在对我的系统进行破坏性更改之前警告并询问我,特别是如果它导致重新编译数小时。 (在我的案例中,这实际上意味着几天的挠头,因为我尝试过的任何想法都必须在两者之间等待相当长的时间。)- 它可以使用与 nix 类似的构建存储,而即使我更改了一些配置,我也可以轻松切换回以前的工作配置。
可能是您遇到了这个错误:Better calculation of SourceMap, but again not enough information to tell for sure. Considering that this issue will get fixed soon, it shouldn't be a problem anymore, but if anyone is looking for a work around custom snapshots 似乎工作得很好。
自定义快照的要点是将所有不可变包从 extra-deps
移动到自定义快照中将防止堆栈重新计算这些包的依赖关系。