Устранить сбой пакета rgdal в сборке Travis

Я успешно использовал пакет rgdal R в своей сборке Travis около года с небольшими проблемами.

С недавним развертыванием версии 1.4-2 rgdal ранее проходившие сборки начали давать сбой с сообщением

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()'

Любые советы о том, как решить эту проблему, очень ценятся


person Jindra Lacko    schedule 12.03.2019    source источник


Ответы (3)


Просто чтобы уточнить, как вы можете сказать Трэвису установить из R-Forge, как предложили Эдзер и Роджер. Я считаю, что вы можете добавить следующее в любом месте вашего .travis.yml:

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

Подробнее см. в документах по настройке Travis R.

В качестве альтернативы вы можете буквально запустить команду R в блоке before_install, например так:

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

что, возможно, немного более очевидно, если менее аккуратно.

person cboettig    schedule 13.03.2019
comment
Спасибо, это решение гораздо предпочтительнее понижения версии rgdal через Remotes:, так как это происходит полностью на уровне Travis и не требует настройки файла DESCRIPTION. - person Jindra Lacko; 14.03.2019

Ответ 2 правильный ответ. Я являюсь сопровождающим rgdal и авторитетно ответил на этот вопрос по почте и в твиттере. Когда достаточное количество пользователей устаревших версий PROJ (до 4.9.3, то есть до сентября 2016 г.) подтвердят, что 1.4-3 решает их проблемы, я отправлю 1.4-3 в CRAN. Я не следую и никогда не буду следить за SO, но если бы вы поступили правильно и разместили сообщение на R-sig-geo, вы бы привлекли мое внимание.

Я советую оказать существенное давление на любые системы, все еще использующие PROJ 4.8.0, для обновления. Эта версия была опубликована 13 марта 2012 года, поэтому сегодня ей исполняется 7 лет, и она действительно заслуживает переработки.

person Roger Bivand    schedule 13.03.2019

Одним из способов решения этой проблемы было бы использование более старой версии rgdal. Чтобы установить определенную версию пакета rgdal, вы можете добавить следующую строку в файл DESCRIPTION:

Remotes: cran/[email protected]

Это установит и будет использовать предыдущую версию (1.3-9), выпущенную до 1.4-2. Это сработало для меня по крайней мере.

Идея взята отсюда: https://travis-ci.community/t/travis-build-ignoring-r-package-version-in-description/2431/2

person arnfinn    schedule 12.03.2019
comment
Другой вариант — установить версию для разработчиков из r-forge, где проблема была решена, install.packages("rgdal", repos="http://R-Forge.R-project.org") - person Edzer Pebesma; 13.03.2019
comment
И автору ответа: это сообщение не означает, что rgdal требует PROJ 6, а только то, что он будет работать с ним. Для этого требуется PROJ ›= 4.8.0, как указано на целевой странице CRAN. - person Edzer Pebesma; 13.03.2019
comment
Как вы указываете установить версию dev от r-forge в .travis.yml? - person jtr13; 14.03.2019
comment
@jtr13 Думаю, вы хотите добавить это в .travis.yml: репозитории: CRAN: cran.rstudio.com rforge: R-Forge.R-project.org Или просто добавьте команду Edzer в раздел before_install() , хотя вам может потребоваться также включить репозиторий CRAN, чтобы rgdal мог установить зависимость sp. (Фу, я не могу делать новые строки в комментариях, вместо этого публикуя это как ответ ниже) - person cboettig; 14.03.2019
comment
@EdzerPebesma: понятно. По какой-то причине я интерпретировал предложение из 1.4.1 «rgdal будет создаваться и функционировать, когда «PROJ» = 6» как означающее, что proj должно быть больше 6,0. Будет редактировать. - person arnfinn; 14.03.2019