Force installation from a specific repository

Open
#727 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
25/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Stale
Tech stack
github-actions, r
Domain
ci-cd

Research direction

Start with the setup-r-dependencies@v2 handling of extra-packages and the setup-r@v2 extra-repositories configuration described in the issue. Compare the proposed repository-qualified syntax with the current url:: workaround and determine how package selection should behave when repositories contain different versions. Done means a package can be selected from a named repository without manually tracking tarball URLs, with coverage for the rstan and StanHeaders examples.

Written by the indexing model from the issue text.

Description

blocked feature

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
Dominant language
TypeScript
Stars
1.1k
Forks
234
Avg merge
2h 34m
Merged PRs (30d)
3

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from r-lib/actions

All issues in r-lib/actions

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.