是否有将依赖项的上限升级到每个依赖项的最新版本的工具?
Is there a tool for upgrading the dependecies' upper bounds to the latest versions of each dependency?
我正在尝试升级 pipes-files
package, so that it can be 的依赖项。 pipes-files
包不包含 stack.yaml
文件,pipes-files.cabal
文件包含相当多的依赖项的上限和下限,例如:
base >=4.7 && <4.10
, transformers >=0.3 && <0.6
, transformers-base >=0.3 && <0.6
-- and quite some more ...
有没有一种工具可以让我运行 获取每个依赖项的最新版本?我能找到的最接近的东西是 packdeps
但它需要我一个一个地搜索依赖项。
初步说明:
- hierarchy,pipes-files 的依赖项,与您尝试解决的问题相同——它是不在 Stackage 中,并且版本界限相对于最新的 LTS 已经过时。这意味着您首先必须成功构建它,然后 add your tweaked version of it to the extra-deps in the
stack.yaml
of pipes-files.
cabal gen-bounds
,"suggest[s] dependency version bounds that conform to Package Versioning Policy",原则上是适合这项工作的工具。然而,让 cabal-install 根据 Stack-centric 环境的限制进行操作并不总是那么简单。虽然在没有 Stack-independent GHC 安装的情况下,这似乎足以从 bash shell 运行 cabal gen-bounds
...
PATH=$PATH:$(stack path --compiler-bin) cabal gen-bounds
...我不知道如何让它遵循 Stack(age) 快照的版本限制——特别是 --package-db
选项 which can be helpful with commands such as cabal configure
,不' 似乎被 gen-bounds
接受了。
因为我不知道如何让cabal gen-bounds
和Stack合作,我会建议一个更复杂的方法,但不需要直接使用cabal-install。它使用 Jenga,一种可以检索您选择的 Stackage 快照留下的隐式版本信息的工具。 Jenga 不在 Stackage 上;要使用 Stack 安装它,请从 GitHub(或 stack unpack jenga
)获取源,然后 运行 stack init --solver
然后是 stack install
.
从 hierarchy.cabal
文件(或任何相关的 .cabal 文件)中删除所有版本限制。
stack init --solver
,创建一个 stack.yaml
文件,其中包含任何可能需要的 extra-deps。 (您可以使用 --resolver
明确选择要使用的快照。)
stack build
,作为包是否可构建的完整性检查。
在生成的stack.yaml
中,查看extra-deps
字段是否被注释掉;如果是这样,请取消注释。这是执行步骤 #6 所必需的。
jenga -i hierarchy.cabal
,它将打印 Stack 用于构建包的确切依赖版本。
将 Jenga 给您的版本粘贴到 .cabal 文件的 build-depends
中,然后根据需要进行调整(至少,您可能希望放宽次要版本范围PVP 合规性——例如将 base == 4.9.1.0
更改为 base == 4.9.*
).
我正在尝试升级 pipes-files
package, so that it can be pipes-files
包不包含 stack.yaml
文件,pipes-files.cabal
文件包含相当多的依赖项的上限和下限,例如:
base >=4.7 && <4.10
, transformers >=0.3 && <0.6
, transformers-base >=0.3 && <0.6
-- and quite some more ...
有没有一种工具可以让我运行 获取每个依赖项的最新版本?我能找到的最接近的东西是 packdeps
但它需要我一个一个地搜索依赖项。
初步说明:
- hierarchy,pipes-files 的依赖项,与您尝试解决的问题相同——它是不在 Stackage 中,并且版本界限相对于最新的 LTS 已经过时。这意味着您首先必须成功构建它,然后 add your tweaked version of it to the extra-deps in the
stack.yaml
of pipes-files. cabal gen-bounds
,"suggest[s] dependency version bounds that conform to Package Versioning Policy",原则上是适合这项工作的工具。然而,让 cabal-install 根据 Stack-centric 环境的限制进行操作并不总是那么简单。虽然在没有 Stack-independent GHC 安装的情况下,这似乎足以从 bash shell 运行cabal gen-bounds
...PATH=$PATH:$(stack path --compiler-bin) cabal gen-bounds
...我不知道如何让它遵循 Stack(age) 快照的版本限制——特别是
--package-db
选项 which can be helpful with commands such ascabal configure
,不' 似乎被gen-bounds
接受了。
因为我不知道如何让cabal gen-bounds
和Stack合作,我会建议一个更复杂的方法,但不需要直接使用cabal-install。它使用 Jenga,一种可以检索您选择的 Stackage 快照留下的隐式版本信息的工具。 Jenga 不在 Stackage 上;要使用 Stack 安装它,请从 GitHub(或 stack unpack jenga
)获取源,然后 运行 stack init --solver
然后是 stack install
.
从
hierarchy.cabal
文件(或任何相关的 .cabal 文件)中删除所有版本限制。stack init --solver
,创建一个stack.yaml
文件,其中包含任何可能需要的 extra-deps。 (您可以使用--resolver
明确选择要使用的快照。)stack build
,作为包是否可构建的完整性检查。在生成的
stack.yaml
中,查看extra-deps
字段是否被注释掉;如果是这样,请取消注释。这是执行步骤 #6 所必需的。jenga -i hierarchy.cabal
,它将打印 Stack 用于构建包的确切依赖版本。将 Jenga 给您的版本粘贴到 .cabal 文件的
build-depends
中,然后根据需要进行调整(至少,您可能希望放宽次要版本范围PVP 合规性——例如将base == 4.9.1.0
更改为base == 4.9.*
).