[R-pkg-devel] Testing on old R versions

Duncan Murdoch murdoch@dunc@n @end|ng |rom gm@||@com
Fri Jan 29 12:35:41 CET 2021


Thanks, I'll try Singularity out.  (I tried it, but got some weird game 
playing when I tried to do my first build.  Strange.)

By the way, I've been thinking of downgrading the magrittr dependency to 
Suggests.  The only reason it is currently Imports is so that rgl can 
re-export the pipe operator, and users don't need library(magrittr) to 
use it.

rgl itself never uses anything from magrittr, and will work just as well 
with the R-devel proposed pipe:  but if I'm trying to support ancient R 
versions, I won't be able to use it for a few years.

I've just tried this, and rgl still won't install in 3.2.0.  I guess 
this is because some of the other dependencies import magrittr, and/or 
there are other post 3.2.0 needs.  In any case, I'm not too worried 
about that ancient of a version.

Duncan Murdoch

On 28/01/2021 7:27 p.m., Henrik Bengtsson wrote:
> Hi,
> 
> you're probably already aware of it, but 'rgl' depends on 'magrittr'
> which depends on 'rlang', and the latter requires R (>= 3.3.0).
> 
> 
> BTW, I find Singularity (https://github.com/hpcng/singularity/) more
> convenient to work with than Docker, e.g. you run as host $USER also
> "inside" the container, $PWD and your $HOME folder is automatically
> mounted, the built container is a single executable (just like any
> other software you run).   Here's how you can use Rocker's r-base with
> Singularity on Linux (Ubuntu 18.04):
> 
> # Download and build
> 
> {host}$ cd /tmp
> {host}$ singularity build r-3.3.0.sif docker://r-base:3.3.0
> 
> {host}$ ls -l r-3.3.0.sif
> -rwxr-xr-x 1 hb hb 385630208 Jan 28 16:05 r-3.3.0.sif
> 
> 
> # Run as-is
> 
> {host}$ ./r-3.3.0.sif
> 
> R version 3.3.0 (2016-05-03) -- "Supposedly Educational"
> Copyright (C) 2016 The R Foundation for Statistical Computing
> Platform: x86_64-pc-linux-gnu (64-bit)
> ...
> 
>> quit("no")
> 
> Comment: There's also a 'singularity {run,exec,eval} ...' similar to
> 'docker' which comes with more features but lots can be done without
> it.
> 
> 
> # Persistent package installs to host via custom R_LIBS_USER
> 
> {host}$ cd /tmp
> {host}$ mkdir R-libs-3.3.0
> {host}$ R_LIBS_USER=R-libs-3.3.0 ./r-3.3.0.sif
> 
> R version 3.3.0 (2016-05-03) -- "Supposedly Educational"
> Copyright (C) 2016 The R Foundation for Statistical Computing
> Platform: x86_64-pc-linux-gnu (64-bit)
> ...
> 
>> .libPaths()[1]
> [1] "/tmp/R-libs-test"
>> install.packages("rgl")
> Installing package into ‘/tmp/R-libs-test’
> (as ‘lib’ is unspecified)
> also installing the dependencies ‘ps’, ‘fs’, ‘rappdirs’, ‘processx’,
> ‘Rcpp’, ‘BH’, ‘sass’, ‘jquerylib’, ‘callr’, ‘yaml’, ‘digest’,
> ‘base64enc’, ‘rlang’, ‘evaluate’, ‘highr’, ‘markdown’, ‘xfun’,
> ‘httpuv’, ‘mime’, ‘xtable’, ‘R6’, ‘sourcetools’, ‘later’, ‘promises’,
> ‘crayon’, ‘fastmap’, ‘withr’, ‘commonmark’, ‘glue’, ‘bslib’, ‘cachem’,
> ‘ellipsis’, ‘lifecycle’, ‘lazyeval’, ‘miniUI’, ‘webshot’,
> ‘htmlwidgets’, ‘htmltools’, ‘knitr’, ‘jsonlite’, ‘shiny’, ‘crosstalk’,
> ‘manipulateWidget’
> ...
> 
> ** preparing package for lazy loading
> Error : object ‘hcl.colors’ is not exported by 'namespace:grDevices'
> ERROR: lazy loading failed for package ‘rgl’
> * removing ‘/tmp/R-libs-3.3.0/rgl’
> 
> The downloaded source packages are in
> ‘/tmp/hb/RtmpzBZ0FJ/downloaded_packages’
> Warning message:
> In install.packages("rgl") :
>    installation of package ‘rgl’ had non-zero exit status
> 
>> str(rownames(installed.packages()))
>   chr [1:77] "base64enc" "BH" "bslib" "cachem" "callr" ...
> 
>> quit("no")
> 
> 
> # The packages are indeed installed to the host folder and survives restarts
> 
> {host}$ R_LIBS_USER=R-libs-3.3.0 ./r-3.3.0.sif
> ...
>> str(rownames(installed.packages()))
>   Named chr [1:77] "base64enc" "BH" "bslib" "cachem" "callr" ...
>   - attr(*, "names")= chr [1:77] "" "" "" "" ...
> 
> So, running R via Singularity is almost the same as running R directly
> on the host.
> 
> /Henrik
> 
> 
> On Thu, Jan 28, 2021 at 2:29 PM Dirk Eddelbuettel <edd using debian.org> wrote:
>>
>>
>> On 28 January 2021 at 16:50, Duncan Murdoch wrote:
>> | Thanks Dirk, Neal and Nathan.  I ended up going with Dirk's suggestion.
>> |
>> | So far I haven't got it to work in 3.2.0; I probably won't put much
>> | effort into supporting that old version.  But it's fine in 3.4.0 and
>> | 3.5.0, and I'm trying 3.3.0 now.  Rocker rocks!
>>
>> Thanks, I would have to agree here :)
>>
>> | P.S. rgl now installs in the basic r-base container, without adding
>> | additional libs.  This is due to some config checks that let it run on a
>> | barebones machine:  it can still produce WebGL output for a browser, it
>> | just can't show it on screen.
>>
>> Most excellent, didn't know that part.  Ping we off-list if you're interested
>> in automating this, I also use these containers (or sometimes extensions with
>> additional build-dependencies) to test builds in CI settings. Setting that
>> can be pretty straightforward and self-contained.  It's easiest to instrument
>> when you don't even need other build dependencies.
>>
>> Dirk
>>
>> --
>> https://dirk.eddelbuettel.com | @eddelbuettel | edd using debian.org
>>
>> ______________________________________________
>> R-package-devel using r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-package-devel



More information about the R-package-devel mailing list