actions icon indicating copy to clipboard operation
actions copied to clipboard

Force installation from a specific repository

Open wjakethompson opened this issue 1 year ago • 3 comments

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:

- uses: r-lib/actions/setup-r@v2
  with:
    r-version: ${{ matrix.config.r }}
    rtools-version: ${{ matrix.config.rtools }}
    http-user-agent: ${{ matrix.config.http-user-agent }}
    use-public-rspm: true
    extra-repositories: https://mc-stan.org/r-packages/

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?

- uses: r-lib/actions/setup-r@v2
  with:
    r-version: ${{ matrix.config.r }}
    rtools-version: ${{ matrix.config.rtools }}
    http-user-agent: ${{ matrix.config.http-user-agent }}
    use-public-rspm: true
    extra-repositories: |
      mcstan = https://mc-stan.org/r-packages/

- uses: r-lib/actions/setup-r-dependencies@v2
  with:
    extra-packages: |
      any::rcmdcheck
      mcstan::rstan
      mcstan::StanHeaders
    needs: check

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.

- uses: r-lib/actions/setup-r-dependencies@v2
  with:
    extra-packages: |
      any::rcmdcheck
      url::https://mc-stan.org/r-packages/src/contrib/rstan_2.26.22.tar.gz
      url::https://mc-stan.org/r-packages/src/contrib/StanHeaders_2.26.22.tar.gz
    needs: check

wjakethompson avatar May 12 '23 14:05 wjakethompson