diff --git a/tools/exec_util.py b/tools/exec_util.py index 2692ed284..522f89d2f 100644 --- a/tools/exec_util.py +++ b/tools/exec_util.py @@ -5,14 +5,20 @@ from subprocess import Popen, PIPE import sys -def exec_cmd(cmd, path): +def exec_cmd(cmd, path, input_file=None): """ Execute the specified command and return the result. """ out = '' err = '' parts = cmd.split() try: - process = Popen(parts, cwd=path, stdout=PIPE, stderr=PIPE, - shell=(sys.platform == 'win32')) + if not input_file: + process = Popen(parts, cwd=path, stdout=PIPE, stderr=PIPE, + shell=(sys.platform == 'win32')) + else: + with open(input_file, 'rb') as f: + process = Popen(parts, cwd=path, stdout=PIPE, stderr=PIPE, + stdin=f, + shell=(sys.platform == 'win32')) out, err = process.communicate() except IOError, (errno, strerror): raise diff --git a/tools/patch_updater.py b/tools/patch_updater.py index a56e1e453..595d76a64 100644 --- a/tools/patch_updater.py +++ b/tools/patch_updater.py @@ -104,7 +104,7 @@ for patch in patches: # Apply the patch file. msg('Applying patch to %s' % patch_root_abs) - result = exec_cmd('patch -p0 < %s' % patch_file, patch_root_abs) + result = exec_cmd('patch -p0', patch_root_abs, patch_file) if result['err'] != '': raise Exception('Failed to apply patch file: %s' % result['err']) sys.stdout.write(result['out']) @@ -117,12 +117,14 @@ for patch in patches: msg('Saving changes to %s' % patch_file) patch_paths_str = ' '.join(patch_paths) if src_is_git: - cmd = 'git diff --no-prefix --relative %s > %s' % \ - (patch_paths_str, patch_file) + cmd = 'git diff --no-prefix --relative %s' % patch_paths_str else: - cmd = 'svn diff %s > %s' % (patch_paths_str, patch_file) + cmd = 'svn diff %s' % patch_paths_str result = exec_cmd(cmd, patch_root_abs) if result['err'] != '' and result['err'].find('warning:') != 0: raise Exception('Failed to create patch file: %s' % result['err']) + f = open(patch_file, 'wb') + f.write(result['out']) + f.close() else: raise Exception('Patch file does not exist: %s' % patch_file)