[Checkins] SVN: zc.buildout/trunk/ Separated the eggs and
develop-eggs directories to allow eggs to be
Jim Fulton
cvs-admin at zope.org
Sat Jun 17 11:55:53 EDT 2006
Log message for revision 68707:
Separated the eggs and develop-eggs directories to allow eggs to be
shared across projects or working directories.
Changed:
U zc.buildout/trunk/eggrecipe/src/zc/recipe/egg/egg.py
U zc.buildout/trunk/src/zc/buildout/buildout.py
U zc.buildout/trunk/src/zc/buildout/buildout.txt
U zc.buildout/trunk/src/zc/buildout/testing.py
U zc.buildout/trunk/testrunnerrecipe/src/zc/recipe/testrunner/__init__.py
-=-
Modified: zc.buildout/trunk/eggrecipe/src/zc/recipe/egg/egg.py
===================================================================
--- zc.buildout/trunk/eggrecipe/src/zc/recipe/egg/egg.py 2006-06-17 15:16:18 UTC (rev 68706)
+++ zc.buildout/trunk/eggrecipe/src/zc/recipe/egg/egg.py 2006-06-17 15:55:49 UTC (rev 68707)
@@ -39,6 +39,7 @@
options['_b'] = buildout['buildout']['bin-directory']
options['_e'] = buildout['buildout']['eggs-directory']
+ options['_d'] = buildout['buildout']['develop-eggs-directory']
def install(self):
options = self.options
@@ -56,5 +57,5 @@
])
return zc.buildout.egglinker.scripts(
[distribution],
- options['_b'], [options['_e']], scripts=scripts)
+ options['_b'], [options['_d'], options['_e']], scripts=scripts)
Modified: zc.buildout/trunk/src/zc/buildout/buildout.py
===================================================================
--- zc.buildout/trunk/src/zc/buildout/buildout.py 2006-06-17 15:16:18 UTC (rev 68706)
+++ zc.buildout/trunk/src/zc/buildout/buildout.py 2006-06-17 15:55:49 UTC (rev 68707)
@@ -68,6 +68,7 @@
data = dict(buildout={
'directory': os.path.dirname(config_file),
'eggs-directory': 'eggs',
+ 'develop-eggs-directory': 'develop-eggs',
'bin-directory': 'bin',
'parts-directory': 'parts',
'installed': '.installed.cfg',
@@ -116,7 +117,7 @@
self._links = links and links.split() or ()
self._buildout_dir = options['directory']
- for name in ('bin', 'parts', 'eggs'):
+ for name in ('bin', 'parts', 'eggs', 'develop-eggs'):
d = self._buildout_path(options[name+'-directory'])
options[name+'-directory'] = d
@@ -166,12 +167,16 @@
def install(self, install_parts):
# Create buildout directories
- for name in ('bin', 'parts', 'eggs'):
+ for name in ('bin', 'parts', 'eggs', 'develop-eggs'):
d = self['buildout'][name+'-directory']
if not os.path.exists(d):
self._logger.info('Creating directory %s', d)
os.mkdir(d)
+ # Add develop-eggs directory to path so that it gets searched
+ # for eggs:
+ sys.path.insert(0, self['buildout']['develop-eggs-directory'])
+
# Build develop eggs
self._develop()
@@ -259,7 +264,7 @@
os.P_WAIT, sys.executable, sys.executable,
setup, '-q', 'develop', '-m', '-x',
'-f', ' '.join(self._links),
- '-d', self['buildout']['eggs-directory'],
+ '-d', self['buildout']['develop-eggs-directory'],
{'PYTHONPATH':
os.path.dirname(pkg_resources.__file__)},
)
@@ -269,6 +274,8 @@
def _load_recipes(self, parts):
recipes = {}
recipes_requirements = []
+ pkg_resources.working_set.add_entry(
+ self['buildout']['develop-eggs-directory'])
pkg_resources.working_set.add_entry(self['buildout']['eggs-directory'])
# Install the recipe distros
Modified: zc.buildout/trunk/src/zc/buildout/buildout.txt
===================================================================
--- zc.buildout/trunk/src/zc/buildout/buildout.txt 2006-06-17 15:16:18 UTC (rev 68706)
+++ zc.buildout/trunk/src/zc/buildout/buildout.txt 2006-06-17 15:55:49 UTC (rev 68707)
@@ -32,14 +32,15 @@
parts defined.
We have a sample buildout that has already been created for us. It
-has the absolute minimum information. We have bin, eggs and parts
-directories, a configuration file, and an .installed,cfg that contains
-informatiion about previously-installed parts:
+has the absolute minimum information. We have bin, develop-eggs, eggs
+and parts directories, a configuration file, and an .installed,cfg
+that contains informatiion about previously-installed parts:
>>> ls(sample_buildout)
- .installed.cfg
d bin
- buildout.cfg
+ d develop-eggs
d eggs
d parts
@@ -53,11 +54,20 @@
>>> ls(sample_buildout, 'eggs')
-The parts directory is initially empty:
+The develop-eggs and parts directories are initially empty:
+ >>> ls(sample_buildout, 'develop-eggs')
>>> ls(sample_buildout, 'parts')
-The parts directory provides an area where recipies can install
+The develop-eggs directory holds egg links for software being
+developed in the buildout. We separate develop-eggs and other eggs to
+allow eggs directories to be shared accross multiple buildouts. For
+example, a common developer technique is to define a common eggs
+directory in their home that all non-develop eggs are stored in. This
+allows larger buildouts to be set up much more quickly and saves disk
+space.
+
+The parts directory provides an area where recipes can install
part data. For example, if we built a custom Python, we would
install it in the part directory. Part data is stored in a
subdirectory of the parts directory with the same name as the part.
@@ -266,6 +276,7 @@
- .installed.cfg
d bin
- buildout.cfg
+ d develop-eggs
d eggs
d mystuff
d parts
@@ -313,6 +324,7 @@
- .installed.cfg
d bin
- buildout.cfg
+ d develop-eggs
d eggs
d mydata
d parts
@@ -757,6 +769,7 @@
d d1
d d2
d d3
+ d develop-eggs
- e1.cfg
d eggs
d parts
@@ -838,6 +851,7 @@
d d2
d data3
d data4
+ d develop-eggs
- e1.cfg
d eggs
d parts
@@ -917,6 +931,7 @@
d data2
d data3
d data4
+ d develop-eggs
- e1.cfg
d eggs
d parts
@@ -936,10 +951,12 @@
... [buildout]
... develop = recipes
... parts =
+ ... develop-eggs-directory = %(developbasket)s
... eggs-directory = %(basket)s
... bin-directory = %(scripts)s
... parts-directory = %(work)s
... """ % dict(
+ ... developbasket = os.path.join(alt, 'developbasket'),
... basket = os.path.join(alt, 'basket'),
... scripts = os.path.join(alt, 'scripts'),
... work = os.path.join(alt, 'work'),
@@ -949,6 +966,7 @@
buildout: Creating directory /tmp/sample-alt/scripts
buildout: Creating directory /tmp/sample-alt/work
buildout: Creating directory /tmp/sample-alt/basket
+ buildout: Creating directory /sample-alt/developbasket
buildout: Running /tmp/sample-buildout/recipes/setup.py -q develop ...
buildout: Uninstalling d4
buildout: Uninstalling d3
@@ -957,10 +975,11 @@
>>> ls(alt)
d basket
+ d developbasket
d scripts
d work
- >>> ls(alt, 'basket')
+ >>> ls(alt, 'developbasket')
- recipes.egg-link
>>> import shutil
@@ -985,15 +1004,17 @@
buildout: Creating directory /tmp/sample-alt/bin
buildout: Creating directory /tmp/sample-alt/parts
buildout: Creating directory /tmp/sample-alt/eggs
+ buildout: Creating directory /tmp/sample-alt/develop-eggs
buildout: Running /tmp/sample-buildout/recipes/setup.py -q develop ...
>>> ls(alt)
- .installed.cfg
d bin
+ d develop-eggs
d eggs
d parts
- >>> ls(alt, 'eggs')
+ >>> ls(alt, 'develop-eggs')
- recipes.egg-link
>>> import shutil
Modified: zc.buildout/trunk/src/zc/buildout/testing.py
===================================================================
--- zc.buildout/trunk/src/zc/buildout/testing.py 2006-06-17 15:16:18 UTC (rev 68706)
+++ zc.buildout/trunk/src/zc/buildout/testing.py 2006-06-17 15:55:49 UTC (rev 68707)
@@ -54,7 +54,7 @@
def buildoutSetUp(test):
sample = tempfile.mkdtemp('sample-buildout')
- for name in ('bin', 'eggs', 'parts'):
+ for name in ('bin', 'eggs', 'develop-eggs', 'parts'):
os.mkdir(os.path.join(sample, name))
# make sure we can import zc.buildout and setuptools
Modified: zc.buildout/trunk/testrunnerrecipe/src/zc/recipe/testrunner/__init__.py
===================================================================
--- zc.buildout/trunk/testrunnerrecipe/src/zc/recipe/testrunner/__init__.py 2006-06-17 15:16:18 UTC (rev 68706)
+++ zc.buildout/trunk/testrunnerrecipe/src/zc/recipe/testrunner/__init__.py 2006-06-17 15:55:49 UTC (rev 68707)
@@ -29,6 +29,7 @@
options.get('script', self.name),
)
options['_e'] = buildout['buildout']['eggs-directory']
+ options['_d'] = buildout['buildout']['develop-eggs-directory']
def install(self):
@@ -39,10 +40,11 @@
]
path = zc.buildout.egglinker.path(
distributions+['zope.testing'],
- [self.options['_e']],
+ [self.options['_d'], self.options['_e']],
)
- locations = [zc.buildout.egglinker.location(distribution,
- [self.options['_e']])
+ locations = [zc.buildout.egglinker.location(
+ distribution,
+ [self.options['_d'], self.options['_e']])
for distribution in distributions]
script = self.options['script']
open(script, 'w').write(tests_template % dict(
More information about the Checkins
mailing list