This is the mail archive of the cygwin-apps mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH setup] Finish providing support for provides: and conflicts:


On 7/6/2018 12:28 PM, Jon Turney wrote:
On 23/06/2018 16:09, Ken Brown wrote:
I'll try again to reproduce this, but it might be a few days until I can get to it.

Here's a recipe for reproducing the problem:

1. Create a repository with two packages, A and B, and two versions 1-1 and 2-1 of each.  Make A-1-1 require B>=1, and make A-2-1 require B>=2. The attached script does all this.

2. Run setup on this repo and install A-1-1 and B-1-1.

3. Run setup again.  It will offer to update both A and B.  Choose to keep B and press 'Next'.

setup built from the current HEAD correctly reports the dependency problem.  But if I apply my patch, then setup doesn't report the problem and lets me proceed to update A without updating B.
Thanks very much for this testcase, it helped a lot.

This looks like completely my fault:  SolvableVersion::deplist()'s handling of dependencies with a version relation was completely bogus.

Great.  I'm glad the problem turned out to have an easy fix.

So provides() on B was always returning unversioned B, rather than B-1-1, so the installed B ended up with that as provides, which appears to be enough to satisfy a depends of B-2-1.

(previously we'd just have the correct, implicit provide made at libsolv.cpp:472)

Attached patch seems to make it work.

I can confirm that it fixes my testcase.

Ken


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]