Пакет, предлагающий `parallel`, не компилируется в windows

Я разрабатываю пакет, который предлагает пакет parallel R. (Итак, в моем DESCRIPTION есть инструкция Suggests: parallel (>= 1.13.1). Он отлично компилируется под OSX и Linux, но не работает при сборке в Windows (с использованием win-builder). Вот конец журнала install.log, который выводит win-builder:

*** installing help indices
** building package indices
** installing vignettes
** testing if installed package can be loaded
*** arch - i386
Error: package or namespace load failed for 'spectrolab' in 
library.dynam(lib, package, package.lib):
DLL 'parallel' not found: maybe not installed for this architecture?
Error: loading failed
Execution halted
*** arch - x64
ERROR: loading failed for 'i386'
* removing 'd:/RCompile/CRANguest/R-devel/lib/spectrolab'

Полный вывод win-builder можно найти здесь, https://win-builder.r-project.org/4k9QC0st397H/

Есть только одна функция, которая пытается использовать параллельную. Это выглядит примерно так:

#' Smooth spline functions for spectra
#' ... roxygen stuff ...
#' @importFrom stats smooth.spline
#' @importFrom parallel detectCores mclapply
smooth.spectra = function(x, ...){

  p = requireNamespace("parallel", quietly = TRUE) && .Platform$OS.type != "windows"

  if(p){
     r = parallel::mclapply(x, stats::smooth.spline)
  } else {
     r = lapply(x, stats::smooth.spline)
  }
  r
}

Есть идеи, в чем проблема?


person dudu    schedule 13.09.2017    source источник


Ответы (2)


Скорее всего, это сбой в работе конструктора. Я только недавно наблюдал то же самое в тестах CRAN Windows (такая же настройка, как win-builder) без уважительных причин:

https://www.r-project.org/nosvn/R.check/r-devel-windows-ix86+x86_64/doFuture-00install.html

Если разработчик win-builder (Уве Лиггес) не доберется до него сам, вы можете отправить ему электронное письмо.

person HenrikB    schedule 14.09.2017
comment
Гораздо более актуальный ответ, чем мой ретроспективный - person CPak; 14.09.2017
comment
Кроме того, вчера было крупное обновление R-devel, связанное с новым ALTREP, из-за которого внутренний заголовок SEXP изменял размер. Это вынудит всех переустановить все пакеты R, которые используют скомпилированный код - в противном случае они потерпят неудачу так или иначе. Я слышал, что CRAN находится в процессе пересборки всех 11 000+ пакетов (!). Может быть, именно поэтому мы это видим. - person HenrikB; 14.09.2017
comment
Может быть. Кажется, что «параллельный» пакет / пространство имен недоступно на сервере win-builder. Я получил пакет для компиляции, когда удалил все упоминания о 'parallel' в NAMESPACE, а также избавился от записи roxygen # 'importFrom parallel detectCores mclapply` - person dudu; 14.09.2017
comment
Кажется, это было исправлено; попробуйте отправить еще раз. (Вам не следует избегать parallel из-за этого). - person HenrikB; 15.09.2017

Проблема может в том, что этот пакет использует mclapply

r = parallel::mclapply(x, stats::smooth.spline)

mcapply работает только с doMC

Пакет doMC действует как интерфейс между foreach и многоядерными функциями параллельного пакета, первоначально написанного Саймоном Урбанеком и включенного в параллельную версию для R2.14.0. В настоящее время многоядерная функциональность работает только с операционными системами, которые поддерживают системный вызов fork (что означает, что Windows не поддерживается).

mclapply находится под вселенной parallel, но

Пакет doParallel - это слияние doSNOW и doMC, так же как parallel - слияние Snow и Multicore.

person CPak    schedule 13.09.2017
comment
Возможно, я что-то упускаю. mclapply находится под пространством имен parallel, верно? И я также проверяю, доступен ли parallel, так что это не должно быть проблемой - person dudu; 14.09.2017
comment
Это причина большого замешательства и ужаса. См. Мой отредактированный ответ. - person CPak; 14.09.2017
comment
Я вижу, мой вопрос был непонятен. Я разработчик рассматриваемого пакета, и у меня возникают проблемы при попытке отправить его в CRAN, потому что он не компилируется в Windows. Я doParallel попробую и снова отправлю его в win-builder. скоро ... - person dudu; 14.09.2017