Hob: some fixes
cover Hob: some fixes
Here are some fixes for Hob:
- lower the limitation of PyGTK so Ubuntu 10.04 can still use Hob
- we will continue to change Hob, add versions for compatibility check
- some special chars can be shown as markup, replace them with escape chars
& -> &
< -> <
> -> >
and so onThe following changes since commit de4cdfd6bc1280ac7ac0559b87734d26294ef773:
documentation/kernel-manual/kernel-how-to.xml: Updated to kernel 3.4 (2012-05-31 21:16:55 +0100)
are available in the git repository at:
git://git.pokylinux.org/poky-contrib shane/newproxy
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=shane/newproxy
Shane Wang (3):
Hob: lower the limitation for PyGTK
Hob: add versions for compatibility check between Hob and templates
Hob: Interpret some special characters for label markup
bitbake/lib/bb/ui/crumbs/builder.py | 27 +++++++++++++++++++++++---- bitbake/lib/bb/ui/crumbs/template.py | 17 ++++++++++++++++- bitbake/lib/bb/ui/hob.py | 2 +- 3 files changed, 40 insertions(+), 6 deletions(-)
Signature · 1 line
1.7.6
PATCH 1/3 Hob: lower the limitation for PyGTK
--- bitbake/lib/bb/ui/hob.py | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
bitbake/lib/bb/ui/hob.py +1 -1
@@ -30,7 +30,7 @@ try: pygtk.require('2.0') # to be certain we don't have gtk+ 1.x !?! gtkver = gtk.gtk_version pygtkver = gtk.pygtk_version - if gtkver < (2, 20, 0) or pygtkver < (2, 22, 0): + if gtkver < (2, 20, 0) or pygtkver < (2, 21, 0): sys.exit("%s,\nYou have Gtk+ %s and PyGtk %s." % (requirements, ".".join(map(str, gtkver)), ".".join(map(str, pygtkver))))
Signature · 1 line
1.7.6
PATCH 2/3 Hob: add versions for compatibility check between Hob and templates
If a user uses a very old version of Hob and does some work, later on he/she upgrade to the latest version of Hob, because Hob may change the settings (add more config option into the Adv. Settings dialog or remove some), then the old templates are not loadable and workable for the new Hob.
Even though the user hasn't save any template before, the Hob could remember the settings between Hob sessions as a default template, (Remember we have a bug to ask Hob remember between sessions?), the new Hob will also load the default template.
By adding versions, we can easily to fix the issue. If the versions don't match, Hob will remove the old default template first and initiate a new build, which has very very little impact on the user. (Just can't remember from the previous session after the user upgrades to a new and incompatible Hob)
[Yocto #2492]
--- bitbake/lib/bb/ui/crumbs/builder.py | 14 ++++++++++++-- bitbake/lib/bb/ui/crumbs/template.py | 17 ++++++++++++++++- 2 files changed, 28 insertions(+), 3 deletions(-)
bitbake/lib/bb/ui/crumbs/builder.py +12 -2
@@ -40,6 +40,8 @@ from bb.ui.crumbs.hig import CrumbsMessageDialog, ImageSelectionDialog, \ from bb.ui.crumbs.persistenttooltip import PersistentTooltip import bb.ui.crumbs.utils +hobVer = 20120530 + class Configuration: '''Represents the data structure of configuration.'''
@@ -222,6 +224,7 @@ class Configuration: self.split_proxy("cvs", template.getVar("CVS_PROXY_HOST") + ":" + template.getVar("CVS_PROXY_PORT")) def save(self, template, defaults=False): + template.setVar("VERSION", "%s" % hobVer) # bblayers.conf template.setVar("BBLAYERS", " ".join(self.layers)) # local.conf
@@ -468,7 +471,7 @@ class Builder(gtk.Window): def initiate_new_build_async(self): self.switch_page(self.MACHINE_SELECTION) - if self.load_template(TemplateMgr.convert_to_template_pathfilename("default", ".hob/")) == None: + if self.load_template(TemplateMgr.convert_to_template_pathfilename("default", ".hob/")) == False: self.handler.init_cooker() self.handler.set_extra_inherit("image_types") self.handler.generate_configuration()
@@ -537,9 +540,16 @@ class Builder(gtk.Window): def load_template(self, path): if not os.path.isfile(path): - return None + return False self.template = TemplateMgr() + # check compatibility + tempVer = self.template.getVersion(path) + if not tempVer or int(tempVer) < hobVer: + self.template.destroy() + self.template = None + return False + try: self.template.load(path) self.configuration.load(self.template)
bitbake/lib/bb/ui/crumbs/template.py +16 -1
@@ -101,7 +101,19 @@ class HobTemplateFile(ConfigFile): return self.dictionary[var] else: return "" - + + def getVersion(self): + contents = ConfigFile.readFile(self) + + pattern = "^\s*(\S+)\s*=\s*(\".*?\")" + + for line in contents: + match = re.search(pattern, line) + if match: + if match.group(1) == "VERSION": + return match.group(2).strip('"') + return None + def load(self): contents = ConfigFile.readFile(self) self.dictionary.clear()
@@ -174,6 +186,9 @@ class TemplateMgr(gobject.GObject): self.image_bb.save() self.template_hob.save() + def getVersion(self, path): + return HobTemplateFile(path).getVersion() + def load(self, path): self.template_hob = HobTemplateFile(path) self.dictionary = self.template_hob.load()
Signature · 1 line
1.7.6
PATCH 3/3 Hob: Interpret some special characters for label markup
In reply to Shane WangInterpret some special characters for label markup, such as &, <, >, etc. Otherwise, the message dialog can't show them, and worsely, it makes the whole message blank.
[Yocto #2492]
--- bitbake/lib/bb/ui/crumbs/builder.py | 13 +++++++++++-- 1 files changed, 11 insertions(+), 2 deletions(-)
bitbake/lib/bb/ui/crumbs/builder.py +11 -2
@@ -374,6 +374,15 @@ class Builder(gtk.Window): END_NOOP : None, } + @classmethod + def interpret_markup(cls, msg): + msg = msg.replace('&', '&') + msg = msg.replace('<', '<') + msg = msg.replace('>', '>') + msg = msg.replace('"', '"') + msg = msg.replace("'", "´") + return msg + def __init__(self, hobHandler, recipe_model, package_model): super(Builder, self).__init__()
@@ -729,7 +738,7 @@ class Builder(gtk.Window): def show_error_dialog(self, msg): lbl = "<b>Error</b>\n" - lbl = lbl + "%s\n\n" % msg + lbl = lbl + "%s\n\n" % Builder.interpret_markup(msg) dialog = CrumbsMessageDialog(self, lbl, gtk.STOCK_DIALOG_ERROR) button = dialog.add_button("Close", gtk.RESPONSE_OK) HobButton.style_button(button)
@@ -909,7 +918,7 @@ class Builder(gtk.Window): self.build_failed() def handler_no_provider_cb(self, running_build, msg): - dialog = CrumbsMessageDialog(self, msg, gtk.STOCK_DIALOG_INFO) + dialog = CrumbsMessageDialog(self, Builder.interpret_markup(msg), gtk.STOCK_DIALOG_INFO) button = dialog.add_button("Close", gtk.RESPONSE_OK) HobButton.style_button(button) dialog.run()
Signature · 1 line
1.7.6
Richard Purdie
AppliedQuoted 13 lines · Shane Wang
Here are some fixes for Hob:
- lower the limitation of PyGTK so Ubuntu 10.04 can still use Hob
- we will continue to change Hob, add versions for compatibility check
- some special chars can be shown as markup, replace them with escape chars& -> & < -> < > -> > and so onThe following changes since commit
de4cdfd6bc1280ac7ac0559b87734d26294ef773:
documentation/kernel-manual/kernel-how-to.xml: Updated to kernel 3.4 (2012-05-31 21:16:55 +0100)
Quoted 8 lines
are available in the git repository at:
git://git.pokylinux.org/poky-contribshane/newproxy
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=shane/newproxyShane Wang (3):
Hob: lower the limitation for PyGTK
Hob: add versions for compatibility check between Hob and templates
Hob: Interpret some special characters for label markup
Merged to master, thanks.
Richard