2016-04-10 28 views
0

我有一个R包A和一个包B。包装B真正取决于A的一些功能。包装A取决于B,但仅用于测试。所以包依赖不是真正的循环。为一个,因为在安装一个它试图安装才发现一个没有安装特拉维斯建立失败,因为一个明显的圆形包依赖

特拉维斯构建失败。

如何告诉travis不要担心B直到它开始测试?

我的想法是:

  • 把所有的的依赖关系一个,留下独立。
  • 离开关闭的依赖上,构建所述测试仿佛并不存在。

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

我嘲笑了一个最小的可重复的例子:

https://github.com/HughParsonage/AAAA

https://github.com/HughParsonage/BBBB

当我推AAAA特拉维斯,我得到:

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

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

Error: Command failed (1)

Execution halted

我的实际包

一个https://github.com/HughParsonage/grattan

https://github.com/HughParsonage/taxstats

回答

0

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

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

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

+0

德克,你必须在现实世界中如此无情地生活吗? – Hugh

相关问题