Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Building R packages with Packrat and AppVeyor

Can someone point me towards a working example where packrat is used with AppVeyor to build an R package? Searching through Google and GitHub, I can't find any packrat-enable package that uses AppVeyor.

Does the appveyor.yml file need to change? Are there some settings I need to add through the AppVeyor website?

I have a very minimal package (testthat is the only dependency) that broke AppVeyor builds. Here is the code frozen for that commit. Here is the AppVeyor log.

(If this SO question sounds familiar, I'm about to ask a similar question for Travis-CI.)

like image 715
wibeasley Avatar asked May 01 '15 23:05

wibeasley


People also ask

How will you build packages in R?

We can build a source package (i.e., a zipped version of the R package) in Rstudio by selecting Build > Build Source Package . This will create a zipped package outside of the package directory, which would be what we would need to build if we wanted to submit our package to CRAN.

How does packrat work?

We will deliver your secure, all-steel, weatherproof moving & storage container. You pack at your pace or consult our Professional Labor page for help. We pick up your moving container and take it directly to your next location or we can store it in a dry, secure facility until you're ready to have it delivered.

What is the benefit of an R package?

R packages provide a simple way to distribute R code and documentation. Packages on CRAN are basically guaranteed to be installable, as they are regularly built, installed, and tested on multiple systems. And R packages really are quite simple to create.


1 Answers

Yes, the solution here is similar to the same question for Travis-CI.

Here's an example of an appveyor.yml file that will enable you to use packrat packages in your package:

# DO NOT CHANGE the "init" and "install" sections below

# Download script file from GitHub
init:
  ps: |
        $ErrorActionPreference = "Stop"
        Invoke-WebRequest http://raw.github.com/krlmlr/r-appveyor/master/scripts/appveyor-tool.ps1 -OutFile "..\appveyor-tool.ps1"
        Import-Module '..\appveyor-tool.ps1'
install:
  ps: Bootstrap

# Adapt as necessary starting from here

environment:
  global:
   WARNINGS_ARE_ERRORS: 0
   USE_RTOOLS: true

build_script:
  - R -e  "0" --args --bootstrap-packrat

test_script:
  - travis-tool.sh run_tests

on_failure:
  - 7z a failure.zip *.Rcheck\*
  - appveyor PushArtifact failure.zip

artifacts:
  - path: '*.Rcheck\**\*.log'
    name: Logs

  - path: '*.Rcheck\**\*.out'
    name: Logs

  - path: '*.Rcheck\**\*.fail'
    name: Logs

  - path: '*.Rcheck\**\*.Rout'
    name: Logs

  - path: '\*_*.tar.gz'
    name: Bits

  - path: '\*_*.zip'
    name: Bits

The important parts that differ from the template are:

 environment:
      global:
       WARNINGS_ARE_ERRORS: 0
       USE_RTOOLS: true

    build_script:
      - R -e  "0" --args --bootstrap-packrat

This enables Rtools for the build, and loads the packrat packages.

It's also important to note that we are excluding - travis-tool.sh install_deps because that would cause the packages you depend on to be downloaded from CRAN, rather than built from your packrat directory.

Here's an example of an appveyor build for a simple R package where this is working: https://ci.appveyor.com/project/benmarwick/javaonappveyortest/build/1.0.21

like image 153
Ben Avatar answered Sep 29 '22 22:09

Ben