Depends: R
должен иметь зависимость от версии R:
Depends: R (>= 3.0.0)
(или что угодно)
Это указано в Запись расширений R:
Нет смысла объявлять зависимость от R без спецификации версии или от пакета base
: это пакет R и пакет base
всегда доступен.
Итак, я мог бы просто удалить эту строку (если у моего пакета нет других зависимостей).
При этом сборка завершается сразу.
Покаэто ясно в ретроспективе, возможно, путь к выяснению того, что пошло не так, также может быть иллюстративным (так как это конкретное сообщение об ошибке не дало мне никаких результатов поиска):
Ошибка в if (dep$ op! = "> =") далее: аргумент имеет нулевую длину
Конечно, выглядит знакомым как код R - ясно, что dep$op
(что бы это ни было) отсутствует / не объявлено по какой-то причине,Неясно, какой код выполняется / какая функция вызывает эту ошибку.
Но какой бы код он ни находился внутри источника R , так что мы можем:
- Испытать удачу с поиском сообщения в GitHub в репозитории(может быть сложно сопоставить из-за различных разделителей / других символов, обычно пропускаемых из веб-поиска)
- Клонировать репозиторий и использовать
grep
(и т. д.) в исходном коде (более гибкий, но требует загрузкиполный R источник, если у вас его еще нет)
Сегодня мне посчастливилось получить удар по GitHub для "if (dep$op != ">=") next"
в двух файлах;src/library/tools/R/build.R
выглядит так, как будто это на носу.
Вот область, где находится этот фрагмент:
ixup_R_dep <- function(pkgname, ver = "2.10")
{
desc <- .read_description(file.path(pkgname, "DESCRIPTION"))
Rdeps <- .split_description(desc)$Rdepends2
for(dep in Rdeps) {
if(dep$op != '>=') next
if(dep$version >= package_version(ver)) return()
}
Это в пакете tools
, поэтому вспомогательные функции доступны какнапример, tools:::.read_description
.
При этом было легко увидеть, что Rdeps
захватывает секцию Depends: R
DESCRIPTION
и что он также ожидает найти тег версии;dep$op
- это эратор op
, применяемый к признаку dep
.