diff --git a/slapos/grid/utils.py b/slapos/grid/utils.py index 098d0fbe447992ce7ba1a309df9e932a4c71bb61..fd2365abe440c0a8da074b0053d152a91c6de84b 100644 --- a/slapos/grid/utils.py +++ b/slapos/grid/utils.py @@ -228,14 +228,26 @@ def bootstrapBuildout(path, buildout=None, gid = stat_info.st_gid invocation_list = [sys.executable, '-S'] + kw = dict() if buildout is not None: invocation_list.append(buildout) + invocation_list.extend(additional_buildout_parametr_list) else: - logger.warning('Using old style bootstrap of included bootstrap file. ' - 'Consider setting buildout binary location.') - invocation_list.append(pkg_resources.resource_filename(__name__, - 'zc.buildout-bootstap.py')) - invocation_list.extend(additional_buildout_parametr_list) + try: + import zc.buildout + except ImportError: + logger.warning('Using old style bootstrap of included bootstrap file. ' + 'Consider setting buildout binary location.') + invocation_list.append(pkg_resources.resource_filename(__name__, + 'zc.buildout-bootstap.py')) + invocation_list.extend(additional_buildout_parametr_list) + else: + # buildout is importable, so use this one + invocation_list.extend(["-c", "import sys ; sys.path=" + str(sys.path) + + " ; import zc.buildout.buildout ; sys.argv[1:1]=" + \ + repr(additional_buildout_parametr_list + ['bootstrap']) + " ; " + "zc.buildout.buildout.main()"]) + if buildout is not None: invocation_list.append('bootstrap') try: @@ -243,7 +255,6 @@ def bootstrapBuildout(path, buildout=None, logger.debug('Set umask from %03o to %03o' % (umask, SAFE_UMASK)) logger.debug('Invoking: %r in directory %r' % (' '.join(invocation_list), path)) - kw = dict() if not console: kw.update(stdout=subprocess.PIPE, stderr=subprocess.STDOUT) process_handler = SlapPopen(invocation_list,