Re: [Rpm-maint] [rpm-software-management/rpm] version comparison with epoch does not work as expected (#450)

2018-06-27 Thread Jeff Johnson
@rpm-maint: the sole reason for the existence of epoch (and its higher 
precedence in the comparison order of {E,V,R}) is to preserve upgradeability 
when either upstream has made an inconvenient choice of version, or the 
packager/distro has decided to revert to an older version.

This has nothing to do with grievous burdens, and is entirely relevant to the 
real world of software distribution where mistakes can and do happen.

-- 
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/issues/450#issuecomment-400619765___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] version comparison with epoch does not work as expected (#450)

2018-06-27 Thread Jeff Johnson
It is possible to construct failing counter examples for either obvious choice 
of missing epoch.

Your "strong recollection" cannot be analyzed further.

Truly I made the change at the time to simplify what I had to type multiple 
times a day doing support:
Missing epoch is identical to 0
Other answers required multiple interactions to identify exactly what was 
failing to meet expectations and deal with endless opinions of what SHOULD be 
done.

I believed then (and believe now) that ignoring comparisons with missing values 
is the superior implementation for missing epoch.

I also believe that exposing epoch values everywhere was a poor design choice 
in yum that has led to brain overload from too much information in the fog of 
"dependency hell".

But what's done is done, discussions be damned.

-- 
You are receiving this because you commented.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/issues/450#issuecomment-400611100___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] version comparison with epoch does not work as expected (#450)

2018-06-27 Thread Panu Matilainen
While I hardly present in any discussions leading to the change  back then, I 
do remember dealing with it from the other side of things in the plentiful, 
namely from apt-rpm and packaging POV. I'm really not going to dig back into 
them old memories in detail, but I have a fairly strong recollection of there 
being some unsolvable (corner or not) cases with epoch promotion that the 
current behavior solves. Which is what I meant with the "doesn't work" remark. 
But of course it's possible I'm misremembering something there, been a while...

For your amusement, 
https://www.redhat.com/archives/rpm-list/2003-June/msg00141.html 

-- 
You are receiving this because you commented.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/issues/450#issuecomment-400599202___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] version comparison with epoch does not work as expected (#450)

2018-06-26 Thread Jeff Johnson
Extreme or not, RPM is expected to deal with missing values (not only 
optional/missing epoch) sanely and intuitively, you aren't the first to 
complain.

Fix the issue and *SOLVE* the engineering problem(s) instead of

1) claiming that "epoch promotion" doesn't "work" with clear history to the 
contrary
2) pointing out that distributions are not maintaining upgradeability by 
changing epochs across major releases
3) suggesting new fangled special case ornamentation like '*' that does 
whatever you want the comparison to do
4) begging the question by ignoring other similar problems with missing values 
in EVR

all of which has been attempted/suggested in this thread.

For the specific case I gave, with all values missing, one could certainly 
demand that at least one of EVR be present while parsing a dependency.

Any comparison system that permis missing values MUST supply 
sane/natural/intuitive defaults for missing values, or attempt explicit data 
validation checks to prevent illformed/invalid/indeterminate/unexpected results 
when comparing.

Or we will be discussing the mysterious epoch behaviors for another decade or 
two.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/issues/450#issuecomment-400381957___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] version comparison with epoch does not work as expected (#450)

2018-06-26 Thread Michal Novotný
>Whatever scheme is implemented for RPM comparison with missing values, the 
>following pathological dependency with all values missing SHOULD behave 
>naturally:

> Requires: foo >= :-

That seems to be really an extreme case.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/issues/450#issuecomment-400365640___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] version comparison with epoch does not work as expected (#450)

2018-06-26 Thread Jeff Johnson
One last comment on missing values in EVR tuple S ...

Whatever scheme is implemented for RPM comparison with missing values, the 
following pathological dependency with all values missing SHOULD behave 
naturally:

Requires: foo >= :-


-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/issues/450#issuecomment-400351755___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] version comparison with epoch does not work as expected (#450)

2018-06-26 Thread Jeff Johnson
@svpv: good for ROSA, and conversations with me might be partly responsible for 
the choice. Using the same epoch when one value is missing has the distinct 
advantages (aka "epoch promotion") enumerated below:

1) entirely consistent behavior with what the Debian Borg enclave advocates
2) epoch isn't forever: epoch becomes part of the comparison only when explicit 
and automatically is ignored when not present, either because versioning became 
"sane" after some hiccup, or because sloppy packaging/packagers has composted 
the original reason for an epoch.

OTOH, defaulting a missing epoch to 0 has the following advantages:

1) missing epoch is 0 is trivial to explain doing support
2) returning 0 instead of "not present" eliminates an error that application 
developers have forgotten to handle
3) the epoch comparison value returned is less contextually sensitive, all 
epoch values are WYSWYG

One can devise extreme/confusing counter example failure cases for either 
choices of a default value for a missing element rather easily.

