Python Packages + Multiple Sources

BJ Dierkes wdierkes at 5dollarwhitebox.org
Wed Dec 8 02:39:50 UTC 2010


Hello all,

I've been trying to figure the best way to handle this situation for the better part of two days... and so I figured I'd bring it on list and hopefully I can clarify this all.  I have several projects that relate to this question, however I will reference 'cement' as an example.  Basically, cement is a CLI Application Framework for Python [1].  I am also the upstream maintainer, so I have the ability to modify upstream or downstream.  Currently, cement consists of three separate sources:

	cement
	cement.devtools
	cement.test

All three pieces follow each release meaning, when 0.8.12 (current stable) was released... new tarbals were released for all three.  The reason for separate tarbals is primarily for maintaining releases via PyPi [2].  I need all three pieces to be separate so that users can 'easy_install cement', without pulling in a dozen dependencies for cement.devtools or cement.test.  I don't have the luxury of creating 'subpackages' in PyPi, so I have to break up the sources.  

That said, in the Fedora world... it is a bit excessive to maintain three separate RPM packages (for all Fedora/EPEL releases)... when all three packages are related and could easily role up under a single package, with subpackages.  I have the same issue with 'rosendale' [3] which is/will be a set of plugins for applications built on cement.  The same situation exists, in PyPi I need separate source tarbals because users need to be able to 'easy_install rosendale.some_plugin'.  In Fedora world, maintaining a single package set for 'rosendale' would be ideal and make more sense because I can do sub packages for each plugin and not have to maintain 20 different package sets.

What I would like to see is if this type of situation would lend itself to making an exception to the FPG regarding 'one source per package'.  I assume the section 'Bundling of multiple projects' [4] is relevant, though it is pretty vague.  I guess what I'm looking for is for someone with more time in the community to give some advice on this situation.  Ideally, I would like to be able to maintain a single package set for say 'cement', but with Source0 (cement), Source1 (cement.devtools), Source2 (cement.test).

Or would it be recommended to have a separate tarbal like 'cement-all-0.8.12.tar.gz' which would include all parts of the project, and use that as Source0?

Thanks for your time.

References:

[1] http://builtoncement.org
[2] http://pypi.python.org
[3]http://builtoncement.org/rosendale/1.0/doc/
[4] http://fedoraproject.org/wiki/PackagingGuidelines#Bundling_of_multiple_projects

---
derks





More information about the devel mailing list