Rstudio: Build Source Package not picking up user libPath

Background

I'm developing a local package bitstomach which depends on another local package 'spekex'. Both are installed locally at ~/R/x86_64-pc-linux-gnu-library/dev/. The path that directory is added to .libPath in my ~/.Rprofile

  • Ubuntu 18.04
  • R version 3.6.1
  • RStudio 1.2.1335

Problem

When I use the IDE's Build Source Package, I receive an error that the other local package, spekex, is not available.

Updating bitstomach documentation
Loading bitstomach
Error: Dependency package(s) 'spekex' not available.
Backtrace:
     █
  1. ├─base::suppressPackageStartupMessages(...)
  2. │ └─base::withCallingHandlers(expr, packageStartupMessage = function(c) invokeRestart("muffleMessage"))
  3. └─devtools::document(roclets = c("rd", "collate", "namespace"))
  4.   ├─withr::with_envvar(...)
  5.   │ └─base::force(code)
  6.   └─roxygen2::roxygenise(pkg$path, roclets)
  7.     └─roxygen2:::load_code(base_path)
  8.       └─pkgload::load_all(path, compile = FALSE, helpers = FALSE, attach_testthat = FALSE)
  9.         └─pkgload:::load_imports(path)
 10.           └─pkgload:::abort_for_missing_packages(res, imports$package)

Investigation

It appears that the issue arises from using roxygen. Turning off the "Generate documentation with Roxygen" avoids the error.

It appears that .Rprofile is not being read so libPaths isn't being updated. I checked this by creating a symlink /usr/lib/R/library/spekex to ~/R/x86_64-pc-linux-gnu-library/dev/spekex. Doing so avoids the error.

Running the command devtools::document(roclets = c('rd', 'collate', 'namespace')) from the IDE works. Presumably because in that context the libPaths has been updated.

My issue sounds similar to this topic

Question

Does this seem like it is a case of Roxygen not reading my .Rprofile, or there something else that might be going on?

What can I try to ensure that .Rprofile is used by Roxygen when using the IDE's Build Source Package functionality?

We run devtools::document() and friends within a child R process spawned with --vanilla, so library paths customized in a .Rprofile are not seen.

However, the active library paths for the session (as reported by .libPaths()) should still be delegated to the child R process through the R_LIBS environment variable, so I'm not sure why this isn't happening in your case.

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.