我有一个奇怪的拼凑Travis CI构建失败的一个包运行没有错误我的macOS High Sierra与XCode 9.3和当前的R版本。问题似乎来自于无法在我的包中处理基于RcppArmadillo的函数。
失败的构建是here,但总而言之,软件包在OS X和R 3.3上传递,在Ubuntu和R 3.3上失败,在OS X和R 3.4上传递,在Ubuntu和R 3.4上失败,错误在OS X和R 3.5上,传递Ubuntu和R 3.5。
在Ubuntu上发生了两次构建失败,因为我的程序包中基于RcppArmadillo的函数的代码示例失败并出现Aborted (core dumped)
错误,我发现这些错误非常简单,特别是因为程序包似乎加载没有任何问题到包安装日志。我也不明白为什么它在Ubuntu上使用R的开发版本可以正常工作。
OS X和R 3.5上的错误发生是因为它无法构建RcppArmadillo(即使它可以在R的旧版本和当前版本上执行此操作)。我无法弄清楚为什么包可以同时工作操作系统,但对于不同版本的R.这是我的代码问题还是Travis的问题?
我的Travis yml file如下:
language: r
r:
- oldrel
- release
- devel
cache: packages
sudo: false
os:
- osx
- linux
osx_image: xcode9
dist: trusty
install:
- R -e 'install.packages(c("dplyr", "purrr", "purrrlyr", "Rcpp", "RcppArmadillo", "knitr", "ggplot2", "rmarkdown", "testthat", "covr"))'
compiler: gcc
r_packages:
- covr
after_success:
- Rscript -e 'library(covr);codecov()'
install.packages()命令在那里,因为已知devtools在R的开发版本中表现不可预测。
人员更新将来搜索此问题:
通过仔细的实验,我弄清楚是什么打破了Linux上R 3.3和3.4的构建。这是for循环中一个简单的索引超出范围错误。为什么这个功能仍能在Mac和Linux + R-devel上完全按预期工作,尽管这个错误仍然是一个开放的谜。