mirror of
https://github.com/rpm-software-management/tito.git
synced 2025-02-23 12:12:47 +00:00
run_command_print should behave similar to run_command
The existing implementation of `run_command_print` uses `shlex.split` to split command line arguments into an array, but it doesn't handle wildcards like `run_command`. This breaks Mock build because of failure of copying generated RPMs. This PR also adds `print_on_success` argument and unify the behavior of error handling. Reproduction: ``` bash $ tito build --test --rpm --output=artifacts/el6 --builder=tito.builder.MockBuilder --arg=mock=eng-rhel-6-candidate-x86_64 ... INFO: Results and/or logs in: /var/lib/mock/ERROR: Error running command: cp -v /home/fedora/jenkins/workspace/rcm-pulp-rpm-package/artifacts/el6/rpmbuild-pulp-rpm4f6rzL/mockoutput/*.rpm /home/fedora/jenkins/workspace/rcm-pulp-rpm-package/artifacts/el6 ```
This commit is contained in:
parent
18babd175f
commit
03b4656823
1 changed files with 25 additions and 11 deletions
|
@ -436,7 +436,7 @@ def run_command(command, print_on_success=False):
|
|||
return output
|
||||
|
||||
|
||||
def run_command_print(command):
|
||||
def run_command_print(command, print_on_success=False):
|
||||
"""
|
||||
Simliar to run_command but prints each line of output on the fly.
|
||||
"""
|
||||
|
@ -445,19 +445,25 @@ def run_command_print(command):
|
|||
env['LC_ALL'] = 'C'
|
||||
p = None
|
||||
try:
|
||||
p = subprocess.Popen(shlex.split(command),
|
||||
stdout=subprocess.PIPE, stderr=subprocess.STDOUT, env=env,
|
||||
universal_newlines=True)
|
||||
p = subprocess.Popen(command,
|
||||
stdout=subprocess.PIPE, stderr=subprocess.STDOUT, env=env,
|
||||
universal_newlines=True, shell=True)
|
||||
except OSError as e:
|
||||
status = e.errno
|
||||
output = e.strerror
|
||||
if p:
|
||||
for line in run_subprocess(p):
|
||||
line = line.rstrip('\n')
|
||||
print(line)
|
||||
output.append(line)
|
||||
print("\n"),
|
||||
status = p.poll()
|
||||
msgs = [
|
||||
"Error to run command: %s\n" % command,
|
||||
"Error code: %s\n" % e.errno,
|
||||
"Error description: %s\n" % e.strerror,
|
||||
]
|
||||
error_out(msgs, die=False)
|
||||
raise RunCommandException(command, status, "\n".join(output))
|
||||
for line in run_subprocess(p):
|
||||
line = line.rstrip('\n')
|
||||
print(line)
|
||||
output.append(line)
|
||||
print("\n")
|
||||
status = p.poll()
|
||||
if status > 0:
|
||||
msgs = [
|
||||
"Error running command: %s\n" % command,
|
||||
|
@ -466,6 +472,14 @@ def run_command_print(command):
|
|||
]
|
||||
error_out(msgs, die=False)
|
||||
raise RunCommandException(command, status, "\n".join(output))
|
||||
elif print_on_success:
|
||||
print("Command: %s\n" % command)
|
||||
print("Status code: %s\n" % status)
|
||||
print("Command output: %s\n" % output)
|
||||
else:
|
||||
debug("Command: %s\n" % command)
|
||||
debug("Status code: %s\n" % status)
|
||||
debug("Command output: %s\n" % output)
|
||||
return '\n'.join(output)
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue