GithubHelp home page GithubHelp logo

Comments (8)

gaborcsardi avatar gaborcsardi commented on June 1, 2024

I believe callr sets the library path to the same as in the calling R process. Can you try to reproduce with callr?

from callr.

krlmlr avatar krlmlr commented on June 1, 2024

callr seems to set the R_LIBS_* variables to a nonexistent dummy file, like in this example. Still working on replicating it locally.

from callr.

gaborcsardi avatar gaborcsardi commented on June 1, 2024

Yes, but it also sets the library path from the R profile.... maybe the profile is sometimes ignored?

from callr.

krlmlr avatar krlmlr commented on June 1, 2024

I've got a reprex that involves callr, it fails with R 3.3.2 but succeeds with R 3.4.

To reproduce, pick any package that uses knitr as a vignette builder, adapt the path in the first line, and run the script. The knitr package must not be installed in the local library, this is checked by the reprex.

# Adapt this path
pkg_to_build <- "~/git/R/styler"

stopifnot(!("knitr" %in% rownames(installed.packages())))

lib <- tempfile()
dir.create(lib)
install.packages("knitr", lib)

stopifnot(!("knitr" %in% rownames(installed.packages())))

Sys.setenv(R_LIBS_USER = paste(c(lib, .libPaths()), collapse = ":"))

system(paste0(
  R.home("bin/R"), " ",
  "-q -e ",
  "'callr::rcmd(\"build\", \"", pkg_to_build, "\")'"
))

Output with R 3.3.2, consistent with what we see on tic-enabled repos on Travis CI:

...
> callr::rcmd("build", "~/git/R/styler")
$status
[1] 1

$stdout
[1] "* checking for file ‘~/git/R/styler/DESCRIPTION’ ... OK\n* preparing ‘styler’:\n* checking DESCRIPTION meta-information ... OK\n* installing the package to build vignettes\n* creating vignettes ... ERROR\nError in loadVignetteBuilder(vigns$pkgdir) : \n  vignette builder 'knitr' not found\nCalls: <Anonymous> -> loadVignetteBuilder\nExecution halted\n"

$stderr
[1] ""

$timeout
[1] FALSE

$command
...

I'm very sorry...


(The original submission had missing parens after installed.packages(), I just double-checked, it still fails.)

from callr.

gaborcsardi avatar gaborcsardi commented on June 1, 2024

I'm very sorry...

No, thanks for creating the reprex!

I guess for building a vignette, R starts another R process, and that does not inherit the library path properly. We can just set R_LIBS_USER as well, and also create a fake .Renviron file.

It is relatively easy to call an R process with the same config, but to make sure that the other R processes started from that (not via callr) have the same config, now that is quite challanging....

from callr.

krlmlr avatar krlmlr commented on June 1, 2024

Thanks for looking into it. Sorry for throwing these meta³ problems on you, unless of course you enjoy solving them ;-)

from callr.

gaborcsardi avatar gaborcsardi commented on June 1, 2024

Can you pls try with the latest master?

from callr.

krlmlr avatar krlmlr commented on June 1, 2024

Test-driving now, will comment if anything suspicious pops up.

from callr.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.