[bitbake-devel] [PATCH 4/6] ui/crumbs/hig.py: check deploy process return value

Darren Hart dvhart at linux.intel.com
Fri Jun 8 14:56:40 UTC 2012


Hi Kang,

A couple comments below...

On 06/06/2012 02:52 AM, Kang Kai wrote:
> Update function response_cb of DeployImageDialog to get deploy process
> return value. According the return value tell user that deploy image
> successfully or not.
> 
> Signed-off-by: Kang Kai <kai.kang at windriver.com>
> ---
>  bitbake/lib/bb/ui/crumbs/hig.py |   32 +++++++++++++++++++++++++++++---
>  1 files changed, 29 insertions(+), 3 deletions(-)
> 
> diff --git a/bitbake/lib/bb/ui/crumbs/hig.py b/bitbake/lib/bb/ui/crumbs/hig.py
> index cf73145..97a3b22 100644
> --- a/bitbake/lib/bb/ui/crumbs/hig.py
> +++ b/bitbake/lib/bb/ui/crumbs/hig.py
> @@ -827,12 +827,38 @@ class DeployImageDialog (CrumbsDialog):
>  
>      def response_cb(self, dialog, response_id):
>          if response_id == gtk.RESPONSE_YES:
> +            lbl = ''
>              combo_item = self.usb_combo.get_active_text()
> -            if combo_item and combo_item != self.__dummy_usb__:
> +            if combo_item and combo_item != self.__dummy_usb__ and self.image_path:
>                  cmdline = bb.ui.crumbs.utils.which_terminal()
>                  if cmdline:
> -                    cmdline += "\"sudo dd if=" + self.image_path + " of=" + combo_item + "\""
> -                    bb.process.Popen(shlex.split(cmdline))

This should be subprocess.call()

http://docs.python.org/library/subprocess.html

> +                    tmpname = os.tmpnam()
> +                    cmdline += "\"sudo dd if=" + self.image_path + \
> +                                " of=" + combo_item + "; echo $? > " + tmpname + "\""
> +                    deploy_process = bb.process.Popen(shlex.split(cmdline))
> +                    deploy_process.wait()
> +
> +                    # if file tmpname not exists, that means there is something wrong with xterm
> +                    # user can get the error message from xterm so no more warning need.
> +                    if os.path.exists(tmpname):
> +                        tmpfile = open(tmpname)
> +                        if int(tmpfile.readline().strip()) == 0:
> +                            lbl = "<b>Deploy image successfully</b>"

"<b>Deployed image successfully.</b>"

> +                        else:
> +                            lbl = "<b>Deploy image failed</b>\nPlease try again."

"<b>Failed to deploy image.</b>"

As to "Please try again." Why would the user have any expectation of a
different result? Is there something we can tell them about the reason
for the failure?

> +                        tmpfile.close()
> +                        os.remove(tmpname)
> +            else:
> +                if not self.image_path:
> +                    lbl = "<b>No selection made</b>\nYou have not selected an image to deploy"

Missing periods.

> +                else:
> +                    lbl = "<b>No selection made</b>\nYou have not selected USB device"

Missing periods. Missing article:

"<b>No selection made.</b>\nYou have not selected a USB device."


> +            if len(lbl):
> +                crumbs_dialog = CrumbsMessageDialog(self, lbl, gtk.STOCK_DIALOG_INFO)
> +                button = crumbs_dialog.add_button("Close", gtk.RESPONSE_OK)
> +                HobButton.style_button(button)
> +                crumbs_dialog.run()
> +                crumbs_dialog.destroy()
>  
>      def update_progress_bar(self, title, fraction, status=None):
>          self.progress_bar.update(fraction)

-- 
Darren Hart
Intel Open Source Technology Center
Yocto Project - Linux Kernel




More information about the bitbake-devel mailing list