diff options
| -rwxr-xr-x | bitbake/bin/bitbake-setup | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/bitbake/bin/bitbake-setup b/bitbake/bin/bitbake-setup index bb466d85b4..e7b955213e 100755 --- a/bitbake/bin/bitbake-setup +++ b/bitbake/bin/bitbake-setup | |||
| @@ -339,9 +339,12 @@ def choose_config(configs, non_interactive): | |||
| 339 | config_n = int_input([i[0] for i in config_list]) | 339 | config_n = int_input([i[0] for i in config_list]) |
| 340 | return config_list[config_n][1] | 340 | return config_list[config_n][1] |
| 341 | 341 | ||
| 342 | def choose_fragments(possibilities, parameters, non_interactive): | 342 | def choose_fragments(possibilities, parameters, non_interactive, skip_selection): |
| 343 | choices = {} | 343 | choices = {} |
| 344 | for k,v in possibilities.items(): | 344 | for k,v in possibilities.items(): |
| 345 | if skip_selection and k in skip_selection: | ||
| 346 | print("Skipping a selection of {}, as requested on command line. The resulting bitbake configuration may require further manual adjustments.".format(k)) | ||
| 347 | continue | ||
| 345 | choice = [o for o in v["options"] if o in parameters] | 348 | choice = [o for o in v["options"] if o in parameters] |
| 346 | if len(choice) > 1: | 349 | if len(choice) > 1: |
| 347 | raise Exception("Options specified on command line do not allow a single selection from possibilities {}, please remove one or more from {}".format(v["options"], parameters)) | 350 | raise Exception("Options specified on command line do not allow a single selection from possibilities {}, please remove one or more from {}".format(v["options"], parameters)) |
| @@ -395,9 +398,10 @@ def obtain_config(settings, args, source_overrides, d): | |||
| 395 | upstream_config = {'type':'registry','registry':settings["default"]["registry"],'name':config_id,'data':json.load(open(get_registry_config(registry_path,config_id)))} | 398 | upstream_config = {'type':'registry','registry':settings["default"]["registry"],'name':config_id,'data':json.load(open(get_registry_config(registry_path,config_id)))} |
| 396 | 399 | ||
| 397 | upstream_config['bitbake-config'] = choose_bitbake_config(upstream_config['data']['bitbake-setup']['configurations'], config_parameters, args.non_interactive) | 400 | upstream_config['bitbake-config'] = choose_bitbake_config(upstream_config['data']['bitbake-setup']['configurations'], config_parameters, args.non_interactive) |
| 398 | upstream_config['bitbake-config']['oe-fragment-choices'] = choose_fragments(upstream_config['bitbake-config'].get('oe-fragments-one-of',{}), config_parameters[1:], args.non_interactive) | 401 | upstream_config['bitbake-config']['oe-fragment-choices'] = choose_fragments(upstream_config['bitbake-config'].get('oe-fragments-one-of',{}), config_parameters[1:], args.non_interactive, args.skip_selection) |
| 399 | upstream_config['non-interactive-cmdline-options'] = [config_id, upstream_config['bitbake-config']['name']] + sorted(upstream_config['bitbake-config']['oe-fragment-choices'].values()) | 402 | upstream_config['non-interactive-cmdline-options'] = [config_id, upstream_config['bitbake-config']['name']] + sorted(upstream_config['bitbake-config']['oe-fragment-choices'].values()) |
| 400 | upstream_config['source-overrides'] = source_overrides | 403 | upstream_config['source-overrides'] = source_overrides |
| 404 | upstream_config['skip-selection'] = args.skip_selection | ||
| 401 | return upstream_config | 405 | return upstream_config |
| 402 | 406 | ||
| 403 | def init_config(settings, args, d): | 407 | def init_config(settings, args, d): |
| @@ -492,6 +496,7 @@ def build_status(settings, args, d, update=False): | |||
| 492 | 496 | ||
| 493 | args.config = current_upstream_config['non-interactive-cmdline-options'] | 497 | args.config = current_upstream_config['non-interactive-cmdline-options'] |
| 494 | args.non_interactive = True | 498 | args.non_interactive = True |
| 499 | args.skip_selection = current_upstream_config['skip-selection'] | ||
| 495 | source_overrides = current_upstream_config["source-overrides"] | 500 | source_overrides = current_upstream_config["source-overrides"] |
| 496 | new_upstream_config = obtain_config(settings, args, source_overrides, d) | 501 | new_upstream_config = obtain_config(settings, args, source_overrides, d) |
| 497 | 502 | ||
| @@ -778,6 +783,7 @@ def main(): | |||
| 778 | parser_init.add_argument('--non-interactive', action='store_true', help='Do not ask to interactively choose from available options; if bitbake-setup cannot make a decision it will stop with a failure.') | 783 | parser_init.add_argument('--non-interactive', action='store_true', help='Do not ask to interactively choose from available options; if bitbake-setup cannot make a decision it will stop with a failure.') |
| 779 | parser_init.add_argument('--source-overrides', action='store', help='Override sources information (repositories/revisions) with values from a local json file.') | 784 | parser_init.add_argument('--source-overrides', action='store', help='Override sources information (repositories/revisions) with values from a local json file.') |
| 780 | parser_init.add_argument('--build-dir-name', action='store', help='A custom build directory name under the top directory.') | 785 | parser_init.add_argument('--build-dir-name', action='store', help='A custom build directory name under the top directory.') |
| 786 | parser_init.add_argument('--skip-selection', action='append', help='Do not select and set an option/fragment from available choices; the resulting bitbake configuration may be incomplete.') | ||
| 781 | parser_init.set_defaults(func=init_config) | 787 | parser_init.set_defaults(func=init_config) |
| 782 | 788 | ||
| 783 | parser_status = subparsers.add_parser('status', help='Check if the build needs to be synchronized with configuration') | 789 | parser_status = subparsers.add_parser('status', help='Check if the build needs to be synchronized with configuration') |
