blob: c2597fc1454fbea4f40a6303bd4dbf2e7f5d3f86 [file] [log] [blame]
% File src/library/tools/man/CRANtools.Rd
% Part of the R package, https://www.R-project.org
% Copyright 2016-2017 R Core Team
% Distributed under GPL 2 or later
\name{CRANtools}
\title{CRAN Package Repository Tools}
\alias{CRAN_package_db}
\alias{CRAN_check_results}
\alias{CRAN_check_details}
\alias{CRAN_check_issues}
\alias{CRAN_memtest_notes}
\alias{summarize_CRAN_check_status}
\description{
Tools for obtaining information about current packages in the
\acronym{CRAN} package repository, and their check status.
}
\usage{
CRAN_package_db()
CRAN_check_results(flavors = NULL)
CRAN_check_details(flavors = NULL)
CRAN_check_issues()
summarize_CRAN_check_status(packages,
results = NULL,
details = NULL,
issues = NULL)
}
\arguments{
\item{packages}{a character vector of package names.}
\item{flavors}{a character vector of \acronym{CRAN} check flavor names, or
\code{NULL} (default), corresponding to all available flavors.}
\item{results}{the return value of \code{CRAN_check_results()}
(default), or a subset of this.}
\item{details}{the return value of \code{CRAN_check_details()}
(default), or a subset of this.}
\item{issues}{the return value of \code{CRAN_check_issues()}
(default), or a subset of this.}
}
\details{
\code{CRAN_package_db()} returns a character data frame with most
\file{DESCRIPTION} metadata for the current packages in the CRAN
package repository, including in particular the Description and
Maintainer information not provided by
\code{utils::\link{available.packages}()}.
\code{CRAN_check_results()} returns a data frame with the basic
\acronym{CRAN} package check results including timings, with columns
\code{Package}, \code{Flavor} and \code{Status} giving the package
name, check flavor, and overall check status, respectively.
\code{CRAN_check_details()} returns a data frame inheriting from class
\code{"check_details"} (which has useful \code{print} and
\code{format} methods) with details on the check results, providing
check name, status and output for every non-OK check (\emph{via}
columns \code{Check}, \code{Status} and \code{Output}, respectively).
Packages with all-OK checks are indicated via a \code{*} \code{Check}
wildcard name and OK \code{Status}.
\code{CRAN_check_issues()} returns a character frame with additional
check issues (including the memory-access check results made available
from \url{https://www.stats.ox.ac.uk/pub/bdr/memtests/} and the
without-long-double check results from
\url{https://www.stats.ox.ac.uk/pub/bdr/noLD}), as a character frame
with variables \code{Package}, \code{Version}, \code{kind} (an
identifier for the issue) and \code{href} (a URL with information on
the issue).
\code{CRAN_memtest_notes()} is now deprecated, with its functionality
integrated into that of \code{CRAN_check_issues()}.
}
\value{
See \sQuote{Details}. Note that the results are collated on
\acronym{CRAN}: currently this is done in a locale which sorts
\code{aAbB} \dots.
}
\section{Which CRAN?}{
The main functions access a \acronym{CRAN} mirror specified by the
environment variable \env{R_CRAN_WEB}, defaulting to one specified in
the \file{repositories} file (see \code{\link{setRepositories}}): if
that specifies \code{@CRAN@} (the default) then
\url{https://CRAN.R-project.org} is used. (Note that
\code{\link{options}("repos")} is not consulted.)
Note that these access parts of \acronym{CRAN} under
\file{web/contrib} and \file{web/packages} so if you have specified a
mirror of just \file{src/contrib} for installing packages you will
need to set \env{R_CRAN_WEB} to point to a full mirror.
}
%% Tested in tests/CRANtools.R
\examples{\donttest{
## This can be rather slow, especially with a non-local CRAN mirror
## and would fail (slowly) without Internet access in that case.
set.seed(11) # but the packages chosen will change as soon as CRAN does.
pdb <- CRAN_package_db()
dim(pdb)
## DESCRIPTION fields included:
colnames(pdb)
## Summarize publication dates:
summary(as.Date(pdb$Published))
## Summarize numbers of packages according to maintainer:
summary(lengths(split(pdb$Package, pdb$Maintainer)))
## Packages with 'LASSO' in their Description:
pdb$Package[grepl("LASSO", pdb$Description)]
results <- CRAN_check_results()
## Available variables:
names(results)
## Tabulate overall check status according to flavor:
with(results, table(Flavor, Status))
details <- CRAN_check_details()
## Available variables:
names(details)
## Tabulate checks according to their status:
tab <- with(details, table(Check, Status))
## Inspect some installation problems:
bad <- subset(details,
((Check == "whether package can be installed") &
(Status != "OK")))
## Show a random sample of up to 6
head(bad[sample(seq_len(NROW(bad)), NROW(bad)), ])
issues <- CRAN_check_issues()
head(issues)
## Show counts of issues according to kind:
table(issues[, "kind"])
## Summarize CRAN check status for 10 randomly-selected packages
## (reusing the information already read in):
pos <- sample(seq_len(NROW(pdb)), 10L)
summarize_CRAN_check_status(pdb[pos, "Package"],
results, details, issues)
}}