On Mar 6, 2011, at 12:26 PM, Per Øyvind Karlsen wrote:

> using right address this time..
> 
> 2011/3/6 Per Øyvind Karlsen <peroyv...@mandriva.org>:
>> 2011/3/6 Jeff Johnson <n3...@mac.com>:
>>> 
>>> On Mar 6, 2011, at 9:42 AM, Jeff Johnson wrote:
>>> 
>>>> Under #ifdef RPM_VENDOR_MANDRIVA please.
>>>> 
>>>> The problem you are trying to solve is with aliasing
>>>> for a package identifier, which sometimes has
>>>> Distepoch: and sometimes does not?
>>>> 
>>>> If so the patch is mostly in the right place, but a "real"
>>>> solution will be to decide on convention(s) for
>>>>       RPMTAG_NAME             this is used solely for identification
>>>>       RPMTAG_PROVIDENAME      this is used solely for assertions
>>>> What is confusing is that those two usage cases have exactly the same 
>>>> string
>>>> values, and adding Distepoch: has confused matters a bit (not in an 
>>>> important way).
>>>> 
>>>> The convention(s) (that need to be finalized) are implemented
>>>> when RPMTAG_PROVIDENAME is added to a header, not here, where
>>>> you are essentially substituting one alias for the other
>>>> where the real need (imho) is to split "identification" <-> "assertion"
>>>> name spaces cleanly.
>>>> 
>>>> Gud enuf for now, and until there's clarity on Distepoch: conventions.
>>>> 
>>> 
>>> Let me underscore what I think needs to be decided.
>>> 
>>> Distepoch: (and Disttag:) are adding "branding" identifiers. That's
>>> fine for identification purposes.
>>> 
>>> WHat hasn't been decided is this:
>>>        Do you want "branding" throughout assertions too?
>>> 
>>> i.e. should Distepoch: be added to all dependencies as well as to {N,E,V,R}.
>> I prefer for it to be added in same fashion as epoch, it being the least
>> significant value, omitting it for provides only using %{version}-%{release}
>> provides EVR will then be okay as well if one wants.

This isn't *too* surprising, but Epoch: has an important semantic
attached and is absolutely neded. There is less of a need
(or Distepoch: would have been added years ago to RPM) with
Disttag: or Distepoch: other than "identification" and "branding".

There's no possible way that, say,
        Always prefer mdv2011.0 over 2010.2.
can be mapped into dependency assertions. You plain and simply can't
afford the necessary QA and are doomed to "dependency hell" if
you even try to do that.

See arekm's request for
        How do I replace all i[3456]86 with x86_64 packages?
arch is no different than the "mdv2011" Distepoch: marker.
And RPM and all depsolvers based on rpmlib just aren't prepared for
the two rule-based "policies" I've just stated (even if the policies
are quite easy to express as a rule).

BTW: Your simplest possible approach w Distepoch: into dependencies
is still gonna be concatenation into the Release: string imho. Actually
adding a new element to the {E,V,R} tuple including a fully distinguished
D as separate tag everywhere will take some time to adjust and accept.

Surely you have seen this personally or you would not be checking
in patches like what started this thread.

>> 
>> I at least personally prefer this logic to be mostly consistent with the 
>> rest,
>> and also easiest to grasp and packagers to customize.
>>> 
>>> Th benefit of adding is that RPM then continues with identically valued
>>> strings for WYSIWYG meeting package monkey expectations.
>>> 
>>> The cost(s) of adding "branding" like Distepoch: to assertions are:
>>>    1) all package dependencies written in *.spec will need to be changed.
>>>    2) depsolver metadata is gonna increase in size with lots and lots of
>>>        redundant "branding" strings.
>> Mostly just adding it to package NEVR only is sufficient for achieving both
>> main goals of "identification" and "upgrade".

The contexts of "identification" and "assertion" are different even if you
choose to claim "both".

>> Leaving it to packagers to add it to EVR of other provides as they see
>> fit seems sensible enough to me at least. :)

You haven't been -- but are likely about to be -- clubbed with bananas
from a horde of angry package monkeys. Been there, done that, here.

Meanwhile, the whole idea that thousands of *.spec files can be adjusted
in finite time by humans accurately and reliably is the RPM design flaw.

Try automation in rpmbuild. There's really no reason to rile up the package 
monkeys
that I can see with Distepoch: ... ymmv.


>>> 
>>> There's no reason a priori why RPMTAG_PROVIDENAME MUST include Distepoch: 
>>> except
>>> to conform with expectations. Maybe I should encode all dependency strings 
>>> in EBCDIC
>>> to prove that point ;-)
>>> 
>>> Either approach is fine. But atm its all kinda muddled and ad hoc and in 
>>> need of clarity.

I should point out my prefernce here too:

        I think Distepoch: "branding" added throughout dependency assertions 
will
        further isolate Mandriva packaging from other distros.

That might well be the Chauvinist (and somewhat l33t) intent. I do not know ...

... but I do know that I can take, say, gzip from most any modern linux
distro and use rpm2cpio to achieve a functioning executable no matter
what markup has been added to the cellophane of packaging.

73 de Jeff______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
Developer Communication List                        rpm-devel@rpm5.org

Reply via email to