fsprojects / fsprojects/Paket

Clarification of conflict resolution

Open
#4,068 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

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

Description

Description

In the event a package depends upon a package already in the dependencies file, we end up in a seemingly infinite wait with messages like these:

The process is taking longer than expected.
Paket may still find a valid resolution, but this might take a while.
Conflict detected:

  • Dependencies file requested package Fax.Foundation: >= 0 prerelease*
  • Fax.Email 21.2.6-trunk requested package Fax.Foundation: >= 21.2.7
  • Fax.Email 21.2.6-trunk requested package Fax.Foundation: >= 21.2.7*

This message repeats over and over with an occasional seemingly unrelated package listed.

The process is taking longer than expected.
Paket may still find a valid resolution, but this might take a while.
- Fax.EasyLink 5.0.33
Conflict detected:

  • Dependencies file requested package Fax.Foundation: >= 0 prerelease*
  • Fax.Email 21.2.6-trunk requested package Fax.Foundation: >= 21.2.7
  • Fax.Email 21.2.6-trunk requested package Fax.Foundation: >= 21.2.7*
Repro steps

Because these are internal packages, I cannot give steps that are actually reproducible. We have about 100 packages listed in our paket.dependencies and quite a few transitive dependencies.

  1. Create a package, "A", with a dependency upon another package, "B", with a version constraint >= the locked version.
  2. Reference both packages in the dependencies file.
  3. Try to update to the latest version of package A.
Expected behavior

Since the conflict appears to be trivial as listed above where any version >= 21.2.7 would work, to use the package requested during the update or latest version if none specified.

If not possible, it would be nice if paket could express some form of progress. Some indication that progress is being made, whether it be "Considering solution 8 of 8967 possibilities" or even something less tangible, would help us determine how long we need to wait based on previous experiences.

Additional request

Where can I find out what the * means? As in "0 prerelease*" and ">= 21.2.7*"

Actual behavior

Paket seems to spin forever. In reality, I've only waited a few hours but, when things go smoothly--that is, when these conflict messages do not appear--this process takes just over 5 minutes.

Known workarounds

Using == for constraints in the dependencies file seems to work around the issue. I hope to avoid this for maximum flexibility.

Thanks.

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

The issue names no files, tests, or entry points. Start by reproducing the dependency-resolution case with packages A and B, both referenced in paket.dependencies, then inspect how Paket reports conflicts and progress during an update. Done means the conflict no longer appears to spin indefinitely, progress is communicated if resolution remains expensive, and the meaning of the asterisk is documented.

Written by the indexing model from the issue text.

Assessment

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.