由于明显的循环包依赖性,travis 构建失败
travis build failing because of an apparent circular package dependency
我有一个 R 包 A 和一个包 B。 B 包的某些功能确实依赖于 A。包 A 依赖于 B,但仅用于测试。所以包依赖并不是真正的循环。
A 的 travis 构建失败,因为在安装 A 时它会尝试安装 B才发现A没有安装
如何告诉 travis 在开始测试之前不要担心 B?
我的想法是:
- 将B的所有依赖放在A中,让B独立。
- 去掉 A 对 B 的依赖,构建测试就好像 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
我的实际包裹是
我想你知道这个问题的答案:只要避免循环依赖。
刚刚在 r-devel list in this thread 上就一个非常相关的情况进行了深刻而详细的讨论。你看看那里的讨论;提出了几个选项,最初的发布者有点相信——就像你在这里一样——标准的万有引力定律不适用于它们。
我会避免这个问题并将共性放入一个新包 pkgC
中,pkgA
和 pkgB
可以依赖它,或者甚至只是建议它。另一个简单的解决方案(也在线程中提出)是合并 pkgA
和 pkgB
.
我有一个 R 包 A 和一个包 B。 B 包的某些功能确实依赖于 A。包 A 依赖于 B,但仅用于测试。所以包依赖并不是真正的循环。
A 的 travis 构建失败,因为在安装 A 时它会尝试安装 B才发现A没有安装
如何告诉 travis 在开始测试之前不要担心 B?
我的想法是:
- 将B的所有依赖放在A中,让B独立。
- 去掉 A 对 B 的依赖,构建测试就好像 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
我的实际包裹是
我想你知道这个问题的答案:只要避免循环依赖。
刚刚在 r-devel list in this thread 上就一个非常相关的情况进行了深刻而详细的讨论。你看看那里的讨论;提出了几个选项,最初的发布者有点相信——就像你在这里一样——标准的万有引力定律不适用于它们。
我会避免这个问题并将共性放入一个新包 pkgC
中,pkgA
和 pkgB
可以依赖它,或者甚至只是建议它。另一个简单的解决方案(也在线程中提出)是合并 pkgA
和 pkgB
.