Open wjakethompson opened 1 year ago
Not a 100% workaround, but if you pass upgrade: true
, then pak will select the latest versions for all packages.
But yeah, I agree that this would be great, it is int the plans, and the syntax will be probably something like this:
rstan?repo=mc-stan.org
For the record, this needs to be implemented in pak, until that happens it is blocked.
As a workaround for this on GH Actions, I've added an input to our org's R CMD CHECK workflow, which accepts a remotes
input and appends them to DESCRIPTION
before installing dependencies.
This lets us use the same action twice, one without a remotes
input to target dependencies from CRAN/P3, and then again with the remotes
pointing to the dev versions of our dependencies.
So, it would look something like:
r-cmd-check:
name: R CMD Check
uses: RMI-PACTA/actions/.github/workflows/R-CMD-check.yml@main
dev-r-cmd-check:
name: R CMD Check (dev versions)
uses: RMI-PACTA/actions/.github/workflows/R-CMD-check.yml@main
with:
upgrade-packages: 'TRUE'
cache-version: 'dev'
remotes: |
RMI-PACTA/r2dii.data
RMI-PACTA/r2dii.match
Relevant section of the workflow file:
Is your feature request related to a problem? Please describe. When a package is available in multiple repositories, it would be helpful to force installation from a specific repository. The motivating examples are the rstan and StanHeaders packages. Both are available on CRAN (rstan 2.21.8 and StanHeaders 2.21.0-7), but are not the most up to date versions. The most recent versions are in a a CRAN-like repository from the Stan group (https://github.com/stan-dev/r-packages) which has rstan 2.26.22 and StanHeaders 2.26.22. I've added the mc-stan repository to extra repositories:
However, the packages are still getting installed from the default CRAN (i.e., in the session info rstan is version 2.21.8; see example action run).
Describe the solution you'd like Ideally, if a package exists in multiple repositories, I'd have the option to force installation from a specific repo. For example, maybe we could name extra repositories, and then use those names for install?
I'm not sure if that would actually work, but someway to indicate which repository a package should be installed from if multiple are available would be useful.
Describe alternatives you've considered Currently, I'm using the
url::
specification. This works, but is suboptimal because I have to track when updates are made to the stan-dev/r-packages repository, and then update the url manually.