From f15102b1702b64a54233ae31357e32335722f4e5 Mon Sep 17 00:00:00 2001 From: HyukjinKwon Date: Tue, 9 Jul 2019 12:06:46 +0900 Subject: [PATCH] [SPARK-28309][R][INFRA] Fix AppVeyor to run SparkR tests by avoiding to use devtools for testthat ## What changes were proposed in this pull request? Looks `devtools` 2.1.0 is released and then our AppVeyor users the latest one. The problem is, they added `testthat` 2.1.1+ as its dependency - https://github.com/r-lib/devtools/blob/master/DESCRIPTION#L35 Usually it should remove and reinstall it properly when we install other packages; however, seems it's being failed in AppVeyor due to the previous installation for an unknown reason. ``` [00:01:41] > devtools::install_version('testthat', version = '1.0.2', repos='https://cloud.r-project.org/') [00:01:44] Downloading package from url: https://cloud.r-project.org//src/contrib/Archive/testthat/testthat_1.0.2.tar.gz ... [00:02:25] WARNING: moving package to final location failed, copying instead [00:02:25] Warning in file.copy(instdir, dirname(final_instdir), recursive = TRUE, : [00:02:25] problem copying c:\RLibrary\00LOCK-testthat\00new\testthat\libs\i386\testthat.dll to c:\RLibrary\testthat\libs\i386\testthat.dll: Permission denied [00:02:25] ** testing if installed package can be loaded from final location [00:02:25] *** arch - i386 [00:02:26] Error: package or namespace load failed for 'testthat' in FUN(X[[i]], ...): [00:02:26] no such symbol find_label_ in package c:/RLibrary/testthat/libs/i386/testthat.dll [00:02:26] Error: loading failed [00:02:26] Execution halted [00:02:26] *** arch - x64 [00:02:26] ERROR: loading failed for 'i386' [00:02:26] * removing 'c:/RLibrary/testthat' [00:02:26] * restoring previous 'c:/RLibrary/testthat' [00:02:26] Warning in file.copy(lp, dirname(pkgdir), recursive = TRUE, copy.date = TRUE) : [00:02:26] problem copying c:\RLibrary\00LOCK-testthat\testthat\libs\i386\testthat.dll to c:\RLibrary\testthat\libs\i386\testthat.dll: Permission denied [00:02:26] Warning message: [00:02:26] In i.p(...) : [00:02:26] installation of package 'C:/Users/appveyor/AppData/Local/Temp/1/RtmpIx25hi/remotes5743d4a9b1/testthat' had non-zero exit status ``` See https://ci.appveyor.com/project/ApacheSoftwareFoundation/spark/builds/25818746 Our SparkR testbed requires `testthat` 1.0.2 at most for the current status and `devtools` was installed at SPARK-22817 to pin the `testthat` version to 1.0.2 Therefore, this PR works around the current issue by directly installing from the archive instead, and don't use `devtools`. ```R R -e "install.packages('https://cloud.r-project.org/src/contrib/Archive/testthat/testthat_1.0.2.tar.gz', repos=NULL, type='source')" ``` ## How was this patch tested? AppVeyor will test. Closes #25081 from HyukjinKwon/SPARK-28309. Authored-by: HyukjinKwon Signed-off-by: HyukjinKwon --- appveyor.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index bdb948bf89..8fb090cb0c 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -42,9 +42,12 @@ install: # Install maven and dependencies - ps: .\dev\appveyor-install-dependencies.ps1 # Required package for R unit tests - - cmd: R -e "install.packages(c('knitr', 'rmarkdown', 'devtools', 'e1071', 'survival'), repos='https://cloud.r-project.org/')" + - cmd: R -e "install.packages(c('knitr', 'rmarkdown', 'e1071', 'survival'), repos='https://cloud.r-project.org/')" # Here, we use the fixed version of testthat. For more details, please see SPARK-22817. - - cmd: R -e "devtools::install_version('testthat', version = '1.0.2', repos='https://cloud.r-project.org/')" + # As of devtools 2.1.0, it requires testthat higher then 2.1.1 as a dependency. SparkR test requires testthat 1.0.2. + # Therefore, we don't use devtools but installs it directly from the archive including its dependencies. + - cmd: R -e "install.packages(c('crayon', 'praise', 'R6'), repos='https://cloud.r-project.org/')" + - cmd: R -e "install.packages('https://cloud.r-project.org/src/contrib/Archive/testthat/testthat_1.0.2.tar.gz', repos=NULL, type='source')" - cmd: R -e "packageVersion('knitr'); packageVersion('rmarkdown'); packageVersion('testthat'); packageVersion('e1071'); packageVersion('survival')" build_script: