Commit 97254d56 authored by Jim Fulton's avatar Jim Fulton

Fixed windows problems

parent 92fd30a9
......@@ -66,9 +66,10 @@ class Options(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)
self._config_file = config_file
self.__windows_restart = windows_restart
if not os.path.exists(config_file):
print 'Warning: creating', config_file
open(config_file, 'w').write('[buildout]\nparts = \n')
......@@ -568,6 +569,14 @@ class Buildout(dict):
if not upgraded:
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.",
",\n ".join([("%s version %s"
% (dist.project_name, dist.version)
......@@ -784,15 +793,18 @@ def main(args=None):
config_file = 'buildout.cfg'
verbosity = 0
options = []
windows_restart = False
while args:
if args[0][0] == '-':
op = orig_op = args.pop(0)
op = op[1:]
while op and op[0] in 'vqh':
while op and op[0] in 'vqhW':
if op[0] == 'v':
verbosity += 10
elif op[0] == 'q':
verbosity -= 10
elif op[0] == 'W':
windows_restart = True
else:
_help()
op = op[1:]
......@@ -833,7 +845,7 @@ def main(args=None):
try:
try:
buildout = Buildout(config_file, options)
buildout = Buildout(config_file, options, windows_restart)
getattr(buildout, command)(args)
except zc.buildout.UserError, v:
_error(str(v))
......
......@@ -522,6 +522,7 @@ def test_suite():
(re.compile('#!\S+python\S*'), '#!python'),
(re.compile('\S+sample-(\w+)'), r'/sample-\1'),
(re.compile('-py\d[.]\d.egg'), r'-py2.3.egg'),
(re.compile(r'\\+'), '/'),
])
),
......@@ -559,6 +560,8 @@ def test_suite():
'setuptools.egg'),
(re.compile('zc.buildout-\S+-py\d.\d.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():
(re.compile('#!\S+python\S*'), '#!python'),
(re.compile('\S+sample-(\w+)'), r'/sample-\1'),
(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