[Distutils] SOLVED: bdist_rpm and pre-release python packages / eggs (was: pre-release versioning problems with sdist, bdist_rpm, bdist_debian)

Gerry Reno greno at verizon.net
Wed Mar 11 13:28:40 CET 2009

Manuel Amador (Rudd-O) wrote:
> Hello, guys,
> I have fixed distutils (and setuptools remains working) with the 
> attached patch. Now, RPMs will be built according to the Fedora 
> Package Naming Guidelines:
> http://fedoraproject.org/wiki/Packaging/NamingGuidelines#Non-Numeric_Version_in_Release
> which I understand to be the most useful reference in terms of naming 
> pre-release packages. This should work correctly in at least:
> - Fedora
> - RHEL
> - SUSE
> I urge you patch your python 2.4s and 2.5s and 2.6s and push this 
> update to distributions. I have done that myself at my own repository.
> Now we can enjoy one more reason to build RPMs (and eggs! ... 
> according to my workbench at http://yum.rudd-o.com/SCRIPTS/ -- feel 
> free to pick its brains) DIRECTLY from the cheese shop, especially if 
> you're using pip.
> Oh, I also have pip at my repo (cd ../RPMS/noarch in my workbench).
> See attached patch. I will log bugs where it corresponds too.
> -- 
> Manuel Amador (Rudd-O) <rudd-o at rudd-o.com>
> Rudd-O.com - http://rudd-o.com/
> GPG key ID 0xC8D28B92 at http://wwwkeys.pgp.net/
> Now playing, courtesy of Amarok: Aqua - Cartoon heroes
> Windows 95 is not a virus. Viruses actually do something.
Hi Manuel,
  You worked on my problem!  Great.
  So today what we have been doing to deal with the pre-release and 
lexical ordering problem involving pre-releases is this:
    We impose a restriction on how the pre-release is identified.  So 
for example if you intend to end up with a final version-release of 
5.0.0-1 and you want to first put out some betas or release candidates 
then we have to name them as, 5.0.0-0_beta1, or 5.0.0-0_rc1 and this is 
so that the lexical ordering for RPM will be correct.  In other words 
you must put the pre-release designation into the 'release' part of 
VERSION-RELEASE.  What we had seen developers doing previously was to 
name these as 5.0.0_beta1 or 5.0.0_rc1 (making the pre-release 
designation part of the 'version' string)  which then did not work for 
the lexical ordering of the final release of 5.0.0-1 because 5.0.0 
(version) was not lexically superior to 5.0.0_rc1.  So we were able to 
solve this problem without any code changes to distutils.  But this also 
presented a challenge for the other distribution targets such as 'sdist' 
because they were totally unaware of this 'version-release' combination 
and only knew about 'version'.  So as a workaround we were doing this:
# define both version AND release
# combine them for all targets except 'bdist_rpm'
if sys.argv[1] != 'bdist_rpm':
    version = version+'-'+release
So this wasn't perfect but it actually worked quite well and we could 
get 'sdist' to work properly in conjunction with 'bdist_rpm'. 
So now with your patch all the targets should be able to set and use 
both 'version' and 'release' and we don't need our workaround and that 
will be great.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/distutils-sig/attachments/20090311/06fd00e7/attachment.htm>

More information about the Distutils-SIG mailing list