fsprojects / fsprojects/Paket

Restrictions Cascading

Open
#3,647 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
F#
Stars
2.1k
Forks
528
Avg merge
1d 12m
Merged PRs (30d)
54

Description

Description

Similar to #3232, When you take a dependency on something requiring a restriction, these are then cascaded to all other 2nd level dependencies, regardless of if they actually have this restriction.

It's then required to specify the dependency in the paket.dependencies file (which in itself seems a bit wrong)
Coupled to this, if you just add the item to the dependencies file, you have to delete the lock file in order for it to generate without the restriction...which isn't very user friendly.

Suggested update, do not cascade restrictions from top level dependencies, just apply the restrictions that apply to each thing in isolation as though everything it top level.
When placing the dependency, it makes sense to include the restriction, but not on the line in the lock file displaying top level.

Example from the minimal repo in #3232, i would expect the restriction here: https://github.com/csmager/paket-transitives-repro/blob/master/paket.lock#L130
but not here: https://github.com/csmager/paket-transitives-repro/blob/master/paket.lock#L650
Since Microsoft.EntityFrameworkCore.SqlServer does not have a netcoreapp2.1 only restriction.

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.

Research direction

Start with the minimal reproduction linked from #3232 and compare the restriction entries around lines 130 and 650 of paket.lock. Trace Paket's dependency restriction resolution and lock-file generation. Done means restrictions are applied only to dependencies that require them, are shown on dependency entries when appropriate, and lock regeneration does not require deleting the lock file.

Written by the indexing model from the issue text.

Assessment

Tech stack
fsharp
Domain
build-system, tooling
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.