Как создать готовый к CRAN пакет R с внешней зависимостью libxml2

Я создал пакет R, который хочу отправить в CRAN. Он содержит код, который необходимо скомпилировать на простом C, и этот код зависит от библиотеки libxml2.

Мое текущее решение состоит в том, чтобы позволить пользователям Linux и Mac установить пакет libxml2-dev, что позволит им скомпилировать и установить исходный пакет R.

Для Windows я создал специальный бинарный R-пакет, содержащий требуемую бинарную зависимость. Читая руководство CRAN, я вижу, что можно загружать только исходные пакеты и что они не могут содержать двоичные файлы.

После этих указаний у меня вопросы:

  1. Можно ли для Mac/Linux, чтобы пользователь установил libxml2-dev до установки пакета R, или существуют альтернативные решения?
  2. Что мне делать для Windows, где libxml2 не так просто установить для конечного пользователя?

person Rikard N    schedule 19.09.2016    source источник
comment
Этот пакет самого плодовитого в мире программиста R также имеет эту зависимость. Почему бы просто не скопировать то, что он сделал? cran.r-project.org/web/packages/xml2/index. html   -  person Hack-R    schedule 19.09.2016
comment
Спасибо за ссылку! Я уже изучил этот пакет, но пропустил tools/winlibs.R, который проверяет, включен ли libxml2 в Rtools, или загружает его отсюда: github.com/rwinlib   -  person Rikard N    schedule 19.09.2016


Ответы (1)


Как упоминалось выше, вы можете просто скопировать то, что делает пакет xml2:

  • Чтобы все заработало в Linux/MacOS, скопируйте файлы configure и /src/Makevars.in. Обратите внимание, что macOS по умолчанию включает копию libxml2, поэтому вы можете безопасно ссылаться на -lxml2, как в Linux.

  • Для Windows нужно скопировать файлы src/Makevars.win и tools/winlibs.R из xml2. Это простой сценарий, который автоматически загружает и статически связывает libxml2 из rwinlib при сборке пакета R в Windows.

Эти сценарии сборки протестированы для работы (почти) на любой платформе.

person Jeroen    schedule 19.09.2016
comment
Спасибо за эти указатели! Используя эти файлы (слегка измененные для моего конкретного пакета), я могу без проблем собрать как Linux, так и Windows (еще не тестировал Mac, но я предполагаю, что он будет работать). На один большой шаг ближе к отправке моего пакета в CRAN. - person Rikard N; 19.09.2016