[Grok-dev] grokproject, grok tarball and the i18n part
Maurits van Rees
m.van.rees at zestsoftware.nl
Mon May 5 20:39:46 EDT 2008
First some background, later some problems.
grokproject trunk currently checks if grok is already installed. If
not, it downloads a tarball containing all eggs that grok needs and
installs that. Should that fail (untested on Windows for example) the
normal buildout is run which should get the eggs in the normal way.
The idea behind using a tarball is that grok needs a lot of eggs and
those eggs are fetched from several servers. If one of those servers
is down, users will not be able to install grok and being disappointed
may not visit our friendly caveman ever again. We want to avoid that.
This behaviour is done in the post hook of the grok paster template.
This helps for Dave Developer who creates his first grok project. But
Joe User who makes a subversion checkout of this grokproject generated
by Dave does not benefit from this. So the idea is to remove this
logic from grokproject and move it into a recipe.
This is the recipe:
This is the grokproject branch that uses it:
Generated grokproject then have this part added:
recipe = z3c.recipe.eggbasket
eggs = grok
url = http://grok.zope.org/releaseinfo/grok-eggs-0.12.tgz
It does not work perfectly though. When running the buildout of a
generated grokproject, all parts are initialized. This means that all
eggs responsible for each part are installed, including their
dependencies. This is before the new eggbasket recipe even has a
chance of installing any eggs.
For most parts it is just a few eggs that are being installed this
way. But the i18n part is a different story. After the recipes/parts
are initialized, already 78 eggs of about 40 MB in total have been
installed. By far the most of these are because of dependencies of
lovely.recipe:i18n. For reference, when the eggbasket recipe is done,
106 eggs of about 70 MB total are installed.
As much as I like having an i18n part by default in the generated
grokprojects, I do *not* like the fact that it installs so many eggs
even before its install method is called. Is it an option to remove
this part? Is there a recipe that does the same but with less
There are workarounds:
- Calling "bin/buildout install eggbasket" before doing a complete
buildout. grokproject should be able to do that easily enough; and
for end-users this could be documented.
- Mess around with bootstrap.py to run that install step immediately.
Maurits van Rees | http://maurits.vanrees.org/
Work | http://zestsoftware.nl/
"This is your day, don't let them take it away." [Barlow Girl]
More information about the Grok-dev