SPM-程序包包含修订的依赖项

时间:2018-07-12 21:09:52

标签: swift mongodb swift-package-manager

我正在尝试使用swift软件包驱动程序安装MongoDB swift驱动程序。我遵循their instructions,并使用自制软件安装了mongo-c-driver。然后,我使用以下命令创建了一个新目录并在一个新项目中:

swift package init --type executable

然后我将依赖项添加到Package.swift文件中。

尝试运行目录中召唤swift package resole的任何命令时,出现以下错误:

  

错误:软件包PackageReference(identity:“ mongo-swift-driver”,名称:nil,路径:“ https://github.com/mongodb/mongo-swift-driver.git”,isLocal:false)@ 0.0.2包含修订的依赖项:

     

PackageReference(身份:“ swift-bson”,名称:nil,路径:“ https://github.com/mongodb/swift-bson”,isLocal:false)@ master

     

PackageReference(身份:“ swift-mongoc”,名称:无,路径:“ https://github.com/mongodb/swift-mongoc”,isLocal:false)@ master

我确保所有内容都是最新的,并且Package.swift的第一行是// swift-tools-version:4.0

我想知道这些修订的依赖项是什么,因为我没有发现任何有用的东西。以及如何解决该错误。

1 个答案:

答案 0 :(得分:2)

Swift Evolution提案引入了在SPM软件包中引入指定分支而不是修订的功能(SE-0150这样说:

  

尽管此功能[指定分支]在开发过程中很有用,但在将该程序包标记为发布之前,应更新程序包的依赖项以指向版本而不是分支。这是因为已发布的软件包应提供有关其依赖关系的稳定规范,并且当分支随时间变化时不会中断。 要强制执行此操作,如果基于版本的依赖项引用的程序包在其任何依赖项中都指定了一个分支,则会出现错误。

您正在使用的父软件包的0.0.2版本似乎没有遵循规则以依赖于其依赖关系切换到特定版本,并且SPM不允许这样做。

如果可能,应尝试使用较新版本的父程序包来解决此问题。如果不存在较新的版本,则可能必须重写依赖关系并自己进行修复(我相信您可以使用swift package edit来做到这一点-或派生依赖关系并指向您自己的存储库。)