[Kimchi-devel] [PATCH 1/2] bug fix: Display update progress on real time
Rodrigo Trujillo
rodrigo.trujillo at linux.vnet.ibm.com
Tue Mar 25 18:03:44 UTC 2014
Reviewed-by: Rodrigo Trujillo <rodrigo.trujillo at linux.vnet.ibm.com>
On 03/24/2014 03:33 PM, Aline Manera wrote:
> From: Aline Manera <alinefm at br.ibm.com>
>
> When updating the system, the user should be able to see the progress to know
> what is being done in the system.
>
> stdout.read() will wait until get the completed output to return, ie, the user
> will see the progress only when the update finishs.
> So use stdout.readline() to read line by line and display the info to
> the user.
>
> Signed-off-by: Aline Manera <alinefm at br.ibm.com>
> ---
> src/kimchi/swupdate.py | 16 +++++++++++-----
> 1 file changed, 11 insertions(+), 5 deletions(-)
>
> diff --git a/src/kimchi/swupdate.py b/src/kimchi/swupdate.py
> index 3238e44..356ec52 100644
> --- a/src/kimchi/swupdate.py
> +++ b/src/kimchi/swupdate.py
> @@ -112,21 +112,27 @@ class SoftwareUpdate(object):
> """
> Execute the update
> """
> + # reset messages
> + cb('')
> +
> cmd = self._pkg_mnger.update_cmd
> proc = subprocess.Popen(cmd, stdout=subprocess.PIPE,
> stderr=subprocess.PIPE)
> msgs = []
> while proc.poll() is None:
> - msgs.append(proc.stdout.read())
> - cb('\n'.join(msgs))
> + msgs.append(proc.stdout.readline())
> + cb(''.join(msgs))
> time.sleep(0.5)
>
> + # read the final output lines
> + msgs.extend(proc.stdout.readlines())
> +
> retcode = proc.poll()
> if retcode == 0:
> - return cb('\n'.join(msgs), True)
> + return cb(''.join(msgs), True)
>
> - msgs.append(proc.stderr.read())
> - return cb('\n'.join(msgs), False)
> + msgs.extend(proc.stderr.readlines())
> + return cb(''.join(msgs), False)
>
>
> class YumUpdate(object):
More information about the Kimchi-devel
mailing list