On Fri, Dec 28, 2007, Jeff Johnson wrote:
> On Dec 28, 2007, at 9:26 AM, Ralf S. Engelschall wrote:
>>
>> Yes, that's why I really seek for a solution which can be activated per
>> dependency check only. The "release(N) >= R" would be such a thing, I
>> think.
>
> Ah, got it. I thought you were looking for an all-OpenPKG distro solution.
>
> Adding a release(N) name space is a perfectly obvious solution
> using a getter access method and usual strcmp-like comparison
> overloaded into existing rpm dependencies.
>
> The subtly is that there may be multiple N installed with different R, and
> it may not be clear what "package" needs to be accessed to compare R.
>
> So you also need a compound statement to insure that you have exactly
> the package you wish to compare against.
>
> rpm already permits A as a compound as in
> Requires: N.A = E:V-R
> A general namespace form for (at least) the important tags like NEVRAO
> might look like (I use XXX to designate "package" item and avoid
> confusions)
> Requires: Release(XXX) = "R"
> with generalization to the compounds
> Requires: Name(XXX).Arch(XXX).Release(XXX) = "N A R"
>
> The tricky part is that the elements accessed by the getters need
> to be loaded by rpmdsNew() so that thousands of added package
> headers don't need to be present in memory.
Hmmm... sounds *really* good, although I think I personally will be not
able to implement it myself. I'm able to hack RPM just fine in order to
implement small solutions, but for such a more general solution I guess
my knowledge about the internals is still too less. Here I would need
your help, of course. But as it doesn't look like something which can
be *easily* added, we should perhaps suspend this for RPM 5.1, too. I'm
living with this dependency shortcoming since a few years, so I can live
without it for some more time, too.
But certainly something we should put onto the RPM 5.1 wish list...
Ralf S. Engelschall
rse@engelschall.com
www.engelschall.com
Received on Fri Dec 28 16:00:56 2007