(asides)
What really needs to happen going forward in RPM is to change epoch to a string 
from an integer so that the rpmvercmp() comparison is identical for each member 
of the {E,V,R} tuple and patterns might reasonably used for epoch as well. 
YMMV, everyone's does.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/issues/450#issuecomment-400341017___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] version comparison with epoch does not work as expected (#450)

2018-06-26 Thread Alexey Tourbin
BTW, in a Mandriva-based Russian distro, they switched back to the "promote
the serial" logic which was also effective in rpm-4.0.  Ostensibly it makes
more sense, with which I tend to concur.  Binding to an upstream version is
a powerful and self-sufficient concept, so it makes every sense to require
e.g. ffmpeg >= 4.0.  As opposed to this, the serial number is an
ill-devised concept which in this case also breaks the promise that the
supplicant actually gets ffmpeg >= 4.0.


-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/issues/450#issuecomment-400329525___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] version comparison with epoch does not work as expected (#450)

2018-06-26 Thread Jeff Johnson
Ornamenting epoch values with explicit magic like '*' is irrelevant to this 
discussion about how a missing epoch in tar = 1.28 should compare to an 
explicit epoch in tar = 2:1.26.

For starters, epoch is a digit string followed by a ':', and '*' is a 
non-numeric character that pretends at DWIM pattern matching.

In fact, '2' would be the saner choice than '*' to solve the tar comparison 
issue.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/issues/450#issuecomment-400298924___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] version comparison with epoch does not work as expected (#450)

2018-06-26 Thread Igor Gnatenko
I think one of main issues would be different behavior between upgrading
packages vs comparing versions.

While I agree that current behavior is not intuitive for many, we have what
we have.

One of options might be adding some notation (using star instead of
numerical epoch?) to indicate that it shouldn't take it into account.
-- 

-Igor Gnatenko


-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/issues/450#issuecomment-400288751___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] version comparison with epoch does not work as expected (#450)

2018-06-26 Thread Jeff Johnson
You are 15+ years too late to discussions about EVR comparison.

Panu wasn't even much of a participant: I was.

I summarized the issue above.

A choice was necessary between 2 possible schemes for supplying a default value 
for a missing epoch. I made that choice when I implemented the code.

Endless (several year) explanations and discussions resulted, with no obvious 
consensus forming. Because one of the two obvious choices had already been 
made, there was only one other alternative choice. I too made that change, to 
support "A missing epoch is identical to 0".

There are no new issues to discuss. Flip flopping between two obvious choices 
for the default value of a missing epoch every few years cannot please 
everyone, and in fact will be more harmful than beneficial.



-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/issues/450#issuecomment-400284644___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] version comparison with epoch does not work as expected (#450)

2018-06-26 Thread Michal Novotný
> No. And that should be the end of that, thank you.

While I value your point of view a lot, you haven't provided any arguments. 
Also it's not very useful to cut something down immediately without discussing 
it first. You might be right but you also might not be right. I understand you 
went through this before but that's not really an argument if this is a 
beneficial change to be made, which I believe it is. So, please, let's give it 
some space and time. I don't think this needs to be immediately rejected or 
accepted. If you have links to the previous discussions, that would help as 
well to save some time.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/issues/450#issuecomment-400224928___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] version comparison with epoch does not work as expected (#450)

2018-06-26 Thread Panu Matilainen
> I think that for the next major RPM release this change could be discussed.

No. And that should be the end of that, thank you.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/issues/450#issuecomment-400216218___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] version comparison with epoch does not work as expected (#450)

2018-06-25 Thread Michal Novotný
Yes, you are right the {E,V,R} compare sequence is alright but the `0:` 
auto-prepending isn't.

I think that for the next major RPM release this change could be discussed.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/issues/450#issuecomment-400107061___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] version comparison with epoch does not work as expected (#450)

2018-06-22 Thread Jeff Johnson
Dependencies are compared sequentially across the set {E,V,R} and 2 .GT. 0

That is what is implemented, and the RPM comparison is working exactly as 
expected. That isn't a bug.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/issues/450#issuecomment-399499941___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] version comparison with epoch does not work as expected (#450)

2018-06-22 Thread Michal Novotný
> Well, the fact that e.g. 2:1.26 satisfies tar >= 1.28 looks like a clear bug 
> to me.

I should also say why. That's because `tar 2:1.26` contains a completely 
different code than `tar 1.28`. `Requires: tar >= 1.28` is there because the 
codebase up from `1.28` is required to run the package correctly. It should not 
be possible to satisfy that requirement with tar version less than `1.28`.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/issues/450#issuecomment-399394937___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] version comparison with epoch does not work as expected (#450)

2018-06-22 Thread Michal Novotný
Well, the fact that e.g. `2:1.26` satisfies `tar >= 1.28` looks like a clear 
bug to me.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/issues/450#issuecomment-399354721___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] version comparison with epoch does not work as expected (#450)

