Skip to content
Snippets Groups Projects
Commit 010bfed4 authored by Nathan Wilcox's avatar Nathan Wilcox
Browse files

DEV-44838 - This is an attempt at the minimal possible change to fix the quoting bug on windows.

This commit is untested!  The simplest approach to testing is to push into a repo watched by parabuild.

Also, develop.py could be improved to use subprocess consistently across all platforms.  Doing so could simplify the code, but until I understand how to test it better, I'm going to leave it alone.
parent 5d2167c6
Branches
Tags
No related merge requests found
...@@ -41,6 +41,7 @@ ...@@ -41,6 +41,7 @@
import socket import socket
import sys import sys
import commands import commands
import subprocess
class CommandError(Exception): class CommandError(Exception):
pass pass
...@@ -576,16 +577,20 @@ def get_build_cmd(self): ...@@ -576,16 +577,20 @@ def get_build_cmd(self):
return "buildconsole %(prj)s.sln /build /cfg=%(cfg)s" % {'prj': self.project_name, 'cfg': config} return "buildconsole %(prj)s.sln /build /cfg=%(cfg)s" % {'prj': self.project_name, 'cfg': config}
# devenv.com is CLI friendly, devenv.exe... not so much. # devenv.com is CLI friendly, devenv.exe... not so much.
return ('"%sdevenv.com" %s.sln /build %s' % executable = '%sdevenv.com' % (self.find_visual_studio(),)
(self.find_visual_studio(), self.project_name, self.build_type)) cmd = ('"%s" %s.sln /build %s' %
(executable, self.project_name, self.build_type))
return (executable, cmd)
#return ('devenv.com %s.sln /build %s' % #return ('devenv.com %s.sln /build %s' %
# (self.project_name, self.build_type)) # (self.project_name, self.build_type))
def run(self, command, name=None, retry_on=None, retries=1): def run(self, command, name=None, retry_on=None, retries=1):
'''Run a program. If the program fails, raise an exception.''' '''Run a program. If the program fails, raise an exception.'''
assert name is not None, 'On windows an executable path must be given in name.'
while retries: while retries:
retries = retries - 1 retries = retries - 1
print "develop.py tries to run:", command print "develop.py tries to run:", command
ret = subprocess.call(command, executable=name)
ret = os.system(command) ret = os.system(command)
print "got ret", ret, "from", command print "got ret", ret, "from", command
if ret: if ret:
...@@ -617,18 +622,19 @@ def run_vstool(self): ...@@ -617,18 +622,19 @@ def run_vstool(self):
if prev_build == self.build_type: if prev_build == self.build_type:
# Only run vstool if the build type has changed. # Only run vstool if the build type has changed.
continue continue
vstool_cmd = (os.path.join('tools','vstool','VSTool.exe') + executable = os.path.join('tools','vstool','VSTool.exe')
vstool_cmd = (executable +
' --solution ' + ' --solution ' +
os.path.join(build_dir,'SecondLife.sln') + os.path.join(build_dir,'SecondLife.sln') +
' --config ' + self.build_type + ' --config ' + self.build_type +
' --startup secondlife-bin') ' --startup secondlife-bin')
print 'Running %r in %r' % (vstool_cmd, getcwd()) print 'Running %r in %r' % (vstool_cmd, getcwd())
self.run(vstool_cmd) self.run(vstool_cmd, name=executable)
print >> open(stamp, 'w'), self.build_type print >> open(stamp, 'w'), self.build_type
def run_build(self, opts, targets): def run_build(self, opts, targets):
cwd = getcwd() cwd = getcwd()
build_cmd = self.get_build_cmd() executable, build_cmd = self.get_build_cmd()
for d in self.build_dirs(): for d in self.build_dirs():
try: try:
...@@ -637,11 +643,11 @@ def run_build(self, opts, targets): ...@@ -637,11 +643,11 @@ def run_build(self, opts, targets):
for t in targets: for t in targets:
cmd = '%s /project %s %s' % (build_cmd, t, ' '.join(opts)) cmd = '%s /project %s %s' % (build_cmd, t, ' '.join(opts))
print 'Running %r in %r' % (cmd, d) print 'Running %r in %r' % (cmd, d)
self.run(cmd, retry_on=4, retries=3) self.run(cmd, name=executable, retry_on=4, retries=3)
else: else:
cmd = '%s %s' % (build_cmd, ' '.join(opts)) cmd = '%s %s' % (build_cmd, ' '.join(opts))
print 'Running %r in %r' % (cmd, d) print 'Running %r in %r' % (cmd, d)
self.run(cmd, retry_on=4, retries=3) self.run(cmd, name=executable, retry_on=4, retries=3)
finally: finally:
os.chdir(cwd) os.chdir(cwd)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment