Устранить сбой пакета 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)


arrow_upward
3
arrow_downward

Просто чтобы уточнить, как вы можете сказать Трэвису установить из 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

arrow_upward
2
arrow_downward

Ответ 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

arrow_upward
1
arrow_downward

Одним из способов решения этой проблемы было бы использование более старой версии 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