2018-06-21 Thread Jeff Johnson
@clime: yes, it makes sense to me, which is why EVR comparison was originally 
implemented by disabling epoch comparison if one of the values was missing

Meanwhile you are (at least) 15 years too late to the discussion to have any 
chance of succeeding in reverting the behavior. 

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/issues/450#issuecomment-399250323___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] version comparison with epoch does not work as expected (#450)

2018-06-21 Thread Jeff Johnson
@Conan-Kudo: linux distributions that do not carry epochs across a distro 
version boundary also cannot guarantee upgradeability: epochs (with missing == 
0) are forever no matter what dain bramage distro's have decided to inflict on 
their lusers.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/issues/450#issuecomment-399249366___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] version comparison with epoch does not work as expected (#450)

2018-06-21 Thread Michal Novotný
Hey Jeff,

So there are two things, right? First, you can say that when Epoch tag is not 
used, then Epoch tag's value is zero for a package.

If rpm needs to compare two packages, which one is newer, then it can do 
full-fleged comparison with epochs included.

If however comparing a package version (that always contains an epoch number) 
against a custom version expresion, which does not include an epoch number in 
it, it can just skip comparing the epochs.

So, yes, missing Epoch tag implicates Epoch = 0 for a package.

But missing epoch in a version expression means: "do not compare epochs".

Does it make sense to you?

The thing is that i would like to get spec files to be used directly by 
upstream and if they really needed to care about an epoch being set somewhere 
e.g. in Fedora, that just makes the whole thing...well, not possible.  It's 
like this epoch algo really separates the whole rpm ecosystem into individual 
clusters. Could we, please, consider it again whether the behavior really can't 
be tweaked?



-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/issues/450#issuecomment-399163634___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] version comparison with epoch does not work as expected (#450)

2018-06-21 Thread ニール・ゴンパ
> Note that your worry about tar dropping the epoch is a needless one: epochs 
> can never be dropped. Doing so would be a severe packaging bug in tar.

Strictly speaking, this is not true. There are Linux distributions that make it 
a policy to not carry Epochs forward across releases. openSUSE and (soon) 
OpenMandriva are examples of distributions with this policy.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/issues/450#issuecomment-399133045___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] version comparison with epoch does not work as expected (#450)

2018-06-21 Thread Jeff Johnson
Lets at least get the facts straight.

Any comparison system that permits missing values has to supply a default value 
when a value is missing.

There are 2 obvious defaults for a missing epoch in a comparison:
1) use the same, known value, when comparing a missing epoch with a known 
epoch. This is equivalent to ignoring epochs when missing.
2) make a missing epoch equivalent to 0

Either solution "works" and gives well defined results to EVR comparison.

The change was made to treat a missing epoch as 0 was made to simplify 
explanations demanded by users incapable of determining the meaning of "same" 
but able to comprehend "zero".

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/issues/450#issuecomment-399124954___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] version comparison with epoch does not work as expected (#450)

2018-06-21 Thread Panu Matilainen
It used to be different in the early days of rpm. That behavior, known as epoch 
promotion, does not work and it was changed for very good reasons in the early 
2000-something. So no ta bug, and not going to change either, no epoch == zero 
epoch is the only workable interpretation. Been there...

Note that your worry about tar dropping the epoch is a needless one: epochs can 
never be dropped. Doing so would be a severe packaging bug in tar.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/issues/450#issuecomment-399006919___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] version comparison with epoch does not work as expected (#450)

2018-06-20 Thread Michal Novotný
`Requires: tar >= 2:1.28` would work for me right now because the tar package I 
built has version `2:1.30-3`. But that seems rather accidental.

The problem here is that if tar packager resets the epoch to zero at some point 
the `Requires: tar >= 2:1.28` will suddenly become impossible to satisfy and my 
package will there become impossible to install. 

If I put `Requires: tar >= 2:1.28` into the specfile, I will need to carefully 
watch what's going on with the tar package so that I change the condition in my 
specfile at the right time.

This is really not something I would willingly want to do. When I put 
`Requires: tar >= 1.28` into the specfile, I am talking about tar 1.28 that is 
provided through rpm because I depend on a certain feature introduced in that 
version. The epoch should not really matter and certainly the condition should 
not get satisfied by `tar 2:1.26`.

Therefore, I am quite positive this is a bug. I understand your explanation 
about no epoch meaning zero but at the same time, I would like to challenge 
this at least in the context of version comparison because it does not produce 
a convenient behavior for a packager, nor for an upstream developer who 
maintains his/her own spec file.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/issues/450#issuecomment-398787595___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] version comparison with epoch does not work as expected (#450)

2018-06-20 Thread Michael Schroeder
Closed #450.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/issues/450#event-1691225816___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] version comparison with epoch does not work as expected (#450)

2018-06-20 Thread Michael Schroeder
That's not a bug, no epoch means epoch zero and 2 > 0. So it does work as 
expected.

Can't you use `Requires: tar >= 2:1.28`?

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/issues/450#issuecomment-398759860___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint