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

时间:2016-04-10 13:22:54

标签: r travis-ci devtools

我有一个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推到特拉维斯时,我得到:

  

错误:依赖'AAAA'不适用于包'BBBB'

     

删除'/ usr / local / lib / R / site-library / BBBB'

     

错误:命令失败(1)

     

执行暂停

我的实际套餐是

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

https://github.com/HughParsonage/taxstats

1 个答案:

答案 0 :(得分:1)

我怀疑你知道答案:避免循环依赖。

关于r-devel list in this thread的非常相关的情况,我们进行了深刻细致的讨论。你看看那里的讨论;提出了几个选项,原始的海报有点说服 - 就像你在这里 - 标准的万有引力定律不适用于它们。

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