The ‘pkgcheck’ computational environment
Results of running pkgcheck package on your local computer may differ
from results generated by rOpenSci’s automated checking system. The
pkgcheck-action GitHub
action
provides a standard computational system for running pkgcheck, and can
be used to trigger checks on every push to GitHub. Some packages may
nevertheless depend on other system libraries, or packages from other
programming languages, that are not included in the standard environment
used by the
pkgcheck-action.
This vignette describes the computational environment for pkgcheck,
including advice on how it may be modified to ensure your package passes
rOpenSci’s automated checks.
The pkgcheck Docker container
Both
pkgcheck-action
and rOpenSci’s own checking system use the Docker
container provided in the pkgcheck
Dockerfile.
This Docker environment builds on the GitHub “runner”
images,
with the first couple of hundred lines installing all system libraries
needed to replicate that environment.
That Docker environment also includes installations of:
The Julia language, along with the JULL installer to enable easy package installation.
A selection of pre-installed R packages, notably including several very large yet commonly installed packages.
The
reticulatepackage, with an associated virtual python environment, and any python packages needed in rOpenSci’s suite of packages.quartoto enable packages to use quarto vignettes, or documents in any other format provided by quarto.
How to get your package to pass rOpenSci’s ‘pkgcheck’ system
If you are preparing a package for submission, and it is failing
pkgcheck-action
because of missing software, whether system dependencies not otherwise
covered in sysreqsdb,
missing packages from either Julia or python, or some other system
requirement, you can first modify your local pkgcheck-action workflow
file to
install these requirements as additional “steps”. Once you’ve got the
pkgcheck-action passing on your local repository, you may also submit
a pull request to update our own
Dockerfile
with whatever additional system dependencies your package may require.