[Checkins] SVN: zc.buildout/branches/debug/src/zc/buildout/
checkpointing
Jim Fulton
jim at zope.com
Wed Dec 6 07:38:17 EST 2006
Log message for revision 71434:
checkpointing
Changed:
U zc.buildout/branches/debug/src/zc/buildout/buildout.py
U zc.buildout/branches/debug/src/zc/buildout/tests.py
-=-
Modified: zc.buildout/branches/debug/src/zc/buildout/buildout.py
===================================================================
--- zc.buildout/branches/debug/src/zc/buildout/buildout.py 2006-12-06 12:37:21 UTC (rev 71433)
+++ zc.buildout/branches/debug/src/zc/buildout/buildout.py 2006-12-06 12:38:17 UTC (rev 71434)
@@ -247,16 +247,18 @@
continue
# ununstall part
- self._logger.info('Uninstalling %s', part)
+ self._logger.info('Uninstalling waaa %s', part)
# run uinstall recipe
recipe, entry = _recipe(installed_part_options[part])
+ print '?', recipe, entry
try:
- uninstaller = pkg_resources.load_entry_point(
- recipe, 'zc.buildout.uninstall', entry)
+ uninstaller = _install_and_load(
+ recipe, 'zc.buildout.ununstall', entry, self)
self._logger.info('Running uninstall recipe')
uninstaller(part, installed_part_options[part])
except (ImportError, pkg_resources.DistributionNotFound):
+ print 'could not load'
# no uninstall recipe registered
pass
@@ -620,6 +622,32 @@
def __iter__(self):
return iter(self._raw)
+
+def _install_and_load(spec, group, entry, buildout):
+ req = pkg_resources.Requirement.parse(spec)
+
+ buildout_options = buildout['buildout']
+ if pkg_resources.working_set.find(req) is None:
+ if buildout_options['offline'] == 'true':
+ dest = None
+ path = [buildout_options['develop-eggs-directory'],
+ buildout_options['eggs-directory'],
+ ]
+ else:
+ dest = buildout_options['eggs-directory']
+ path = [buildout_options['develop-eggs-directory']]
+
+ zc.buildout.easy_install.install(
+ [spec], dest,
+ links=buildout._links,
+ index=buildout_options.get('index'),
+ path=path,
+ working_set=pkg_resources.working_set,
+ )
+
+ return pkg_resources.load_entry_point(
+ req.project_name, group, entry)
+
class Options(UserDict.DictMixin):
def __init__(self, buildout, section, data):
@@ -638,29 +666,8 @@
return
reqs, entry = _recipe(self._data)
- req = pkg_resources.Requirement.parse(reqs)
buildout = self.buildout
-
- if pkg_resources.working_set.find(req) is None:
- offline = buildout['buildout']['offline'] == 'true'
- if offline:
- dest = None
- path = [buildout['buildout']['develop-eggs-directory'],
- buildout['buildout']['eggs-directory'],
- ]
- else:
- dest = buildout['buildout']['eggs-directory']
- path = [buildout['buildout']['develop-eggs-directory']]
- zc.buildout.easy_install.install(
- [reqs], dest,
- links=buildout._links,
- index=buildout['buildout'].get('index'),
- path=path,
- working_set=pkg_resources.working_set,
- )
-
- recipe_class = pkg_resources.load_entry_point(
- req.project_name, 'zc.buildout', entry)
+ recipe_class = _install_and_load(reqs, 'zc.buildout', entry, buildout)
self.recipe = recipe_class(buildout, self.name, self)
buildout._parts.append(self.name)
Modified: zc.buildout/branches/debug/src/zc/buildout/tests.py
===================================================================
--- zc.buildout/branches/debug/src/zc/buildout/tests.py 2006-12-06 12:37:21 UTC (rev 71433)
+++ zc.buildout/branches/debug/src/zc/buildout/tests.py 2006-12-06 12:38:17 UTC (rev 71434)
@@ -746,7 +746,70 @@
define = X,Y
"""
+
+def uninstall_recipes_used_for_removal():
+ """
+Uninstall recipes need to be called when a part is removed too:
+
+ >>> mkdir("recipes")
+ >>> write("recipes", "setup.py",
+ ... '''
+ ... from setuptools import setup
+ ... setup(name='recipes',
+ ... entry_points={
+ ... 'zc.buildout': ["demo=demo:Install"],
+ ... 'zc.buildout.uninstall': ["demo=demo:uninstall"],
+ ... })
+ ... ''')
+
+ >>> write("recipes", "demo.py",
+ ... '''
+ ... class Install:
+ ... def __init__(*args): pass
+ ... def install(self):
+ ... print 'installing'
+ ... return ()
+ ... def uninstall(name, options): print 'uninstalling'
+ ... ''')
+
+ >>> write('buildout.cfg', '''
+ ... [buildout]
+ ... develop = recipes
+ ... parts = demo
+ ... [demo]
+ ... recipe = recipes:demo
+ ... ''')
+
+ >>> print system(join('bin', 'buildout')),
+ buildout: Develop: /tmp/tmpnTSVbq/_TEST_/sample-buildout/recipes
+ buildout: Installing demo
+ installing
+
+
+ >>> write('buildout.cfg', '''
+ ... [buildout]
+ ... develop = recipes
+ ... parts = demo
+ ... [demo]
+ ... recipe = recipes:demo
+ ... x = 1
+ ... ''')
+
+ >>> print system(join('bin', 'buildout')),
+
+
+ >>> write('buildout.cfg', '''
+ ... [buildout]
+ ... develop = recipes
+ ... parts =
+ ... ''')
+
+ >>> print system(join('bin', 'buildout')),
+
+"""
+
+######################################################################
def create_sample_eggs(test, executable=sys.executable):
write = test.globs['write']
More information about the Checkins
mailing list