On Thu, 2007-02-15 at 03:34 -0500, seth vidal wrote:
> On Thu, 2007-02-15 at 01:13 -0500, seth vidal wrote:
> > On Wed, 2007-02-14 at 17:33 -0500, seth vidal wrote:
> > > in _checkRemove() in the new code it seems like the provides of a
> > > package being removed are only ever being checked by provname not by
> > > prov_ver.
> > > 
> > > So it seems like if we remove foo3 which provides foobin = 3.0
> > > 
> > > and we have foo2 installed, which provides foobin = 2.0
> > > 
> > > and a package requires foobin > 2.0
> > > 
> > > Then we'll never see the requirement.
> > > 
> > > I'm going to check this when I get home. It's not a hard fix - but I
> > > wanted to see if anyone else was seeing this.
> > 
> > yah, okay. I was right about this, it does leave an unresolved dep. I'll
> > have  patch in a few minutes then I'll go through install and update and
> > see if there are any other cases.
> > 
> 
> okay, I'm not going to have a quick fix for it. This goes fairly deep
> into our inPrcoRange method of each package object. Essentially, since
> it is not a full overlapping-ranges check it isn't giving the right
> answers for every case of the depcheck.  It's right enough for some of
> the ranges but not for some odd cases. I'm trying to map out all the
> cases where the ranges overlap and it's making my head twist a bit. I
> was actually just looking to see if rpm's dsCompare has been brought out
> into the python module, that would save a lot of the same code, I think.
> 

okay. i think this is the pseudo-code for the range overlap. I'd
appreciate it if someone could check this.

self is the prco from the package
reqtuple is the requested prco that we're comparing
f is the flag from the prco in the package
reqf is the flag from the reqtuple

                # does not match unless
                # if self is newer than reqtuple
                # if the reqf is GT, GE:
                #    true
                # if the reqf is EQ:
                #    if f is EQ, LE, GE:
                #      true
                # if the reqf is LE, LT:
                #    false
                
                # if self is equal to reqtuple
                #   if the reqf is GT:
                #      if f is GT, GE: 
                #        true
                #   if the reqf is GE:
                #      if f is GT,GE,EQ,LE:
                #       true
                #   if the reqf is EQ:
                #      if f is EQ,GE,LE:
                #       true
                #   if the reqf is LE:
                #       if f is EQ,LE,LT,GE:
                #        true
                #   if the reqf is LT:
                #       if f is LE, LT:
                #        true
                
                # if self is less than reqtuple
                #    if the reqf is GT:
                #     if f is GT, GE:
                #       true
                #    if the reqf is GE:
                #      if f is GT,GE:
                #        true
                #    if the reqf is EQ:
                #       if f is GT, GE:
                #          true
                #    if the reqf is LE, LT:
                #       true


-sv


_______________________________________________
Yum-devel mailing list
[email protected]
https://lists.dulug.duke.edu/mailman/listinfo/yum-devel

Reply via email to