diff options
| author | Marius Avram <marius.avram@intel.com> | 2014-03-25 15:02:35 +0200 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2014-03-25 13:26:55 +0000 |
| commit | 41ed4123a687f77a2042cf50d89652639075f869 (patch) | |
| tree | 9b935cfcc7ee24974bc5b731eaa94423498e9e3b /bitbake/lib/bb/ui/crumbs/hobeventhandler.py | |
| parent | 22af8031cdb3090330c5c4c965855963e24a3ba2 (diff) | |
| download | poky-41ed4123a687f77a2042cf50d89652639075f869.tar.gz | |
bitbake: hob: fix set_extra_setting function
The function is used to save additional variables in the configuration file
when the user adds a new (key, value) pair from the Settings->Others. There
was a problem though when the function was trying to retrieve an older
instance of EXTRA_SETTINGS from the configuration file. Sometimes its value
was returned as a dictionary and sometimes a string, which caused a crash when
calling ast.literal_eval(). The reason of the problem must be a change in
bitbake's parsing system. The changes will fix this issues.
While analysing this problem I discovered that the variables were not saved
properly in the configuration file after consecutive changes to Settings->Others
because of the way saveConfigurationVar() from cooker.py works. This patch
will also solve this issue.
[YOCTO #5989]
(Bitbake rev: bdbcd8866104c315fc9da631407d4280433dbfde)
Signed-off-by: Marius Avram <marius.avram@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb/ui/crumbs/hobeventhandler.py')
| -rw-r--r-- | bitbake/lib/bb/ui/crumbs/hobeventhandler.py | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/bitbake/lib/bb/ui/crumbs/hobeventhandler.py b/bitbake/lib/bb/ui/crumbs/hobeventhandler.py index 73d5f98c39..890e05fa02 100644 --- a/bitbake/lib/bb/ui/crumbs/hobeventhandler.py +++ b/bitbake/lib/bb/ui/crumbs/hobeventhandler.py | |||
| @@ -359,20 +359,32 @@ class HobHandler(gobject.GObject): | |||
| 359 | self.set_var_in_file("EXTRA_SETTING", extra_setting, "local.conf") | 359 | self.set_var_in_file("EXTRA_SETTING", extra_setting, "local.conf") |
| 360 | 360 | ||
| 361 | def set_extra_config(self, extra_setting): | 361 | def set_extra_config(self, extra_setting): |
| 362 | old_extra_setting = ast.literal_eval(self.runCommand(["getVariable", "EXTRA_SETTING"]) or "{}") | 362 | old_extra_setting = self.runCommand(["getVariable", "EXTRA_SETTING"]) or {} |
| 363 | if extra_setting: | 363 | old_extra_setting = str(old_extra_setting) |
| 364 | self.set_var_in_file("EXTRA_SETTING", extra_setting, "local.conf") | 364 | |
| 365 | else: | 365 | old_extra_setting = ast.literal_eval(old_extra_setting) |
| 366 | self.remove_var_from_file("EXTRA_SETTING") | 366 | if not type(old_extra_setting) == dict: |
| 367 | old_extra_setting = {} | ||
| 368 | |||
| 369 | # settings not changed | ||
| 370 | if old_extra_setting == extra_setting: | ||
| 371 | return | ||
| 367 | 372 | ||
| 368 | #remove not needed settings from conf | 373 | # remove the old EXTRA SETTING variable |
| 369 | for key in old_extra_setting: | 374 | self.remove_var_from_file("EXTRA_SETTING") |
| 375 | |||
| 376 | # remove old settings from conf | ||
| 377 | for key in old_extra_setting.keys(): | ||
| 370 | if key not in extra_setting: | 378 | if key not in extra_setting: |
| 371 | self.remove_var_from_file(key) | 379 | self.remove_var_from_file(key) |
| 372 | for key in extra_setting.keys(): | 380 | |
| 373 | value = extra_setting[key] | 381 | # add new settings |
| 382 | for key, value in extra_setting.iteritems(): | ||
| 374 | self.set_var_in_file(key, value, "local.conf") | 383 | self.set_var_in_file(key, value, "local.conf") |
| 375 | 384 | ||
| 385 | if extra_setting: | ||
| 386 | self.set_var_in_file("EXTRA_SETTING", extra_setting, "local.conf") | ||
| 387 | |||
| 376 | def set_http_proxy(self, http_proxy): | 388 | def set_http_proxy(self, http_proxy): |
| 377 | self.set_var_in_file("http_proxy", http_proxy, "local.conf") | 389 | self.set_var_in_file("http_proxy", http_proxy, "local.conf") |
| 378 | 390 | ||
