On Sun, Jul 27, 2003 at 07:43:54PM +0300, Ville Skyttä wrote:
On Thu, 2003-07-24 at 17:00, Jeff Johnson wrote:
> Current behavior in rpm-4.2.1 (and all future versions of rpm) is
> A missing (i.e. unsepcified) Epoch: is exactly equivalent to Epoch: 0.
>
> Whether you choose to make the Epoch: explicit is a matter of style, the
> version comparison in rpm is now deterministic, the same answer is returned
> every time.
Let's consider a specfile without an explicit Epoch that produces
packages foo and foo-devel. Does this work in foo-devel with rpm-4.2.1?
Requires: foo = %{epoch}:%{version}
IIRC it doesn't work in rpm-4.2 and earlier. It'd be nice if it worked,
You do not recall correctly. Without "doesn't work" definition no further
analysis is possible.
There are 3 behaviors wrto epoch in rpm (well 4 or 5, but early one's don't
really matter any more):
a) Ignore Epoch: if either value is missing. This was the behavior
from rpm-3.0.2 (when versioned dependencies were implemented) until
rpm-4.1. The packageing rule that was mandated at the time rpm-3.0.2
was released was
If foo has explicit epoch, then foo-devel must have
Requires: foo = E:V
Well that worked fine, until Red Hat released a package that was not
upgradeable, libogg or vorbis. This became a MUSTFIX for Red Hat 8.0
and the constraint on the problem ws "No package upgrades.". So the only
solution that I could devise was
b) For added packages, use behavior a), otherwise treat missing
Epoch: as Epoch: 0.
This is seriously confusing as two answers for rpm version comparison become
possible.
So, to give absolutely deterministic behavior in the future, rpm-4.2.1 is
going forward with
c) A missing (unspecified) Epoch: is exactly equivalent to Epoch: 0.
in the case of an Epoch bump later the inter-subpackage dependencies
would automagically follow if one doesn't fancy putting the explicit
"Epoch: 0"'s in specfiles.
Also, outputting the 0 in cases of a missing Epoch would be nice too, I
remember trying out rpm-4.2.1 on RHL 9, and trying to install glib and
glib-devel (Epoch: 1, but a buggy requires in -devel; fixed in Severn).
The error message IIRC was:
glib = x.x.x is required by glib-devel
...whereas a less confusing one IMHO would have been:
glib = 0:x.x.x is required by glib-devel
Ditto for "rpm -q --qf '%{epoch}:%{version}-%{release}' foo",
does/could
4.2.1 print out "0:x.y-z" instead of "(none):x.y-z" if foo
doesn't have
an explicit Epoch?
Please apply the rule:
A missing (unspecified) Epoch: is exactly equivalent to Epoch: 0.
*Please*.
73 de Jeff
--
Jeff Johnson ARS N3NPQ
jbj(a)redhat.com (jbj(a)jbj.org)
Chapel Hill, NC