由于明显的循环包依赖性,travis 构建失败

travis build failing because of an apparent circular package dependency

我有一个 R 包 A 和一个包 BB 包的某些功能确实依赖于 A。包 A 依赖于 B,但仅用于测试。所以包依赖并不是真正的循环。

A 的 travis 构建失败,因为在安装 A 时它会尝试安装 B才发现A没有安装

如何告诉 travis 在开始测试之前不要担心 B

我的想法是:

但两者似乎都像放弃单元测试一样激烈。

我模拟了一个最小的可重现示例:

https://github.com/HughParsonage/AAAA

https://github.com/HughParsonage/BBBB

当我将 AAAA 推送到 travis 时,我得到:

ERROR: dependency ‘AAAA’ is not available for package ‘BBBB’

removing ‘/usr/local/lib/R/site-library/BBBB’

Error: Command failed (1)

Execution halted

我的实际包裹是

A: https://github.com/HughParsonage/grattan

B: https://github.com/HughParsonage/taxstats

我想你知道这个问题的答案:只要避免循环依赖。

刚刚在 r-devel list in this thread 上就一个非常相关的情况进行了深刻而详细的讨论。你看看那里的讨论;提出了几个选项,最初的发布者有点相信——就像你在这里一样——标准的万有引力定律不适用于它们。

我会避免这个问题并将共性放入一个新包 pkgC 中,pkgApkgB 可以依赖它,或者甚至只是建议它。另一个简单的解决方案(也在线程中提出)是合并 pkgApkgB.