【问题标题】:Nested git dependencies when using Stack (Haskell)使用 Stack (Haskell) 时嵌套的 git 依赖项
【发布时间】:2021-07-07 23:58:38
【问题描述】:

我有两个 Haskell 库 lib-alib-b,都托管在私有 git 存储库上。 lib-b 依赖于lib-a,两者都没有问题。 现在我想将lib-b 导入另一个项目,然后使用git 指令将其添加到堆栈配置中,如下所示:

- git: git@github.com:dataO1/lib-b.git
  commit: deadbeef102958393127912734

Stack 似乎仍然需要 lib-a 的特定版本:

In the dependencies for application-0.1.0.0:
    lib-a needed, but the stack configuration has no specified version (no package with that name found,
            perhaps there is a typo in a package's build-depends or an omission from the stack.yaml packages
            list?)
needed due to application-0.1.0.0 -> lib-b-0.1.0.0

现在的问题是,可以堆栈以某种方式找出嵌套 git 依赖项的特定版本,而无需明确指定它们吗?如果项目增长,我不想在每次更新 lib-a 时手动调整。

旁注:我对所有三个堆栈项目都使用 nixOS 和 nix 指令。

【问题讨论】:

    标签: haskell haskell-stack


    【解决方案1】:

    Stack 遵循基于快照的包管理模型,这意味着它有一些“全局”指定的包(固定版本)集供您使用。在 Stack 的情况下,这组包称为Stackage。核心思想是拥有一组明确指定的包,供您使用。

    所以简短的回答是否定的,它自己无法弄清楚,你必须手动添加它们。

    但是!您只需要指定不在快照中的包。例如包lib-a 可能主要依赖于Haskell 中常用的包(例如baseaeson,...),这些包已经在Stackage 中。因此,即使项目增长,您也只会添加“一些”git refs。

    所以这通常不会成为问题。

    【讨论】:

      猜你喜欢
      • 2018-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-14
      • 1970-01-01
      • 2015-03-05
      • 2017-03-06
      相关资源
      最近更新 更多