bitbake: bitbake-setup: fix key-error when changing a new 'section'

Setting a key=value in a new section would raise a key-error when
using in-memory settings, e.g:

./bin/bitbake-setup --setting default top-dir-prefix /tmp/bitbake-setup --setting default top-dir-name gs settings foo bar baz

Loading settings from
    /tmp/bitbake-setup/gs/settings.conf

Traceback (most recent call last):
  File "/tmp/bitbake-setup/bitbake/./bin/bitbake-setup", line 853, in <module>
    main()
  File "/tmp/bitbake-setup/bitbake/./bin/bitbake-setup", line 838, in main
    all_settings = merge_settings(builtin_settings, global_settings, topdir_settings, args.setting)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/tmp/bitbake-setup/bitbake/./bin/bitbake-setup", line 733, in merge_settings
    all_settings[section][setting] = value
    ~~~~~~~~~~~~^^^^^^^^^
KeyError: 'foo'

(Bitbake rev: 78ab0d15dff5ccf64b0bf681185370779e6cabaf)

Signed-off-by: Johannes Schneider <johannes.schneider@leica-geosystems.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Johannes Schneider 2025-11-05 20:06:32 +01:00 committed by Richard Purdie
parent baee94fa33
commit f339e5f07f

View File

@ -726,9 +726,13 @@ def merge_settings(builtin_settings, global_settings, topdir_settings, cmdline_s
for s in (global_settings, topdir_settings):
for section, section_settings in s.items():
for setting, value in section_settings.items():
if section not in all_settings.keys():
all_settings[section] = {}
all_settings[section][setting] = value
for (section, setting, value) in cmdline_settings:
if section not in all_settings.keys():
all_settings[section] = {}
all_settings[section][setting] = value
return all_settings