> On Jan 8, 2015, at 5:59 AM, Per Øyvind Karlsen <[email protected]> wrote:
> 
> Epochs...
> 
> This is usually what you only resort to when no other options exist, and then 
> you have to drag it around indefinitely as there's no way to get rid of them, 
> only increasing epoch value...
> 
> With the annoyances and grief over this from "everybody", I introduce to you 
> now finally a new feature in rpm: epoch deprecation!
> 
> This will help you get rid of the epochs in a fairly easy fashion.
> 
> So it works like this:
> * Epoch value is stored as a uint32_t (unsigned, where '-1' will due to it 
> being unsigned become largest 32 bit unsigned integer: 4294967295)
> * By changing how epoch is treated to int32_t (signed), we get the 
> possibility of having negative epoch values, such as ie. '-1' (and we don't 
> really need .need suppport for epoch values as high as 4294967295. by 
> changing the signedness to signed, the largest value for the signed integer 
> will still be as high as 2147483647)
> * With the now negative value, it can now be used to deprecate epoch, where a 
> negative epoch value of '-n' will beat 'n', ie.:
> -1:1-1 > 1:1-1
> -1:1-1 < 2:1-1
> -2:1-1 > -1:1-1
> 

FYI: rpm-5.0 switched all integer data types to unsigned in 2008 to simplify
interfaces and mitigate integer overflows. There is no reason that
I am aware of to revert (and many compatibility reasons NOT to do so,
not the least of which is consistency) and flip-flop back to signedness.

And I have proposed — as you should know — several ways to
phase out epoch (and distepoch) by changing macros configuration,


> * So what about actually deprecating the epoch tag still present in the 
> package (which it'll be, only that it'll be a negative one)?
> As the negative epoch will only be compared against other epochs, it will be 
> ignored for where packages has none, ie.:
> 1-1 == -1:1-1
> 1-2 > -1:1-1
> 
> So what about backwards compatibility?
> Since rpm without suppport for epoch deprecation will consider packages built 
> with an epoch of -1, it will consider it as 4294967295, which will help 
> backwards compatibility in a sufficient manner since this epoch will always 
> beat whatever epoch compared to, so there shouldn't be any incompatibilities 
> caused by this wrt. packages built. Only incompatibility introduced by this 
> will be building packages lackaing this support which won't acccept a 
> negative epoch value.
> But considering deprecating epochs are unlikely of any importance (more 
> likely cause of troubles in a release distro where other packages might 
> depend on the packages specific epoch), I'd consider this as a non-issue.
> 

Say what?!? An Epoch: of 0xffffffff will be higher than any other
epoch. And treating -1 specially forces every application
using RPM — including preexisting dead legacy code — to be modified
to handle the special case of -1. Many many many rpm applications do _NOT_
call rpm lib functions to compare E:V-R[:D] correctly already.

> Etc., I hope my explanation about usage and behaviour sufficed, if not just 
> ask, :)
> I also lack an account for the wiki, so if anyone would like to start 
> document things like this on it, it would be greatly appreciated.
> 
> Some things to keep in mind though; considering that some epochs has stayed 
> around forever, when deprecating it, be sure to carry around the negative 
> epoch for a while (ie. at least throughout the lifetime of releases for which 
> you wanna deprecate epochs for packages of).
> This also should become less of an issue as the negative epoch will be 
> ignored when comparing versions.
>  
> Well I know a lot of people has requested the possibility of deprecating 
> epochs for many years, so I'm happy to finally have brought an implementation 
> of how to do this in a feasible manner for package maintainers. :)
> 

Many people have complained about many things in RPM ,
not just epoch. Cherry pick “features” and claim whatever
you wish publicly as loudly as possible.

> Another feature relating to same topic is the support for '~' in version tags 
> for use with prerels, ie.  like:
> foo-1.2~beta3-1 > foo-1.1-1
> foo-1.2~beta3-1 < foo-1.2-1
> 
> This should avoid the need for dealing with prerelease versioning in the 
> releae tag like whereas for the example above, in order to achieve the 
> equivalence, you'd have something like this:
> foo-1.2-0.beta3.1
> 
> I'm not entirely sure whether ABF has been fixed to support '~' in filename, 
> but it not, it will be fixed ASAP.
> 
> Jeff, maybe you have some input on the '~' in version you'd like to comment 
> on? :)
> 

Nope, got nothing whatsoever to say about twiddle-in-version.

Go ask SuSE why they proposed twiddle-in-version at the RPM Summit
in September 2008.

There are/were many other possible solutions than
        Let’s make RPM behave Just Like dpkg.

73 de Jeff
> --
> Regards.
> Per Øyvind
> _______________________________________________
> OM-Cooker mailing list
> [email protected]
> http://ml.openmandriva.org/listinfo.cgi/om-cooker-openmandriva.org

_______________________________________________
OM-Cooker mailing list
[email protected]
http://ml.openmandriva.org/listinfo.cgi/om-cooker-openmandriva.org

Reply via email to