[Fedora-packaging] How can packages require a pre-release version?

Paul Howarth paul at city-fan.org
Thu Feb 10 09:36:42 UTC 2011


On 10/02/11 02:46, Christopher Aillon wrote:
> http://fedoraproject.org/wiki/Packaging:NamingGuidelines#Non-Numeric_Version_in_Release
>
> So, this has been a problem for a while for me, but I'm just now getting
> to bring it up...
>
> Basically, packages need to be able to require "xulrunner 2.0 beta 11"
> but that's impossible with the current guidelines...
>
> Essentially, the number that gets incremented is _before_ the
> pre-release, and unfortunately there's no time machine available to
> determine how many increments will occur before the next tarball update,
> so packages can't do
>     Require: xulrunner>  2.0-0.19.beta11.fc15
>     Require: xulrunner<  2.0-0.22.beta12.fc15
>
> since we might just go straight to 2.0-0.20.beta12.fc15 or we might need
> 20 rebuilds of beta 11.  And depending on the specific NVR is suboptimal
> too.
>
> What I want to do for the XULRunner case specifically is change it to:
>     xulrunner-2.0-0.0.beta11_1.fc15 // first instance of beta 11
>     xulrunner-2.0-0.0.beta11_2.fc15 // rebuild of beta 11
>     xulrunner-2.0-0.0.beta11_3.fc15 // another rebuild
>     xulrunner-2.0-0.0.beta12_1.fc15 // first instance of beta 12
>     xulrunner-2.0-0.0.scm20110209_1.fc15 // scm snap from Feb 9 2011
>     xulrunner-2.0-0.1.beta13_1.fc15 // first instance of beta 13
>
> So, the first 0 would signify a pre-release, the second 0 would be used
> as sort of a "prerelease epoch" if needed as shown above, and it would
> be followed by the pre-name, and then a release.  Normally, a hyphen
> would precede the rpm release of a tarball, but we can't have that here
> due to the fact that we're putting some of the version information in
> the release, so I think underscore works just as well here, and is
> better than a dot.
>
> This would allow packages to do things like
>     Require: xulrunner>= 2.0-0.0.beta11
>     Require: xulrunner<= 2.0-0.0.beta12
>
> Thoughts?

Another possibility, since you're looking only for equality comparisons 
and not greater or less than comparisons, might be to keep the rpm 
versioning as-is and use a virtual provide for your own purposes, e.g.

Provides: xulrunner(version) = 2.0beta11

and in the dependent package(s):

Requires: xulrunner(version) = 2.0beta11

Paul.


More information about the packaging mailing list