[rhel7/master] Return program output as a string instead of a list
Radek Vykydal
rvykydal at redhat.com
Thu Jan 16 15:34:49 UTC 2014
Ack.
On 01/16/2014 04:28 PM, David Shea wrote:
> commit dabc044dbde7d369a2e2007d7e384a6c912b2e22 changed the behavior of
> iutil.exec* so that the output of the command was returned as a list
> instead of a string. Fix that and rename some variables in _run_program
> so it's more clear which type of output is being used where.
>
> Revert ef9f31dc0ac47ce9568d94b5788c3ad82e5f851f since it is no longer
> necessary.
>
> Resolves: rhbz#1054142
> ---
> pyanaconda/bootloader.py | 4 ++--
> pyanaconda/iutil.py | 16 ++++++++--------
> 2 files changed, 10 insertions(+), 10 deletions(-)
>
> diff --git a/pyanaconda/bootloader.py b/pyanaconda/bootloader.py
> index cd0b24e..93241f6 100644
> --- a/pyanaconda/bootloader.py
> +++ b/pyanaconda/bootloader.py
> @@ -2091,14 +2091,14 @@ class ZIPL(BootLoader):
> buf = iutil.execWithCapture("zipl", [],
> root=ROOT_PATH,
> fatal=True)
> - for line in buf:
> + for line in buf.splitlines():
> if line.startswith("Preparing boot device: "):
> # Output here may look like:
> # Preparing boot device: dasdb (0200).
> # Preparing boot device: dasdl.
> # We want to extract the device name and pass that.
> name = re.sub(r".+?: ", "", line)
> - self.stage1_name = re.sub(r"(\s\(.+\))?\.$", "", name.strip())
> + self.stage1_name = re.sub(r"(\s\(.+\))?\.$", "", name)
>
> if not self.stage1_name:
> raise BootLoaderError("could not find IPL device")
> diff --git a/pyanaconda/iutil.py b/pyanaconda/iutil.py
> index 421fbe9..4c1995b 100644
> --- a/pyanaconda/iutil.py
> +++ b/pyanaconda/iutil.py
> @@ -81,16 +81,16 @@ def _run_program(argv, root='/', stdin=None, stdout=None, env_prune=None, log_ou
> stderr=subprocess.STDOUT,
> preexec_fn=chroot, cwd=root, env=env)
>
> - out = proc.communicate()[0]
> - if out:
> + output_string = proc.communicate()[0]
> + if output_string:
> if binary_output:
> - out = [out]
> + output_lines = [output_string]
> else:
> - if out[-1] != "\n":
> - out = out + "\n"
> - out = out.splitlines(True)
> + if output_string[-1] != "\n":
> + output_string = output_string + "\n"
> + output_lines = output_string.splitlines(True)
>
> - for line in out:
> + for line in output_lines:
> if log_output:
> program_log.info(line.strip())
>
> @@ -103,7 +103,7 @@ def _run_program(argv, root='/', stdin=None, stdout=None, env_prune=None, log_ou
>
> program_log.debug("Return code: %d" % proc.returncode)
>
> - return (proc.returncode, out)
> + return (proc.returncode, output_string)
>
> def execWithRedirect(command, argv, stdin=None, stdout=None,
> stderr=None, root='/', env_prune=[], log_output=True, binary_output=False):
More information about the anaconda-patches
mailing list