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

Ken Brown kbrown@cornell.edu
Fri Jul 6 22:19:00 GMT 2018


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



More information about the Cygwin-apps mailing list