Building converts a package source directory into a single bundled file.
If binary = FALSE
this creates a tar.gz
package that can
be installed on any platform, provided they have a full development
environment (although packages without source code can typically be
installed out of the box). If binary = TRUE
, the package will have
a platform specific extension (e.g. .zip
for windows), and will
only be installable on the current platform, but no development
environment is needed.
Usage
build(
path = ".",
dest_path = NULL,
binary = FALSE,
vignettes = TRUE,
manual = FALSE,
clean_doc = NULL,
args = NULL,
quiet = FALSE,
needs_compilation = pkg_has_src(path),
compile_attributes = FALSE,
register_routines = FALSE
)
Arguments
- path
Path to a package, or within a package.
- dest_path
path in which to produce package. If it is an existing directory, then the output file is placed in
dest_path
and named according to the current R conversions (e.g..zip
for Windows binary packages,.tgz
for macOS binary packages, etc). If it is an existing file, then it will be overwritten. Ifdest_path
does not exist, then it is used as a file name. IfNULL
, it defaults to the parent directory of the package.- binary
Produce a binary (
--binary
) or source (--no-manual --no-resave-data
) version of the package.- vignettes, manual
For source packages: if
FALSE
, don't build PDF vignettes (--no-build-vignettes
) or manual (--no-manual
).- clean_doc
If
TRUE
, clean the files ininst/doc
before building the package. IfNULL
and theConfig/build/clean-inst-doc
entry is present inDESCRIPTION
, then that is used. Otherwise, ifNULL
, and interactive, ask to remove the files prior to cleaning. In most cases cleaning the files is the correct behavior to avoid stale vignette outputs in the built package.- args
An optional character vector of additional command line arguments to be passed to
R CMD build
ifbinary = FALSE
, orR CMD install
ifbinary = TRUE
.- quiet
if
TRUE
suppresses output from this function.- needs_compilation
Usually only needed if the packages has C/C++/Fortran code. By default this is autodetected.
- compile_attributes
if
TRUE
and the package uses Rcpp, callRcpp::compileAttributes()
before building the package. It is ignored if package does not need compilation.- register_routines
if
TRUE
and the package does not use Rcpp, call register routines withtools::package_native_routine_registration_skeleton()
before building the package. It is ignored if package does not need compilation.
Details
Configuration
DESCRIPTION
entries
Config/build/clean-inst-doc
can be set toFALSE
to avoid cleaning upinst/doc
when building a source package. Set it toTRUE
to force a cleanup. See theclean_doc
argument.Config/build/copy-method
can be used to avoid copying large directories inR CMD build
. It works by copying (or linking) the files of the package to a temporary directory, leaving out the (possibly large) files that are not part of the package. Possible values:none
: pkgbuild does not copy the package tree. This is the default.copy
: the package files are copied to a temporary directory beforeR CMD build
.link
: the package files are symbolic linked to a temporary directory beforeR CMD build
. Windows does not have symbolic links, so on Windows this is equivalent tocopy
.
You can also use the
pkg.build_copy_method
option or thePKG_BUILD_COPY_METHOD
environment variable to set the copy method. The option is consulted first, then theDESCRIPTION
entry, then the environment variable.Config/build/extra-sources
can be used to define extra source files for pkgbuild to decide whether a package DLL needs to be recompiled inneeds_compile()
. The syntax is a comma separated list of file names, or globs. (Seeutils::glob2rx()
.) E.g.src/rust/src/*.rs
orconfigure*
.Config/build/bootstrap
can be set toTRUE
to runRscript bootstrap.R
in the source directory prior to running subsequent build steps.
Options
pkg.build_copy_method
: use this option to avoid copying large directories when building a package. See possible values above, at theConfig/build/copy-method
DESCRIPTION
entry.pkg.build_stop_for_warnings
: if it is set toTRUE
, then pkgbuild will stop forR CMD build
errors. It takes precedence over thePKG_BUILD_STOP_FOR_WARNINGS
environment variable.
Environment variables
PKG_BUILD_COLOR_DIAGNOSTICS
: set it tofalse
to opt out of colored compiler diagnostics. Set it totrue
to force colored compiler diagnostics.PKG_BUILD_COPY_METHOD
: use this environment variable to avoid copying large directories when building a package. See possible values above, at theConfig/build/copy-method
DESCRIPTION
entry.
will stop for R CMD build
errors. The pkg.build_stop_for_warnings
option takes precedence over this environment variable.