i'm suddenly getting this error message after upgrading to 6.0.1 when i'm trying to roxygenize() a package (called via roxygen2::roxygenize() from inside another package)
Error in .requirePackage(package) :
unable to find required package ‘roxygen_devtest’
any ideas what causes this and how it can be fixed?
actually it doesn't matter how i call roxygenize() (R 3.3.2, roxygen2 6.0.1), the error is permanent whenever i try to rebuild the docs for https://github.com/unDocUMeantIt/koRpus/tree/develop
i guess i could pin down the root of the problem, by making a copy of the package with an empty R directory and then adding one R file after the other between rogygenize() runs, to see where it breaks.
it took four files: as soon as the S4 class definition in file 01_class_03_kRp.txt.freq.R is being added, i get the above error; when i remove it all goes fine again.
the setClass() call in that file differs from the previous two in that it includes the option contains=c("kRp.tagged"). this inherited class is being defined two files earlier, and that file is also referenced via @include 01_class_01_kRp.tagged.R.
to further test this, i've removed the contains= option and added the then missing slots -- the error is gone. so, i've either used inheritance wrongly, or roxygen has a bug dealing with it correctly. which one is it?
I've been getting this problem too. I changed to devtools::document() which fixed things.
i can confirm that calling devtools::document() does indeed work without errors.
however, i wouldn't conider it a fix, it's a workaround depending on another package. whatever magic devtools has to apply here to make rogygenize() comply as expected, this should of course be dealt with by roxygen2 in the first place.
I certainly agree. I just have no idea how to isolate or fix the problem nor why some people get it and other don't. So for now...I'm working around in all of my packages
I have experienced the same issue, which is documented here, in case this is helpful.
FWIW, i've patched roxyPackage to be able to apply the workaround.
I've experienced it too. Two options I found:
1) use devtools::document() (as already suggested)
2) use older version of roxygen: devtools::install_version(package = 'roxygen2',version = '5.0.1', repos = c(CRAN = "https://cran.rstudio.com")) (see this issue)
bump?
Is this looked into by any roxygen2 maintainer ? @hadley @klutometis ?
I understand the devtools work around but still believe should be handled fine by roxygen2 directly ?
My RStudio build just broke because of upgrade to newer roxygen2 with this error. I work with people who just push the Build > Document button so a devtools workaround or installing an older version is an quite an annoyance for the team. This just needs to work.
roxygenise(".") works for me so the first step would be to create a minimal reprex using the reprex package.
I fully appreciate that it's working your system Hadley. I wonder if it's something with our DESCRIPTION that might be funky? I don't know what else you'd like to see here or what might be helpful.
> roxygenize(".")
Loading required package: roxygen_devtest
Error in .requirePackage(package) :
unable to find required package ‘roxygen_devtest’
In addition: Warning message:
In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE, :
there is no package called ‘roxygen_devtest’
For some reason devtools::document() works just fine
@pan0ramic well it would be helpful to know what package you were running it on 😉
A traceback() and devtools::session_info() would also be useful
@hadley Thanks for being patient. I'm running this on a company package that isn't OS (related to calling our internal APIs). Here's my traceback(), I hope it helps. Looks like it's something related to Reference Classes? I'm happy to help troubleshoot further if it would be useful.
13: stop(gettextf("unable to find required package %s", sQuote(package)),
domain = NA)
12: .requirePackage(package)
11: makeExtends(name, what, slots = slots, classDef2 = whatClassDef,
package = package)
10: makeClassRepresentation(Class, properties, superClasses, prototype,
package, validity, access, version, sealed, where = where)
9: setClass(Class, contains = superClasses, where = where, ...)
8: setRefClass(Class = "abstract.model.request", fields = list(request = "list",
<<removing the code from the RefClass>>
7: eval(expr, envir, enclos)
6: eval(expr, envir = envir)
5: FUN(X[[i]], ...)
4: lapply(paths, sys_source, envir = env, fileEncoding = desc$Encoding %||%
"UTF-8")
3: load_code(base_path)
2: parse_package(base_path, load_code, registry, options)
1: roxygenize(".")
Session Info:
Session info ---------------------------------------------------------------------------------------------------------
setting value
version R version 3.3.0 (2016-05-03)
system x86_64, darwin13.4.0
ui RStudio (1.0.136)
language (EN)
collate en_US.UTF-8
tz America/Los_Angeles
date 2017-06-14
Packages -------------------------------------------------------------------------------------------------------------
package * version date source
assertthat * 0.2.0 2017-04-11 CRAN (R 3.3.0)
backports 1.1.0 2017-05-22 CRAN (R 3.3.0)
base * 3.3.0 2016-05-03 local
codetools 0.2-15 2016-10-05 CRAN (R 3.3.0)
colorspace 1.3-2 2016-12-14 CRAN (R 3.3.0)
commonmark 1.2 2017-03-01 CRAN (R 3.3.0)
crayon 1.3.2 2016-06-28 CRAN (R 3.3.0)
data.table 1.10.4 2017-02-01 CRAN (R 3.3.0)
datasets * 3.3.0 2016-05-03 local
DBI 0.6-1 2017-04-01 CRAN (R 3.3.0)
desc 1.1.0 2017-01-27 CRAN (R 3.3.2)
devtools * 1.13.2 2017-06-02 CRAN (R 3.3.0)
digest * 0.6.12 2017-01-27 CRAN (R 3.3.0)
dplyr * 0.5.0 2016-06-24 CRAN (R 3.3.0)
foreach * 1.4.3 2015-10-13 CRAN (R 3.3.0)
ggplot2 * 2.2.1 2016-12-30 CRAN (R 3.3.0)
graphics * 3.3.0 2016-05-03 local
grDevices * 3.3.0 2016-05-03 local
grid 3.3.0 2016-05-03 local
gridExtra * 2.2.1 2016-02-29 CRAN (R 3.3.0)
gtable 0.2.0 2016-02-26 CRAN (R 3.3.0)
htmltools 0.3.6 2017-04-28 CRAN (R 3.3.0)
httpuv 1.3.3 2015-08-04 CRAN (R 3.3.0)
httr * 1.2.1 2016-07-03 CRAN (R 3.3.0)
iterators 1.0.8 2015-10-13 CRAN (R 3.3.0)
jsonlite * 1.5 2017-06-01 CRAN (R 3.3.0)
lattice 0.20-35 2017-03-25 CRAN (R 3.3.0)
lazyeval 0.2.0 2016-06-12 CRAN (R 3.3.0)
logging * 0.7-103 2013-04-12 CRAN (R 3.3.0)
lubridate * 1.6.0 2016-09-13 CRAN (R 3.3.0)
magrittr * 1.5 2014-11-22 CRAN (R 3.3.0)
MASS 7.3-47 2017-04-21 CRAN (R 3.3.0)
memoise 1.1.0 2017-04-21 CRAN (R 3.3.0)
methods * 3.3.0 2016-05-03 local
mime 0.5 2016-07-07 CRAN (R 3.3.0)
munsell 0.4.3 2016-02-13 CRAN (R 3.3.0)
plyr * 1.8.4 2016-06-08 CRAN (R 3.3.0)
pryr * 0.1.2 2015-06-20 CRAN (R 3.3.0)
R6 2.2.1 2017-05-10 CRAN (R 3.3.0)
Rcpp 0.12.11 2017-05-22 CRAN (R 3.3.0)
reshape2 * 1.4.2 2016-10-22 CRAN (R 3.3.0)
rjson * 0.2.15 2014-11-03 CRAN (R 3.3.0)
rlang 0.1.1 2017-05-18 CRAN (R 3.3.0)
rlist * 0.4.6.1 2016-04-04 CRAN (R 3.3.0)
roxygen2 * 6.0.1 2017-02-06 CRAN (R 3.3.0)
rprojroot 1.2 2017-01-16 CRAN (R 3.3.0)
scales 0.4.1 2016-11-09 CRAN (R 3.3.0)
shiny * 1.0.3 2017-04-26 CRAN (R 3.3.0)
soiltexture * 1.4.1 2016-06-07 CRAN (R 3.3.0)
sp 1.2-4 2016-12-22 CRAN (R 3.3.0)
stats * 3.3.0 2016-05-03 local
stringi 1.1.5 2017-04-07 CRAN (R 3.3.0)
stringr * 1.2.0 2017-02-18 CRAN (R 3.3.0)
tcltk 3.3.0 2016-05-03 local
testthat 1.0.2 2016-04-23 CRAN (R 3.3.0)
tibble 1.3.3 2017-05-28 CRAN (R 3.3.0)
tidyr * 0.6.3 2017-05-15 CRAN (R 3.3.0)
tools 3.3.0 2016-05-03 local
utils * 3.3.0 2016-05-03 local
withr 1.0.2 2016-06-20 CRAN (R 3.3.0)
xml2 1.1.1 2017-01-24 CRAN (R 3.3.0)
xtable 1.8-2 2016-02-05 CRAN (R 3.3.0)
@pan0ramic hmmm, I bet it is RC related. Could you please see if you can reproduce the problem in a package that just has a single simple RC class?
i originally reported this issue and i don't use RC at all. i also already provided the failing package code (https://github.com/unDocUMeantIt/koRpus/tree/develop) a few months ago and explained how the problem can be triggered in previous comments (inheriting via "contains" in S4 classes).
@hadley I was able to reproduce quite easily in the end.
setRefClass(Class = "foo")And you get the error below.
I appreciate your time; please let me know if I can be of further help here.
13: stop(gettextf("unable to find required package %s", sQuote(package)),
domain = NA)
12: .requirePackage(package)
11: makeExtends(name, what, slots = slots, classDef2 = whatClassDef,
package = package)
10: makeClassRepresentation(Class, properties, superClasses, prototype,
package, validity, access, version, sealed, where = where)
9: setClass(Class, contains = superClasses, where = where, ...)
8: setRefClass(Class = "foo")
7: eval(expr, envir, enclos)
6: eval(expr, envir = envir)
5: FUN(X[[i]], ...)
4: lapply(paths, sys_source, envir = env, fileEncoding = desc$Encoding %||%
"UTF-8")
3: load_code(base_path)
2: parse_package(base_path, load_code, registry, options)
1: roxygen2::roxygenise(".")
@pan0ramic thanks for the helping creating a minimal reprex. @unDocUMeantIt sorry I missed your reprex, but I read a lot of issues in a day, and your reprex was not very obvious.
The root cause is this:
env <- new.env(parent = globalenv())
methods::setPackageName("roxygen_devtest", env)
evalq(envir = env, {
setClass("A")
setClass("B", contains = "A")
})
in source_package(). But this code hasn't change substantially for years. It would be helpful if someone would do a git bisect to figure out exactly when this bug occurred.
8d879e9 seems to be the first bad commit
@krlmlr thanks! I bet it's the switch from source to sys.source
Anyway, I'm going to remove source_package() and replace it with pkgload::load_all(). That gives a much better simulation of package loading and will avoid devtools::document() and roxygenise() having different behaviours.
@rguliev Thanks !! your are machine !! , and 5.0.1 work ..but i use : devtools::install_version(package = 'roxygen2',version = '5.0.1', repos ='http://cran.us.r-project.org')
I got the same issue today.
Seems like installing devtools solved it for me.
Most helpful comment
bump?