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 <e...@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 | e...@debian.org

______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel

______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel

Reply via email to