29

I'd like to exclude the following ressources when building an R package via .Rbuildignore:

^.*\.Rproj$
^\.Rproj\.user$
inst/examples
inst/prof
man-roxygen
tests

But I'm confused as sometimes it seems to work and sometimes it doesn't.

I'm guessing that it has to do whether I'm using devtools::build(), devtools::install() or whatever exactly happens when hitting SHFT + CTRL + B (or Build >> Build and Reload) in RStudio.

The only relevant ressources I could find were this post leading to this issue, but I'm still not fully getting it.

This is what I tried:

  1. Load all followed by Build and Reload via RStudio shortcuts:

    This is what I see when calling list.files(file.path(R.home("library"), "mypackage")):

    [1] "DESCRIPTION" "examples"    "help"        "html"       
    [5] "INDEX"       "Meta"        "NAMESPACE"   "prof"       
    [9] "R"      
    
  2. Load all followed by Build and Reload followed by devtools::install():

    This is what I see when calling list.files(file.path(R.home("library"), "mypackage")):

     [1] "DESCRIPTION" "examples"    "help"        "html"       
     [5] "INDEX"       "Meta"        "NAMESPACE"   "prof"       
     [9] "R"           "tests"      
    
  3. devtools::load_all() followed by devtools::build() followed by devtools::install():

    This is what I see when calling list.files(file.path(R.home("library"), "mypackage")):

     [1] "DESCRIPTION" "examples"    "help"        "html"       
     [5] "INDEX"       "Meta"        "NAMESPACE"   "prof"       
     [9] "R"           "tests"    
    

    Uncompressing the .tar.gz file and inspecting the directory content:

     [1] "DESCRIPTION" "man"          "NAMESPACE"  "R"
    
  4. devtools::load_all() followed by devtools::build(binary=TRUE) followed by devtools::install():

    [1] "DESCRIPTION" "examples"    "help"        "html"       
    [5] "INDEX"       "Meta"        "NAMESPACE"   "prof"       
    [9] "R"           "tests"      
    

    Uncompressing the .zip file and inspecting the directory content:

    [1] "DESCRIPTION" "examples"    "help"        "html"       
    [5] "INDEX"       "MD5"         "Meta"        "NAMESPACE"  
    [9] "prof"        "R"    
    

Looking at this also gives me reason to believe that I'm still not fully understanding the differences between devtools::build(), devtools::install() and install.packages() after the package has been built ;-)

Session Info:

R version 3.1.1 (2014-07-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)

locale:
[1] LC_COLLATE=German_Germany.1252 
[2] LC_CTYPE=German_Germany.1252   
[3] LC_MONETARY=German_Germany.1252
[4] LC_NUMERIC=C                   
[5] LC_TIME=German_Germany.1252    

attached base packages:
[1] compiler  stats     graphics  grDevices utils    
[6] datasets  methods   base     

other attached packages:
[1] mypackage_0.1.0.1

loaded via a namespace (and not attached):
 [1] devtools_1.5    digest_0.6.4    evaluate_0.5.5 
 [4] httr_0.4        memoise_0.2.1   packrat_0.4.0.5
 [7] parallel_3.1.1  RCurl_1.95-4.3  stringr_0.6.2  
[10] tools_3.1.1     whisker_0.3-2  

I'm using RStudio 0.98.978

kaya3
  • 47,440
  • 4
  • 68
  • 97
Rappster
  • 12,762
  • 7
  • 71
  • 120
  • 1
    Have you tried to add to the `.Rbuildignore` file using regular expressions? `devtools::use_build_ignore("your_file")` – JohnCoene Apr 21 '16 at 09:33
  • https://support.rstudio.com/hc/en-us/community/posts/200654836-Build-and-Reload-Package-does-not-respect-Rbuildignore – jan-glx Nov 28 '16 at 22:41

2 Answers2

9

The thing that works for me is to use devtools::build to make a source package, then install.packages.

devtools::build() %>% 
  install.packages(repos = NULL, type = "source")

Using devtools::build(binary = TRUE) does not work, since it calls R CMD INSTALL rather than R CMD build, which ignores .Rbuildignore files. Likewise, RStudio's "Build & Reload" button uses R CMD INSTALL.

Richie Cotton
  • 118,240
  • 47
  • 247
  • 360
1

I was encountering a similar problem when using devtools::check_win_devel() and devtools::release().

For consistent behaviour, I have found that it helps to use regular expressions for all entries in .Rbuildignore. This file would then become:

^.*\.Rproj$
^\.Rproj\.user$
^inst/examples
^inst/prof
^man\-roxygen
^tests

The directories are then ignored.

Martin Smith
  • 3,687
  • 1
  • 24
  • 51