[R-pkg-devel] [UNCLASSIFIED] Remotes in description when submitting a package until a dependency is fixed

Dirk Eddelbuettel edd @end|ng |rom deb|@n@org
Wed Nov 16 17:17:00 CET 2022


On 16 November 2022 at 06:36, Duncan Murdoch wrote:
| On 15/11/2022 11:59 p.m., Hugh Parsonage wrote:
| > I think you've misunderstood that excerpt.  By "temporary development
| > state", it means _between_ CRAN releases; packages in a development
| > state are not suitable for CRAN, as the policy states:
| > 
| >> CRAN hosts packages of publication quality and is not a development platform.
| > 
| > You'll need to stop depending on that package until it's fixed and the
| > fix is on CRAN. That said, it looks like it might be relatively
| > straightforward to disentangle yourself from the package -- just
| > rewrite the offending example?
| 
| Another solution is to put a version of that package in your own drat 
| repository, and use "Additional_repositories".  For example, at one 
| point rgl used webshot2 before it was released, and I had
| 
|    Suggests:  webshot2, ...
|    Additional_repositories:  https://dmurdoch.github.io/drat
| 
| with a copy of webshot2 in the drat repository.
| 
| The disadvantage of this approach is that you'll need to keep that 
| repository up to date as the third party package evolves, and eventually 
| remove the Additional_repositories: line from your DESCRIPTION, which 
| requires your own package update.
| 
| See https://github.com/eddelbuettel/drat for instructions on setting up 
| the drat repository.

(Disclaimer: Author bias here.) Let me vouch for Additional_repositories:
along with packages in Suggests: (you cannot do this for Imports / Depends /
LinkingTo per CRAN Policy).  I have recently been relying on it a lot for a
package I (similarly) could not change that frequently at CRAN, and a
'semi-private / semi-public package' providing functionality I expect to be
provided by another package 'eventually'. With the caveat that you need the
Suggests: mechanism and hence _conditional_ use, it works just like CRAN.

In the meantime Additional_repositories: just works. It expands the set of
repos, so all operations relying on standard install.packages() calls (and
that includes using the remotes package to parse dependencies in CI, say)
just work, both at CRAN and in CI.

`drat` simply helps along by making it easier to provide compatible repositories.

Dirk

-- 
dirk.eddelbuettel.com | @eddelbuettel | edd using debian.org



More information about the R-package-devel mailing list