[storm] Need packaging advice for storm.django and storm.zope

James Henstridge james at jamesh.id.au
Sat Aug 29 04:44:52 BST 2009


On Fri, Aug 28, 2009 at 11:46 PM, Michel Alexandre
Salim<michael.silvanus at gmail.com> wrote:
> On Fri, 2009-08-28 at 10:42 +0800, James Henstridge wrote:
>> On Thu, Aug 27, 2009 at 2:19 PM, Michel Alexandre
>> Salim<michael.silvanus at gmail.com> wrote:
>
>> The Ubuntu packaging keeps all these backends in the main package, and
>> suggests python-psycopg2, python-mysqldb and python-pysqlite2.  The
>> idea being that the Storm package will work without them but gain
>> functionality if they are installed.  I'm not sure how well that works
>> with RPM packaging though.
>>
> We don't have a "Suggest:" tag, unfortunately. It's been suggested
> several times but the consensus (of the RPM developers, anyway) seems to
> be against it.
>
>> If the aim is to only include parts that will work with the required
>> dependencies, you might be able to include the sqlite backend in the
>> main package since it should work with the sqlite binding in the
>> Python standard library.
>>
> Aha. The documentation still lists a dependency on sqlite2 -- I just
> noticed now that it's indeed sqlite3 only. This will simplify things.

The sqlite3 module in the standard library is a copy of pysqlite2.
The library started out separate from the Python standard library, and
continues to be developed externally with changes being merged to the
standard library for Python releases.  We use pysqlite2 in preference
to sqlite3, since if the user has installed pysqlite2 then it is
probably newer.

This is a case where a "suggests" dependency is appropriate, and if
you can't represent that I'd probably not include the pysqlite2
dependency at all.


>> > I notice that storm.django requires storm.zope, and the latter in turns
>> > require the actual zope.
>>
>> Note that the minimum requirements of storm.zope are just the
>> "zope.interface" and "transaction" packages from Zope 3 -- you don't
>> need the entire set of Zope modules.  It also has optional
>> dependencies on zope.security and zope.component (they aren't required
>> when using storm.zope with storm.django).
> Eek. So a modular packaging would have storm-zope-core and
> storm-zope-complete, and the latter being a virtual package that depends
> on whichever zope package contains zope.security and zope.component.

There aren't really any modules to separate out here so separate
packages isn't really going to work.  As with the pysqlite dependency,
I'd say that storm.zope suggests zope.component and zope.security but
requires zope.interface and transaction.  If the suggests dependencies
can't be expressed in package metadata it is probably better to leave
them out.

>
>> This point might be moot if Fedora hasn't packaged the modularised
>> Zope tree yet (it hasn't been fully packaged for Debian/Ubuntu).
> We have python-zope-interface and python-transaction . Will have to
> track down where zope.security and zope.component is.

Well, if you can't easily express the dependency then you might not
need to track them down.


>> > So the question is, if packaging modularly, is there anything else that
>> > storm.django requires beside the main storm and storm.zope? and
>> > storm.zope, apart from storm and Zope itself?
>>
>> If you want to use storm.django with PostgreSQL, you'll need to have
>> both Storm's and Django's PostgreSQL backends installed.  The same
>> goes for MySQL.  I'm not sure whether that is easy to represent in
>> your dependencies or not.
> Our Django packaging is currently monolithic, so Django comes with all
> the backends. but this strikes me as something that should be done by
> the user -- I'll make a note in a README.Fedora file.
>
> Many thanks,

No problem.  If you have further questions, please post them to the list.

James.



More information about the storm mailing list