Python, distutils, rpmbuild, issues

Gerry Reno greno at verizon.net
Tue Jan 6 21:17:44 UTC 2009


I wasn't sure exactly where to start with all this so here goes:

I've been working with some python projects and running into problems 
with RedHat-based distros when it comes to rpm generation, versioning, 
and updating.

Specifically, many projects like to put out release candidates for 
packages.  In python, there is a module, "distutils", that will permit 
you to create packaging for both apt and rpm like so:
$ python ./setup.py bdist_rpm  # this generates SRPMS and RPMS for this 
python app

One of the problems is versioning and occurred when the project created 
release candidates and we ended up with versions like:
5.0.0-rc1
Well, rpmbuild does not recognize hyphen as a legal character although 
it worked fine for apt.  So I opened a bug on the project and then devs 
then changed it to:
5.0.0_rc2
Ok, rpmbuild went along with this and apparently apt didn't care.  But 
will this work with the final release, 5.0.0?  Can the 5.0.0 rpm 
actually upgrade a 5.0.0_rc2 release?  Remember, the python module 
"distutils" causes the spec file to be generated on the fly.  So does it 
just assume the version will occur in lexical order?

The next problem was with trying to use the python setuy.py target, 
"bdist_rpm".  The bdist_rpm worked fine when you run it on ubuntu or 
debian (with rpmbuild installed) but failed when it was run on any of 
the RedHat-based distros.  The error that was occurring on the 
RedHat-based distros is the "Installed (but unpackages) file(s) found".  
Apparently on RedHat-based distros, rpmbuild creates .pyo files which 
never get added back into the INSTALLED_FILES from distutils and then of 
course it causes this error.  Has anyone solved this problem?  I see 
lots of references to this problem when I google it, but no solutions.


Regards,
Gerry






More information about the fedora-devel-list mailing list