[Rpm-maint] [RFC/PATCH] comparisons without release

Panu Matilainen pmatilai at laiskiainen.org
Fri Dec 17 10:16:34 UTC 2010


On Mon, 29 Nov 2010, Michael Schroeder wrote:

> On Fri, Nov 26, 2010 at 08:23:40PM +0100, Michael Schroeder wrote:
>> Having said that, the current behaviour seems to be quite broken.
>> Please explain the following:
>>
>>     Provides: foo > 1.2-1
>>     Requires: foo = 1.2      no match
>>
>>     Provides: foo >= 1.2-1
>>     Requires: foo = 1.2      matches
>>
>> I think the attached patch (completely untested) may fix the issue,
>> but I'll have to it through some tests on Monday.
>
> Seems to work well (after a missing '}' is added). The patch changes
> exactly the following cases:
>
> Provides      Requires/Conflicts/...
> ------------  -----------
> foo = 1.2,    foo < 1.2-1   no match -> match
> foo = 1.2,    foo > 1.2-1   no match -> match
> foo <= 1.2,   foo > 1.2-1   no match -> match
> foo >= 1.2,   foo < 1.2-1   no match -> match
> foo < 1.2-1,  foo = 1.2     no match -> match
> foo < 1.2-1,  foo >= 1.2    no match -> match
> foo > 1.2-1,  foo = 1.2     no match -> match
> foo > 1.2-1,  foo <= 1.2    no match -> match
>
> The idea behind the patch is that a missing release is handled
> as "all/any release". Nothing changes for "foo < 1.2" or
> "foo > 1.2", it still just compares the version. But "foo = 1.2"
> means "everything with version 1.2". Thus, any match against
> a package with version "1.2" a any non-empty release must
> return true.
>
> I think the patch is safe to apply, it changes only the corner
> cases listed above. Packages that put version-release in the
> provides are never affected.
>
> Updated version of the patch attached.

Finally got around to look at this more closely and add big pile of 
related test-cases:
http://rpm.org/gitweb?p=rpm.git;a=blob;f=tests/rpmdepmatch.at;h=01191ec1dca3cacf9693e7b00d3e0bd39892ae2d;hb=HEAD

The cases where this patch changes behavior are marked with "???", the 
expected result in the test-table now are for the current arguably broken 
behavior /without/ the patch. AFAICS the patch does what it intends to and 
indeed makes things saner overall, without adding new oddities (well, some 
of the cases are a bit strange either way). I think I'll apply the patch, 
unless somebody spots a show-stopper case in the behavior changes 
(considering these apply to not just requires but conflicts and obsoletes 
too)

 	- Panu -



More information about the Rpm-maint mailing list