Commit b339ddce authored by jim's avatar jim

Fixed windows problems

git-svn-id: http://svn.zope.org/repos/main/zc.buildout/trunk@70170 62d5b8a3-27da-0310-9561-8e5933582275
parent 5a97cd15
...@@ -66,9 +66,10 @@ class Options(dict): ...@@ -66,9 +66,10 @@ class Options(dict):
class Buildout(dict): class Buildout(dict):
def __init__(self, config_file, cloptions): def __init__(self, config_file, cloptions, windows_restart=False):
config_file = os.path.abspath(config_file) config_file = os.path.abspath(config_file)
self._config_file = config_file self._config_file = config_file
self.__windows_restart = windows_restart
if not os.path.exists(config_file): if not os.path.exists(config_file):
print 'Warning: creating', config_file print 'Warning: creating', config_file
open(config_file, 'w').write('[buildout]\nparts = \n') open(config_file, 'w').write('[buildout]\nparts = \n')
...@@ -567,6 +568,14 @@ class Buildout(dict): ...@@ -567,6 +568,14 @@ class Buildout(dict):
if not upgraded: if not upgraded:
return return
if sys.platform == 'win32' and not self.__windows_restart:
args = map(zc.buildout.easy_install._safe_arg, sys.argv)
args.insert(1, '-W')
if not __debug__:
args.insert(0, '-O')
args.insert(0, sys.executable)
os.execv(sys.executable, args)
self._logger.info("Upgraded:\n %s;\nrestarting.", self._logger.info("Upgraded:\n %s;\nrestarting.",
",\n ".join([("%s version %s" ",\n ".join([("%s version %s"
...@@ -784,15 +793,18 @@ def main(args=None): ...@@ -784,15 +793,18 @@ def main(args=None):
config_file = 'buildout.cfg' config_file = 'buildout.cfg'
verbosity = 0 verbosity = 0
options = [] options = []
windows_restart = False
while args: while args:
if args[0][0] == '-': if args[0][0] == '-':
op = orig_op = args.pop(0) op = orig_op = args.pop(0)
op = op[1:] op = op[1:]
while op and op[0] in 'vqh': while op and op[0] in 'vqhW':
if op[0] == 'v': if op[0] == 'v':
verbosity += 10 verbosity += 10
elif op[0] == 'q': elif op[0] == 'q':
verbosity -= 10 verbosity -= 10
elif op[0] == 'W':
windows_restart = True
else: else:
_help() _help()
op = op[1:] op = op[1:]
...@@ -833,7 +845,7 @@ def main(args=None): ...@@ -833,7 +845,7 @@ def main(args=None):
try: try:
try: try:
buildout = Buildout(config_file, options) buildout = Buildout(config_file, options, windows_restart)
getattr(buildout, command)(args) getattr(buildout, command)(args)
except zc.buildout.UserError, v: except zc.buildout.UserError, v:
_error(str(v)) _error(str(v))
......
...@@ -522,6 +522,7 @@ def test_suite(): ...@@ -522,6 +522,7 @@ def test_suite():
(re.compile('#!\S+python\S*'), '#!python'), (re.compile('#!\S+python\S*'), '#!python'),
(re.compile('\S+sample-(\w+)'), r'/sample-\1'), (re.compile('\S+sample-(\w+)'), r'/sample-\1'),
(re.compile('-py\d[.]\d.egg'), r'-py2.3.egg'), (re.compile('-py\d[.]\d.egg'), r'-py2.3.egg'),
(re.compile(r'\\+'), '/'),
]) ])
), ),
...@@ -559,6 +560,8 @@ def test_suite(): ...@@ -559,6 +560,8 @@ def test_suite():
'setuptools.egg'), 'setuptools.egg'),
(re.compile('zc.buildout-\S+-py\d.\d.egg'), (re.compile('zc.buildout-\S+-py\d.\d.egg'),
'zc.buildout.egg'), 'zc.buildout.egg'),
(re.compile('(\n?)- ([a-zA-Z_.-]+)-script.py\n- \\2.exe\n'),
'\\1- \\2\n'),
]), ]),
) )
)) ))
......
...@@ -57,6 +57,7 @@ def test_suite(): ...@@ -57,6 +57,7 @@ def test_suite():
(re.compile('#!\S+python\S*'), '#!python'), (re.compile('#!\S+python\S*'), '#!python'),
(re.compile('\S+sample-(\w+)'), r'/sample-\1'), (re.compile('\S+sample-(\w+)'), r'/sample-\1'),
(re.compile('-([^-]+)-py\d[.]\d.egg'), r'-py2.3.egg'), (re.compile('-([^-]+)-py\d[.]\d.egg'), r'-py2.3.egg'),
(re.compile(r'\\+'), '/'),
]) ])
), ),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment