我最近遇到了一个Cabal问题,我只是通过在我的cabal沙箱中手动安装transformers-compat
和-f transformers3
标志来解决,然后为我的项目运行cabal install
。
有没有办法在我的应用程序的.cabal
文件中指出我依赖于库,以便它使用特定的构建标志构建?
看起来不可能通过build-depends
文件中的.cabal
字段指定这样的依赖项。 buildDepends
is defined as [Dependency]
,data Dependency = Dependency PackageName VersionRange
。但是你可以使用cabal install --constraint="transformers-compat +transformers3"
。
看看transformers-compat.cabal
文件,我认为如果你适当地约束你对transformers
的依赖,求解器应该能够找出正确的标志赋值。例如。 build-depends: transformers >= 0.3 && < 0.4
应该迫使解算者选择transformers-compat +transformers3
。如果这不起作用,则可能是解算器中的错误。
我也很努力地找到解决这个问题的方法。我刚发现一个!您必须在~/.cabal/config
修改全局cabal配置文件。将这样的constraints行添加到文件的初始部分:
约束:hmatrix +揭示
这使得openblas
包的hmatrix
标志。它将在下次安装软件包时自动使用。如果有办法在沙盒中本地设置这样的标志,我找不到它。
较新版本的Cabal允许您在constraints或cabal.project.local
文件中指定cabal.project
。例如:
constraints: hmatrix +openblas
有没有办法在我的应用程序的.cabal文件中指出我依赖于库,以便它使用特定的构建标志构建?
不,但在你的情况下,这实际上并不是解算器中的一个问题,而是相当无意义的错误(由某人不太明智地使用标志引起)。
有几种方法可以限制安装版本。
cabal install --constraint="bar-2.1"
覆盖.cabal文件中的设置要删除特定版本的包:
cabal sandbox hc-pkg unregister bar-2.1
取消注册版本ghc-pkg unregister bar-2.1
之外的此命令完成全局取消注册