解决rgdal软件包在Travis构建上失败

时间:2019-03-12 16:56:05

标签: r travis-ci spatial gdal

我已经成功使用Travis版本中的rgdal R包大约一年了,几乎没有问题。

随着rgdal 1.4-2版的最新部署,以前通过的构建因消息而开始失败

In file included from inverser.c:5:0:   
/tmp/Rtmpysf7it/R.INSTALL748c54b7a89/rgdal/inst/include/projects.h:150:33: 
error: conflicting types for ‘projUV’  typedef struct { double u, v; } projUV;
                                 ^ 
In file included from inverser.c:3:0: /usr/include/proj_api.h:54:37:
 note: previous declaration of ‘projUV’ was here
     typedef struct { double u, v; } projUV;

我不确定“旧” proj_api.h的来源以及如何在Travis环境中删除它。

我的travis.yml配置如下:

language: r
dist: trusty
sudo: false

cache:
  packages: yes

r_packages:
  - testthat
  - roxygen2
  - covr

addons:
  apt:
    packages:
      - gdal-bin
      - proj-bin
      - libgdal-dev
      - libgdal1-dev
      - libproj-dev
      - libgeos-dev
      - r-cran-ncdf4
      - libv8-3.14-dev
      - libprotobuf-dev
      - protobuf-compiler
      - libudunits2-dev
      - libnetcdf-dev
      - libjq-dev

before_install:
    - sudo add-apt-repository -y ppa:ubuntugis/ubuntugis-unstable
    - sudo add-apt-repository -y ppa:opencpu/jq
    - sudo apt-get --yes --force-yes update -qq

after_success:
  - Rscript -e 'covr::coveralls()'

非常感谢您提供有关如何解决此问题的建议

2 个答案:

答案 0 :(得分:2)

答案2是正确答案。我是rgdal的维护者,并已通过邮件和Twitter权威地回答了这个问题。当足够多的PROJ版本过时的用户(4.9.3之前的版本,于2016年9月之前)确认1.4-3解决了他们的问题时,我将向CRAN提交1.4-3。我不会,也永远不会遵循SO,但是如果您做对了事并发布到R-sig-geo,您会引起我的注意。

我建议对仍使用PROJ 4.8.0进行升级的任何系统施加巨大压力。该版本于2012年3月13日发布,今天已经是7岁生日,真的值得回收。

答案 1 :(得分:2)

正如Edzer和Roger所建议的,只是为了阐明如何告诉Travis从R-Forge安装。我相信您可以在.travis.yml的任何位置添加以下内容:

repos: 
  CRAN: https://cran.rstudio.com
  rforge: http://R-Forge.R-project.org

有关详细信息,请参见Travis R configuration docs

或者,您可以在before_install块中逐字地运行R命令,如下所示:

before_install:
  - R -e 'install.packages("rgdal", repos=c("http://R-Forge.R-project.org", "http://cran.rstudio.com"))'

如果不那么整洁,它可能会更明显。