Re: [Rpm-ecosystem] Required version of rpm?

2018-06-26 Thread Panu Matilainen

On 06/26/2018 04:46 PM, Miroslav Suchý wrote:

Dne 26.6.2018 v 14:57 Panu Matilainen napsal(a):

On 06/26/2018 02:15 PM, Miroslav Suchý wrote:

Dne 26.6.2018 v 12:17 Neal Gompa napsal(a):

rpmlib() dependencies are virtual, they aren't provided by anything,
but are processed during the transaction and verified.


1) So the number in rpmlib(RichDependencies) means what version of rpm I should 
have. Right?


Roughly yes, but beware there are cases where this is not true at all due to 
backports and sideports messing it all up.


OK - corner cases and backports aside. But... I am still puzzled.

$ rpm -qR redhat-rpm-config |grep Rich
rpmlib(RichDependencies) <= 4.12.0-1

So any rpm with verision *lower* than 4.12.0 will work? Should be there ">=" ?


Nope. From my previous email: "the version in rpmlib() dependencies is 
sorta backwards to what people generally expect." - but it's the range, 
not the version that appears backwards.


This is the way all rpmlib() dependencies have always been, here's the 
best explanation I've found:


https://www.redhat.com/archives/rpm-list/2001-April/msg00283.html

And in fact the rich dependency tracking version is a fine example of 
how the version is not trustworthy: rich dependencies got added in 
4.13.0, not 4.12.0 as the rpmlib() dependency would have you think.



Not that you'd want to go telling to upgrade their rpm beyond what their distro 
provides, that's a recipe for disaster.


No, I do not want to do that. I just want to provide that user-friendly error.


Ack, good.

- Panu -



Miroslav
___
Rpm-ecosystem mailing list
Rpm-ecosystem@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-ecosystem



___
Rpm-ecosystem mailing list
Rpm-ecosystem@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-ecosystem


Re: [Rpm-ecosystem] Required version of rpm?

2018-06-26 Thread Miroslav Suchý
Dne 26.6.2018 v 14:57 Panu Matilainen napsal(a):
> On 06/26/2018 02:15 PM, Miroslav Suchý wrote:
>> Dne 26.6.2018 v 12:17 Neal Gompa napsal(a):
>>> rpmlib() dependencies are virtual, they aren't provided by anything,
>>> but are processed during the transaction and verified.
>>
>> 1) So the number in rpmlib(RichDependencies) means what version of rpm I 
>> should have. Right?
> 
> Roughly yes, but beware there are cases where this is not true at all due to 
> backports and sideports messing it all up.

OK - corner cases and backports aside. But... I am still puzzled.

$ rpm -qR redhat-rpm-config |grep Rich
rpmlib(RichDependencies) <= 4.12.0-1

So any rpm with verision *lower* than 4.12.0 will work? Should be there ">=" ?

> Not that you'd want to go telling to upgrade their rpm beyond what their 
> distro provides, that's a recipe for disaster.

No, I do not want to do that. I just want to provide that user-friendly error.

Miroslav
___
Rpm-ecosystem mailing list
Rpm-ecosystem@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-ecosystem


Re: [Rpm-ecosystem] Required version of rpm?

2018-06-26 Thread Panu Matilainen

On 06/26/2018 02:15 PM, Miroslav Suchý wrote:

Dne 26.6.2018 v 12:17 Neal Gompa napsal(a):

rpmlib() dependencies are virtual, they aren't provided by anything,
but are processed during the transaction and verified.


1) So the number in rpmlib(RichDependencies) means what version of rpm I should 
have. Right?


Roughly yes, but beware there are cases where this is not true at all 
due to backports and sideports messing it all up.


What you really need is to have an rpm version that provides the virtual 
capability in question (discoverable via --showrc and API), the version 
in rpmlib() dependencies is sorta backwards to what people generally expect.



2) The version of rpm I need to parse this RPM is in dependency list, which I 
cannot parse on EL7 because there is too
old rpm. So I have chicken and egg problem. Any idea how to solve this?


Yeah rich dependencies complicated the scene quite a bit. What was 
previously a dumb string no longer is, and could fail to be parsed by 
rpmds. What you always can get though, is the "raw" strings from the 
header, in RPMTAG_REQUIRENAME, RPMTAG_REQUIREFLAGS and 
RPMTAG_REQUIREVERSION arrays and look for rpmlib( in start of the name 
(it's supposed to be also flagged in RPMTAG_REQUIREFLAG but older rpm 
versions didn't always add it).


Not that you'd want to go telling to upgrade their rpm beyond what their 
distro provides, that's a recipe for disaster. But sure, being able to 
detect such issues and provide a nicer explanation never hurt anybody.


- Panu -
___
Rpm-ecosystem mailing list
Rpm-ecosystem@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-ecosystem


Re: [Rpm-ecosystem] Required version of rpm?

2018-06-26 Thread Miroslav Suchý
Dne 26.6.2018 v 12:17 Neal Gompa napsal(a):
> rpmlib() dependencies are virtual, they aren't provided by anything,
> but are processed during the transaction and verified.

1) So the number in rpmlib(RichDependencies) means what version of rpm I should 
have. Right?

2) The version of rpm I need to parse this RPM is in dependency list, which I 
cannot parse on EL7 because there is too
old rpm. So I have chicken and egg problem. Any idea how to solve this?

Miroslav
___
Rpm-ecosystem mailing list
Rpm-ecosystem@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-ecosystem


Re: [Rpm-ecosystem] Required version of rpm?

2018-06-26 Thread Neal Gompa
On Tue, Jun 26, 2018 at 4:57 AM Miroslav Suchý  wrote:
>
> Dne 25.6.2018 v 13:04 Igor Gnatenko napsal(a):
> > rpmlib(RichDependencies) <= 4.12.0-1
>
> But on my F28:
>
> $ LC_ALL=C rpm -q --whatprovides 'rpmlib(RichDependencies)'
> no package provides rpmlib(RichDependencies)
>

rpmlib() dependencies are virtual, they aren't provided by anything,
but are processed during the transaction and verified.



-- 
真実はいつも一つ!/ Always, there's only one truth!
___
Rpm-ecosystem mailing list
Rpm-ecosystem@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-ecosystem