diff options
46 files changed, 1414 insertions, 814 deletions
diff --git a/bitbake/bin/bitbake-setup b/bitbake/bin/bitbake-setup index e7b955213e..71b5b8de9f 100755 --- a/bitbake/bin/bitbake-setup +++ b/bitbake/bin/bitbake-setup | |||
@@ -32,9 +32,9 @@ logger = bb.msg.logger_create('bitbake-setup', sys.stdout) | |||
32 | def cache_dir(top_dir): | 32 | def cache_dir(top_dir): |
33 | return os.path.join(top_dir, '.bitbake-setup-cache') | 33 | return os.path.join(top_dir, '.bitbake-setup-cache') |
34 | 34 | ||
35 | def init_bb_cache(settings, args): | 35 | def init_bb_cache(top_dir, settings, args): |
36 | dldir = settings["default"]["dl-dir"] | 36 | dldir = settings["default"]["dl-dir"] |
37 | bb_cachedir = os.path.join(cache_dir(args.top_dir), 'bitbake-cache') | 37 | bb_cachedir = os.path.join(cache_dir(top_dir), 'bitbake-cache') |
38 | 38 | ||
39 | d = bb.data.init() | 39 | d = bb.data.init() |
40 | d.setVar("DL_DIR", dldir) | 40 | d.setVar("DL_DIR", dldir) |
@@ -162,8 +162,31 @@ def setup_bitbake_build(bitbake_config, layerdir, builddir, thisdir): | |||
162 | builddir = os.path.realpath(builddir) | 162 | builddir = os.path.realpath(builddir) |
163 | cmd = "cd {}\nset {}\n. ./oe-init-build-env\n".format(oeinitbuildenvdir, builddir) | 163 | cmd = "cd {}\nset {}\n. ./oe-init-build-env\n".format(oeinitbuildenvdir, builddir) |
164 | initbuild_in_builddir = os.path.join(builddir, 'init-build-env') | 164 | initbuild_in_builddir = os.path.join(builddir, 'init-build-env') |
165 | |||
166 | with open(initbuild_in_builddir, 'w') as f: | ||
167 | f.write("# init-build-env wrapper created by bitbake-setup\n") | ||
168 | f.write(cmd + '\n') | ||
169 | |||
170 | def _prepend_passthrough_to_init_build_env(builddir): | ||
171 | env = bitbake_config.get("bb-env-passthrough-additions") | ||
172 | if not env: | ||
173 | return | ||
174 | |||
175 | initbuild_in_builddir = os.path.join(builddir, 'init-build-env') | ||
176 | with open(initbuild_in_builddir) as f: | ||
177 | content = f.read() | ||
178 | |||
179 | joined = " \\\n".join(env) | ||
180 | env = "export BB_ENV_PASSTHROUGH_ADDITIONS=\" \\\n" | ||
181 | env += "${BB_ENV_PASSTHROUGH_ADDITIONS} \\\n" | ||
182 | env += joined | ||
183 | env += '"' | ||
184 | |||
165 | with open(initbuild_in_builddir, 'w') as f: | 185 | with open(initbuild_in_builddir, 'w') as f: |
166 | f.write(cmd) | 186 | f.write("# environment passthrough added by bitbake-setup\n") |
187 | f.write(env + '\n') | ||
188 | f.write('\n') | ||
189 | f.write(content) | ||
167 | 190 | ||
168 | bitbake_builddir = os.path.join(builddir, "build") | 191 | bitbake_builddir = os.path.join(builddir, "build") |
169 | print("Setting up bitbake configuration in\n {}\n".format(bitbake_builddir)) | 192 | print("Setting up bitbake configuration in\n {}\n".format(bitbake_builddir)) |
@@ -194,6 +217,8 @@ def setup_bitbake_build(bitbake_config, layerdir, builddir, thisdir): | |||
194 | return | 217 | return |
195 | _make_init_build_env(bitbake_builddir, os.path.realpath(oeinitbuildenvdir)) | 218 | _make_init_build_env(bitbake_builddir, os.path.realpath(oeinitbuildenvdir)) |
196 | 219 | ||
220 | _prepend_passthrough_to_init_build_env(bitbake_builddir) | ||
221 | |||
197 | siteconf_symlink = os.path.join(bitbake_confdir, "site.conf") | 222 | siteconf_symlink = os.path.join(bitbake_confdir, "site.conf") |
198 | siteconf = os.path.normpath(os.path.join(builddir, '..', "site.conf")) | 223 | siteconf = os.path.normpath(os.path.join(builddir, '..', "site.conf")) |
199 | if os.path.lexists(siteconf_symlink): | 224 | if os.path.lexists(siteconf_symlink): |
@@ -364,7 +389,7 @@ def choose_fragments(possibilities, parameters, non_interactive, skip_selection) | |||
364 | choices[k] = options_enumerated[option_n][1] | 389 | choices[k] = options_enumerated[option_n][1] |
365 | return choices | 390 | return choices |
366 | 391 | ||
367 | def obtain_config(settings, args, source_overrides, d): | 392 | def obtain_config(top_dir, settings, args, source_overrides, d): |
368 | if args.config: | 393 | if args.config: |
369 | config_id = args.config[0] | 394 | config_id = args.config[0] |
370 | config_parameters = args.config[1:] | 395 | config_parameters = args.config[1:] |
@@ -382,7 +407,7 @@ def obtain_config(settings, args, source_overrides, d): | |||
382 | upstream_config = {'type':'network','uri':config_id,'name':get_config_name(config_id),'data':json.load(f)} | 407 | upstream_config = {'type':'network','uri':config_id,'name':get_config_name(config_id),'data':json.load(f)} |
383 | else: | 408 | else: |
384 | print("Looking up config {} in configuration registry".format(config_id)) | 409 | print("Looking up config {} in configuration registry".format(config_id)) |
385 | registry_path = update_registry(settings["default"]["registry"], cache_dir(args.top_dir), d) | 410 | registry_path = update_registry(settings["default"]["registry"], cache_dir(top_dir), d) |
386 | registry_configs = list_registry(registry_path, with_expired=True) | 411 | registry_configs = list_registry(registry_path, with_expired=True) |
387 | if config_id not in registry_configs: | 412 | if config_id not in registry_configs: |
388 | raise Exception("Config {} not found in configuration registry, re-run 'init' without parameters to choose from available configurations.".format(config_id)) | 413 | raise Exception("Config {} not found in configuration registry, re-run 'init' without parameters to choose from available configurations.".format(config_id)) |
@@ -391,7 +416,7 @@ def obtain_config(settings, args, source_overrides, d): | |||
391 | if has_expired(expiry_date): | 416 | if has_expired(expiry_date): |
392 | print("This configuration is no longer supported after {}. Please consider changing to a supported configuration.".format(expiry_date)) | 417 | print("This configuration is no longer supported after {}. Please consider changing to a supported configuration.".format(expiry_date)) |
393 | else: | 418 | else: |
394 | registry_path = update_registry(settings["default"]["registry"], cache_dir(args.top_dir), d) | 419 | registry_path = update_registry(settings["default"]["registry"], cache_dir(top_dir), d) |
395 | registry_configs = list_registry(registry_path, with_expired=True) | 420 | registry_configs = list_registry(registry_path, with_expired=True) |
396 | config_id = choose_config(registry_configs, args.non_interactive) | 421 | config_id = choose_config(registry_configs, args.non_interactive) |
397 | config_parameters = [] | 422 | config_parameters = [] |
@@ -404,18 +429,19 @@ def obtain_config(settings, args, source_overrides, d): | |||
404 | upstream_config['skip-selection'] = args.skip_selection | 429 | upstream_config['skip-selection'] = args.skip_selection |
405 | return upstream_config | 430 | return upstream_config |
406 | 431 | ||
407 | def init_config(settings, args, d): | 432 | def init_config(top_dir, settings, args, d): |
408 | stdout = sys.stdout | 433 | stdout = sys.stdout |
409 | def handle_task_progress(event, d): | 434 | def handle_task_progress(event, d): |
410 | rate = event.rate if event.rate else '' | 435 | rate = event.rate if event.rate else '' |
411 | progress = event.progress if event.progress > 0 else 0 | 436 | progress = event.progress if event.progress > 0 else 0 |
412 | print("{}% {} ".format(progress, rate), file=stdout, end='\r') | 437 | print("{}% {} ".format(progress, rate), file=stdout, end='\r') |
413 | 438 | ||
439 | create_siteconf(top_dir, args.non_interactive) | ||
414 | source_overrides = json.load(open(args.source_overrides)) if args.source_overrides else {'sources':{}} | 440 | source_overrides = json.load(open(args.source_overrides)) if args.source_overrides else {'sources':{}} |
415 | upstream_config = obtain_config(settings, args, source_overrides, d) | 441 | upstream_config = obtain_config(top_dir, settings, args, source_overrides, d) |
416 | print("\nRun 'bitbake-setup init --non-interactive {}' to select this configuration non-interactively.\n".format(" ".join(upstream_config['non-interactive-cmdline-options']))) | 442 | print("\nRun 'bitbake-setup init --non-interactive {}' to select this configuration non-interactively.\n".format(" ".join(upstream_config['non-interactive-cmdline-options']))) |
417 | 443 | ||
418 | builddir = os.path.join(os.path.abspath(args.top_dir), args.build_dir_name or "{}-{}".format(upstream_config['name']," ".join(upstream_config['non-interactive-cmdline-options'][1:]).replace(" ","-").replace("/","_"))) | 444 | builddir = os.path.join(os.path.abspath(top_dir), args.build_dir_name or "{}-{}".format(upstream_config['name']," ".join(upstream_config['non-interactive-cmdline-options'][1:]).replace(" ","-").replace("/","_"))) |
419 | if os.path.exists(os.path.join(builddir, "layers")): | 445 | if os.path.exists(os.path.join(builddir, "layers")): |
420 | print("Build already initialized in {}\nUse 'bitbake-setup status' to check if it needs to be updated or 'bitbake-setup update' to perform the update.".format(builddir)) | 446 | print("Build already initialized in {}\nUse 'bitbake-setup status' to check if it needs to be updated or 'bitbake-setup update' to perform the update.".format(builddir)) |
421 | return | 447 | return |
@@ -486,7 +512,7 @@ def are_layers_changed(layers, layerdir, d): | |||
486 | 512 | ||
487 | return changed | 513 | return changed |
488 | 514 | ||
489 | def build_status(settings, args, d, update=False): | 515 | def build_status(top_dir, settings, args, d, update=False): |
490 | builddir = args.build_dir | 516 | builddir = args.build_dir |
491 | 517 | ||
492 | confdir = os.path.join(builddir, "config") | 518 | confdir = os.path.join(builddir, "config") |
@@ -498,7 +524,7 @@ def build_status(settings, args, d, update=False): | |||
498 | args.non_interactive = True | 524 | args.non_interactive = True |
499 | args.skip_selection = current_upstream_config['skip-selection'] | 525 | args.skip_selection = current_upstream_config['skip-selection'] |
500 | source_overrides = current_upstream_config["source-overrides"] | 526 | source_overrides = current_upstream_config["source-overrides"] |
501 | new_upstream_config = obtain_config(settings, args, source_overrides, d) | 527 | new_upstream_config = obtain_config(top_dir, settings, args, source_overrides, d) |
502 | 528 | ||
503 | write_config(new_upstream_config, confdir) | 529 | write_config(new_upstream_config, confdir) |
504 | config_diff = bb.process.run('git -C {} diff'.format(confdir))[0] | 530 | config_diff = bb.process.run('git -C {} diff'.format(confdir))[0] |
@@ -519,8 +545,8 @@ def build_status(settings, args, d, update=False): | |||
519 | 545 | ||
520 | print("\nConfiguration in {} has not changed.".format(builddir)) | 546 | print("\nConfiguration in {} has not changed.".format(builddir)) |
521 | 547 | ||
522 | def build_update(settings, args, d): | 548 | def build_update(top_dir, settings, args, d): |
523 | build_status(settings, args, d, update=True) | 549 | build_status(top_dir, settings, args, d, update=True) |
524 | 550 | ||
525 | def do_fetch(fetcher, dir): | 551 | def do_fetch(fetcher, dir): |
526 | # git fetcher simply dumps git output to stdout; in bitbake context that is redirected to temp/log.do_fetch | 552 | # git fetcher simply dumps git output to stdout; in bitbake context that is redirected to temp/log.do_fetch |
@@ -570,8 +596,8 @@ def list_registry(registry_path, with_expired): | |||
570 | json_data[config_name] = {"description": config_desc} | 596 | json_data[config_name] = {"description": config_desc} |
571 | return json_data | 597 | return json_data |
572 | 598 | ||
573 | def list_configs(settings, args, d): | 599 | def list_configs(top_dir, settings, args, d): |
574 | registry_path = update_registry(settings["default"]["registry"], cache_dir(args.top_dir), d) | 600 | registry_path = update_registry(settings["default"]["registry"], cache_dir(top_dir), d) |
575 | json_data = list_registry(registry_path, args.with_expired) | 601 | json_data = list_registry(registry_path, args.with_expired) |
576 | print("\nAvailable configurations:") | 602 | print("\nAvailable configurations:") |
577 | for config_name, config_data in json_data.items(): | 603 | for config_name, config_data in json_data.items(): |
@@ -589,7 +615,7 @@ def list_configs(settings, args, d): | |||
589 | json.dump(json_data, f, sort_keys=True, indent=4) | 615 | json.dump(json_data, f, sort_keys=True, indent=4) |
590 | print("Available configurations written into {}".format(args.write_json)) | 616 | print("Available configurations written into {}".format(args.write_json)) |
591 | 617 | ||
592 | def install_buildtools(settings, args, d): | 618 | def install_buildtools(top_dir, settings, args, d): |
593 | buildtools_install_dir = os.path.join(args.build_dir, 'buildtools') | 619 | buildtools_install_dir = os.path.join(args.build_dir, 'buildtools') |
594 | if os.path.exists(buildtools_install_dir): | 620 | if os.path.exists(buildtools_install_dir): |
595 | if not args.force: | 621 | if not args.force: |
@@ -609,117 +635,68 @@ def install_buildtools(settings, args, d): | |||
609 | subprocess.check_call("{} -d {} --downloads-directory {}".format(install_buildtools, buildtools_install_dir, buildtools_download_dir), shell=True) | 635 | subprocess.check_call("{} -d {} --downloads-directory {}".format(install_buildtools, buildtools_install_dir, buildtools_download_dir), shell=True) |
610 | 636 | ||
611 | def default_settings_path(top_dir): | 637 | def default_settings_path(top_dir): |
612 | return os.path.join(top_dir, 'bitbake-setup.conf') | 638 | return os.path.join(top_dir, 'settings.conf') |
613 | 639 | ||
614 | def write_settings(top_dir, force_replace, non_interactive=True): | 640 | def create_siteconf(top_dir, non_interactive=True): |
615 | settings_path = default_settings_path(top_dir) | 641 | siteconfpath = os.path.join(top_dir, 'site.conf') |
616 | if not os.path.exists(settings_path) or force_replace: | 642 | print('A common site.conf file will be created, please edit or replace before running builds\n {}\n'.format(siteconfpath)) |
617 | 643 | if not non_interactive: | |
618 | settings = configparser.ConfigParser() | 644 | y_or_n = input('Proceed? (y/N): ') |
619 | settings['default'] = { | 645 | if y_or_n != 'y': |
620 | 'registry':default_registry, | 646 | exit() |
621 | 'dl-dir':os.path.join(top_dir, '.bitbake-setup-downloads'), | 647 | |
622 | } | 648 | os.makedirs(os.path.dirname(top_dir), exist_ok=True) |
623 | os.makedirs(os.path.dirname(settings_path), exist_ok=True) | 649 | if os.path.exists(siteconfpath): |
624 | 650 | backup_siteconf = siteconfpath + "-backup.{}".format(time.strftime("%Y%m%d%H%M%S")) | |
625 | siteconfpath = os.path.join(top_dir, 'site.conf') | 651 | os.rename(siteconfpath, backup_siteconf) |
626 | print('Configuration registry set to\n {}\n'.format(settings['default']['registry'])) | 652 | print("Previous settings are in {}".format(backup_siteconf)) |
627 | print('Bitbake-setup download cache (DL_DIR) set to\n {}\n'.format(settings['default']['dl-dir'])) | 653 | with open(siteconfpath, 'w') as siteconffile: |
628 | print('A new settings file will be created in\n {}\n'.format(settings_path)) | 654 | siteconffile.write('# This file is intended for build host-specific bitbake settings\n') |
629 | print('A common site.conf file will be created, please edit or replace before running builds\n {}\n'.format(siteconfpath)) | ||
630 | if not non_interactive: | ||
631 | y_or_n = input('Bitbake-setup will be configured with the above settings in {}, (y/N): '.format(top_dir)) | ||
632 | if y_or_n != 'y': | ||
633 | print("\nYou can run 'bitbake-setup install-settings' to edit them before setting up builds") | ||
634 | exit() | ||
635 | print() | ||
636 | |||
637 | if os.path.exists(settings_path): | ||
638 | backup_conf = settings_path + "-backup.{}".format(time.strftime("%Y%m%d%H%M%S")) | ||
639 | os.rename(settings_path, backup_conf) | ||
640 | print("Previous settings are in {}".format(backup_conf)) | ||
641 | with open(settings_path, 'w') as settingsfile: | ||
642 | settings.write(settingsfile) | ||
643 | |||
644 | if os.path.exists(siteconfpath): | ||
645 | backup_siteconf = siteconfpath + "-backup.{}".format(time.strftime("%Y%m%d%H%M%S")) | ||
646 | os.rename(siteconfpath, backup_siteconf) | ||
647 | print("Previous settings are in {}".format(backup_siteconf)) | ||
648 | with open(siteconfpath, 'w') as siteconffile: | ||
649 | siteconffile.write('# This file is intended for build host-specific bitbake settings\n') | ||
650 | |||
651 | def load_settings(top_dir, non_interactive): | ||
652 | # This creates a new settings file if it does not yet exist | ||
653 | write_settings(top_dir, force_replace=False, non_interactive=non_interactive) | ||
654 | |||
655 | settings_path = default_settings_path(top_dir) | ||
656 | settings = configparser.ConfigParser() | ||
657 | print('Loading settings from\n {}\n'.format(settings_path)) | ||
658 | settings.read_file(open(settings_path)) | ||
659 | return settings | ||
660 | 655 | ||
661 | def global_settings_path(args): | 656 | def global_settings_path(args): |
662 | return os.path.abspath(args.global_settings) if args.global_settings else os.path.join(os.path.expanduser('~'), '.config', 'bitbake-setup', 'config') | 657 | return os.path.abspath(args.global_settings) if args.global_settings else os.path.join(os.path.expanduser('~'), '.config', 'bitbake-setup', 'settings.conf') |
663 | |||
664 | def write_global_settings(settings_path, force_replace, non_interactive=True): | ||
665 | if not os.path.exists(settings_path) or force_replace: | ||
666 | |||
667 | settings = configparser.ConfigParser() | ||
668 | settings['default'] = { | ||
669 | 'top-dir-prefix':os.path.expanduser('~'), | ||
670 | 'top-dir-name':'bitbake-builds' | ||
671 | } | ||
672 | os.makedirs(os.path.dirname(settings_path), exist_ok=True) | ||
673 | print('Configuring global settings in\n {}\n'.format(settings_path)) | ||
674 | print('Top directory prefix (where all top level directories are created) set to\n {}\n'.format(settings['default']['top-dir-prefix'])) | ||
675 | print('Top directory name (this is added to the top directory prefix to form a top directory where builds are set up) set to\n {}\n'.format(settings['default']['top-dir-name'])) | ||
676 | if not non_interactive: | ||
677 | y_or_n = input('Write out the global settings as specified above (y/N)? ') | ||
678 | if y_or_n != 'y': | ||
679 | print("\nYou can run 'bitbake-setup install-global-settings' to edit them before setting up builds") | ||
680 | exit() | ||
681 | print() | ||
682 | |||
683 | if os.path.exists(settings_path): | ||
684 | backup_conf = settings_path + "-backup.{}".format(time.strftime("%Y%m%d%H%M%S")) | ||
685 | os.rename(settings_path, backup_conf) | ||
686 | print("Previous global settings are in {}".format(backup_conf)) | ||
687 | with open(settings_path, 'w') as settingsfile: | ||
688 | settings.write(settingsfile) | ||
689 | |||
690 | def load_global_settings(settings_path, non_interactive): | ||
691 | # This creates a new settings file if it does not yet exist | ||
692 | write_global_settings(settings_path, force_replace=False, non_interactive=non_interactive) | ||
693 | 658 | ||
659 | def load_settings(settings_path): | ||
694 | settings = configparser.ConfigParser() | 660 | settings = configparser.ConfigParser() |
695 | print('Loading global settings from\n {}\n'.format(settings_path)) | 661 | if os.path.exists(settings_path): |
696 | settings.read_file(open(settings_path)) | 662 | print('Loading settings from\n {}\n'.format(settings_path)) |
663 | settings.read_file(open(settings_path)) | ||
697 | return settings | 664 | return settings |
698 | 665 | ||
699 | def change_settings(top_dir, new_settings): | 666 | def change_setting(top_dir, args): |
700 | settings = load_settings(top_dir, non_interactive=True) | 667 | if vars(args)['global']: |
701 | for section, section_settings in new_settings.items(): | 668 | settings_path = global_settings_path(args) |
702 | for setting, value in section_settings.items(): | 669 | else: |
703 | settings[section][setting] = value | 670 | settings_path = default_settings_path(top_dir) |
704 | print("Setting '{}' in section '{}' is changed to '{}'".format(setting, section, value)) | 671 | settings = load_settings(settings_path) |
705 | 672 | ||
706 | settings_path = default_settings_path(top_dir) | 673 | if args.section and args.key and args.value: |
674 | if args.section not in settings.keys(): | ||
675 | settings[args.section] = {} | ||
676 | settings[args.section][args.key] = args.value | ||
677 | print("Setting '{}' in section '{}' is changed to '{}'".format(args.key, args.section, args.value)) | ||
678 | if args.unset: | ||
679 | section = args.unset[0] | ||
680 | setting = args.unset[1] | ||
681 | if section in settings.keys() and setting in settings[section].keys(): | ||
682 | del settings[section][setting] | ||
683 | print("Setting '{} in section '{}' is removed".format(setting, section)) | ||
684 | |||
685 | os.makedirs(os.path.dirname(settings_path), exist_ok=True) | ||
707 | with open(settings_path, 'w') as settingsfile: | 686 | with open(settings_path, 'w') as settingsfile: |
708 | settings.write(settingsfile) | 687 | settings.write(settingsfile) |
709 | print("New settings written to {}".format(settings_path)) | 688 | print("New settings written to {}".format(settings_path)) |
710 | return settings | ||
711 | 689 | ||
712 | def change_global_settings(settings_path, new_settings): | 690 | def list_settings(all_settings): |
713 | settings = load_global_settings(settings_path, non_interactive=True) | 691 | for section, section_settings in all_settings.items(): |
714 | for section, section_settings in new_settings.items(): | 692 | for key, value in section_settings.items(): |
715 | for setting, value in section_settings.items(): | 693 | print("{} {} {}".format(section, key, value)) |
716 | settings[section][setting] = value | ||
717 | print("Setting '{}' in section '{}' is changed to '{}'".format(setting, section, value)) | ||
718 | 694 | ||
719 | with open(settings_path, 'w') as settingsfile: | 695 | def settings_func(top_dir, all_settings, args): |
720 | settings.write(settingsfile) | 696 | if args.list: |
721 | print("New global settings written to {}".format(settings_path)) | 697 | list_settings(all_settings) |
722 | return settings | 698 | else: |
699 | change_setting(top_dir, args) | ||
723 | 700 | ||
724 | def get_build_dir_via_bbpath(): | 701 | def get_build_dir_via_bbpath(): |
725 | bbpath = os.environ.get('BBPATH') | 702 | bbpath = os.environ.get('BBPATH') |
@@ -730,7 +707,7 @@ def get_build_dir_via_bbpath(): | |||
730 | return build_dir | 707 | return build_dir |
731 | return None | 708 | return None |
732 | 709 | ||
733 | def get_top_dir(args, global_settings): | 710 | def get_top_dir(args, settings): |
734 | build_dir_via_bbpath = get_build_dir_via_bbpath() | 711 | build_dir_via_bbpath = get_build_dir_via_bbpath() |
735 | if build_dir_via_bbpath: | 712 | if build_dir_via_bbpath: |
736 | top_dir = os.path.dirname(build_dir_via_bbpath) | 713 | top_dir = os.path.dirname(build_dir_via_bbpath) |
@@ -738,20 +715,27 @@ def get_top_dir(args, global_settings): | |||
738 | return top_dir | 715 | return top_dir |
739 | 716 | ||
740 | if hasattr(args, 'build_dir'): | 717 | if hasattr(args, 'build_dir'): |
741 | # commands without --top-dir-prefix/name arguments (status, update) still need to know where | ||
742 | # the top dir is, but it should be auto-deduced as parent of args.build_dir | ||
743 | top_dir = os.path.dirname(os.path.normpath(args.build_dir)) | 718 | top_dir = os.path.dirname(os.path.normpath(args.build_dir)) |
744 | return top_dir | 719 | return top_dir |
745 | 720 | ||
746 | top_dir_prefix = args.top_dir_prefix if args.top_dir_prefix else global_settings['default']['top-dir-prefix'] | 721 | top_dir_prefix = settings['default']['top-dir-prefix'] |
747 | top_dir_name = args.top_dir_name if args.top_dir_name else global_settings['default']['top-dir-name'] | 722 | top_dir_name = settings['default']['top-dir-name'] |
748 | return os.path.join(top_dir_prefix, top_dir_name) | 723 | return os.path.join(top_dir_prefix, top_dir_name) |
749 | 724 | ||
750 | def main(): | 725 | def merge_settings(builtin_settings, global_settings, local_settings, cmdline_settings): |
751 | def add_top_dir_arg(parser): | 726 | all_settings = builtin_settings |
752 | parser.add_argument('--top-dir-prefix', help='Top level directory prefix. This is where all top level directories are created.') | 727 | |
753 | parser.add_argument('--top-dir-name', help='Top level directory name. Together with the top directory prefix this forms a top directory where builds are set up and downloaded configurations and layers are cached for reproducibility and offline builds.') | 728 | for s in (global_settings, local_settings): |
729 | for section, section_settings in s.items(): | ||
730 | for setting, value in section_settings.items(): | ||
731 | all_settings[section][setting] = value | ||
732 | |||
733 | for (section, setting, value) in cmdline_settings: | ||
734 | all_settings[section][setting] = value | ||
754 | 735 | ||
736 | return all_settings | ||
737 | |||
738 | def main(): | ||
755 | def add_build_dir_arg(parser): | 739 | def add_build_dir_arg(parser): |
756 | build_dir = get_build_dir_via_bbpath() | 740 | build_dir = get_build_dir_via_bbpath() |
757 | if build_dir: | 741 | if build_dir: |
@@ -767,18 +751,17 @@ def main(): | |||
767 | parser.add_argument('-q', '--quiet', help='Print only errors', action='store_true') | 751 | parser.add_argument('-q', '--quiet', help='Print only errors', action='store_true') |
768 | parser.add_argument('--color', choices=['auto', 'always', 'never'], default='auto', help='Colorize output (where %(metavar)s is %(choices)s)', metavar='COLOR') | 752 | parser.add_argument('--color', choices=['auto', 'always', 'never'], default='auto', help='Colorize output (where %(metavar)s is %(choices)s)', metavar='COLOR') |
769 | parser.add_argument('--no-network', action='store_true', help='Do not check whether configuration repositories and layer repositories have been updated; use only the local cache.') | 753 | parser.add_argument('--no-network', action='store_true', help='Do not check whether configuration repositories and layer repositories have been updated; use only the local cache.') |
770 | parser.add_argument('--global-settings', action='store', help='Path to the global settings file where defaults for top directory prefix and name can be specified') | 754 | parser.add_argument('--global-settings', action='store', help='Path to the global settings file.') |
755 | parser.add_argument('--setting', default=[], action='append', nargs=3, help='Modify a setting (for this bitbake-setup invocation only), for example "--setting default top-dir-prefix /path/to/top/dir".') | ||
771 | 756 | ||
772 | subparsers = parser.add_subparsers() | 757 | subparsers = parser.add_subparsers() |
773 | 758 | ||
774 | parser_list = subparsers.add_parser('list', help='List available configurations') | 759 | parser_list = subparsers.add_parser('list', help='List available configurations') |
775 | add_top_dir_arg(parser_list) | ||
776 | parser_list.add_argument('--with-expired', action='store_true', help='List also configurations that are no longer supported due to reaching their end-of-life dates.') | 760 | parser_list.add_argument('--with-expired', action='store_true', help='List also configurations that are no longer supported due to reaching their end-of-life dates.') |
777 | parser_list.add_argument('--write-json', action='store', help='Write available configurations into a json file so they can be programmatically processed.') | 761 | parser_list.add_argument('--write-json', action='store', help='Write available configurations into a json file so they can be programmatically processed.') |
778 | parser_list.set_defaults(func=list_configs) | 762 | parser_list.set_defaults(func=list_configs) |
779 | 763 | ||
780 | parser_init = subparsers.add_parser('init', help='Select a configuration and initialize a build from it') | 764 | parser_init = subparsers.add_parser('init', help='Select a configuration and initialize a build from it') |
781 | add_top_dir_arg(parser_init) | ||
782 | parser_init.add_argument('config', nargs='*', help="path/URL/id to a configuration file (use 'list' command to get available ids), followed by configuration options. Bitbake-setup will ask to choose from available choices if command line doesn't completely specify them.") | 765 | parser_init.add_argument('config', nargs='*', help="path/URL/id to a configuration file (use 'list' command to get available ids), followed by configuration options. Bitbake-setup will ask to choose from available choices if command line doesn't completely specify them.") |
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.') | 766 | 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.') |
784 | parser_init.add_argument('--source-overrides', action='store', help='Override sources information (repositories/revisions) with values from a local json file.') | 767 | parser_init.add_argument('--source-overrides', action='store', help='Override sources information (repositories/revisions) with values from a local json file.') |
@@ -799,25 +782,14 @@ def main(): | |||
799 | parser_install_buildtools.add_argument('--force', action='store_true', help='Force a reinstall of buildtools over the previous installation.') | 782 | parser_install_buildtools.add_argument('--force', action='store_true', help='Force a reinstall of buildtools over the previous installation.') |
800 | parser_install_buildtools.set_defaults(func=install_buildtools) | 783 | parser_install_buildtools.set_defaults(func=install_buildtools) |
801 | 784 | ||
802 | parser_install_settings = subparsers.add_parser('install-settings', help='Write a settings file with default values into the top level directory (contains the location of build configuration registry, downloads directory and other settings specific to a top directory)') | 785 | parser_settings = subparsers.add_parser('settings', help='List current settings, or set or unset a setting in a settings file (e.g. the default prefix and name of the top directory, the location of build configuration registry, downloads directory and other settings specific to a top directory)') |
803 | add_top_dir_arg(parser_install_settings) | 786 | parser_settings.add_argument('section', nargs='?', help="Section in a settings file, typically 'default'") |
804 | parser_install_settings.set_defaults(func=write_settings) | 787 | parser_settings.add_argument('key', nargs='?', help="Name of the setting") |
805 | 788 | parser_settings.add_argument('value', nargs='?', help="Value of the setting") | |
806 | parser_install_global_settings = subparsers.add_parser('install-global-settings', help='Write a global settings file with default values (contains the default prefix and name of the top directory)') | 789 | parser_settings.add_argument('--global', action='store_true', help="Modify the setting in a global settings file, rather than one specific to a top directory") |
807 | parser_install_global_settings.set_defaults(func=write_global_settings) | 790 | parser_settings.add_argument('--unset', nargs=2, help="Unset a setting, e.g. 'bitbake-setup setting --unset default registry' would revert to the registry setting in a global settings file") |
808 | 791 | parser_settings.add_argument('-l' ,'--list', action='store_true', help="List all settings with their values") | |
809 | parser_change_setting = subparsers.add_parser('change-setting', help='Change a setting in the settings file') | 792 | parser_settings.set_defaults(func=settings_func) |
810 | add_top_dir_arg(parser_change_setting) | ||
811 | parser_change_setting.add_argument('section', help="Section in a settings file, typically 'default'") | ||
812 | parser_change_setting.add_argument('key', help="Name of the setting") | ||
813 | parser_change_setting.add_argument('value', help="Value of the setting") | ||
814 | parser_change_setting.set_defaults(func=change_settings) | ||
815 | |||
816 | parser_change_global_setting = subparsers.add_parser('change-global-setting', help='Change a setting in the global settings file') | ||
817 | parser_change_global_setting.add_argument('section', help="Section in a global settings file, typically 'default'") | ||
818 | parser_change_global_setting.add_argument('key', help="Name of the setting") | ||
819 | parser_change_global_setting.add_argument('value', help="Value of the setting") | ||
820 | parser_change_global_setting.set_defaults(func=change_global_settings) | ||
821 | 793 | ||
822 | args = parser.parse_args() | 794 | args = parser.parse_args() |
823 | 795 | ||
@@ -834,13 +806,6 @@ def main(): | |||
834 | level=logger.getEffectiveLevel()) | 806 | level=logger.getEffectiveLevel()) |
835 | 807 | ||
836 | if 'func' in args: | 808 | if 'func' in args: |
837 | if args.func == write_global_settings: | ||
838 | write_global_settings(global_settings_path(args), force_replace=True) | ||
839 | return | ||
840 | elif args.func == change_global_settings: | ||
841 | change_global_settings(global_settings_path(args), {args.section:{args.key:args.value}}) | ||
842 | return | ||
843 | |||
844 | if hasattr(args, 'build_dir'): | 809 | if hasattr(args, 'build_dir'): |
845 | if not os.path.exists(os.path.join(args.build_dir,'build', 'init-build-env')): | 810 | if not os.path.exists(os.path.join(args.build_dir,'build', 'init-build-env')): |
846 | print("Not a valid build directory: build/init-build-env does not exist in {}".format(args.build_dir)) | 811 | print("Not a valid build directory: build/init-build-env does not exist in {}".format(args.build_dir)) |
@@ -849,19 +814,31 @@ def main(): | |||
849 | if not hasattr(args, 'non_interactive'): | 814 | if not hasattr(args, 'non_interactive'): |
850 | args.non_interactive = True | 815 | args.non_interactive = True |
851 | 816 | ||
852 | global_settings = load_global_settings(global_settings_path(args), args.non_interactive) | 817 | builtin_settings = {} |
853 | args.top_dir = get_top_dir(args, global_settings) | 818 | builtin_settings['default'] = { |
819 | 'top-dir-prefix':os.path.expanduser('~'), | ||
820 | 'top-dir-name':'bitbake-builds', | ||
821 | 'registry':default_registry, | ||
822 | } | ||
854 | 823 | ||
855 | print('Bitbake-setup is using {} as top directory (can be changed with --top-dir-prefix/name arguments or by setting them in {}).\n'.format(args.top_dir, global_settings_path(args))) | 824 | global_settings = load_settings(global_settings_path(args)) |
856 | if args.func == write_settings: | 825 | top_dir = get_top_dir(args, merge_settings(builtin_settings, global_settings, {}, args.setting)) |
857 | write_settings(args.top_dir, force_replace=True) | 826 | |
858 | elif args.func == change_settings: | 827 | # This cannot be set with the rest of the builtin settings as top_dir needs to be determined first |
859 | change_settings(args.top_dir, {args.section:{args.key:args.value}}) | 828 | builtin_settings['default']['dl-dir'] = os.path.join(top_dir, '.bitbake-setup-downloads') |
860 | else: | 829 | |
861 | settings = load_settings(args.top_dir, args.non_interactive) | 830 | topdir_settings = load_settings(default_settings_path(top_dir)) |
862 | d = init_bb_cache(settings, args) | 831 | all_settings = merge_settings(builtin_settings, global_settings, topdir_settings, args.setting) |
863 | args.func(settings, args, d) | 832 | |
864 | save_bb_cache() | 833 | if args.func == settings_func: |
834 | settings_func(top_dir, all_settings, args) | ||
835 | return | ||
836 | |||
837 | print('Bitbake-setup is using {} as top directory ("bitbake-setup setting --help" shows how to change it).\n'.format(top_dir, global_settings_path(args))) | ||
838 | |||
839 | d = init_bb_cache(top_dir, all_settings, args) | ||
840 | args.func(top_dir, all_settings, args, d) | ||
841 | save_bb_cache() | ||
865 | else: | 842 | else: |
866 | from argparse import Namespace | 843 | from argparse import Namespace |
867 | parser.print_help() | 844 | parser.print_help() |
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py index 96d70080d3..63d4edd892 100644 --- a/bitbake/lib/bb/runqueue.py +++ b/bitbake/lib/bb/runqueue.py | |||
@@ -1610,6 +1610,7 @@ class RunQueue: | |||
1610 | 1610 | ||
1611 | if self.state == RunQueueState.SCENE_INIT: | 1611 | if self.state == RunQueueState.SCENE_INIT: |
1612 | self.start_worker(self.rqexe) | 1612 | self.start_worker(self.rqexe) |
1613 | self.rqdata.init_progress_reporter.finish() | ||
1613 | 1614 | ||
1614 | # If we don't have any setscene functions, skip execution | 1615 | # If we don't have any setscene functions, skip execution |
1615 | if not self.rqdata.runq_setscene_tids: | 1616 | if not self.rqdata.runq_setscene_tids: |
@@ -1947,10 +1948,6 @@ class RunQueueExecute: | |||
1947 | self.sqdata = SQData() | 1948 | self.sqdata = SQData() |
1948 | build_scenequeue_data(self.sqdata, self.rqdata, self) | 1949 | build_scenequeue_data(self.sqdata, self.rqdata, self) |
1949 | 1950 | ||
1950 | # Finish the "Initialising tasks" progress bar before | ||
1951 | # update_scenequeue_data() creates another one. | ||
1952 | self.rqdata.init_progress_reporter.finish() | ||
1953 | |||
1954 | update_scenequeue_data(self.sqdata.sq_revdeps, self.sqdata, self.rqdata, self.rq, self.cooker, self.stampcache, self, summary=True) | 1951 | update_scenequeue_data(self.sqdata.sq_revdeps, self.sqdata, self.rqdata, self.rq, self.cooker, self.stampcache, self, summary=True) |
1955 | 1952 | ||
1956 | # Compute a list of 'stale' sstate tasks where the current hash does not match the one | 1953 | # Compute a list of 'stale' sstate tasks where the current hash does not match the one |
diff --git a/bitbake/lib/bb/tests/setup.py b/bitbake/lib/bb/tests/setup.py index 747a9b733f..b238926b29 100644 --- a/bitbake/lib/bb/tests/setup.py +++ b/bitbake/lib/bb/tests/setup.py | |||
@@ -120,6 +120,22 @@ print("BBPATH is {{}}".format(os.environ["BBPATH"])) | |||
120 | "oe-fragments": ["test-fragment-2"] | 120 | "oe-fragments": ["test-fragment-2"] |
121 | }, | 121 | }, |
122 | { | 122 | { |
123 | "name": "gizmo-env-passthrough", | ||
124 | "description": "Gizmo build configuration with environment-passthrough", | ||
125 | "bb-layers": ["layerC","layerD/meta-layer"], | ||
126 | "oe-fragments": ["test-fragment-1"], | ||
127 | "bb-env-passthrough-additions": [ | ||
128 | "BUILD_ID", | ||
129 | "BUILD_DATE", | ||
130 | "BUILD_SERVER" | ||
131 | ] | ||
132 | }, | ||
133 | { | ||
134 | "name": "gizmo-no-fragment", | ||
135 | "description": "Gizmo no-fragment template-only build configuration", | ||
136 | "oe-template": "test-configuration-gizmo" | ||
137 | }, | ||
138 | { | ||
123 | "name": "gadget-notemplate", | 139 | "name": "gadget-notemplate", |
124 | "description": "Gadget notemplate build configuration", | 140 | "description": "Gadget notemplate build configuration", |
125 | "bb-layers": ["layerA","layerB/meta-layer"], | 141 | "bb-layers": ["layerA","layerB/meta-layer"], |
@@ -189,8 +205,18 @@ print("BBPATH is {{}}".format(os.environ["BBPATH"])) | |||
189 | else: | 205 | else: |
190 | self.assertIn(os.path.join(buildpath, "layers", l), bblayers) | 206 | self.assertIn(os.path.join(buildpath, "layers", l), bblayers) |
191 | 207 | ||
192 | for f in bitbake_config["oe-fragments"]: | 208 | if 'oe-fragment' in bitbake_config.keys(): |
193 | self.assertTrue(os.path.exists(os.path.join(bb_conf_path, f))) | 209 | for f in bitbake_config["oe-fragments"]: |
210 | self.assertTrue(os.path.exists(os.path.join(bb_conf_path, f))) | ||
211 | |||
212 | if 'bb-environment-passthrough' in bitbake_config.keys(): | ||
213 | with open(os.path.join(bb_build_path, 'init-build-env'), 'r') as f: | ||
214 | init_build_env = f.read() | ||
215 | self.assertTrue('BB_ENV_PASSTHROUGH_ADDITIONS' in init_build_env) | ||
216 | self.assertTrue('BUILD_ID' in init_build_env) | ||
217 | self.assertTrue('BUILD_DATE' in init_build_env) | ||
218 | self.assertTrue('BUILD_SERVER' in init_build_env) | ||
219 | # a more throrough test could be to initialize a bitbake build-env, export FOO to the shell environment, set the env-passthrough on it and finally check against 'bitbake-getvar FOO' | ||
194 | 220 | ||
195 | 221 | ||
196 | def test_setup(self): | 222 | def test_setup(self): |
@@ -206,22 +232,29 @@ print("BBPATH is {{}}".format(os.environ["BBPATH"])) | |||
206 | self.runbbsetup("--help") | 232 | self.runbbsetup("--help") |
207 | 233 | ||
208 | # set up global location for top-dir-prefix | 234 | # set up global location for top-dir-prefix |
209 | out = self.runbbsetup("install-global-settings") | 235 | out = self.runbbsetup("settings --global default top-dir-prefix {}".format(self.tempdir)) |
210 | settings_path = "{}/global-config".format(self.tempdir) | 236 | settings_path = "{}/global-config".format(self.tempdir) |
211 | self.assertIn(settings_path, out[0]) | 237 | self.assertIn(settings_path, out[0]) |
212 | out = self.runbbsetup("change-global-setting default top-dir-prefix {}".format(self.tempdir)) | ||
213 | self.assertIn("Setting 'top-dir-prefix' in section 'default' is changed to", out[0]) | 238 | self.assertIn("Setting 'top-dir-prefix' in section 'default' is changed to", out[0]) |
214 | self.assertIn("New global settings written to".format(settings_path), out[0]) | 239 | self.assertIn("New settings written to".format(settings_path), out[0]) |
240 | out = self.runbbsetup("settings --global default dl-dir {}".format(os.path.join(self.tempdir, 'downloads'))) | ||
241 | self.assertIn("Setting 'dl-dir' in section 'default' is changed to", out[0]) | ||
242 | self.assertIn("New settings written to".format(settings_path), out[0]) | ||
215 | 243 | ||
216 | # check that writing settings works and then adjust them to point to | 244 | # check that writing settings works and then adjust them to point to |
217 | # test registry repo | 245 | # test registry repo |
218 | out = self.runbbsetup("install-settings") | 246 | out = self.runbbsetup("settings default registry 'git://{};protocol=file;branch=master;rev=master'".format(self.registrypath)) |
219 | settings_path = "{}/bitbake-builds/bitbake-setup.conf".format(self.tempdir) | 247 | settings_path = "{}/bitbake-builds/settings.conf".format(self.tempdir) |
220 | self.assertIn(settings_path, out[0]) | 248 | self.assertIn(settings_path, out[0]) |
221 | out = self.runbbsetup("change-setting default registry 'git://{};protocol=file;branch=master;rev=master'".format(self.registrypath)) | ||
222 | self.assertIn("Setting 'registry' in section 'default' is changed to", out[0]) | 249 | self.assertIn("Setting 'registry' in section 'default' is changed to", out[0]) |
223 | self.assertIn("New settings written to".format(settings_path), out[0]) | 250 | self.assertIn("New settings written to".format(settings_path), out[0]) |
224 | 251 | ||
252 | # check that listing settings works | ||
253 | out = self.runbbsetup("settings --list") | ||
254 | self.assertIn("default top-dir-prefix {}".format(self.tempdir), out[0]) | ||
255 | self.assertIn("default dl-dir {}".format(os.path.join(self.tempdir, 'downloads')), out[0]) | ||
256 | self.assertIn("default registry {}".format('git://{};protocol=file;branch=master;rev=master'.format(self.registrypath)), out[0]) | ||
257 | |||
225 | # check that 'list' produces correct output with no configs, one config and two configs | 258 | # check that 'list' produces correct output with no configs, one config and two configs |
226 | out = self.runbbsetup("list") | 259 | out = self.runbbsetup("list") |
227 | self.assertNotIn("test-config-1", out[0]) | 260 | self.assertNotIn("test-config-1", out[0]) |
@@ -247,8 +280,18 @@ print("BBPATH is {{}}".format(os.environ["BBPATH"])) | |||
247 | self.add_file_to_testrepo('test-file', test_file_content) | 280 | self.add_file_to_testrepo('test-file', test_file_content) |
248 | 281 | ||
249 | # test-config-1 is tested as a registry config, test-config-2 as a local file | 282 | # test-config-1 is tested as a registry config, test-config-2 as a local file |
250 | test_configurations = {'test-config-1': {'cmdline': 'test-config-1', 'buildconfigs':('gadget','gizmo','gadget-notemplate','gizmo-notemplate')}, | 283 | test_configurations = {'test-config-1': {'cmdline': 'test-config-1', |
251 | 'test-config-2': {'cmdline': os.path.join(self.registrypath,'config-2/test-config-2.conf.json'), 'buildconfigs': ('gadget','gizmo','gadget-notemplate','gizmo-notemplate', 'gizmo-notemplate-with-thisdir') } } | 284 | 'buildconfigs':('gadget','gizmo', |
285 | 'gizmo-env-passthrough', | ||
286 | 'gizmo-no-fragment', | ||
287 | 'gadget-notemplate','gizmo-notemplate')}, | ||
288 | 'test-config-2': {'cmdline': os.path.join(self.registrypath,'config-2/test-config-2.conf.json'), | ||
289 | 'buildconfigs': ('gadget','gizmo', | ||
290 | 'gizmo-env-passthrough', | ||
291 | 'gizmo-no-fragment', | ||
292 | 'gadget-notemplate','gizmo-notemplate', | ||
293 | 'gizmo-notemplate-with-thisdir')} | ||
294 | } | ||
252 | for cf, v in test_configurations.items(): | 295 | for cf, v in test_configurations.items(): |
253 | for c in v['buildconfigs']: | 296 | for c in v['buildconfigs']: |
254 | out = self.runbbsetup("init --non-interactive {} {}".format(v['cmdline'], c)) | 297 | out = self.runbbsetup("init --non-interactive {} {}".format(v['cmdline'], c)) |
@@ -272,13 +315,16 @@ print("BBPATH is {{}}".format(os.environ["BBPATH"])) | |||
272 | prev_test_file_content = test_file_content | 315 | prev_test_file_content = test_file_content |
273 | test_file_content = 'modified\n' | 316 | test_file_content = 'modified\n' |
274 | self.add_file_to_testrepo('test-file', test_file_content) | 317 | self.add_file_to_testrepo('test-file', test_file_content) |
275 | for c in ('gadget','gizmo','gadget-notemplate','gizmo-notemplate'): | 318 | for c in ('gadget', 'gizmo', |
319 | 'gizmo-env-passthrough', | ||
320 | 'gizmo-no-fragment', | ||
321 | 'gadget-notemplate', 'gizmo-notemplate'): | ||
276 | buildpath = os.path.join(self.tempdir, 'bitbake-builds', 'test-config-1-{}'.format(c)) | 322 | buildpath = os.path.join(self.tempdir, 'bitbake-builds', 'test-config-1-{}'.format(c)) |
277 | os.environ['BBPATH'] = os.path.join(buildpath, 'build') | 323 | os.environ['BBPATH'] = os.path.join(buildpath, 'build') |
278 | out = self.runbbsetup("status") | 324 | out = self.runbbsetup("status") |
279 | self.assertIn("Layer repository file://{} checked out into {}/layers/test-repo updated revision master from".format(self.testrepopath, buildpath), out[0]) | 325 | self.assertIn("Layer repository file://{} checked out into {}/layers/test-repo updated revision master from".format(self.testrepopath, buildpath), out[0]) |
280 | out = self.runbbsetup("update") | 326 | out = self.runbbsetup("update") |
281 | if c in ('gadget','gizmo'): | 327 | if c in ('gadget', 'gizmo'): |
282 | self.assertIn("Existing bitbake configuration directory renamed to {}/build/conf-backup.".format(buildpath), out[0]) | 328 | self.assertIn("Existing bitbake configuration directory renamed to {}/build/conf-backup.".format(buildpath), out[0]) |
283 | self.assertIn('-{}+{}'.format(prev_test_file_content, test_file_content), out[0]) | 329 | self.assertIn('-{}+{}'.format(prev_test_file_content, test_file_content), out[0]) |
284 | with open(os.path.join(buildpath, 'config', "config-upstream.json")) as f: | 330 | with open(os.path.join(buildpath, 'config', "config-upstream.json")) as f: |
@@ -294,14 +340,17 @@ print("BBPATH is {{}}".format(os.environ["BBPATH"])) | |||
294 | self.git('checkout -b {}'.format(branch), cwd=self.testrepopath) | 340 | self.git('checkout -b {}'.format(branch), cwd=self.testrepopath) |
295 | self.add_file_to_testrepo('test-file', test_file_content) | 341 | self.add_file_to_testrepo('test-file', test_file_content) |
296 | json_1 = self.add_json_config_to_registry('test-config-1.conf.json', branch, branch) | 342 | json_1 = self.add_json_config_to_registry('test-config-1.conf.json', branch, branch) |
297 | for c in ('gadget','gizmo','gadget-notemplate','gizmo-notemplate'): | 343 | for c in ('gadget', 'gizmo', |
344 | 'gizmo-env-passthrough', | ||
345 | 'gizmo-no-fragment', | ||
346 | 'gadget-notemplate', 'gizmo-notemplate'): | ||
298 | buildpath = os.path.join(self.tempdir, 'bitbake-builds', 'test-config-1-{}'.format(c)) | 347 | buildpath = os.path.join(self.tempdir, 'bitbake-builds', 'test-config-1-{}'.format(c)) |
299 | os.environ['BBPATH'] = os.path.join(buildpath, 'build') | 348 | os.environ['BBPATH'] = os.path.join(buildpath, 'build') |
300 | out = self.runbbsetup("status") | 349 | out = self.runbbsetup("status") |
301 | self.assertIn("Configuration in {} has changed:".format(buildpath), out[0]) | 350 | self.assertIn("Configuration in {} has changed:".format(buildpath), out[0]) |
302 | self.assertIn('- "rev": "master"\n+ "rev": "another-branch"', out[0]) | 351 | self.assertIn('- "rev": "master"\n+ "rev": "another-branch"', out[0]) |
303 | out = self.runbbsetup("update") | 352 | out = self.runbbsetup("update") |
304 | if c in ('gadget','gizmo'): | 353 | if c in ('gadget', 'gizmo'): |
305 | self.assertIn("Existing bitbake configuration directory renamed to {}/build/conf-backup.".format(buildpath), out[0]) | 354 | self.assertIn("Existing bitbake configuration directory renamed to {}/build/conf-backup.".format(buildpath), out[0]) |
306 | self.assertIn('-{}+{}'.format(prev_test_file_content, test_file_content), out[0]) | 355 | self.assertIn('-{}+{}'.format(prev_test_file_content, test_file_content), out[0]) |
307 | with open(os.path.join(buildpath, 'config', "config-upstream.json")) as f: | 356 | with open(os.path.join(buildpath, 'config', "config-upstream.json")) as f: |
diff --git a/meta-yocto-bsp/lib/oeqa/selftest/cases/systemd_boot.py b/meta-yocto-bsp/lib/oeqa/selftest/cases/systemd_boot.py index 781763d1f1..961d4ea31d 100644 --- a/meta-yocto-bsp/lib/oeqa/selftest/cases/systemd_boot.py +++ b/meta-yocto-bsp/lib/oeqa/selftest/cases/systemd_boot.py | |||
@@ -18,7 +18,7 @@ class Systemdboot(OESelftestTestCase): | |||
18 | 18 | ||
19 | # Set EFI_PROVIDER = "systemdboot" and MACHINE = "genericx86-64" in conf/local.conf | 19 | # Set EFI_PROVIDER = "systemdboot" and MACHINE = "genericx86-64" in conf/local.conf |
20 | features = 'EFI_PROVIDER = "systemd-boot"\n' | 20 | features = 'EFI_PROVIDER = "systemd-boot"\n' |
21 | features += 'MACHINE = "genericx86-64"\n' | 21 | features += 'MACHINE:forcevariable = "genericx86-64"\n' |
22 | features += 'IMAGE_FSTYPES += "wic"\n' | 22 | features += 'IMAGE_FSTYPES += "wic"\n' |
23 | features += 'COMPATIBLE_MACHINE:pn-ssh-pregen-hostkeys:genericx86-64 = "genericx86-64"\n' | 23 | features += 'COMPATIBLE_MACHINE:pn-ssh-pregen-hostkeys:genericx86-64 = "genericx86-64"\n' |
24 | self.append_config(features) | 24 | self.append_config(features) |
diff --git a/meta/classes-recipe/core-image.bbclass b/meta/classes-recipe/core-image.bbclass index 4072e420c5..309a7c577b 100644 --- a/meta/classes-recipe/core-image.bbclass +++ b/meta/classes-recipe/core-image.bbclass | |||
@@ -33,6 +33,7 @@ | |||
33 | # LICENSE_CREATE_PACKAGE="1" to be set when building packages too | 33 | # LICENSE_CREATE_PACKAGE="1" to be set when building packages too |
34 | # - doc-pkgs - documentation packages for all installed packages in the rootfs | 34 | # - doc-pkgs - documentation packages for all installed packages in the rootfs |
35 | # - bash-completion-pkgs - bash-completion packages for recipes using bash-completion bbclass | 35 | # - bash-completion-pkgs - bash-completion packages for recipes using bash-completion bbclass |
36 | # - zsh-completion-pkgs - zsh-completion packages | ||
36 | # - ptest-pkgs - ptest packages for all ptest-enabled recipes | 37 | # - ptest-pkgs - ptest packages for all ptest-enabled recipes |
37 | # - read-only-rootfs - tweaks an image to support read-only rootfs | 38 | # - read-only-rootfs - tweaks an image to support read-only rootfs |
38 | # - stateless-rootfs - systemctl-native not run, image populated by systemd at runtime | 39 | # - stateless-rootfs - systemctl-native not run, image populated by systemd at runtime |
diff --git a/meta/classes-recipe/populate_sdk_base.bbclass b/meta/classes-recipe/populate_sdk_base.bbclass index 0c2fd26e6f..8e671cf28f 100644 --- a/meta/classes-recipe/populate_sdk_base.bbclass +++ b/meta/classes-recipe/populate_sdk_base.bbclass | |||
@@ -24,6 +24,7 @@ COMPLEMENTARY_GLOB[dbg-pkgs] = '*-dbg' | |||
24 | COMPLEMENTARY_GLOB[src-pkgs] = '*-src' | 24 | COMPLEMENTARY_GLOB[src-pkgs] = '*-src' |
25 | COMPLEMENTARY_GLOB[ptest-pkgs] = '*-ptest ${MLPREFIX}ptest-runner' | 25 | COMPLEMENTARY_GLOB[ptest-pkgs] = '*-ptest ${MLPREFIX}ptest-runner' |
26 | COMPLEMENTARY_GLOB[bash-completion-pkgs] = '*-bash-completion' | 26 | COMPLEMENTARY_GLOB[bash-completion-pkgs] = '*-bash-completion' |
27 | COMPLEMENTARY_GLOB[zsh-completion-pkgs] = '*-zsh-completion' | ||
27 | 28 | ||
28 | def complementary_globs(featurevar, d): | 29 | def complementary_globs(featurevar, d): |
29 | all_globs = d.getVarFlags('COMPLEMENTARY_GLOB') | 30 | all_globs = d.getVarFlags('COMPLEMENTARY_GLOB') |
diff --git a/meta/classes-recipe/uboot-config.bbclass b/meta/classes-recipe/uboot-config.bbclass index bc20913f73..eb82dd3583 100644 --- a/meta/classes-recipe/uboot-config.bbclass +++ b/meta/classes-recipe/uboot-config.bbclass | |||
@@ -35,6 +35,7 @@ UBOOT_BINARYNAME ?= "${@os.path.splitext(d.getVar("UBOOT_BINARY"))[0]}" | |||
35 | UBOOT_IMAGE ?= "${UBOOT_BINARYNAME}-${MACHINE}-${UBOOT_VERSION}.${UBOOT_SUFFIX}" | 35 | UBOOT_IMAGE ?= "${UBOOT_BINARYNAME}-${MACHINE}-${UBOOT_VERSION}.${UBOOT_SUFFIX}" |
36 | UBOOT_SYMLINK ?= "${UBOOT_BINARYNAME}-${MACHINE}.${UBOOT_SUFFIX}" | 36 | UBOOT_SYMLINK ?= "${UBOOT_BINARYNAME}-${MACHINE}.${UBOOT_SUFFIX}" |
37 | UBOOT_MAKE_TARGET ?= "all" | 37 | UBOOT_MAKE_TARGET ?= "all" |
38 | UBOOT_MAKE_OPTS ?= "" | ||
38 | 39 | ||
39 | # Output the ELF generated. Some platforms can use the ELF file and directly | 40 | # Output the ELF generated. Some platforms can use the ELF file and directly |
40 | # load it (JTAG booting, QEMU) additionally the ELF can be used for debugging | 41 | # load it (JTAG booting, QEMU) additionally the ELF can be used for debugging |
@@ -103,6 +104,7 @@ python () { | |||
103 | ubootconfigflags = d.getVarFlags('UBOOT_CONFIG') | 104 | ubootconfigflags = d.getVarFlags('UBOOT_CONFIG') |
104 | ubootbinary = d.getVar('UBOOT_BINARY') | 105 | ubootbinary = d.getVar('UBOOT_BINARY') |
105 | ubootbinaries = d.getVar('UBOOT_BINARIES') | 106 | ubootbinaries = d.getVar('UBOOT_BINARIES') |
107 | ubootconfigmakeopts = d.getVar('UBOOT_CONFIG_MAKE_OPTS') | ||
106 | # The "doc" varflag is special, we don't want to see it here | 108 | # The "doc" varflag is special, we don't want to see it here |
107 | ubootconfigflags.pop('doc', None) | 109 | ubootconfigflags.pop('doc', None) |
108 | ubootconfig = (d.getVar('UBOOT_CONFIG') or "").split() | 110 | ubootconfig = (d.getVar('UBOOT_CONFIG') or "").split() |
@@ -120,6 +122,9 @@ python () { | |||
120 | if ubootconfigflags and ubootbinaries: | 122 | if ubootconfigflags and ubootbinaries: |
121 | raise bb.parse.SkipRecipe("You cannot use UBOOT_BINARIES as it is internal to uboot_config.bbclass.") | 123 | raise bb.parse.SkipRecipe("You cannot use UBOOT_BINARIES as it is internal to uboot_config.bbclass.") |
122 | 124 | ||
125 | if ubootconfigflags and ubootconfigmakeopts: | ||
126 | raise bb.parse.SkipRecipe("You cannot use UBOOT_CONFIG_MAKE_OPTS as it is internal to uboot_config.bbclass.") | ||
127 | |||
123 | if len(ubootconfig) > 0: | 128 | if len(ubootconfig) > 0: |
124 | for config in ubootconfig: | 129 | for config in ubootconfig: |
125 | found = False | 130 | found = False |
@@ -127,8 +132,8 @@ python () { | |||
127 | if config == f: | 132 | if config == f: |
128 | found = True | 133 | found = True |
129 | items = v.split(',') | 134 | items = v.split(',') |
130 | if items[0] and len(items) > 3: | 135 | if items[0] and len(items) > 4: |
131 | raise bb.parse.SkipRecipe('Only config,images,binary can be specified!') | 136 | raise bb.parse.SkipRecipe('Only config,images,binary,make_opts can be specified!') |
132 | d.appendVar('UBOOT_MACHINE', ' ' + items[0]) | 137 | d.appendVar('UBOOT_MACHINE', ' ' + items[0]) |
133 | # IMAGE_FSTYPES appending | 138 | # IMAGE_FSTYPES appending |
134 | if len(items) > 1 and items[1]: | 139 | if len(items) > 1 and items[1]: |
@@ -140,6 +145,12 @@ python () { | |||
140 | else: | 145 | else: |
141 | bb.debug(1, "Appending '%s' to UBOOT_BINARIES." % ubootbinary) | 146 | bb.debug(1, "Appending '%s' to UBOOT_BINARIES." % ubootbinary) |
142 | d.appendVar('UBOOT_BINARIES', ' ' + ubootbinary) | 147 | d.appendVar('UBOOT_BINARIES', ' ' + ubootbinary) |
148 | if len(items) > 3 and items[3]: | ||
149 | bb.debug(1, "Appending '%s' to UBOOT_CONFIG_MAKE_OPTS." % items[3]) | ||
150 | d.appendVar('UBOOT_CONFIG_MAKE_OPTS', items[3] + " ? ") | ||
151 | else: | ||
152 | bb.debug(1, "Appending '%s' to UBOOT_CONFIG_MAKE_OPTS." % "") | ||
153 | d.appendVar('UBOOT_CONFIG_MAKE_OPTS', " ? ") | ||
143 | break | 154 | break |
144 | 155 | ||
145 | if not found: | 156 | if not found: |
diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf index 8d1ea5491d..5406e542db 100644 --- a/meta/conf/bitbake.conf +++ b/meta/conf/bitbake.conf | |||
@@ -775,9 +775,9 @@ export PKG_CONFIG_DISABLE_UNINSTALLED = "yes" | |||
775 | export PKG_CONFIG_SYSTEM_LIBRARY_PATH = "${base_libdir}:${libdir}" | 775 | export PKG_CONFIG_SYSTEM_LIBRARY_PATH = "${base_libdir}:${libdir}" |
776 | export PKG_CONFIG_SYSTEM_INCLUDE_PATH = "${includedir}" | 776 | export PKG_CONFIG_SYSTEM_INCLUDE_PATH = "${includedir}" |
777 | 777 | ||
778 | # Don't allow git to chdir up past WORKDIR so that it doesn't detect the OE | 778 | # Don't allow git to chdir up past WORKDIR or TMPDIR so that it doesn't detect the OE |
779 | # repository when building a recipe | 779 | # repository when building a recipe. |
780 | export GIT_CEILING_DIRECTORIES = "${WORKDIR}" | 780 | export GIT_CEILING_DIRECTORIES = "${WORKDIR}:${TMPDIR}" |
781 | 781 | ||
782 | ### | 782 | ### |
783 | ### Config file processing | 783 | ### Config file processing |
diff --git a/meta/lib/oe/recipeutils.py b/meta/lib/oe/recipeutils.py index 102789ce73..54bc3d7666 100644 --- a/meta/lib/oe/recipeutils.py +++ b/meta/lib/oe/recipeutils.py | |||
@@ -1073,7 +1073,7 @@ def get_recipe_upstream_version(rd): | |||
1073 | upversion = None | 1073 | upversion = None |
1074 | revision = None | 1074 | revision = None |
1075 | try: | 1075 | try: |
1076 | revision = ud.method.latest_revision(ud, rd, 'default') | 1076 | revision = ud.method.latest_revision(ud, rd, ud.name) |
1077 | upversion = pv | 1077 | upversion = pv |
1078 | if revision != ud.revision: | 1078 | if revision != ud.revision: |
1079 | upversion = upversion + "-new-commits-available" | 1079 | upversion = upversion + "-new-commits-available" |
diff --git a/meta/lib/oeqa/core/target/ssh.py b/meta/lib/oeqa/core/target/ssh.py index 8b5c450a05..0ac3ae4388 100644 --- a/meta/lib/oeqa/core/target/ssh.py +++ b/meta/lib/oeqa/core/target/ssh.py | |||
@@ -55,7 +55,7 @@ class OESSHTarget(OETarget): | |||
55 | def stop(self, **kwargs): | 55 | def stop(self, **kwargs): |
56 | pass | 56 | pass |
57 | 57 | ||
58 | def _run(self, command, timeout=None, ignore_status=True, raw=False): | 58 | def _run(self, command, timeout=None, ignore_status=True, raw=False, ignore_ssh_fails=False): |
59 | """ | 59 | """ |
60 | Runs command in target using SSHProcess. | 60 | Runs command in target using SSHProcess. |
61 | """ | 61 | """ |
@@ -66,13 +66,17 @@ class OESSHTarget(OETarget): | |||
66 | self.logger.debug("[Command returned '%d' after %.2f seconds]" | 66 | self.logger.debug("[Command returned '%d' after %.2f seconds]" |
67 | "" % (status, time.time() - starttime)) | 67 | "" % (status, time.time() - starttime)) |
68 | 68 | ||
69 | if status and not ignore_status: | 69 | if status == 255 and not ignore_ssh_fails: |
70 | raise AssertionError("ssh exited with status '255' for command " | ||
71 | "'%s': this is likely an SSH failure\n%s" | ||
72 | % (command, output)) | ||
73 | elif status and not ignore_status: | ||
70 | raise AssertionError("Command '%s' returned non-zero exit " | 74 | raise AssertionError("Command '%s' returned non-zero exit " |
71 | "status %d:\n%s" % (command, status, output)) | 75 | "status %d:\n%s" % (command, status, output)) |
72 | 76 | ||
73 | return (status, output) | 77 | return (status, output) |
74 | 78 | ||
75 | def run(self, command, timeout=None, ignore_status=True, raw=False): | 79 | def run(self, command, timeout=None, ignore_status=True, raw=False, ignore_ssh_fails=False): |
76 | """ | 80 | """ |
77 | Runs command in target. | 81 | Runs command in target. |
78 | 82 | ||
@@ -91,7 +95,7 @@ class OESSHTarget(OETarget): | |||
91 | else: | 95 | else: |
92 | processTimeout = self.timeout | 96 | processTimeout = self.timeout |
93 | 97 | ||
94 | status, output = self._run(sshCmd, processTimeout, ignore_status, raw) | 98 | status, output = self._run(sshCmd, processTimeout, ignore_status, raw, ignore_ssh_fails) |
95 | if len(output) > (64 * 1024): | 99 | if len(output) > (64 * 1024): |
96 | self.logger.debug('Command: %s\nStatus: %d Output length: %s\n' % (command, status, len(output))) | 100 | self.logger.debug('Command: %s\nStatus: %d Output length: %s\n' % (command, status, len(output))) |
97 | else: | 101 | else: |
diff --git a/meta/lib/oeqa/runtime/cases/logrotate.py b/meta/lib/oeqa/runtime/cases/logrotate.py index 6ad980cb6a..7cb43d98c5 100644 --- a/meta/lib/oeqa/runtime/cases/logrotate.py +++ b/meta/lib/oeqa/runtime/cases/logrotate.py | |||
@@ -15,12 +15,13 @@ class LogrotateTest(OERuntimeTestCase): | |||
15 | 15 | ||
16 | @classmethod | 16 | @classmethod |
17 | def setUpClass(cls): | 17 | def setUpClass(cls): |
18 | cls.tc.target.run('cp /etc/logrotate.d/wtmp $HOME/wtmp.oeqabak') | 18 | cls.tc.target.run('cp /etc/logrotate.d/wtmp $HOME/wtmp.oeqabak', |
19 | ignore_ssh_fails=True) | ||
19 | 20 | ||
20 | @classmethod | 21 | @classmethod |
21 | def tearDownClass(cls): | 22 | def tearDownClass(cls): |
22 | cls.tc.target.run('mv -f $HOME/wtmp.oeqabak /etc/logrotate.d/wtmp && rm -rf /var/log//logrotate_dir') | 23 | cls.tc.target.run('mv -f $HOME/wtmp.oeqabak /etc/logrotate.d/wtmp && rm -rf /var/log//logrotate_dir', ignore_ssh_fails=True) |
23 | cls.tc.target.run('rm -rf /var/log/logrotate_testfile && rm -rf /etc/logrotate.d/logrotate_testfile') | 24 | cls.tc.target.run('rm -rf /var/log/logrotate_testfile && rm -rf /etc/logrotate.d/logrotate_testfile', ignore_ssh_fails=True) |
24 | 25 | ||
25 | @OETestDepends(['ssh.SSHTest.test_ssh']) | 26 | @OETestDepends(['ssh.SSHTest.test_ssh']) |
26 | @OEHasPackage(['logrotate']) | 27 | @OEHasPackage(['logrotate']) |
diff --git a/meta/lib/oeqa/runtime/cases/ssh.py b/meta/lib/oeqa/runtime/cases/ssh.py index b632a29a01..3e9503277e 100644 --- a/meta/lib/oeqa/runtime/cases/ssh.py +++ b/meta/lib/oeqa/runtime/cases/ssh.py | |||
@@ -17,7 +17,7 @@ class SSHTest(OERuntimeTestCase): | |||
17 | @OEHasPackage(['dropbear', 'openssh-sshd']) | 17 | @OEHasPackage(['dropbear', 'openssh-sshd']) |
18 | def test_ssh(self): | 18 | def test_ssh(self): |
19 | for i in range(5): | 19 | for i in range(5): |
20 | status, output = self.target.run("uname -a", timeout=30) | 20 | status, output = self.target.run("uname -a", timeout=30, ignore_ssh_fails=True) |
21 | if status == 0: | 21 | if status == 0: |
22 | break | 22 | break |
23 | elif status == 255 or status == -signal.SIGTERM: | 23 | elif status == 255 or status == -signal.SIGTERM: |
diff --git a/meta/lib/oeqa/runtime/cases/weston.py b/meta/lib/oeqa/runtime/cases/weston.py index ee4d336482..e2cecffe83 100644 --- a/meta/lib/oeqa/runtime/cases/weston.py +++ b/meta/lib/oeqa/runtime/cases/weston.py | |||
@@ -16,7 +16,7 @@ class WestonTest(OERuntimeTestCase): | |||
16 | 16 | ||
17 | @classmethod | 17 | @classmethod |
18 | def tearDownClass(cls): | 18 | def tearDownClass(cls): |
19 | cls.tc.target.run('rm %s' % cls.weston_log_file) | 19 | cls.tc.target.run('rm %s' % cls.weston_log_file, ignore_ssh_fails=True) |
20 | 20 | ||
21 | @OETestDepends(['ssh.SSHTest.test_ssh']) | 21 | @OETestDepends(['ssh.SSHTest.test_ssh']) |
22 | @OEHasPackage(['weston']) | 22 | @OEHasPackage(['weston']) |
diff --git a/meta/lib/oeqa/sdk/cases/autotools.py b/meta/lib/oeqa/sdk/cases/autotools.py index 3f51854e3d..ecafafa7d6 100644 --- a/meta/lib/oeqa/sdk/cases/autotools.py +++ b/meta/lib/oeqa/sdk/cases/autotools.py | |||
@@ -27,7 +27,7 @@ class AutotoolsTest(OESDKTestCase): | |||
27 | pmv = parallel_make_value((self.td.get('PARALLEL_MAKE') or '').split()) | 27 | pmv = parallel_make_value((self.td.get('PARALLEL_MAKE') or '').split()) |
28 | 28 | ||
29 | with tempfile.TemporaryDirectory(prefix="cpio-", dir=self.tc.sdk_dir) as testdir: | 29 | with tempfile.TemporaryDirectory(prefix="cpio-", dir=self.tc.sdk_dir) as testdir: |
30 | tarball = self.fetch(testdir, self.td["DL_DIR"], "https://ftp.gnu.org/gnu/cpio/cpio-2.15.tar.gz") | 30 | tarball = self.fetch(testdir, self.td["DL_DIR"], "https://ftpmirror.gnu.org/gnu/cpio/cpio-2.15.tar.gz") |
31 | 31 | ||
32 | opts = {} | 32 | opts = {} |
33 | opts["source"] = os.path.join(testdir, "cpio-2.15") | 33 | opts["source"] = os.path.join(testdir, "cpio-2.15") |
diff --git a/meta/lib/oeqa/selftest/cases/bblayers.py b/meta/lib/oeqa/selftest/cases/bblayers.py index 08bc1d1e44..8026e7ed4a 100644 --- a/meta/lib/oeqa/selftest/cases/bblayers.py +++ b/meta/lib/oeqa/selftest/cases/bblayers.py | |||
@@ -157,7 +157,9 @@ class BitbakeLayers(OESelftestTestCase): | |||
157 | with open(jsonfile) as f: | 157 | with open(jsonfile) as f: |
158 | data = json.load(f) | 158 | data = json.load(f) |
159 | for s in data['sources']: | 159 | for s in data['sources']: |
160 | if s == 'meta-yocto': | 160 | if s == 'poky': |
161 | data['sources'][s]['git-remote']['rev'] = '5200799866b92259e855051112520006e1aaaac0' | ||
162 | elif s == 'meta-yocto': | ||
161 | data['sources'][s]['git-remote']['rev'] = '913bd8ba4dd1d5d2a38261bde985b64a36e36281' | 163 | data['sources'][s]['git-remote']['rev'] = '913bd8ba4dd1d5d2a38261bde985b64a36e36281' |
162 | else: | 164 | else: |
163 | data['sources'][s]['git-remote']['rev'] = '744a2277844ec9a384a9ca7dae2a634d5a0d3590' | 165 | data['sources'][s]['git-remote']['rev'] = '744a2277844ec9a384a9ca7dae2a634d5a0d3590' |
diff --git a/meta/lib/oeqa/selftest/cases/meta_ide.py b/meta/lib/oeqa/selftest/cases/meta_ide.py index 1a11473797..f105302d8b 100644 --- a/meta/lib/oeqa/selftest/cases/meta_ide.py +++ b/meta/lib/oeqa/selftest/cases/meta_ide.py | |||
@@ -44,7 +44,7 @@ class MetaIDE(OESelftestTestCase): | |||
44 | def test_meta_ide_can_build_cpio_project(self): | 44 | def test_meta_ide_can_build_cpio_project(self): |
45 | dl_dir = self.td.get('DL_DIR', None) | 45 | dl_dir = self.td.get('DL_DIR', None) |
46 | self.project = SDKBuildProject(self.tmpdir_metaideQA + "/cpio/", self.environment_script_path, | 46 | self.project = SDKBuildProject(self.tmpdir_metaideQA + "/cpio/", self.environment_script_path, |
47 | "https://ftp.gnu.org/gnu/cpio/cpio-2.15.tar.gz", | 47 | "https://ftpmirror.gnu.org/gnu/cpio/cpio-2.15.tar.gz", |
48 | self.tmpdir_metaideQA, self.td['DATETIME'], dl_dir=dl_dir) | 48 | self.tmpdir_metaideQA, self.td['DATETIME'], dl_dir=dl_dir) |
49 | self.project.download_archive() | 49 | self.project.download_archive() |
50 | self.assertEqual(self.project.run_configure('CFLAGS="-std=gnu17 -Dbool=int -Dtrue=1 -Dfalse=0 -Wno-error=implicit-function-declaration" $CONFIGURE_FLAGS'), 0, | 50 | self.assertEqual(self.project.run_configure('CFLAGS="-std=gnu17 -Dbool=int -Dtrue=1 -Dfalse=0 -Wno-error=implicit-function-declaration" $CONFIGURE_FLAGS'), 0, |
diff --git a/meta/lib/oeqa/utils/postactions.py b/meta/lib/oeqa/utils/postactions.py index c69481db6c..7b967edaad 100644 --- a/meta/lib/oeqa/utils/postactions.py +++ b/meta/lib/oeqa/utils/postactions.py | |||
@@ -22,7 +22,7 @@ from oeqa.utils import get_artefact_dir | |||
22 | def get_target_disk_usage(d, tc, artifacts_list, outputdir): | 22 | def get_target_disk_usage(d, tc, artifacts_list, outputdir): |
23 | output_file = os.path.join(outputdir, "target_disk_usage.txt") | 23 | output_file = os.path.join(outputdir, "target_disk_usage.txt") |
24 | try: | 24 | try: |
25 | (status, output) = tc.target.run('df -h') | 25 | (status, output) = tc.target.run('df -h', ignore_ssh_fails=True) |
26 | with open(output_file, 'w') as f: | 26 | with open(output_file, 'w') as f: |
27 | f.write(output) | 27 | f.write(output) |
28 | f.write("\n") | 28 | f.write("\n") |
@@ -49,7 +49,7 @@ def get_artifacts_list(target, raw_list): | |||
49 | for raw_path in raw_list.split(): | 49 | for raw_path in raw_list.split(): |
50 | cmd = f"for p in {raw_path}; do if [ -e $p ]; then echo $p; fi; done" | 50 | cmd = f"for p in {raw_path}; do if [ -e $p ]; then echo $p; fi; done" |
51 | try: | 51 | try: |
52 | status, output = target.run(cmd) | 52 | status, output = target.run(cmd, ignore_ssh_fails=True) |
53 | if status != 0 or not output: | 53 | if status != 0 or not output: |
54 | raise Exception() | 54 | raise Exception() |
55 | result += output.split() | 55 | result += output.split() |
diff --git a/meta/lib/patchtest/repo.py b/meta/lib/patchtest/repo.py index 2cdd6736e4..6a7d7d2d3b 100644 --- a/meta/lib/patchtest/repo.py +++ b/meta/lib/patchtest/repo.py | |||
@@ -21,7 +21,12 @@ class PatchTestRepo(object): | |||
21 | self.repodir = repodir | 21 | self.repodir = repodir |
22 | self.repo = git.Repo.init(repodir) | 22 | self.repo = git.Repo.init(repodir) |
23 | self.patch = mbox.PatchSeries(patch) | 23 | self.patch = mbox.PatchSeries(patch) |
24 | self.current_branch = self.repo.active_branch.name | 24 | |
25 | if self.repo.head.is_detached: | ||
26 | self.current_commit = self.repo.head.commit.hexsha | ||
27 | self.current_branch = None | ||
28 | else: | ||
29 | self.current_branch = self.repo.active_branch.name | ||
25 | 30 | ||
26 | # targeted branch defined on the patch may be invalid, so make sure there | 31 | # targeted branch defined on the patch may be invalid, so make sure there |
27 | # is a corresponding remote branch | 32 | # is a corresponding remote branch |
@@ -80,6 +85,6 @@ class PatchTestRepo(object): | |||
80 | self._patchmerged = True | 85 | self._patchmerged = True |
81 | 86 | ||
82 | def clean(self): | 87 | def clean(self): |
83 | self.repo.git.execute(['git', 'checkout', self.current_branch]) | 88 | self.repo.git.execute(['git', 'checkout', self.current_branch if self.current_branch else self.current_commit]) |
84 | self.repo.git.execute(['git', 'branch', '-D', self._workingbranch]) | 89 | self.repo.git.execute(['git', 'branch', '-D', self._workingbranch]) |
85 | self._patchmerged = False | 90 | self._patchmerged = False |
diff --git a/meta/recipes-bsp/u-boot/files/0001-Makefile-add-dependency-from-lib-to-arch-ARCH-lib.patch b/meta/recipes-bsp/u-boot/files/0001-Makefile-add-dependency-from-lib-to-arch-ARCH-lib.patch deleted file mode 100644 index 06fdaf5b0a..0000000000 --- a/meta/recipes-bsp/u-boot/files/0001-Makefile-add-dependency-from-lib-to-arch-ARCH-lib.patch +++ /dev/null | |||
@@ -1,81 +0,0 @@ | |||
1 | From d0075e2d730a4fa48aa763a669e5edbc02c33a22 Mon Sep 17 00:00:00 2001 | ||
2 | From: Mikko Rapeli <mikko.rapeli@linaro.org> | ||
3 | Date: Thu, 31 Jul 2025 14:52:48 +0300 | ||
4 | Subject: [PATCH] Makefile: add dependency from lib to arch/$(ARCH)/lib | ||
5 | |||
6 | Top level Makefile starts separate "make" processes for each each | ||
7 | subdirectory. lib/efi_loader apps now depend on lib.a from | ||
8 | arch/$(ARCH)/lib if CONFIG_USE_PRIVATE_LIBGCC is enabled which creates | ||
9 | a race conditions since dependency from lib/efi_loader EFI apps to | ||
10 | arch/$(ARCH)/lib/lib.a is not explicit: | ||
11 | |||
12 | arm-poky-linux-gnueabi-ld.bfd: cannot find arch/arm/lib/lib.a: No such file or directory | ||
13 | make[3]: *** [scripts/Makefile.lib:512: lib/efi_loader/testapp_efi.so] Error 1 | ||
14 | |||
15 | This error was seen on yocto/OE-core CI builds after u-boot 2025.07 update: | ||
16 | |||
17 | https://lists.openembedded.org/g/openembedded-core/message/220004 | ||
18 | |||
19 | https://autobuilder.yoctoproject.org/valkyrie/api/v2/logs/2914600/raw_inline | ||
20 | |||
21 | | rm -f lib/efi_loader/built-in.o; arm-poky-linux-gnueabi-ar cDPrsT lib/efi_loader/built-in.o lib/efi_loader/efi_bootmgr.o lib/efi_loader/efi_bootbin.o lib/efi_loader | ||
22 | /efi_boottime.o lib/efi_loader/efi_helper.o lib/efi_loader/efi_console.o lib/efi_loader/efi_device_path.o lib/efi_loader/efi_device_path_to_text.o lib/efi_loader/efi_device_ | ||
23 | path_utilities.o lib/efi_loader/efi_dt_fixup.o lib/efi_loader/efi_fdt.o lib/efi_loader/efi_file.o lib/efi_loader/efi_hii.o lib/efi_loader/efi_hii_config.o lib/efi_loader/efi | ||
24 | _image_loader.o lib/efi_loader/efi_load_options.o lib/efi_loader/efi_memory.o lib/efi_loader/efi_root_node.o lib/efi_loader/efi_runtime.o lib/efi_loader/efi_setup.o lib/efi_ | ||
25 | loader/efi_string.o lib/efi_loader/efi_unicode_collation.o lib/efi_loader/efi_var_common.o lib/efi_loader/efi_var_mem.o lib/efi_loader/efi_variable.o lib/efi_loader/efi_var_ | ||
26 | file.o lib/efi_loader/efi_watchdog.o lib/efi_loader/efi_disk.o lib/efi_loader/efi_net.o lib/efi_loader/efi_smbios.o lib/efi_loader/efi_load_initrd.o lib/efi_loader/efi_confo | ||
27 | rmance.o | ||
28 | | arm-poky-linux-gnueabi-ld.bfd -nostdlib -zexecstack -znocombreloc -znorelro --no-warn-rwx-segments -L /srv/pokybuild/yocto-worker/oe-selftest-armhost/build/build-st- | ||
29 | 3119200/tmp/work/beaglebone_yocto-poky-linux-gnueabi/u-boot/2025.07/sources/u-boot-2025.07 -T arch/arm/lib/elf_arm_efi.lds -shared -Bsymbolic -s lib/efi_loader/helloworld.o | ||
30 | lib/efi_loader/efi_crt0.o lib/efi_loader/efi_reloc.o lib/efi_loader/efi_freestanding.o arch/arm/lib/lib.a -o lib/efi_loader/helloworld_efi.so | ||
31 | | arm-poky-linux-gnueabi-ld.bfd: cannot find arch/arm/lib/lib.a: No such file or directory | ||
32 | | make[3]: *** [scripts/Makefile.lib:512: lib/efi_loader/helloworld_efi.so] Error 1 | ||
33 | |||
34 | The different "make" processes share common scripts/Makefile.build | ||
35 | and scripts/Makefile.libs but since they are separate processes | ||
36 | the Makefile rules can't add a dependency from lib/uefi_loader targets | ||
37 | to arch/$(ARCH)/lib/lib.a. Or the file level dependency can be added but | ||
38 | then "make" produces a too sparse error message which does not mention | ||
39 | that one of the dependencies like arch/$(ARCH)/lib/lib.a was not found: | ||
40 | |||
41 | make[3]: *** No rule to make target 'lib/efi_loader/helloworld.efi', needed by '__build'. Stop. | ||
42 | |||
43 | Fix this dependency problem by building arch/$(ARCH)/lib before lib | ||
44 | if CONFIG_USE_PRIVATE_LIBGCC was enabled. | ||
45 | |||
46 | To reproduce the race condition more reliably, add a "sleep 10" delay | ||
47 | before linker command cmd_link_l_target with 2025.07 | ||
48 | or to $(lib-target): target in scripts/Makefile.build with master branch | ||
49 | after Kbuild update. | ||
50 | |||
51 | Fixes: 43d43241d1c9 ("scripts/Makefile.lib: add PLATFORM_LIBGCC to efi linking") | ||
52 | |||
53 | Cc: Adriano Cordova <adrianox@gmail.com> | ||
54 | Cc: Fabio Estevam <festevam@gmail.com> | ||
55 | Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org> | ||
56 | Reviewed-by: Fabio Estevam <festevam@gmail.com> | ||
57 | --- | ||
58 | Makefile | 5 +++++ | ||
59 | 1 file changed, 5 insertions(+) | ||
60 | |||
61 | Upstream-Status: Backport | ||
62 | |||
63 | diff --git a/Makefile b/Makefile | ||
64 | index c31bf7ecea97..b03f87a93fb9 100644 | ||
65 | --- a/Makefile | ||
66 | +++ b/Makefile | ||
67 | @@ -2131,6 +2131,11 @@ $(filter-out tools, $(u-boot-dirs)): tools | ||
68 | # is "yes"), so compile examples after U-Boot is compiled. | ||
69 | examples: $(filter-out examples, $(u-boot-dirs)) | ||
70 | |||
71 | +ifeq ($(CONFIG_USE_PRIVATE_LIBGCC),y) | ||
72 | +# lib/efi_loader apps depend on arch/$(ARCH)/lib for lib.a | ||
73 | +lib: $(filter arch/$(ARCH)/lib, $(u-boot-dirs)) | ||
74 | +endif | ||
75 | + | ||
76 | # The setlocalversion script comes from linux and expects a | ||
77 | # KERNELVERSION variable in the environment for figuring out which | ||
78 | # annotated tags are relevant. Pass UBOOTVERSION. | ||
79 | -- | ||
80 | 2.43.0 | ||
81 | |||
diff --git a/meta/recipes-bsp/u-boot/files/0001-nxp-Prepare-macros-for-KVM-changes.patch b/meta/recipes-bsp/u-boot/files/0001-nxp-Prepare-macros-for-KVM-changes.patch deleted file mode 100644 index fa34c8033e..0000000000 --- a/meta/recipes-bsp/u-boot/files/0001-nxp-Prepare-macros-for-KVM-changes.patch +++ /dev/null | |||
@@ -1,100 +0,0 @@ | |||
1 | From 9be804cbfde1df715d79247b27de4b388c714cde Mon Sep 17 00:00:00 2001 | ||
2 | From: Ilias Apalodimas <ilias.apalodimas@linaro.org> | ||
3 | Date: Wed, 18 Jun 2025 09:58:12 +0300 | ||
4 | Subject: [PATCH 1/3] nxp: Prepare macros for KVM changes | ||
5 | |||
6 | A following patch is replacing our IO accessors with | ||
7 | do { ... } while(0) ones in order to make them usable with KVM. | ||
8 | |||
9 | That leads to an error eventually looking like this: | ||
10 | arch/arm/include/asm/io.h:62:9: error: expected expression before 'do' | ||
11 | 62 | do { \ | ||
12 | | ^~ | ||
13 | arch/arm/include/asm/io.h:211:41: note: in expansion of macro '__raw_writel' | ||
14 | 211 | #define out_arch(type,endian,a,v) __raw_write##type(cpu_to_##endian(v),a) | ||
15 | | ^~~~~~~~~~~ | ||
16 | arch/arm/include/asm/io.h:223:25: note: in expansion of macro 'out_arch' | ||
17 | 223 | #define out_be32(a,v) out_arch(l,be32,a,v) | ||
18 | | ^~~~~~~~ | ||
19 | drivers/spi/fsl_dspi.c:127:17: note: in expansion of macro 'out_be32' | ||
20 | 127 | out_be32(addr, val) : out_le32(addr, val); | ||
21 | | ^~~~~~~~ | ||
22 | |||
23 | So adjust the current macros and code to be compatible with the upcoming | ||
24 | change. | ||
25 | |||
26 | Upstream-Status: Backport [https://github.com/u-boot/u-boot/commit/b56c0632ad62] | ||
27 | Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org> | ||
28 | Reviewed-by: Tom Rini <trini@konsulko.com> | ||
29 | Signed-off-by: Fabio Estevam <festevam@gmail.com> | ||
30 | --- | ||
31 | drivers/spi/fsl_dspi.c | 6 ++++-- | ||
32 | include/fsl_ifc.h | 24 ++++++++++++------------ | ||
33 | 2 files changed, 16 insertions(+), 14 deletions(-) | ||
34 | |||
35 | diff --git a/drivers/spi/fsl_dspi.c b/drivers/spi/fsl_dspi.c | ||
36 | index f2393c041f44..545561ad1169 100644 | ||
37 | --- a/drivers/spi/fsl_dspi.c | ||
38 | +++ b/drivers/spi/fsl_dspi.c | ||
39 | @@ -123,8 +123,10 @@ static uint dspi_read32(uint flags, uint *addr) | ||
40 | |||
41 | static void dspi_write32(uint flags, uint *addr, uint val) | ||
42 | { | ||
43 | - flags & DSPI_FLAG_REGMAP_ENDIAN_BIG ? | ||
44 | - out_be32(addr, val) : out_le32(addr, val); | ||
45 | + if (flags & DSPI_FLAG_REGMAP_ENDIAN_BIG) | ||
46 | + out_be32(addr, val); | ||
47 | + else | ||
48 | + out_le32(addr, val); | ||
49 | } | ||
50 | |||
51 | static void dspi_halt(struct fsl_dspi_priv *priv, u8 halt) | ||
52 | diff --git a/include/fsl_ifc.h b/include/fsl_ifc.h | ||
53 | index 3ac226879303..1c363115beb2 100644 | ||
54 | --- a/include/fsl_ifc.h | ||
55 | +++ b/include/fsl_ifc.h | ||
56 | @@ -803,29 +803,29 @@ void init_final_memctl_regs(void); | ||
57 | ((struct fsl_ifc_fcm *)CFG_SYS_IFC_ADDR) | ||
58 | |||
59 | #define get_ifc_cspr_ext(i) \ | ||
60 | - (ifc_in32(&(IFC_FCM_BASE_ADDR)->cspr_cs[i].cspr_ext)) | ||
61 | + ifc_in32(&(IFC_FCM_BASE_ADDR)->cspr_cs[i].cspr_ext) | ||
62 | #define get_ifc_cspr(i) \ | ||
63 | - (ifc_in32(&(IFC_FCM_BASE_ADDR)->cspr_cs[i].cspr)) | ||
64 | + ifc_in32(&(IFC_FCM_BASE_ADDR)->cspr_cs[i].cspr) | ||
65 | #define get_ifc_csor_ext(i) \ | ||
66 | - (ifc_in32(&(IFC_FCM_BASE_ADDR)->csor_cs[i].csor_ext)) | ||
67 | + ifc_in32(&(IFC_FCM_BASE_ADDR)->csor_cs[i].csor_ext) | ||
68 | #define get_ifc_csor(i) \ | ||
69 | - (ifc_in32(&(IFC_FCM_BASE_ADDR)->csor_cs[i].csor)) | ||
70 | + ifc_in32(&(IFC_FCM_BASE_ADDR)->csor_cs[i].csor) | ||
71 | #define get_ifc_amask(i) \ | ||
72 | - (ifc_in32(&(IFC_FCM_BASE_ADDR)->amask_cs[i].amask)) | ||
73 | + ifc_in32(&(IFC_FCM_BASE_ADDR)->amask_cs[i].amask) | ||
74 | #define get_ifc_ftim(i, j) \ | ||
75 | - (ifc_in32(&(IFC_FCM_BASE_ADDR)->ftim_cs[i].ftim[j])) | ||
76 | + ifc_in32(&(IFC_FCM_BASE_ADDR)->ftim_cs[i].ftim[j]) | ||
77 | #define set_ifc_cspr_ext(i, v) \ | ||
78 | - (ifc_out32(&(IFC_FCM_BASE_ADDR)->cspr_cs[i].cspr_ext, v)) | ||
79 | + ifc_out32(&(IFC_FCM_BASE_ADDR)->cspr_cs[i].cspr_ext, v) | ||
80 | #define set_ifc_cspr(i, v) \ | ||
81 | - (ifc_out32(&(IFC_FCM_BASE_ADDR)->cspr_cs[i].cspr, v)) | ||
82 | + ifc_out32(&(IFC_FCM_BASE_ADDR)->cspr_cs[i].cspr, v) | ||
83 | #define set_ifc_csor_ext(i, v) \ | ||
84 | - (ifc_out32(&(IFC_FCM_BASE_ADDR)->csor_cs[i].csor_ext, v)) | ||
85 | + ifc_out32(&(IFC_FCM_BASE_ADDR)->csor_cs[i].csor_ext, v) | ||
86 | #define set_ifc_csor(i, v) \ | ||
87 | - (ifc_out32(&(IFC_FCM_BASE_ADDR)->csor_cs[i].csor, v)) | ||
88 | + ifc_out32(&(IFC_FCM_BASE_ADDR)->csor_cs[i].csor, v) | ||
89 | #define set_ifc_amask(i, v) \ | ||
90 | - (ifc_out32(&(IFC_FCM_BASE_ADDR)->amask_cs[i].amask, v)) | ||
91 | + ifc_out32(&(IFC_FCM_BASE_ADDR)->amask_cs[i].amask, v) | ||
92 | #define set_ifc_ftim(i, j, v) \ | ||
93 | - (ifc_out32(&(IFC_FCM_BASE_ADDR)->ftim_cs[i].ftim[j], v)) | ||
94 | + ifc_out32(&(IFC_FCM_BASE_ADDR)->ftim_cs[i].ftim[j], v) | ||
95 | |||
96 | enum ifc_chip_sel { | ||
97 | IFC_CS0, | ||
98 | -- | ||
99 | 2.34.1 | ||
100 | |||
diff --git a/meta/recipes-bsp/u-boot/files/0002-arm-io.h-Fix-io-accessors-for-KVM.patch b/meta/recipes-bsp/u-boot/files/0002-arm-io.h-Fix-io-accessors-for-KVM.patch deleted file mode 100644 index 558d753d4a..0000000000 --- a/meta/recipes-bsp/u-boot/files/0002-arm-io.h-Fix-io-accessors-for-KVM.patch +++ /dev/null | |||
@@ -1,310 +0,0 @@ | |||
1 | From 2fc16d8de5bbe2a40ab25445936150c3250a9077 Mon Sep 17 00:00:00 2001 | ||
2 | From: Ilias Apalodimas <ilias.apalodimas@linaro.org> | ||
3 | Date: Wed, 18 Jun 2025 09:58:13 +0300 | ||
4 | Subject: [PATCH 2/3] arm: io.h: Fix io accessors for KVM | ||
5 | |||
6 | commit 2e2c2a5e72a8 ("arm: qemu: override flash accessors to use virtualizable instructions") | ||
7 | explains why we can't have instructions with multiple output registers | ||
8 | when running under QEMU + KVM and the instruction leads to an exception | ||
9 | to the hypervisor. | ||
10 | |||
11 | USB XHCI is such a case (MMIO) where a ldr w1, [x0], #4 is emitted for | ||
12 | xhci_start() which works fine with QEMU but crashes for QEMU + KVM. | ||
13 | |||
14 | These instructions cannot be emulated by KVM as they do not produce | ||
15 | syndrome information data that KVM can use to infer the destination | ||
16 | register, the faulting address, whether it was a load or store, or | ||
17 | if it's a 32 or 64 bit general-purpose register. | ||
18 | As a result an external abort is injected from QEMU, via ext_dabt_pending | ||
19 | to KVM and we end up throwing an exception that looks like | ||
20 | |||
21 | U-Boot 2025.07-rc4 (Jun 10 2025 - 12:00:15 +0000) | ||
22 | [...] | ||
23 | Register 8001040 NbrPorts 8 | ||
24 | Starting the controller | ||
25 | "Synchronous Abort" handler, esr 0x96000010, far 0x10100040 | ||
26 | elr: 000000000005b1c8 lr : 000000000005b1ac (reloc) | ||
27 | elr: 00000000476fc1c8 lr : 00000000476fc1ac | ||
28 | x0 : 0000000010100040 x1 : 0000000000000001 | ||
29 | x2 : 0000000000000000 x3 : 0000000000003e80 | ||
30 | x4 : 0000000000000000 x5 : 00000000477a5694 | ||
31 | x6 : 0000000000000038 x7 : 000000004666f360 | ||
32 | x8 : 0000000000000000 x9 : 00000000ffffffd8 | ||
33 | x10: 000000000000000d x11: 0000000000000006 | ||
34 | x12: 0000000046560a78 x13: 0000000046560dd0 | ||
35 | x14: 00000000ffffffff x15: 000000004666eed2 | ||
36 | x16: 00000000476ee2f0 x17: 0000000000000000 | ||
37 | x18: 0000000046660dd0 x19: 000000004666f480 | ||
38 | x20: 0000000000000000 x21: 0000000010100040 | ||
39 | x22: 0000000010100000 x23: 0000000000000000 | ||
40 | x24: 0000000000000000 x25: 0000000000000000 | ||
41 | x26: 0000000000000000 x27: 0000000000000000 | ||
42 | x28: 0000000000000000 x29: 000000004666f360 | ||
43 | |||
44 | Code: d5033fbf aa1503e0 5287d003 52800002 (b8004401) | ||
45 | Resetting CPU ... | ||
46 | |||
47 | There are two problems making this the default. | ||
48 | - It will emit ldr + add or str + add instead of ldr/str(post increment) | ||
49 | in somne cases | ||
50 | - Some platforms that depend on TPL/SPL grow in size enough so that the | ||
51 | binary doesn't fit anymore. | ||
52 | |||
53 | So let's add proper I/O accessors add a Kconfig option | ||
54 | to turn it off by default apart from our QEMU builds. | ||
55 | |||
56 | Upstream-Status: Backport [https://github.com/u-boot/u-boot/commit/dc512700ad46] | ||
57 | Reported-by: Mikko Rapeli <mikko.rapeli@linaro.org> | ||
58 | Tested-by: Mikko Rapeli <mikko.rapeli@linaro.org> | ||
59 | Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org> | ||
60 | Signed-off-by: Fabio Estevam <festevam@gmail.com> | ||
61 | --- | ||
62 | arch/arm/Kconfig | 12 +++ | ||
63 | arch/arm/include/asm/io.h | 152 ++++++++++++++++++++++++++++---------- | ||
64 | 2 files changed, 124 insertions(+), 40 deletions(-) | ||
65 | |||
66 | diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig | ||
67 | index 6ff3f2750ea8..f6430a5aaf07 100644 | ||
68 | --- a/arch/arm/Kconfig | ||
69 | +++ b/arch/arm/Kconfig | ||
70 | @@ -108,6 +108,18 @@ config LNX_KRNL_IMG_TEXT_OFFSET_BASE | ||
71 | The value subtracted from CONFIG_TEXT_BASE to calculate the | ||
72 | TEXT_OFFSET value written to the Linux kernel image header. | ||
73 | |||
74 | +config KVM_VIRT_INS | ||
75 | + bool "Emit virtualizable instructions" | ||
76 | + help | ||
77 | + Instructions in the ARM ISA that have multiple output registers, | ||
78 | + can't be used if the instruction leads to an exception to the hypervisor. | ||
79 | + These instructions cannot be emulated by KVM because they do not produce | ||
80 | + syndrome information data that KVM can use to infer the destination | ||
81 | + register, the faulting address, whether it was a load or store, | ||
82 | + if it's a 32 or 64 bit general-purpose register amongst other things. | ||
83 | + Use this to produce virtualizable instructions if you plan to run U-Boot | ||
84 | + with KVM. | ||
85 | + | ||
86 | config NVIC | ||
87 | bool | ||
88 | |||
89 | diff --git a/arch/arm/include/asm/io.h b/arch/arm/include/asm/io.h | ||
90 | index 89b1015bc4d3..85ec0e6937e8 100644 | ||
91 | --- a/arch/arm/include/asm/io.h | ||
92 | +++ b/arch/arm/include/asm/io.h | ||
93 | @@ -20,23 +20,108 @@ static inline void sync(void) | ||
94 | { | ||
95 | } | ||
96 | |||
97 | -/* Generic virtual read/write. */ | ||
98 | -#define __arch_getb(a) (*(volatile unsigned char *)(a)) | ||
99 | -#define __arch_getw(a) (*(volatile unsigned short *)(a)) | ||
100 | -#define __arch_getl(a) (*(volatile unsigned int *)(a)) | ||
101 | -#define __arch_getq(a) (*(volatile unsigned long long *)(a)) | ||
102 | +#ifdef CONFIG_ARM64 | ||
103 | +#define __W "w" | ||
104 | +#else | ||
105 | +#define __W | ||
106 | +#endif | ||
107 | + | ||
108 | +#if CONFIG_IS_ENABLED(SYS_THUMB_BUILD) | ||
109 | +#define __R "l" | ||
110 | +#define __RM "=l" | ||
111 | +#else | ||
112 | +#define __R "r" | ||
113 | +#define __RM "=r" | ||
114 | +#endif | ||
115 | |||
116 | -#define __arch_putb(v,a) (*(volatile unsigned char *)(a) = (v)) | ||
117 | -#define __arch_putw(v,a) (*(volatile unsigned short *)(a) = (v)) | ||
118 | -#define __arch_putl(v,a) (*(volatile unsigned int *)(a) = (v)) | ||
119 | -#define __arch_putq(v,a) (*(volatile unsigned long long *)(a) = (v)) | ||
120 | +#ifdef CONFIG_KVM_VIRT_INS | ||
121 | +/* | ||
122 | + * The __raw_writeX/__raw_readX below should be converted to static inline | ||
123 | + * functions. However doing so produces a lot of compilation warnings when | ||
124 | + * called with a raw address. Convert these once the callers have been fixed. | ||
125 | + */ | ||
126 | +#define __raw_writeb(val, addr) \ | ||
127 | + do { \ | ||
128 | + asm volatile("strb %" __W "0, [%1]" \ | ||
129 | + : \ | ||
130 | + : __R ((u8)(val)), __R (addr)); \ | ||
131 | + } while (0) | ||
132 | + | ||
133 | +#define __raw_readb(addr) \ | ||
134 | + ({ \ | ||
135 | + u32 __val; \ | ||
136 | + asm volatile("ldrb %" __W "0, [%1]" \ | ||
137 | + : __RM (__val) \ | ||
138 | + : __R (addr)); \ | ||
139 | + __val; \ | ||
140 | + }) | ||
141 | + | ||
142 | +#define __raw_writew(val, addr) \ | ||
143 | + do { \ | ||
144 | + asm volatile("strh %" __W "0, [%1]" \ | ||
145 | + : \ | ||
146 | + : __R ((u16)(val)), __R (addr)); \ | ||
147 | + } while (0) | ||
148 | + | ||
149 | +#define __raw_readw(addr) \ | ||
150 | + ({ \ | ||
151 | + u32 __val; \ | ||
152 | + asm volatile("ldrh %" __W "0, [%1]" \ | ||
153 | + : __RM (__val) \ | ||
154 | + : __R (addr)); \ | ||
155 | + __val; \ | ||
156 | + }) | ||
157 | + | ||
158 | +#define __raw_writel(val, addr) \ | ||
159 | + do { \ | ||
160 | + asm volatile("str %" __W "0, [%1]" \ | ||
161 | + : \ | ||
162 | + : __R ((u32)(val)), __R (addr)); \ | ||
163 | + } while (0) | ||
164 | + | ||
165 | +#define __raw_readl(addr) \ | ||
166 | + ({ \ | ||
167 | + u32 __val; \ | ||
168 | + asm volatile("ldr %" __W "0, [%1]" \ | ||
169 | + : __RM (__val) \ | ||
170 | + : __R (addr)); \ | ||
171 | + __val; \ | ||
172 | + }) | ||
173 | + | ||
174 | +#define __raw_writeq(val, addr) \ | ||
175 | + do { \ | ||
176 | + asm volatile("str %0, [%1]" \ | ||
177 | + : \ | ||
178 | + : __R ((u64)(val)), __R (addr)); \ | ||
179 | + } while (0) | ||
180 | + | ||
181 | +#define __raw_readq(addr) \ | ||
182 | + ({ \ | ||
183 | + u64 __val; \ | ||
184 | + asm volatile("ldr %0, [%1]" \ | ||
185 | + : __RM (__val) \ | ||
186 | + : __R (addr)); \ | ||
187 | + __val; \ | ||
188 | + }) | ||
189 | +#else | ||
190 | +/* Generic virtual read/write. */ | ||
191 | +#define __raw_readb(a) (*(volatile unsigned char *)(a)) | ||
192 | +#define __raw_readw(a) (*(volatile unsigned short *)(a)) | ||
193 | +#define __raw_readl(a) (*(volatile unsigned int *)(a)) | ||
194 | +#define __raw_readq(a) (*(volatile unsigned long long *)(a)) | ||
195 | + | ||
196 | +#define __raw_writeb(v, a) (*(volatile unsigned char *)(a) = (v)) | ||
197 | +#define __raw_writew(v, a) (*(volatile unsigned short *)(a) = (v)) | ||
198 | +#define __raw_writel(v, a) (*(volatile unsigned int *)(a) = (v)) | ||
199 | +#define __raw_writeq(v, a) (*(volatile unsigned long long *)(a) = (v)) | ||
200 | +#endif | ||
201 | |||
202 | static inline void __raw_writesb(unsigned long addr, const void *data, | ||
203 | int bytelen) | ||
204 | { | ||
205 | uint8_t *buf = (uint8_t *)data; | ||
206 | while(bytelen--) | ||
207 | - __arch_putb(*buf++, addr); | ||
208 | + __raw_writeb(*buf++, addr); | ||
209 | } | ||
210 | |||
211 | static inline void __raw_writesw(unsigned long addr, const void *data, | ||
212 | @@ -44,7 +129,7 @@ static inline void __raw_writesw(unsigned long addr, const void *data, | ||
213 | { | ||
214 | uint16_t *buf = (uint16_t *)data; | ||
215 | while(wordlen--) | ||
216 | - __arch_putw(*buf++, addr); | ||
217 | + __raw_writew(*buf++, addr); | ||
218 | } | ||
219 | |||
220 | static inline void __raw_writesl(unsigned long addr, const void *data, | ||
221 | @@ -52,40 +137,30 @@ static inline void __raw_writesl(unsigned long addr, const void *data, | ||
222 | { | ||
223 | uint32_t *buf = (uint32_t *)data; | ||
224 | while(longlen--) | ||
225 | - __arch_putl(*buf++, addr); | ||
226 | + __raw_writel(*buf++, addr); | ||
227 | } | ||
228 | |||
229 | static inline void __raw_readsb(unsigned long addr, void *data, int bytelen) | ||
230 | { | ||
231 | uint8_t *buf = (uint8_t *)data; | ||
232 | while(bytelen--) | ||
233 | - *buf++ = __arch_getb(addr); | ||
234 | + *buf++ = __raw_readb(addr); | ||
235 | } | ||
236 | |||
237 | static inline void __raw_readsw(unsigned long addr, void *data, int wordlen) | ||
238 | { | ||
239 | uint16_t *buf = (uint16_t *)data; | ||
240 | while(wordlen--) | ||
241 | - *buf++ = __arch_getw(addr); | ||
242 | + *buf++ = __raw_readw(addr); | ||
243 | } | ||
244 | |||
245 | static inline void __raw_readsl(unsigned long addr, void *data, int longlen) | ||
246 | { | ||
247 | uint32_t *buf = (uint32_t *)data; | ||
248 | while(longlen--) | ||
249 | - *buf++ = __arch_getl(addr); | ||
250 | + *buf++ = __raw_readl(addr); | ||
251 | } | ||
252 | |||
253 | -#define __raw_writeb(v,a) __arch_putb(v,a) | ||
254 | -#define __raw_writew(v,a) __arch_putw(v,a) | ||
255 | -#define __raw_writel(v,a) __arch_putl(v,a) | ||
256 | -#define __raw_writeq(v,a) __arch_putq(v,a) | ||
257 | - | ||
258 | -#define __raw_readb(a) __arch_getb(a) | ||
259 | -#define __raw_readw(a) __arch_getw(a) | ||
260 | -#define __raw_readl(a) __arch_getl(a) | ||
261 | -#define __raw_readq(a) __arch_getq(a) | ||
262 | - | ||
263 | /* | ||
264 | * TODO: The kernel offers some more advanced versions of barriers, it might | ||
265 | * have some advantages to use them instead of the simple one here. | ||
266 | @@ -98,15 +173,15 @@ static inline void __raw_readsl(unsigned long addr, void *data, int longlen) | ||
267 | |||
268 | #define smp_processor_id() 0 | ||
269 | |||
270 | -#define writeb(v,c) ({ u8 __v = v; __iowmb(); __arch_putb(__v,c); __v; }) | ||
271 | -#define writew(v,c) ({ u16 __v = v; __iowmb(); __arch_putw(__v,c); __v; }) | ||
272 | -#define writel(v,c) ({ u32 __v = v; __iowmb(); __arch_putl(__v,c); __v; }) | ||
273 | -#define writeq(v,c) ({ u64 __v = v; __iowmb(); __arch_putq(__v,c); __v; }) | ||
274 | +#define writeb(v, c) ({ u8 __v = v; __iowmb(); writeb_relaxed(__v, c); __v; }) | ||
275 | +#define writew(v, c) ({ u16 __v = v; __iowmb(); writew_relaxed(__v, c); __v; }) | ||
276 | +#define writel(v, c) ({ u32 __v = v; __iowmb(); writel_relaxed(__v, c); __v; }) | ||
277 | +#define writeq(v, c) ({ u64 __v = v; __iowmb(); writeq_relaxed(__v, c); __v; }) | ||
278 | |||
279 | -#define readb(c) ({ u8 __v = __arch_getb(c); __iormb(); __v; }) | ||
280 | -#define readw(c) ({ u16 __v = __arch_getw(c); __iormb(); __v; }) | ||
281 | -#define readl(c) ({ u32 __v = __arch_getl(c); __iormb(); __v; }) | ||
282 | -#define readq(c) ({ u64 __v = __arch_getq(c); __iormb(); __v; }) | ||
283 | +#define readb(c) ({ u8 __v = readb_relaxed(c); __iormb(); __v; }) | ||
284 | +#define readw(c) ({ u16 __v = readw_relaxed(c); __iormb(); __v; }) | ||
285 | +#define readl(c) ({ u32 __v = readl_relaxed(c); __iormb(); __v; }) | ||
286 | +#define readq(c) ({ u64 __v = readq_relaxed(c); __iormb(); __v; }) | ||
287 | |||
288 | /* | ||
289 | * Relaxed I/O memory access primitives. These follow the Device memory | ||
290 | @@ -121,13 +196,10 @@ static inline void __raw_readsl(unsigned long addr, void *data, int longlen) | ||
291 | #define readq_relaxed(c) ({ u64 __r = le64_to_cpu((__force __le64) \ | ||
292 | __raw_readq(c)); __r; }) | ||
293 | |||
294 | -#define writeb_relaxed(v, c) ((void)__raw_writeb((v), (c))) | ||
295 | -#define writew_relaxed(v, c) ((void)__raw_writew((__force u16) \ | ||
296 | - cpu_to_le16(v), (c))) | ||
297 | -#define writel_relaxed(v, c) ((void)__raw_writel((__force u32) \ | ||
298 | - cpu_to_le32(v), (c))) | ||
299 | -#define writeq_relaxed(v, c) ((void)__raw_writeq((__force u64) \ | ||
300 | - cpu_to_le64(v), (c))) | ||
301 | +#define writeb_relaxed(v, c) __raw_writeb((v), (c)) | ||
302 | +#define writew_relaxed(v, c) __raw_writew((__force u16)cpu_to_le16(v), (c)) | ||
303 | +#define writel_relaxed(v, c) __raw_writel((__force u32)cpu_to_le32(v), (c)) | ||
304 | +#define writeq_relaxed(v, c) __raw_writeq((__force u64)cpu_to_le64(v), (c)) | ||
305 | |||
306 | /* | ||
307 | * The compiler seems to be incapable of optimising constants | ||
308 | -- | ||
309 | 2.34.1 | ||
310 | |||
diff --git a/meta/recipes-bsp/u-boot/files/0003-qemu-arm-Enable-virtualizable-IO-accessors.patch b/meta/recipes-bsp/u-boot/files/0003-qemu-arm-Enable-virtualizable-IO-accessors.patch deleted file mode 100644 index 520c9226b4..0000000000 --- a/meta/recipes-bsp/u-boot/files/0003-qemu-arm-Enable-virtualizable-IO-accessors.patch +++ /dev/null | |||
@@ -1,41 +0,0 @@ | |||
1 | From cb6120b4bfd8b24dde7e0d1eda882e203a849d3f Mon Sep 17 00:00:00 2001 | ||
2 | From: Ilias Apalodimas <ilias.apalodimas@linaro.org> | ||
3 | Date: Wed, 18 Jun 2025 09:58:14 +0300 | ||
4 | Subject: [PATCH 3/3] qemu: arm: Enable virtualizable IO accessors | ||
5 | |||
6 | We recently added IO accessors that will work with KVM for any MMIO | ||
7 | access that casues an exception to the hypervisor. Enable them by | ||
8 | default for QEMU. | ||
9 | |||
10 | Upstream-Status: Backport [https://github.com/u-boot/u-boot/commit/fcc60481ae75] | ||
11 | Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org> | ||
12 | Tested-by: Mikko Rapeli <mikko.rapeli@linaro.org> | ||
13 | Signed-off-by: Fabio Estevam <festevam@gmail.com> | ||
14 | --- | ||
15 | configs/qemu_arm64_defconfig | 1 + | ||
16 | configs/qemu_arm_defconfig | 1 + | ||
17 | 2 files changed, 2 insertions(+) | ||
18 | |||
19 | diff --git a/configs/qemu_arm64_defconfig b/configs/qemu_arm64_defconfig | ||
20 | index 72bd255eafa3..39afb837e411 100644 | ||
21 | --- a/configs/qemu_arm64_defconfig | ||
22 | +++ b/configs/qemu_arm64_defconfig | ||
23 | @@ -1,4 +1,5 @@ | ||
24 | CONFIG_ARM=y | ||
25 | +CONFIG_KVM_VIRT_INS=y | ||
26 | CONFIG_ARCH_QEMU=y | ||
27 | CONFIG_SYS_MALLOC_LEN=0x1000000 | ||
28 | CONFIG_BLOBLIST_SIZE_RELOC=0x2000 | ||
29 | diff --git a/configs/qemu_arm_defconfig b/configs/qemu_arm_defconfig | ||
30 | index f13001390d4d..92ba48f6af97 100644 | ||
31 | --- a/configs/qemu_arm_defconfig | ||
32 | +++ b/configs/qemu_arm_defconfig | ||
33 | @@ -1,4 +1,5 @@ | ||
34 | CONFIG_ARM=y | ||
35 | +CONFIG_KVM_VIRT_INS=y | ||
36 | CONFIG_ARM_SMCCC=y | ||
37 | CONFIG_ARCH_QEMU=y | ||
38 | CONFIG_SYS_MALLOC_LEN=0x1000000 | ||
39 | -- | ||
40 | 2.34.1 | ||
41 | |||
diff --git a/meta/recipes-bsp/u-boot/u-boot-common.inc b/meta/recipes-bsp/u-boot/u-boot-common.inc index ea55545db3..93ff0ca6ca 100644 --- a/meta/recipes-bsp/u-boot/u-boot-common.inc +++ b/meta/recipes-bsp/u-boot/u-boot-common.inc | |||
@@ -12,15 +12,9 @@ PE = "1" | |||
12 | 12 | ||
13 | # We use the revision in order to avoid having to fetch it from the | 13 | # We use the revision in order to avoid having to fetch it from the |
14 | # repo during parse | 14 | # repo during parse |
15 | SRCREV = "e37de002fac3895e8d0b60ae2015e17bb33e2b5b" | 15 | SRCREV = "e50b1e8715011def8aff1588081a2649a2c6cd47" |
16 | 16 | ||
17 | SRC_URI = "\ | 17 | SRC_URI = "git://source.denx.de/u-boot/u-boot.git;protocol=https;branch=master;tag=v${PV}" |
18 | git://source.denx.de/u-boot/u-boot.git;protocol=https;branch=master;tag=v${PV} \ | ||
19 | file://0001-Makefile-add-dependency-from-lib-to-arch-ARCH-lib.patch \ | ||
20 | file://0001-nxp-Prepare-macros-for-KVM-changes.patch \ | ||
21 | file://0002-arm-io.h-Fix-io-accessors-for-KVM.patch \ | ||
22 | file://0003-qemu-arm-Enable-virtualizable-IO-accessors.patch \ | ||
23 | " | ||
24 | 18 | ||
25 | SRC_URI_RISCV = "\ | 19 | SRC_URI_RISCV = "\ |
26 | file://u-boot-riscv-isa_clear.cfg \ | 20 | file://u-boot-riscv-isa_clear.cfg \ |
diff --git a/meta/recipes-bsp/u-boot/u-boot-configure.inc b/meta/recipes-bsp/u-boot/u-boot-configure.inc index a15511f8b2..bada506b66 100644 --- a/meta/recipes-bsp/u-boot/u-boot-configure.inc +++ b/meta/recipes-bsp/u-boot/u-boot-configure.inc | |||
@@ -33,7 +33,19 @@ uboot_configure_config () { | |||
33 | config=$1 | 33 | config=$1 |
34 | type=$2 | 34 | type=$2 |
35 | 35 | ||
36 | oe_runmake -C ${S} O=${B}/${config} ${config} | 36 | unset k |
37 | IFS="?" | ||
38 | uboot_config_make_opts="${UBOOT_CONFIG_MAKE_OPTS}" | ||
39 | for config_make_opts in $uboot_config_make_opts; do | ||
40 | k=$(expr $k + 1); | ||
41 | if [ $k -eq $i ]; then | ||
42 | break | ||
43 | fi | ||
44 | done | ||
45 | unset IFS | ||
46 | unset k | ||
47 | |||
48 | oe_runmake -C ${S} O=${B}/${config} ${config_make_opts} ${UBOOT_MAKE_OPTS} ${config} | ||
37 | if [ -n "${@' '.join(find_cfgs(d))}" ]; then | 49 | if [ -n "${@' '.join(find_cfgs(d))}" ]; then |
38 | merge_config.sh -m -O ${B}/${config} ${B}/${config}/.config ${@" ".join(find_cfgs(d))} | 50 | merge_config.sh -m -O ${B}/${config} ${B}/${config}/.config ${@" ".join(find_cfgs(d))} |
39 | oe_runmake -C ${S} O=${B}/${config} oldconfig | 51 | oe_runmake -C ${S} O=${B}/${config} oldconfig |
@@ -42,9 +54,9 @@ uboot_configure_config () { | |||
42 | 54 | ||
43 | uboot_configure () { | 55 | uboot_configure () { |
44 | if [ -n "${UBOOT_MACHINE}" ]; then | 56 | if [ -n "${UBOOT_MACHINE}" ]; then |
45 | oe_runmake -C ${S} O=${B} ${UBOOT_MACHINE} | 57 | oe_runmake -C ${S} O=${B} ${UBOOT_MAKE_OPTS} ${UBOOT_MACHINE} |
46 | else | 58 | else |
47 | oe_runmake -C ${S} O=${B} oldconfig | 59 | oe_runmake -C ${S} O=${B} ${UBOOT_MAKE_OPTS} oldconfig |
48 | fi | 60 | fi |
49 | merge_config.sh -m .config ${@" ".join(find_cfgs(d))} | 61 | merge_config.sh -m .config ${@" ".join(find_cfgs(d))} |
50 | cml1_do_configure | 62 | cml1_do_configure |
diff --git a/meta/recipes-bsp/u-boot/u-boot-tools_2025.07.bb b/meta/recipes-bsp/u-boot/u-boot-tools_2025.10.bb index 7eaf721ca8..7eaf721ca8 100644 --- a/meta/recipes-bsp/u-boot/u-boot-tools_2025.07.bb +++ b/meta/recipes-bsp/u-boot/u-boot-tools_2025.10.bb | |||
diff --git a/meta/recipes-bsp/u-boot/u-boot.inc b/meta/recipes-bsp/u-boot/u-boot.inc index b7242de5de..e0a69e740e 100644 --- a/meta/recipes-bsp/u-boot/u-boot.inc +++ b/meta/recipes-bsp/u-boot/u-boot.inc | |||
@@ -75,7 +75,19 @@ uboot_compile_config () { | |||
75 | config=$2 | 75 | config=$2 |
76 | type=$3 | 76 | type=$3 |
77 | 77 | ||
78 | oe_runmake -C ${S} O=${B}/${config} ${UBOOT_MAKE_TARGET} | 78 | unset k |
79 | IFS="?" | ||
80 | uboot_config_make_opts="${UBOOT_CONFIG_MAKE_OPTS}" | ||
81 | for config_make_opts in $uboot_config_make_opts; do | ||
82 | k=$(expr $k + 1); | ||
83 | if [ $k -eq $i ]; then | ||
84 | break | ||
85 | fi | ||
86 | done | ||
87 | unset IFS | ||
88 | unset k | ||
89 | |||
90 | oe_runmake -C ${S} O=${B}/${config} ${config_make_opts} ${UBOOT_MAKE_OPTS} ${UBOOT_MAKE_TARGET} | ||
79 | 91 | ||
80 | unset k | 92 | unset k |
81 | for binary in ${UBOOT_BINARIES}; do | 93 | for binary in ${UBOOT_BINARIES}; do |
@@ -102,7 +114,7 @@ uboot_compile_config_copy_binary () { | |||
102 | } | 114 | } |
103 | 115 | ||
104 | uboot_compile () { | 116 | uboot_compile () { |
105 | oe_runmake -C ${S} O=${B} ${UBOOT_MAKE_TARGET} | 117 | oe_runmake -C ${S} O=${B} ${UBOOT_MAKE_OPTS} ${UBOOT_MAKE_TARGET} |
106 | 118 | ||
107 | # Generate the uboot-initial-env | 119 | # Generate the uboot-initial-env |
108 | if [ -n "${UBOOT_INITIAL_ENV}" ]; then | 120 | if [ -n "${UBOOT_INITIAL_ENV}" ]; then |
diff --git a/meta/recipes-bsp/u-boot/u-boot_2025.07.bb b/meta/recipes-bsp/u-boot/u-boot_2025.10.bb index 25f264c961..25f264c961 100644 --- a/meta/recipes-bsp/u-boot/u-boot_2025.07.bb +++ b/meta/recipes-bsp/u-boot/u-boot_2025.10.bb | |||
diff --git a/meta/recipes-connectivity/openssl/openssl/0001-buildinfo-strip-sysroot-and-debug-prefix-map-from-co.patch b/meta/recipes-connectivity/openssl/openssl/0001-buildinfo-strip-sysroot-and-debug-prefix-map-from-co.patch index 687d682976..dadc034c91 100644 --- a/meta/recipes-connectivity/openssl/openssl/0001-buildinfo-strip-sysroot-and-debug-prefix-map-from-co.patch +++ b/meta/recipes-connectivity/openssl/openssl/0001-buildinfo-strip-sysroot-and-debug-prefix-map-from-co.patch | |||
@@ -38,7 +38,7 @@ diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tm | |||
38 | index 09303c4..011bda1 100644 | 38 | index 09303c4..011bda1 100644 |
39 | --- a/Configurations/unix-Makefile.tmpl | 39 | --- a/Configurations/unix-Makefile.tmpl |
40 | +++ b/Configurations/unix-Makefile.tmpl | 40 | +++ b/Configurations/unix-Makefile.tmpl |
41 | @@ -502,13 +502,27 @@ BIN_LDFLAGS={- join(' ', $target{bin_lflags} || (), | 41 | @@ -513,13 +513,27 @@ BIN_LDFLAGS={- join(' ', $target{bin_lflags} || (), |
42 | '$(CNF_LDFLAGS)', '$(LDFLAGS)') -} | 42 | '$(CNF_LDFLAGS)', '$(LDFLAGS)') -} |
43 | BIN_EX_LIBS=$(CNF_EX_LIBS) $(EX_LIBS) | 43 | BIN_EX_LIBS=$(CNF_EX_LIBS) $(EX_LIBS) |
44 | 44 | ||
diff --git a/meta/recipes-connectivity/openssl/openssl_3.5.2.bb b/meta/recipes-connectivity/openssl/openssl_3.5.4.bb index 396e69d7e7..c222b1533b 100644 --- a/meta/recipes-connectivity/openssl/openssl_3.5.2.bb +++ b/meta/recipes-connectivity/openssl/openssl_3.5.4.bb | |||
@@ -18,7 +18,7 @@ SRC_URI:append:class-nativesdk = " \ | |||
18 | file://environment.d-openssl.sh \ | 18 | file://environment.d-openssl.sh \ |
19 | " | 19 | " |
20 | 20 | ||
21 | SRC_URI[sha256sum] = "c53a47e5e441c930c3928cf7bf6fb00e5d129b630e0aa873b08258656e7345ec" | 21 | SRC_URI[sha256sum] = "967311f84955316969bdb1d8d4b983718ef42338639c621ec4c34fddef355e99" |
22 | 22 | ||
23 | inherit lib_package multilib_header multilib_script ptest perlnative manpages | 23 | inherit lib_package multilib_header multilib_script ptest perlnative manpages |
24 | MULTILIB_SCRIPTS = "${PN}-bin:${bindir}/c_rehash" | 24 | MULTILIB_SCRIPTS = "${PN}-bin:${bindir}/c_rehash" |
diff --git a/meta/recipes-devtools/clang/clang_git.bb b/meta/recipes-devtools/clang/clang_git.bb index ca53963590..e10c327a2a 100644 --- a/meta/recipes-devtools/clang/clang_git.bb +++ b/meta/recipes-devtools/clang/clang_git.bb | |||
@@ -57,7 +57,6 @@ SOLIBSDEV:mingw32 = ".pyd" | |||
57 | #CMAKE_VERBOSE = "VERBOSE=1" | 57 | #CMAKE_VERBOSE = "VERBOSE=1" |
58 | 58 | ||
59 | EXTRA_OECMAKE += "-DLLVM_ENABLE_ASSERTIONS=OFF \ | 59 | EXTRA_OECMAKE += "-DLLVM_ENABLE_ASSERTIONS=OFF \ |
60 | -DLLVM_APPEND_VC_REV=OFF \ | ||
61 | -DLLVM_ENABLE_PIC=ON \ | 60 | -DLLVM_ENABLE_PIC=ON \ |
62 | -DCLANG_DEFAULT_PIE_ON_LINUX=ON \ | 61 | -DCLANG_DEFAULT_PIE_ON_LINUX=ON \ |
63 | -DFFI_INCLUDE_DIR=$(pkg-config --variable=includedir libffi) \ | 62 | -DFFI_INCLUDE_DIR=$(pkg-config --variable=includedir libffi) \ |
diff --git a/meta/recipes-devtools/clang/common-clang.inc b/meta/recipes-devtools/clang/common-clang.inc index f7b7a1cf9a..47f036bc66 100644 --- a/meta/recipes-devtools/clang/common-clang.inc +++ b/meta/recipes-devtools/clang/common-clang.inc | |||
@@ -16,6 +16,10 @@ CLANGMD5SUM = "ff42885ed2ab98f1ecb8c1fc41205343" | |||
16 | LLDMD5SUM = "ae7dc7c027b1fa89b5b013d391d3ee2b" | 16 | LLDMD5SUM = "ae7dc7c027b1fa89b5b013d391d3ee2b" |
17 | LLDBMD5SUM = "2e0d44968471fcde980034dbb826bea9" | 17 | LLDBMD5SUM = "2e0d44968471fcde980034dbb826bea9" |
18 | 18 | ||
19 | # remove at next version upgrade or when output changes | ||
20 | PR = "r1" | ||
21 | HASHEQUIV_HASH_VERSION .= ".1" | ||
22 | |||
19 | LLVM_LIBDIR_SUFFIX = "${@d.getVar('baselib').replace('lib', '')}" | 23 | LLVM_LIBDIR_SUFFIX = "${@d.getVar('baselib').replace('lib', '')}" |
20 | 24 | ||
21 | # set the default pigz thread | 25 | # set the default pigz thread |
@@ -48,4 +52,8 @@ def get_clang_target_arch(bb, d): | |||
48 | # install they cause non-deterministic binaries. | 52 | # install they cause non-deterministic binaries. |
49 | EXTRA_OECMAKE += "-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON" | 53 | EXTRA_OECMAKE += "-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON" |
50 | 54 | ||
55 | # Don't embed found git information into the version string as this | ||
56 | # will include the git server URL. | ||
57 | EXTRA_OECMAKE += "-DLLVM_APPEND_VC_REV=OFF" | ||
58 | |||
51 | require common.inc | 59 | require common.inc |
diff --git a/meta/recipes-devtools/clang/openmp_git.bb b/meta/recipes-devtools/clang/openmp_git.bb index 2d86718dee..b6b1cc2978 100644 --- a/meta/recipes-devtools/clang/openmp_git.bb +++ b/meta/recipes-devtools/clang/openmp_git.bb | |||
@@ -18,7 +18,6 @@ inherit cmake pkgconfig perlnative python3native python3targetconfig | |||
18 | DEPENDS += "elfutils libffi clang" | 18 | DEPENDS += "elfutils libffi clang" |
19 | 19 | ||
20 | EXTRA_OECMAKE += "-DCMAKE_BUILD_TYPE=RelWithDebInfo \ | 20 | EXTRA_OECMAKE += "-DCMAKE_BUILD_TYPE=RelWithDebInfo \ |
21 | -DLLVM_APPEND_VC_REV=OFF \ | ||
22 | -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF \ | 21 | -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF \ |
23 | -DOPENMP_LIBDIR_SUFFIX=${@d.getVar('baselib').replace('lib', '')} \ | 22 | -DOPENMP_LIBDIR_SUFFIX=${@d.getVar('baselib').replace('lib', '')} \ |
24 | -DOPENMP_STANDALONE_BUILD=ON \ | 23 | -DOPENMP_STANDALONE_BUILD=ON \ |
diff --git a/meta/recipes-devtools/tcltk8/tcl8/0001-generic-tcl.h-use-Tcl_WideInt-for-seconds-in-Tcl_Tim.patch b/meta/recipes-devtools/tcltk8/tcl8/0001-generic-tcl.h-use-Tcl_WideInt-for-seconds-in-Tcl_Tim.patch index 1859992838..6ba7ff4340 100644 --- a/meta/recipes-devtools/tcltk8/tcl8/0001-generic-tcl.h-use-Tcl_WideInt-for-seconds-in-Tcl_Tim.patch +++ b/meta/recipes-devtools/tcltk8/tcl8/0001-generic-tcl.h-use-Tcl_WideInt-for-seconds-in-Tcl_Tim.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From ff508f2e6786df697876140f21855ecb92a3ed36 Mon Sep 17 00:00:00 2001 | 1 | From 7d404d1827ffb69a2aa7b60c10b435c6f47f7bfb Mon Sep 17 00:00:00 2001 |
2 | From: Alexander Kanavin <alex@linutronix.de> | 2 | From: Alexander Kanavin <alex@linutronix.de> |
3 | Date: Fri, 18 Aug 2023 12:25:11 +0200 | 3 | Date: Fri, 18 Aug 2023 12:25:11 +0200 |
4 | Subject: [PATCH] generic/tcl.h: use Tcl_WideInt for seconds in Tcl_Time | 4 | Subject: [PATCH] generic/tcl.h: use Tcl_WideInt for seconds in Tcl_Time |
@@ -19,10 +19,10 @@ Signed-off-by: Alexander Kanavin <alex@linutronix.de> | |||
19 | 1 file changed, 1 insertion(+), 1 deletion(-) | 19 | 1 file changed, 1 insertion(+), 1 deletion(-) |
20 | 20 | ||
21 | diff --git a/generic/tcl.h b/generic/tcl.h | 21 | diff --git a/generic/tcl.h b/generic/tcl.h |
22 | index 3a4622e..6204c57 100644 | 22 | index d8fd70a..ffff4b1 100644 |
23 | --- a/generic/tcl.h | 23 | --- a/generic/tcl.h |
24 | +++ b/generic/tcl.h | 24 | +++ b/generic/tcl.h |
25 | @@ -1418,7 +1418,7 @@ typedef enum { | 25 | @@ -1425,7 +1425,7 @@ typedef enum { |
26 | */ | 26 | */ |
27 | 27 | ||
28 | typedef struct Tcl_Time { | 28 | typedef struct Tcl_Time { |
diff --git a/meta/recipes-devtools/tcltk8/tcl8/alter-includedir.patch b/meta/recipes-devtools/tcltk8/tcl8/alter-includedir.patch index 6ceb297cea..ad91b9ffb3 100644 --- a/meta/recipes-devtools/tcltk8/tcl8/alter-includedir.patch +++ b/meta/recipes-devtools/tcltk8/tcl8/alter-includedir.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 8bb8174e13c1c0e3b27fdf96a393f9fb1b7e14be Mon Sep 17 00:00:00 2001 | 1 | From bfca2e4ae32ab546f796d9c7ff7cbf542d5b2bfe Mon Sep 17 00:00:00 2001 |
2 | From: Mingli Yu <mingli.yu@windriver.com> | 2 | From: Mingli Yu <mingli.yu@windriver.com> |
3 | Date: Tue, 22 Nov 2022 18:48:27 +0800 | 3 | Date: Tue, 22 Nov 2022 18:48:27 +0800 |
4 | Subject: [PATCH] tcl: update the header location | 4 | Subject: [PATCH] tcl: update the header location |
@@ -26,7 +26,7 @@ Signed-off-by: Mingli Yu <mingli.yu@windriver.com> | |||
26 | 3 files changed, 4 insertions(+), 4 deletions(-) | 26 | 3 files changed, 4 insertions(+), 4 deletions(-) |
27 | 27 | ||
28 | diff --git a/unix/Makefile.in b/unix/Makefile.in | 28 | diff --git a/unix/Makefile.in b/unix/Makefile.in |
29 | index c3b75e3..60ed93e 100644 | 29 | index 45e7b76..5a46e6a 100644 |
30 | --- a/unix/Makefile.in | 30 | --- a/unix/Makefile.in |
31 | +++ b/unix/Makefile.in | 31 | +++ b/unix/Makefile.in |
32 | @@ -57,7 +57,7 @@ SCRIPT_INSTALL_DIR = $(INSTALL_ROOT)$(TCL_LIBRARY) | 32 | @@ -57,7 +57,7 @@ SCRIPT_INSTALL_DIR = $(INSTALL_ROOT)$(TCL_LIBRARY) |
@@ -39,7 +39,7 @@ index c3b75e3..60ed93e 100644 | |||
39 | # Path to the private tcl header dir: | 39 | # Path to the private tcl header dir: |
40 | PRIVATE_INCLUDE_DIR = @PRIVATE_INCLUDE_DIR@ | 40 | PRIVATE_INCLUDE_DIR = @PRIVATE_INCLUDE_DIR@ |
41 | diff --git a/unix/configure.in b/unix/configure.in | 41 | diff --git a/unix/configure.in b/unix/configure.in |
42 | index 8e6726b..2345689 100644 | 42 | index 50b3e03..8a33d0c 100644 |
43 | --- a/unix/configure.in | 43 | --- a/unix/configure.in |
44 | +++ b/unix/configure.in | 44 | +++ b/unix/configure.in |
45 | @@ -775,7 +775,7 @@ eval "TCL_LIB_FILE=libtcl${LIB_SUFFIX}" | 45 | @@ -775,7 +775,7 @@ eval "TCL_LIB_FILE=libtcl${LIB_SUFFIX}" |
@@ -51,7 +51,7 @@ index 8e6726b..2345689 100644 | |||
51 | HTML_DIR='$(DISTDIR)/html' | 51 | HTML_DIR='$(DISTDIR)/html' |
52 | 52 | ||
53 | # Note: in the following variable, it's important to use the absolute | 53 | # Note: in the following variable, it's important to use the absolute |
54 | @@ -898,7 +898,7 @@ TCL_BUILD_STUB_LIB_PATH="`pwd`/${TCL_STUB_LIB_FILE}" | 54 | @@ -896,7 +896,7 @@ TCL_BUILD_STUB_LIB_PATH="`pwd`/${TCL_STUB_LIB_FILE}" |
55 | TCL_STUB_LIB_PATH="${TCL_STUB_LIB_DIR}/${TCL_STUB_LIB_FILE}" | 55 | TCL_STUB_LIB_PATH="${TCL_STUB_LIB_DIR}/${TCL_STUB_LIB_FILE}" |
56 | 56 | ||
57 | # Install time header dir can be set via --includedir | 57 | # Install time header dir can be set via --includedir |
diff --git a/meta/recipes-devtools/tcltk8/tcl8/fix_non_native_build_issue.patch b/meta/recipes-devtools/tcltk8/tcl8/fix_non_native_build_issue.patch index 61153878fe..07a1f4d040 100644 --- a/meta/recipes-devtools/tcltk8/tcl8/fix_non_native_build_issue.patch +++ b/meta/recipes-devtools/tcltk8/tcl8/fix_non_native_build_issue.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 3d11e7fd9aba6251974d990286347c06582e87b9 Mon Sep 17 00:00:00 2001 | 1 | From ad7847a15163f12c24d8ecb50dffa289876dc830 Mon Sep 17 00:00:00 2001 |
2 | From: Nitin A Kamble <nitin.a.kamble@intel.com> | 2 | From: Nitin A Kamble <nitin.a.kamble@intel.com> |
3 | Date: Fri, 13 Aug 2010 12:24:00 -0700 | 3 | Date: Fri, 13 Aug 2010 12:24:00 -0700 |
4 | Subject: [PATCH] tcl: fix a build issue | 4 | Subject: [PATCH] tcl: fix a build issue |
@@ -10,7 +10,7 @@ Signed-off-by: Alexander Kanavin <alex@linutronix.de> | |||
10 | 1 file changed, 10 insertions(+), 10 deletions(-) | 10 | 1 file changed, 10 insertions(+), 10 deletions(-) |
11 | 11 | ||
12 | diff --git a/unix/Makefile.in b/unix/Makefile.in | 12 | diff --git a/unix/Makefile.in b/unix/Makefile.in |
13 | index a2f9e21..c3b75e3 100644 | 13 | index ab2e7b5..45e7b76 100644 |
14 | --- a/unix/Makefile.in | 14 | --- a/unix/Makefile.in |
15 | +++ b/unix/Makefile.in | 15 | +++ b/unix/Makefile.in |
16 | @@ -723,7 +723,7 @@ tcltest-real: | 16 | @@ -723,7 +723,7 @@ tcltest-real: |
diff --git a/meta/recipes-devtools/tcltk8/tcl8/interp.patch b/meta/recipes-devtools/tcltk8/tcl8/interp.patch index aeebb038e3..c6412e7775 100644 --- a/meta/recipes-devtools/tcltk8/tcl8/interp.patch +++ b/meta/recipes-devtools/tcltk8/tcl8/interp.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 09049beed723243d092ffaa37939dfe0f2ed6828 Mon Sep 17 00:00:00 2001 | 1 | From 2d959d1fdfbd7e020f5177b1a7ff6a08809536ca Mon Sep 17 00:00:00 2001 |
2 | From: Ross Burton <ross.burton@arm.com> | 2 | From: Ross Burton <ross.burton@arm.com> |
3 | Date: Mon, 12 Jul 2021 14:50:13 +0100 | 3 | Date: Mon, 12 Jul 2021 14:50:13 +0100 |
4 | Subject: [PATCH] tcl: fix race in interp.test | 4 | Subject: [PATCH] tcl: fix race in interp.test |
@@ -13,10 +13,10 @@ Signed-off-by: Ross Burton <ross.burton@arm.com> | |||
13 | 1 file changed, 4 insertions(+), 3 deletions(-) | 13 | 1 file changed, 4 insertions(+), 3 deletions(-) |
14 | 14 | ||
15 | diff --git a/tests/interp.test b/tests/interp.test | 15 | diff --git a/tests/interp.test b/tests/interp.test |
16 | index 24ffb1b..c6460ad 100644 | 16 | index d64fdd4..9931dd1 100644 |
17 | --- a/tests/interp.test | 17 | --- a/tests/interp.test |
18 | +++ b/tests/interp.test | 18 | +++ b/tests/interp.test |
19 | @@ -3614,17 +3614,18 @@ test interp-36.7 {ChildBgerror sets error handler of child [1999035]} -setup { | 19 | @@ -3651,17 +3651,18 @@ test interp-36.7 {ChildBgerror sets error handler of child [1999035]} -setup { |
20 | variable result | 20 | variable result |
21 | set result [lindex $args 0] | 21 | set result [lindex $args 0] |
22 | } | 22 | } |
diff --git a/meta/recipes-devtools/tcltk8/tcl8/run-ptest b/meta/recipes-devtools/tcltk8/tcl8/run-ptest index 687e06fa4b..12921d8cfd 100644 --- a/meta/recipes-devtools/tcltk8/tcl8/run-ptest +++ b/meta/recipes-devtools/tcltk8/tcl8/run-ptest | |||
@@ -4,6 +4,8 @@ | |||
4 | export TZ="Europe/London" | 4 | export TZ="Europe/London" |
5 | export TCL_LIBRARY=@libdir@/tcl8/ptest/library | 5 | export TCL_LIBRARY=@libdir@/tcl8/ptest/library |
6 | export ERROR_ON_FAILURES=1 | 6 | export ERROR_ON_FAILURES=1 |
7 | export LC_ALL=en_US.UTF-8 | ||
8 | export LANG=en_US.UTF-8 | ||
7 | 9 | ||
8 | # Some tests are overly strict with timings and fail on loaded systems. | 10 | # Some tests are overly strict with timings and fail on loaded systems. |
9 | SKIP="" | 11 | SKIP="" |
diff --git a/meta/recipes-devtools/tcltk8/tcl8/tcl-add-soname.patch b/meta/recipes-devtools/tcltk8/tcl8/tcl-add-soname.patch index 898e8241fc..0f8bd062ac 100644 --- a/meta/recipes-devtools/tcltk8/tcl8/tcl-add-soname.patch +++ b/meta/recipes-devtools/tcltk8/tcl8/tcl-add-soname.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 0d8e567d132e050c5d4a8d8d9257417e0679483c Mon Sep 17 00:00:00 2001 | 1 | From 2af07e2d0f0cb9f42ff982ce257e2067dcf1ec77 Mon Sep 17 00:00:00 2001 |
2 | From: Richard Purdie <rpurdie@linux.intel.com> | 2 | From: Richard Purdie <rpurdie@linux.intel.com> |
3 | Date: Wed, 9 Dec 2009 23:59:44 +0000 | 3 | Date: Wed, 9 Dec 2009 23:59:44 +0000 |
4 | Subject: [PATCH] tcl: Add tcltk from OE.dev but with legacy staging function | 4 | Subject: [PATCH] tcl: Add tcltk from OE.dev but with legacy staging function |
@@ -11,7 +11,7 @@ Signed-off-by: Alexander Kanavin <alex@linutronix.de> | |||
11 | 2 files changed, 7 insertions(+), 1 deletion(-) | 11 | 2 files changed, 7 insertions(+), 1 deletion(-) |
12 | 12 | ||
13 | diff --git a/unix/Makefile.in b/unix/Makefile.in | 13 | diff --git a/unix/Makefile.in b/unix/Makefile.in |
14 | index bc743b3..a2f9e21 100644 | 14 | index 3efdfec..ab2e7b5 100644 |
15 | --- a/unix/Makefile.in | 15 | --- a/unix/Makefile.in |
16 | +++ b/unix/Makefile.in | 16 | +++ b/unix/Makefile.in |
17 | @@ -812,7 +812,10 @@ install-binaries: binaries | 17 | @@ -812,7 +812,10 @@ install-binaries: binaries |
diff --git a/meta/recipes-devtools/tcltk8/tcl8/tcl-remove-hardcoded-install-path.patch b/meta/recipes-devtools/tcltk8/tcl8/tcl-remove-hardcoded-install-path.patch index f2a37add7d..12e1937aa1 100644 --- a/meta/recipes-devtools/tcltk8/tcl8/tcl-remove-hardcoded-install-path.patch +++ b/meta/recipes-devtools/tcltk8/tcl8/tcl-remove-hardcoded-install-path.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 6e3cbc3600ac474776e92eb9a88abcb74299c321 Mon Sep 17 00:00:00 2001 | 1 | From 0b479a0dc845f9926cb40c13d86e55391a89fe98 Mon Sep 17 00:00:00 2001 |
2 | From: "Song.Li" <Song.Li@windriver.com> | 2 | From: "Song.Li" <Song.Li@windriver.com> |
3 | Date: Wed, 1 Aug 2012 19:05:51 +0800 | 3 | Date: Wed, 1 Aug 2012 19:05:51 +0800 |
4 | Subject: [PATCH] tcl:install tcl to lib64 instead of lib on 64bit target | 4 | Subject: [PATCH] tcl:install tcl to lib64 instead of lib on 64bit target |
@@ -17,7 +17,7 @@ Signed-off-by: Yi Zhao <yi.zhao@windriver.com> | |||
17 | 1 file changed, 1 insertion(+), 1 deletion(-) | 17 | 1 file changed, 1 insertion(+), 1 deletion(-) |
18 | 18 | ||
19 | diff --git a/unix/configure.in b/unix/configure.in | 19 | diff --git a/unix/configure.in b/unix/configure.in |
20 | index e88ec3c..8e6726b 100644 | 20 | index ed07ca5..50b3e03 100644 |
21 | --- a/unix/configure.in | 21 | --- a/unix/configure.in |
22 | +++ b/unix/configure.in | 22 | +++ b/unix/configure.in |
23 | @@ -774,7 +774,7 @@ eval "TCL_LIB_FILE=libtcl${LIB_SUFFIX}" | 23 | @@ -774,7 +774,7 @@ eval "TCL_LIB_FILE=libtcl${LIB_SUFFIX}" |
diff --git a/meta/recipes-devtools/tcltk8/tcl8_8.6.16.bb b/meta/recipes-devtools/tcltk8/tcl8_8.6.17.bb index 225f04be48..b97b20abd5 100644 --- a/meta/recipes-devtools/tcltk8/tcl8_8.6.16.bb +++ b/meta/recipes-devtools/tcltk8/tcl8_8.6.17.bb | |||
@@ -25,7 +25,7 @@ SRC_URI = "${BASE_SRC_URI} \ | |||
25 | file://run-ptest \ | 25 | file://run-ptest \ |
26 | file://0001-generic-tcl.h-use-Tcl_WideInt-for-seconds-in-Tcl_Tim.patch \ | 26 | file://0001-generic-tcl.h-use-Tcl_WideInt-for-seconds-in-Tcl_Tim.patch \ |
27 | " | 27 | " |
28 | SRC_URI[sha256sum] = "3b371386a9a928eecdbf263bcab7d6a531e620ca3fbab4fdeeb3d6a9a56f38e9" | 28 | SRC_URI[sha256sum] = "a1d8cbe44b38beaa29fc2130c4e7b79b8bf02e2bcc028ffefd7a25a2122202a0" |
29 | 29 | ||
30 | SRC_URI:class-native = "${BASE_SRC_URI}" | 30 | SRC_URI:class-native = "${BASE_SRC_URI}" |
31 | 31 | ||
@@ -74,7 +74,7 @@ FILES:${PN}-dev += "${libdir}/tcl8Config.sh ${libdir}/tcl8ooConfig.sh" | |||
74 | 74 | ||
75 | # isn't getting picked up by shlibs code | 75 | # isn't getting picked up by shlibs code |
76 | RDEPENDS:${PN} += "tcl8-lib" | 76 | RDEPENDS:${PN} += "tcl8-lib" |
77 | RDEPENDS:${PN}-ptest += "libgcc" | 77 | RDEPENDS:${PN}-ptest += "libgcc locale-base-en-us tzdata" |
78 | 78 | ||
79 | BBCLASSEXTEND = "native nativesdk" | 79 | BBCLASSEXTEND = "native nativesdk" |
80 | 80 | ||
diff --git a/meta/recipes-extended/ghostscript/ghostscript_10.06.0.bb b/meta/recipes-extended/ghostscript/ghostscript_10.06.0.bb index 4f6cb45412..4cea898432 100644 --- a/meta/recipes-extended/ghostscript/ghostscript_10.06.0.bb +++ b/meta/recipes-extended/ghostscript/ghostscript_10.06.0.bb | |||
@@ -47,7 +47,7 @@ EXTRA_OECONF:append:mipsarcho32 = " --with-large_color_index=0" | |||
47 | EXTRA_OECONF:append:armv7a = "${@bb.utils.contains('TUNE_FEATURES','neon','',' --disable-neon',d)}" | 47 | EXTRA_OECONF:append:armv7a = "${@bb.utils.contains('TUNE_FEATURES','neon','',' --disable-neon',d)}" |
48 | EXTRA_OECONF:append:armv7ve = "${@bb.utils.contains('TUNE_FEATURES','neon','',' --disable-neon',d)}" | 48 | EXTRA_OECONF:append:armv7ve = "${@bb.utils.contains('TUNE_FEATURES','neon','',' --disable-neon',d)}" |
49 | 49 | ||
50 | TARGET_CFLAGS += "-std=gnu17 -fPIC" | 50 | TARGET_CFLAGS += "-std=gnu17 -Wno-error=declaration-after-statement -fPIC" |
51 | 51 | ||
52 | # Uses autoconf but not automake, can't do out-of-tree | 52 | # Uses autoconf but not automake, can't do out-of-tree |
53 | inherit autotools-brokensep pkgconfig | 53 | inherit autotools-brokensep pkgconfig |
diff --git a/meta/recipes-graphics/piglit/piglit_git.bb b/meta/recipes-graphics/piglit/piglit_git.bb index 63c0cf1ac0..060e287f26 100644 --- a/meta/recipes-graphics/piglit/piglit_git.bb +++ b/meta/recipes-graphics/piglit/piglit_git.bb | |||
@@ -38,7 +38,7 @@ do_compile[dirs] =+ "${B}/temp/" | |||
38 | 38 | ||
39 | PACKAGECONFIG ??= " \ | 39 | PACKAGECONFIG ??= " \ |
40 | ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11 glx', '', d)} \ | 40 | ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11 glx', '', d)} \ |
41 | ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '', d)} \ | 41 | ${@bb.utils.filter('DISTRO_FEATURES', 'opencl wayland', d)} \ |
42 | " | 42 | " |
43 | PACKAGECONFIG[freeglut] = "-DPIGLIT_USE_GLUT=1,-DPIGLIT_USE_GLUT=0,freeglut," | 43 | PACKAGECONFIG[freeglut] = "-DPIGLIT_USE_GLUT=1,-DPIGLIT_USE_GLUT=0,freeglut," |
44 | PACKAGECONFIG[glx] = "-DPIGLIT_BUILD_GLX_TESTS=ON,-DPIGLIT_BUILD_GLX_TESTS=OFF" | 44 | PACKAGECONFIG[glx] = "-DPIGLIT_BUILD_GLX_TESTS=ON,-DPIGLIT_BUILD_GLX_TESTS=OFF" |
diff --git a/meta/recipes-kernel/linux-firmware/linux-firmware_20250917.bb b/meta/recipes-kernel/linux-firmware/linux-firmware_20250917.bb index f8d8decfe5..e6d6bcf308 100644 --- a/meta/recipes-kernel/linux-firmware/linux-firmware_20250917.bb +++ b/meta/recipes-kernel/linux-firmware/linux-firmware_20250917.bb | |||
@@ -5,9 +5,61 @@ that contains firmware binary blobs necessary for partial or full functionality | |||
5 | of certain hardware devices." | 5 | of certain hardware devices." |
6 | SECTION = "kernel" | 6 | SECTION = "kernel" |
7 | 7 | ||
8 | REMOVE_UNLICENSED = "" | ||
9 | |||
10 | # For acenic - Alteon AceNIC Gigabit Ethernet card | ||
11 | REMOVE_UNLICENSED += "acenic/tg1.bin acenic/tg2.bin" | ||
12 | |||
13 | # For emi62 - EMI 6|2m USB Audio interface | ||
14 | REMOVE_UNLICENSED += "emi62/bitstream.fw emi62/loader.fw emi62/midi.fw emi62/spdif.fw" | ||
15 | |||
16 | # For snd-maestro3 - ESS Allegro Maestro3 audio device | ||
17 | REMOVE_UNLICENSED += "ess/maestro3_assp_kernel.fw ess/maestro3_assp_minisrc.fw" | ||
18 | |||
19 | # For s2255drv | ||
20 | REMOVE_UNLICENSED += "f2255usb.bin" | ||
21 | |||
22 | # For snd-korg1212 - Korg 1212 IO audio device | ||
23 | REMOVE_UNLICENSED += "korg/k1212.dsp" | ||
24 | |||
25 | # For lgs8gxx - Legend Silicon GB20600 demodulator driver | ||
26 | REMOVE_UNLICENSED += "lgs8g75.fw" | ||
27 | |||
28 | # For ti_usb_3410_5052 - Multi-Tech USB cell modems | ||
29 | REMOVE_UNLICENSED += "mts_cdma.fw mts_gsm.fw mts_edge.fw mts_mt9234mu.fw mts_mt9234zba.fw" | ||
30 | |||
31 | # For myri_sbus - MyriCOM Gigabit Ethernet | ||
32 | REMOVE_UNLICENSED += "myricom/lanai.bin" | ||
33 | |||
34 | # For qlogicpti - PTI Qlogic, ISP Driver | ||
35 | REMOVE_UNLICENSED += "qlogic/isp1000.bin" | ||
36 | |||
37 | # For cassini - Sun Cassini | ||
38 | REMOVE_UNLICENSED += "sun/cassini.bin" | ||
39 | |||
40 | # For dvb-ttusb-budget - Technotrend/Hauppauge Nova-USB devices | ||
41 | REMOVE_UNLICENSED += "ttusb-budget/dspbootcode.bin" | ||
42 | |||
43 | # For ueagle-atm - Driver for USB ADSL Modems based on Eagle I,II,III | ||
44 | REMOVE_UNLICENSED += "ueagle-atm/930-fpga.bin ueagle-atm/CMVeiWO.bin ueagle-atm/CMVepFR10.bin ueagle-atm/DSP9p.bin ueagle-atm/eagleIII.fw ueagle-atm/adi930.fw ueagle-atm/CMVep.bin ueagle-atm/CMVepFR.bin ueagle-atm/DSPei.bin ueagle-atm/CMV9i.bin ueagle-atm/CMVepES03.bin ueagle-atm/CMVepIT.bin ueagle-atm/DSPep.bin ueagle-atm/CMV9p.bin ueagle-atm/CMVepES.bin ueagle-atm/CMVepWO.bin ueagle-atm/eagleI.fw ueagle-atm/CMVei.bin ueagle-atm/CMVepFR04.bin ueagle-atm/DSP9i.bin ueagle-atm/eagleII.fw" | ||
45 | |||
46 | # For vicam - USB 3com HomeConnect (aka vicam) | ||
47 | REMOVE_UNLICENSED += "vicam/firmware.fw" | ||
48 | |||
49 | # For yam - YAM driver for AX.25 | ||
50 | REMOVE_UNLICENSED += "yam/1200.bin yam/9600.bin" | ||
51 | |||
52 | # For snd-wavefront - ISA WaveFront sound card | ||
53 | REMOVE_UNLICENSED += "yamaha/yss225_registers.bin" | ||
54 | |||
55 | # For snd-ymfpci - Yamaha YMF724/740/744/754 audio devices | ||
56 | REMOVE_UNLICENSED += "yamaha/ds1_ctrl.fw yamaha/ds1_dsp.fw yamaha/ds1e_ctrl.fw" | ||
57 | |||
58 | |||
8 | LICENSE = "\ | 59 | LICENSE = "\ |
9 | Firmware-Abilis \ | 60 | Firmware-Abilis \ |
10 | & Firmware-adsp_sst \ | 61 | & Firmware-adsp_sst \ |
62 | & Firmware-advansys \ | ||
11 | & Firmware-aeonsemi \ | 63 | & Firmware-aeonsemi \ |
12 | & Firmware-agere \ | 64 | & Firmware-agere \ |
13 | & Firmware-airoha \ | 65 | & Firmware-airoha \ |
@@ -29,6 +81,7 @@ LICENSE = "\ | |||
29 | & Firmware-bnx2x \ | 81 | & Firmware-bnx2x \ |
30 | & Firmware-broadcom_bcm43xx \ | 82 | & Firmware-broadcom_bcm43xx \ |
31 | & Firmware-ca0132 \ | 83 | & Firmware-ca0132 \ |
84 | & Firmware-cadence \ | ||
32 | & Firmware-cavium \ | 85 | & Firmware-cavium \ |
33 | & Firmware-chelsio_firmware \ | 86 | & Firmware-chelsio_firmware \ |
34 | & Firmware-cirrus \ | 87 | & Firmware-cirrus \ |
@@ -64,6 +117,7 @@ LICENSE = "\ | |||
64 | & Firmware-IntcSST2 \ | 117 | & Firmware-IntcSST2 \ |
65 | & Firmware-kaweth \ | 118 | & Firmware-kaweth \ |
66 | & Firmware-keyspan \ | 119 | & Firmware-keyspan \ |
120 | & Firmware-lenovo \ | ||
67 | & Firmware-linaro \ | 121 | & Firmware-linaro \ |
68 | & Firmware-Lontium \ | 122 | & Firmware-Lontium \ |
69 | & Firmware-mali_csffw \ | 123 | & Firmware-mali_csffw \ |
@@ -122,11 +176,18 @@ LICENSE = "\ | |||
122 | & Firmware-xc5000c \ | 176 | & Firmware-xc5000c \ |
123 | & Firmware-xe \ | 177 | & Firmware-xe \ |
124 | & WHENCE \ | 178 | & WHENCE \ |
179 | & GPL-1.0-only \ | ||
125 | & GPL-2.0-or-later \ | 180 | & GPL-2.0-or-later \ |
181 | & GPL-2.0-only \ | ||
182 | & GPL-3.0-only \ | ||
183 | & MPL-1.1 \ | ||
184 | & Apache-2.0 \ | ||
185 | & MIT \ | ||
126 | " | 186 | " |
127 | 187 | ||
128 | LIC_FILES_CHKSUM = "file://LICENCE.Abilis;md5=b5ee3f410780e56711ad48eadc22b8bc \ | 188 | LIC_FILES_CHKSUM = "file://LICENCE.Abilis;md5=b5ee3f410780e56711ad48eadc22b8bc \ |
129 | file://LICENCE.adsp_sst;md5=615c45b91a5a4a9fe046d6ab9a2df728 \ | 189 | file://LICENCE.adsp_sst;md5=615c45b91a5a4a9fe046d6ab9a2df728 \ |
190 | file://LICENCE.advansys;md5=bca735476602a7bcb187c7f8bf4a31d5 \ | ||
130 | file://LICENSE.aeonsemi;md5=521c00bae0077c90d6ffb9ccf66905ae \ | 191 | file://LICENSE.aeonsemi;md5=521c00bae0077c90d6ffb9ccf66905ae \ |
131 | file://LICENCE.agere;md5=af0133de6b4a9b2522defd5f188afd31 \ | 192 | file://LICENCE.agere;md5=af0133de6b4a9b2522defd5f188afd31 \ |
132 | file://LICENSE.airoha;md5=fa3dedb960e2673aea51aa509f7b537d \ | 193 | file://LICENSE.airoha;md5=fa3dedb960e2673aea51aa509f7b537d \ |
@@ -184,6 +245,7 @@ LIC_FILES_CHKSUM = "file://LICENCE.Abilis;md5=b5ee3f410780e56711ad48eadc22b8bc \ | |||
184 | file://LICENSE.ixp4xx;md5=ddc5cd6cbc6745343926fe7ecc2cdeb2 \ | 245 | file://LICENSE.ixp4xx;md5=ddc5cd6cbc6745343926fe7ecc2cdeb2 \ |
185 | file://LICENCE.kaweth;md5=b1d876e562f4b3b8d391ad8395dfe03f \ | 246 | file://LICENCE.kaweth;md5=b1d876e562f4b3b8d391ad8395dfe03f \ |
186 | file://LICENCE.keyspan;md5=676af26017c45772c972ce4a75d467d9 \ | 247 | file://LICENCE.keyspan;md5=676af26017c45772c972ce4a75d467d9 \ |
248 | file://LICENCE.lenovo;md5=7f25420b5c27211f7bf33bebb3042ce4 \ | ||
187 | file://LICENCE.linaro;md5=936d91e71cf9cd30e733db4bf11661cc \ | 249 | file://LICENCE.linaro;md5=936d91e71cf9cd30e733db4bf11661cc \ |
188 | file://LICENSE.Lontium;md5=4ec8dc582ff7295f39e2ca6a7b0be2b6 \ | 250 | file://LICENSE.Lontium;md5=4ec8dc582ff7295f39e2ca6a7b0be2b6 \ |
189 | file://LICENCE.mali_csffw;md5=e064aaec4d21ef856e1b76a6f5dc435f \ | 251 | file://LICENCE.mali_csffw;md5=e064aaec4d21ef856e1b76a6f5dc435f \ |
@@ -252,6 +314,7 @@ WHENCE_CHKSUM = "a12ddaaab7162785af9d79b76132d185" | |||
252 | # so that the license files will be copied from fetched source | 314 | # so that the license files will be copied from fetched source |
253 | NO_GENERIC_LICENSE[Firmware-Abilis] = "LICENCE.Abilis" | 315 | NO_GENERIC_LICENSE[Firmware-Abilis] = "LICENCE.Abilis" |
254 | NO_GENERIC_LICENSE[Firmware-adsp_sst] = "LICENCE.adsp_sst" | 316 | NO_GENERIC_LICENSE[Firmware-adsp_sst] = "LICENCE.adsp_sst" |
317 | NO_GENERIC_LICENSE[Firmware-advansys] = "LICENCE.advansys" | ||
255 | NO_GENERIC_LICENSE[Firmware-aeonsemi] = "LICENSE.aeonsemi" | 318 | NO_GENERIC_LICENSE[Firmware-aeonsemi] = "LICENSE.aeonsemi" |
256 | NO_GENERIC_LICENSE[Firmware-agere] = "LICENCE.agere" | 319 | NO_GENERIC_LICENSE[Firmware-agere] = "LICENCE.agere" |
257 | NO_GENERIC_LICENSE[Firmware-airoha] = "LICENSE.airoha" | 320 | NO_GENERIC_LICENSE[Firmware-airoha] = "LICENSE.airoha" |
@@ -309,6 +372,7 @@ NO_GENERIC_LICENSE[Firmware-iwlwifi_firmware] = "LICENCE.iwlwifi_firmware" | |||
309 | NO_GENERIC_LICENSE[Firmware-ixp4xx] = "LICENSE.ixp4xx" | 372 | NO_GENERIC_LICENSE[Firmware-ixp4xx] = "LICENSE.ixp4xx" |
310 | NO_GENERIC_LICENSE[Firmware-kaweth] = "LICENCE.kaweth" | 373 | NO_GENERIC_LICENSE[Firmware-kaweth] = "LICENCE.kaweth" |
311 | NO_GENERIC_LICENSE[Firmware-keyspan] = "LICENCE.keyspan" | 374 | NO_GENERIC_LICENSE[Firmware-keyspan] = "LICENCE.keyspan" |
375 | NO_GENERIC_LICENSE[Firmware-lenovo] = "LICENCE.lenovo" | ||
312 | NO_GENERIC_LICENSE[Firmware-linaro] = "LICENCE.linaro" | 376 | NO_GENERIC_LICENSE[Firmware-linaro] = "LICENCE.linaro" |
313 | NO_GENERIC_LICENSE[Firmware-Lontium] = "LICENSE.Lontium" | 377 | NO_GENERIC_LICENSE[Firmware-Lontium] = "LICENSE.Lontium" |
314 | NO_GENERIC_LICENSE[Firmware-mali_csffw] = "LICENCE.mali_csffw" | 378 | NO_GENERIC_LICENSE[Firmware-mali_csffw] = "LICENCE.mali_csffw" |
@@ -416,6 +480,21 @@ do_install() { | |||
416 | fi | 480 | fi |
417 | cp LICEN[CS]E.* WHENCE ${D}${nonarch_base_libdir}/firmware/ | 481 | cp LICEN[CS]E.* WHENCE ${D}${nonarch_base_libdir}/firmware/ |
418 | cp wfx/LICEN[CS]E.* ${D}${nonarch_base_libdir}/firmware/wfx/ | 482 | cp wfx/LICEN[CS]E.* ${D}${nonarch_base_libdir}/firmware/wfx/ |
483 | |||
484 | # Remove all unlicensed firmware | ||
485 | for file in ${REMOVE_UNLICENSED}; do | ||
486 | echo "Remove unlicensed firmware: $file" | ||
487 | rm ${D}${nonarch_base_libdir}/firmware/$file | ||
488 | path_to_file=$(dirname $file) | ||
489 | while [ "${path_to_file}" != "." ]; do | ||
490 | num_files=$(ls -A1 ${D}${nonarch_base_libdir}/firmware/$path_to_file | wc -l) | ||
491 | if [ "$num_files" = "0" ]; then | ||
492 | echo "Remove empty dir: $path_to_file" | ||
493 | rm -rf ${D}${nonarch_base_libdir}/firmware/$path_to_file | ||
494 | fi | ||
495 | path_to_file=$(dirname $path_to_file) | ||
496 | done | ||
497 | done | ||
419 | } | 498 | } |
420 | 499 | ||
421 | PACKAGES =+ "${PN}-amphion-vpu-license ${PN}-amphion-vpu \ | 500 | PACKAGES =+ "${PN}-amphion-vpu-license ${PN}-amphion-vpu \ |
@@ -456,18 +535,28 @@ PACKAGES =+ "${PN}-amphion-vpu-license ${PN}-amphion-vpu \ | |||
456 | ${PN}-moxa-license ${PN}-moxa \ | 535 | ${PN}-moxa-license ${PN}-moxa \ |
457 | ${PN}-sd8686 ${PN}-sd8688 ${PN}-sd8787 ${PN}-sd8797 ${PN}-sd8801 \ | 536 | ${PN}-sd8686 ${PN}-sd8688 ${PN}-sd8787 ${PN}-sd8797 ${PN}-sd8801 \ |
458 | ${PN}-sd8887 ${PN}-sd8897 ${PN}-sd8997 ${PN}-usb8997 \ | 537 | ${PN}-sd8887 ${PN}-sd8897 ${PN}-sd8997 ${PN}-usb8997 \ |
538 | ${PN}-cf8381 ${PN}-cf8385 ${PN}-gspi8682 ${PN}-gspi8686 ${PN}-gspi8688 ${PN}-sd8385 ${PN}-sd8682 \ | ||
539 | ${PN}-usb8388 ${PN}-usb8682 ${PN}-sd8977 ${PN}-usb8766 ${PN}-usb8797 ${PN}-usb8801 ${PN}-usb8897 ${PN}-rvu-cptpf \ | ||
540 | ${PN}-mwl8k ${PN}-mwlwifi\ | ||
459 | ${PN}-ti-connectivity-license ${PN}-wl1251-license ${PN}-wlcommon ${PN}-wl1251 ${PN}-wl12xx ${PN}-wl18xx ${PN}-cc33xx \ | 541 | ${PN}-ti-connectivity-license ${PN}-wl1251-license ${PN}-wlcommon ${PN}-wl1251 ${PN}-wl12xx ${PN}-wl18xx ${PN}-cc33xx \ |
460 | ${PN}-ti-keystone-license ${PN}-ti-keystone \ | 542 | ${PN}-ti-keystone-license ${PN}-ti-keystone \ |
543 | ${PN}-ti-tspa-license ${PN}-ti-tas2563 ${PN}-ti-tas2781 ${PN}-ti-vpe \ | ||
544 | ${PN}-ti-usb-3410-5052 \ | ||
461 | ${PN}-vt6656-license ${PN}-vt6656 \ | 545 | ${PN}-vt6656-license ${PN}-vt6656 \ |
462 | ${PN}-rs9113 ${PN}-rs9116 \ | 546 | ${PN}-rs9113 ${PN}-rs9116 ${PN}-rsi-91x \ |
463 | ${PN}-rtl-license ${PN}-rtl8188 ${PN}-rtl8192cu ${PN}-rtl8192ce ${PN}-rtl8192su ${PN}-rtl8723 ${PN}-rtl8821 \ | 547 | ${PN}-rtl-license ${PN}-rtl8188 ${PN}-rtl8192cu ${PN}-rtl8192ce ${PN}-rtl8192su ${PN}-rtl8723 ${PN}-rtl8821 \ |
464 | ${PN}-rtl8761 \ | 548 | ${PN}-rtl8761 \ |
465 | ${PN}-rtl8168 \ | 549 | ${PN}-rtl8168 \ |
466 | ${PN}-rtl8822 \ | 550 | ${PN}-rtl8822 \ |
551 | ${PN}-rtl8192 ${PN}-rtl8710 ${PN}-rtl8812 \ | ||
552 | ${PN}-rtl8851 ${PN}-rtl8852 ${PN}-rtl8922 \ | ||
553 | ${PN}-rtl8703 ${PN}-rtl8814 \ | ||
467 | ${PN}-rtl-nic \ | 554 | ${PN}-rtl-nic \ |
468 | ${PN}-cypress-license \ | 555 | ${PN}-cypress-license \ |
469 | ${PN}-broadcom-license \ | 556 | ${PN}-broadcom-license \ |
470 | ${PN}-bcm-0bb4-0306 \ | 557 | ${PN}-bcm-0bb4-0306 \ |
558 | ${PN}-bcm-0a5c-6410 \ | ||
559 | ${PN}-bcm43012 \ | ||
471 | ${PN}-bcm43143 \ | 560 | ${PN}-bcm43143 \ |
472 | ${PN}-bcm43236b \ | 561 | ${PN}-bcm43236b \ |
473 | ${PN}-bcm43241b0 \ | 562 | ${PN}-bcm43241b0 \ |
@@ -500,6 +589,7 @@ PACKAGES =+ "${PN}-amphion-vpu-license ${PN}-amphion-vpu \ | |||
500 | ${PN}-bcm4373 \ | 589 | ${PN}-bcm4373 \ |
501 | ${PN}-bcm43xx \ | 590 | ${PN}-bcm43xx \ |
502 | ${PN}-bcm43xx-hdr \ | 591 | ${PN}-bcm43xx-hdr \ |
592 | ${PN}-bcm54591 \ | ||
503 | ${PN}-cirrus-license ${PN}-cirrus \ | 593 | ${PN}-cirrus-license ${PN}-cirrus \ |
504 | ${PN}-cnm-license ${PN}-cnm \ | 594 | ${PN}-cnm-license ${PN}-cnm \ |
505 | ${PN}-atheros-license ${PN}-ar5523 ${PN}-ar9170 ${PN}-ath6k ${PN}-ath9k ${PN}-ath3k \ | 595 | ${PN}-atheros-license ${PN}-ar5523 ${PN}-ar9170 ${PN}-ath6k ${PN}-ath9k ${PN}-ath3k \ |
@@ -570,12 +660,12 @@ PACKAGES =+ "${PN}-amphion-vpu-license ${PN}-amphion-vpu \ | |||
570 | ${PN}-i915-license ${PN}-i915 \ | 660 | ${PN}-i915-license ${PN}-i915 \ |
571 | ${PN}-ice-license ${PN}-ice \ | 661 | ${PN}-ice-license ${PN}-ice \ |
572 | ${PN}-ice-enhanced-license ${PN}-ice-enhanced \ | 662 | ${PN}-ice-enhanced-license ${PN}-ice-enhanced \ |
573 | ${PN}-adsp-sst-license ${PN}-adsp-sst \ | 663 | ${PN}-adsp-sst-license ${PN}-adsp-sst ${PN}-snd-soc-avs \ |
574 | ${PN}-bnx2 \ | 664 | ${PN}-bnx2 \ |
575 | ${PN}-bnx2x \ | 665 | ${PN}-bnx2x \ |
576 | ${PN}-liquidio \ | 666 | ${PN}-liquidio \ |
577 | ${PN}-linaro-license \ | 667 | ${PN}-linaro-license \ |
578 | ${PN}-mali-csffw-arch108 ${PN}-mali-csffw-license \ | 668 | ${PN}-mali-csffw-arch108 ${PN}-mali-csffw-arch1010 ${PN}-mali-csffw-arch1012 ${PN}-mali-csffw-arch118 ${PN}-mali-csffw-arch128 ${PN}-mali-csffw-arch138 ${PN}-mali-csffw-license \ |
579 | ${PN}-mellanox \ | 669 | ${PN}-mellanox \ |
580 | ${PN}-nvidia-license \ | 670 | ${PN}-nvidia-license \ |
581 | ${PN}-nvidia-tegra-k1 ${PN}-nvidia-tegra \ | 671 | ${PN}-nvidia-tegra-k1 ${PN}-nvidia-tegra \ |
@@ -590,6 +680,7 @@ PACKAGES =+ "${PN}-amphion-vpu-license ${PN}-amphion-vpu \ | |||
590 | ${PN}-nxp9098-sdio \ | 680 | ${PN}-nxp9098-sdio \ |
591 | ${PN}-nxpiw416-sdio \ | 681 | ${PN}-nxpiw416-sdio \ |
592 | ${PN}-nxpiw612-sdio \ | 682 | ${PN}-nxpiw612-sdio \ |
683 | ${PN}-nxp-sr1xx \ | ||
593 | ${PN}-nxp-mc-license ${PN}-nxp-mc \ | 684 | ${PN}-nxp-mc-license ${PN}-nxp-mc \ |
594 | ${PN}-netronome-license ${PN}-netronome \ | 685 | ${PN}-netronome-license ${PN}-netronome \ |
595 | ${PN}-olpc-license ${PN}-olpc \ | 686 | ${PN}-olpc-license ${PN}-olpc \ |
@@ -647,6 +738,82 @@ PACKAGES =+ "${PN}-amphion-vpu-license ${PN}-amphion-vpu \ | |||
647 | ${PN}-xc4000-license ${PN}-xc4000 \ | 738 | ${PN}-xc4000-license ${PN}-xc4000 \ |
648 | ${PN}-xc5000-license ${PN}-xc5000 \ | 739 | ${PN}-xc5000-license ${PN}-xc5000 \ |
649 | ${PN}-xc5000c-license ${PN}-xc5000c \ | 740 | ${PN}-xc5000c-license ${PN}-xc5000c \ |
741 | ${PN}-typhoon-license ${PN}-typhoon \ | ||
742 | ${PN}-intel-license ${PN}-ish-lnlm \ | ||
743 | ${PN}-lenovo-license ${PN}-ish-lnlm-53c4ffad-2a17559f \ | ||
744 | ${PN}-advansys-license ${PN}-advansys \ | ||
745 | ${PN}-aeonsemi-license ${PN}-as21xxx \ | ||
746 | ${PN}-agere-license ${PN}-orinoco \ | ||
747 | ${PN}-airoha-license ${PN}-en8811h ${PN}-airoha-npu \ | ||
748 | ${PN}-amd-sev-license ${PN}-ccp \ | ||
749 | ${PN}-amdnpu-license ${PN}-amdxdna \ | ||
750 | ${PN}-amd-pmf-license ${PN}-amd-pmf \ | ||
751 | ${PN}-amd-ucode-license ${PN}-microcode-amd \ | ||
752 | ${PN}-amlogic-license ${PN}-amlogic \ | ||
753 | ${PN}-abilis-license ${PN}-as102 \ | ||
754 | ${PN}-starfire \ | ||
755 | ${PN}-atmel-license ${PN}-wilc1000 ${PN}-wilc3000 \ | ||
756 | ${PN}-atusb \ | ||
757 | ${PN}-dvb-ttpci \ | ||
758 | ${PN}-bmi260-license ${PN}-bmi260 \ | ||
759 | ${PN}-cadence-license ${PN}-mhdp8546 \ | ||
760 | ${PN}-cavium-license ${PN}-cnn55xx \ | ||
761 | ${PN}-bfa-license ${PN}-cbfw ${PN}-ctfw ${PN}-ct2fw \ | ||
762 | ${PN}-pcnet-cs ${PN}-3c589-cs ${PN}-3c574-cs ${PN}-serial-cs \ | ||
763 | ${PN}-sw-serial \ | ||
764 | ${PN}-siano-license ${PN}-smsmdtv \ | ||
765 | ${PN}-cpia2 \ | ||
766 | ${PN}-ca0132-license ${PN}-ca0132 \ | ||
767 | ${PN}-cxgb3-license ${PN}-cxgb3 \ | ||
768 | ${PN}-chelsio-firmware-license ${PN}-cxgb4 \ | ||
769 | ${PN}-dabusb-license ${PN}-dabusb \ | ||
770 | ${PN}-dsp56k \ | ||
771 | ${PN}-dib0700-license ${PN}-dib0700 \ | ||
772 | ${PN}-it913x-license ${PN}-it9135 \ | ||
773 | ${PN}-drxk-license ${PN}-drxk \ | ||
774 | ${PN}-e100-license ${PN}-e100 \ | ||
775 | ${PN}-io-ti ${PN}-io-edgeport \ | ||
776 | ${PN}-emi26-license ${PN}-emi26 \ | ||
777 | ${PN}-ene-firmware-license ${PN}-ene-ub6250 \ | ||
778 | ${PN}-snd-maestro3 \ | ||
779 | ${PN}-go7007-s2250-license ${PN}-go7007-s2250 \ | ||
780 | ${PN}-go7007-license ${PN}-go7007 \ | ||
781 | ${PN}-hfi1-license ${PN}-hfi1 \ | ||
782 | ${PN}-inside-secure-license ${PN}-inside-secure \ | ||
783 | ${PN}-intcsst2-license ${PN}-snd-soc-catpt \ | ||
784 | ${PN}-fw-sst-0f28-license ${PN}-snd-intel-sst-core \ | ||
785 | ${PN}-ivsc-license ${PN}-atomisp ${PN}-intel-ipu6-isys ${PN}-mei-vsc-hw \ | ||
786 | ${PN}-ipu3-firmware-license ${PN}-ipu3-imgu \ | ||
787 | ${PN}-intel-ipu7-isys \ | ||
788 | ${PN}-intel-vpu-license ${PN}-intel-vpu \ | ||
789 | ${PN}-isci \ | ||
790 | ${PN}-ixp4xx-license ${PN}-ixp4xx-npe \ | ||
791 | ${PN}-kaweth-license ${PN}-kaweth \ | ||
792 | ${PN}-keyspan-license ${PN}-keyspan \ | ||
793 | ${PN}-keyspan-pda \ | ||
794 | ${PN}-mga-license ${PN}-mga \ | ||
795 | ${PN}-myri10ge-firmware-license ${PN}-myri10ge \ | ||
796 | ${PN}-smc91c92-cs \ | ||
797 | ${PN}-qla1280-license ${PN}-qla1280 \ | ||
798 | ${PN}-ib-qib-license ${PN}-ib-qib \ | ||
799 | ${PN}-r8a779x-usb3-license ${PN}-xhci-rcar \ | ||
800 | ${PN}-r128 \ | ||
801 | ${PN}-rt1320-license ${PN}-rt1320 \ | ||
802 | ${PN}-rp2-license ${PN}-rp2 \ | ||
803 | ${PN}-s5p-mfc-license ${PN}-s5p-mfc \ | ||
804 | ${PN}-snd-sb16-csp \ | ||
805 | ${PN}-alacritech-license ${PN}-slicoss ${PN}-sxg \ | ||
806 | ${PN}-tehuti-license ${PN}-tehuti \ | ||
807 | ${PN}-tigon-license ${PN}-tg3 \ | ||
808 | ${PN}-tlg2300-license ${PN}-tlg2300 \ | ||
809 | ${PN}-montage-license ${PN}-mont-tsse \ | ||
810 | ${PN}-ueagle-atm4-firmware-license ${PN}-ueagle-atm \ | ||
811 | ${PN}-usbdux \ | ||
812 | ${PN}-conexant-license ${PN}-cx231xx ${PN}-cx23418 ${PN}-cx23885 ${PN}-cx23840 \ | ||
813 | ${PN}-vxge-license ${PN}-vxge \ | ||
814 | ${PN}-whiteheat \ | ||
815 | ${PN}-qualcommatheros-ath10k-license ${PN}-wil6210 \ | ||
816 | ${PN}-xe-license ${PN}-xe \ | ||
650 | ${PN}-license \ | 817 | ${PN}-license \ |
651 | " | 818 | " |
652 | 819 | ||
@@ -664,7 +831,10 @@ RDEPENDS:${PN}-amphion-vpu += "${PN}-amphion-vpu-license" | |||
664 | LICENSE:${PN}-cw1200 = "Firmware-cw1200" | 831 | LICENSE:${PN}-cw1200 = "Firmware-cw1200" |
665 | LICENSE:${PN}-cw1200-license = "Firmware-cw1200" | 832 | LICENSE:${PN}-cw1200-license = "Firmware-cw1200" |
666 | 833 | ||
667 | FILES:${PN}-cw1200 = "${nonarch_base_libdir}/firmware/wsm_22.bin*" | 834 | FILES:${PN}-cw1200 = " \ |
835 | ${nonarch_base_libdir}/firmware/sdd_sagrad_1091_1098.bin* \ | ||
836 | ${nonarch_base_libdir}/firmware/wsm_22.bin* \ | ||
837 | " | ||
668 | FILES:${PN}-cw1200-license = "${nonarch_base_libdir}/firmware/LICENCE.cw1200" | 838 | FILES:${PN}-cw1200-license = "${nonarch_base_libdir}/firmware/LICENCE.cw1200" |
669 | 839 | ||
670 | RDEPENDS:${PN}-cw1200 += "${PN}-cw1200-license" | 840 | RDEPENDS:${PN}-cw1200 += "${PN}-cw1200-license" |
@@ -1136,12 +1306,32 @@ FILES:${PN}-lontium-license = "${nonarch_base_libdir}/firmware/LICENSE.Lontium" | |||
1136 | FILES:${PN}-lt9611uxc = "${nonarch_base_libdir}/firmware/lt9611uxc_fw.bin*" | 1306 | FILES:${PN}-lt9611uxc = "${nonarch_base_libdir}/firmware/lt9611uxc_fw.bin*" |
1137 | 1307 | ||
1138 | # For Arm Mali | 1308 | # For Arm Mali |
1139 | LICENSE:${PN}-mali-csffw-arch108 = "Firmware-mali_csffw" | ||
1140 | FILES:${PN}-mali-csffw-license = "${nonarch_base_libdir}/firmware/LICENCE.mali_csffw" | 1309 | FILES:${PN}-mali-csffw-license = "${nonarch_base_libdir}/firmware/LICENCE.mali_csffw" |
1141 | FILES:${PN}-mali-csffw-arch108 = "${nonarch_base_libdir}/firmware/arm/mali/arch10.8/mali_csffw.bin*" | ||
1142 | 1310 | ||
1311 | LICENSE:${PN}-mali-csffw-arch108 = "Firmware-mali_csffw" | ||
1312 | FILES:${PN}-mali-csffw-arch108 = "${nonarch_base_libdir}/firmware/arm/mali/arch10.8/mali_csffw.bin*" | ||
1143 | RDEPENDS:${PN}-mali-csffw-arch108 += "${PN}-mali-csffw-license" | 1313 | RDEPENDS:${PN}-mali-csffw-arch108 += "${PN}-mali-csffw-license" |
1144 | 1314 | ||
1315 | LICENSE:${PN}-mali-csffw-arch1010 = "Firmware-mali_csffw" | ||
1316 | FILES:${PN}-mali-csffw-arch1010 = "${nonarch_base_libdir}/firmware/arm/mali/arch10.10/mali_csffw.bin*" | ||
1317 | RDEPENDS:${PN}-mali-csffw-arch1010 += "${PN}-mali-csffw-license" | ||
1318 | |||
1319 | LICENSE:${PN}-mali-csffw-arch1012 = "Firmware-mali_csffw" | ||
1320 | FILES:${PN}-mali-csffw-arch1012 = "${nonarch_base_libdir}/firmware/arm/mali/arch10.12/mali_csffw.bin*" | ||
1321 | RDEPENDS:${PN}-mali-csffw-arch1012 += "${PN}-mali-csffw-license" | ||
1322 | |||
1323 | LICENSE:${PN}-mali-csffw-arch118 = "Firmware-mali_csffw" | ||
1324 | FILES:${PN}-mali-csffw-arch118 = "${nonarch_base_libdir}/firmware/arm/mali/arch11.8/mali_csffw.bin*" | ||
1325 | RDEPENDS:${PN}-mali-csffw-arch118 += "${PN}-mali-csffw-license" | ||
1326 | |||
1327 | LICENSE:${PN}-mali-csffw-arch128 = "Firmware-mali_csffw" | ||
1328 | FILES:${PN}-mali-csffw-arch128 = "${nonarch_base_libdir}/firmware/arm/mali/arch12.8/mali_csffw.bin*" | ||
1329 | RDEPENDS:${PN}-mali-csffw-arch128 += "${PN}-mali-csffw-license" | ||
1330 | |||
1331 | LICENSE:${PN}-mali-csffw-arch138 = "Firmware-mali_csffw" | ||
1332 | FILES:${PN}-mali-csffw-arch138 = "${nonarch_base_libdir}/firmware/arm/mali/arch13.8/mali_csffw.bin*" | ||
1333 | RDEPENDS:${PN}-mali-csffw-arch138 += "${PN}-mali-csffw-license" | ||
1334 | |||
1145 | # For marvell | 1335 | # For marvell |
1146 | LICENSE:${PN}-pcie8897 = "Firmware-Marvell" | 1336 | LICENSE:${PN}-pcie8897 = "Firmware-Marvell" |
1147 | LICENSE:${PN}-pcie8997 = "Firmware-Marvell" | 1337 | LICENSE:${PN}-pcie8997 = "Firmware-Marvell" |
@@ -1154,6 +1344,23 @@ LICENSE:${PN}-sd8887 = "Firmware-Marvell" | |||
1154 | LICENSE:${PN}-sd8897 = "Firmware-Marvell" | 1344 | LICENSE:${PN}-sd8897 = "Firmware-Marvell" |
1155 | LICENSE:${PN}-sd8997 = "Firmware-Marvell" | 1345 | LICENSE:${PN}-sd8997 = "Firmware-Marvell" |
1156 | LICENSE:${PN}-usb8997 = "Firmware-Marvell" | 1346 | LICENSE:${PN}-usb8997 = "Firmware-Marvell" |
1347 | LICENSE:${PN}-cf8381 = "Firmware-Marvell" | ||
1348 | LICENSE:${PN}-cf8385 = "Firmware-Marvell" | ||
1349 | LICENSE:${PN}-gspi8682 = "Firmware-Marvell" | ||
1350 | LICENSE:${PN}-gspi8686 = "Firmware-Marvell" | ||
1351 | LICENSE:${PN}-gspi8688 = "Firmware-Marvell" | ||
1352 | LICENSE:${PN}-sd8385 = "Firmware-Marvell" | ||
1353 | LICENSE:${PN}-sd8682 = "Firmware-Marvell" | ||
1354 | LICENSE:${PN}-usb8388 = "Firmware-Marvell" | ||
1355 | LICENSE:${PN}-usb8682 = "Firmware-Marvell" | ||
1356 | LICENSE:${PN}-sd8977 = "Firmware-Marvell" | ||
1357 | LICENSE:${PN}-usb8766 = "Firmware-Marvell" | ||
1358 | LICENSE:${PN}-usb8797 = "Firmware-Marvell" | ||
1359 | LICENSE:${PN}-usb8801 = "Firmware-Marvell" | ||
1360 | LICENSE:${PN}-usb8897 = "Firmware-Marvell" | ||
1361 | LICENSE:${PN}-rvu-cptpf = "Firmware-Marvell" | ||
1362 | LICENSE:${PN}-mwl8k = "Firmware-Marvell" | ||
1363 | LICENSE:${PN}-mwlwifi = "Firmware-Marvell" | ||
1157 | LICENSE:${PN}-marvell-license = "Firmware-Marvell" | 1364 | LICENSE:${PN}-marvell-license = "Firmware-Marvell" |
1158 | 1365 | ||
1159 | FILES:${PN}-marvell-license = "${nonarch_base_libdir}/firmware/LICENCE.Marvell" | 1366 | FILES:${PN}-marvell-license = "${nonarch_base_libdir}/firmware/LICENCE.Marvell" |
@@ -1166,8 +1373,7 @@ FILES:${PN}-pcie8997 = " \ | |||
1166 | ${nonarch_base_libdir}/firmware/mrvl/pcieusb8997_combo_v4.bin* \ | 1373 | ${nonarch_base_libdir}/firmware/mrvl/pcieusb8997_combo_v4.bin* \ |
1167 | " | 1374 | " |
1168 | FILES:${PN}-sd8686 = " \ | 1375 | FILES:${PN}-sd8686 = " \ |
1169 | ${nonarch_base_libdir}/firmware/libertas/sd8686_v9* \ | 1376 | ${nonarch_base_libdir}/firmware/libertas/sd8686* \ |
1170 | ${nonarch_base_libdir}/firmware/sd8686* \ | ||
1171 | " | 1377 | " |
1172 | FILES:${PN}-sd8688 = " \ | 1378 | FILES:${PN}-sd8688 = " \ |
1173 | ${nonarch_base_libdir}/firmware/libertas/sd8688* \ | 1379 | ${nonarch_base_libdir}/firmware/libertas/sd8688* \ |
@@ -1204,6 +1410,23 @@ FILES:${PN}-sd8997 = " \ | |||
1204 | FILES:${PN}-usb8997 = " \ | 1410 | FILES:${PN}-usb8997 = " \ |
1205 | ${nonarch_base_libdir}/firmware/mrvl/usbusb8997_combo_v4.bin* \ | 1411 | ${nonarch_base_libdir}/firmware/mrvl/usbusb8997_combo_v4.bin* \ |
1206 | " | 1412 | " |
1413 | FILES:${PN}-cf8381 = "${nonarch_base_libdir}/firmware/libertas/cf8381*" | ||
1414 | FILES:${PN}-cf8385 = "${nonarch_base_libdir}/firmware/libertas/cf8385*" | ||
1415 | FILES:${PN}-gspi8682 = "${nonarch_base_libdir}/firmware/libertas/gspi8682*" | ||
1416 | FILES:${PN}-gspi8686 = "${nonarch_base_libdir}/firmware/libertas/gspi8686*" | ||
1417 | FILES:${PN}-gspi8688 = "${nonarch_base_libdir}/firmware/libertas/gspi8688*" | ||
1418 | FILES:${PN}-sd8385 = "${nonarch_base_libdir}/firmware/libertas/sd8385*" | ||
1419 | FILES:${PN}-sd8682 = "${nonarch_base_libdir}/firmware/libertas/sd8682*" | ||
1420 | FILES:${PN}-usb8388 = "${nonarch_base_libdir}/firmware/libertas/usb8388*" | ||
1421 | FILES:${PN}-usb8682 = "${nonarch_base_libdir}/firmware/libertas/usb8682*" | ||
1422 | FILES:${PN}-sd8977 = "${nonarch_base_libdir}/firmware/mrvl/sdsd8977*" | ||
1423 | FILES:${PN}-usb8766 = "${nonarch_base_libdir}/firmware/mrvl/usb8766*" | ||
1424 | FILES:${PN}-usb8797 = "${nonarch_base_libdir}/firmware/mrvl/usb8797*" | ||
1425 | FILES:${PN}-usb8801 = "${nonarch_base_libdir}/firmware/mrvl/usb8801*" | ||
1426 | FILES:${PN}-usb8897 = "${nonarch_base_libdir}/firmware/mrvl/usb8897*" | ||
1427 | FILES:${PN}-rvu-cptpf = "${nonarch_base_libdir}/firmware/mrvl/cpt0*" | ||
1428 | FILES:${PN}-mwl8k = "${nonarch_base_libdir}/firmware/mwl8k/*" | ||
1429 | FILES:${PN}-mwlwifi = "${nonarch_base_libdir}/firmware/mwlwifi/*" | ||
1207 | 1430 | ||
1208 | RDEPENDS:${PN}-sd8686 += "${PN}-marvell-license" | 1431 | RDEPENDS:${PN}-sd8686 += "${PN}-marvell-license" |
1209 | RDEPENDS:${PN}-sd8688 += "${PN}-marvell-license" | 1432 | RDEPENDS:${PN}-sd8688 += "${PN}-marvell-license" |
@@ -1214,6 +1437,23 @@ RDEPENDS:${PN}-sd8887 += "${PN}-marvell-license" | |||
1214 | RDEPENDS:${PN}-sd8897 += "${PN}-marvell-license" | 1437 | RDEPENDS:${PN}-sd8897 += "${PN}-marvell-license" |
1215 | RDEPENDS:${PN}-sd8997 += "${PN}-marvell-license" | 1438 | RDEPENDS:${PN}-sd8997 += "${PN}-marvell-license" |
1216 | RDEPENDS:${PN}-usb8997 += "${PN}-marvell-license" | 1439 | RDEPENDS:${PN}-usb8997 += "${PN}-marvell-license" |
1440 | RDEPENDS:${PN}-cf8381 += "${PN}-marvell-license" | ||
1441 | RDEPENDS:${PN}-cf8385 += "${PN}-marvell-license" | ||
1442 | RDEPENDS:${PN}-gspi8682 += "${PN}-marvell-license" | ||
1443 | RDEPENDS:${PN}-gspi8686 += "${PN}-marvell-license" | ||
1444 | RDEPENDS:${PN}-gspi8688 += "${PN}-marvell-license" | ||
1445 | RDEPENDS:${PN}-sd8385 += "${PN}-marvell-license" | ||
1446 | RDEPENDS:${PN}-sd8682 += "${PN}-marvell-license" | ||
1447 | RDEPENDS:${PN}-usb8388 += "${PN}-marvell-license" | ||
1448 | RDEPENDS:${PN}-usb8682 += "${PN}-marvell-license" | ||
1449 | RDEPENDS:${PN}-sd8977 += "${PN}-marvell-license" | ||
1450 | RDEPENDS:${PN}-usb8766 += "${PN}-marvell-license" | ||
1451 | RDEPENDS:${PN}-usb8797 += "${PN}-marvell-license" | ||
1452 | RDEPENDS:${PN}-usb8801 += "${PN}-marvell-license" | ||
1453 | RDEPENDS:${PN}-usb8897 += "${PN}-marvell-license" | ||
1454 | RDEPENDS:${PN}-rvu-cptpf += "${PN}-marvell-license" | ||
1455 | RDEPENDS:${PN}-mwl8k += "${PN}-marvell-license" | ||
1456 | RDEPENDS:${PN}-mwlwifi += "${PN}-marvell-license" | ||
1217 | 1457 | ||
1218 | # For netronome | 1458 | # For netronome |
1219 | LICENSE:${PN}-netronome = "Firmware-netronome" | 1459 | LICENSE:${PN}-netronome = "Firmware-netronome" |
@@ -1247,6 +1487,7 @@ LICENSE:${PN}-nxp9098-pcie = "Firmware-nxp" | |||
1247 | LICENSE:${PN}-nxp9098-sdio = "Firmware-nxp" | 1487 | LICENSE:${PN}-nxp9098-sdio = "Firmware-nxp" |
1248 | LICENSE:${PN}-nxpiw416-sdio = "Firmware-nxp" | 1488 | LICENSE:${PN}-nxpiw416-sdio = "Firmware-nxp" |
1249 | LICENSE:${PN}-nxpiw612-sdio = "Firmware-nxp" | 1489 | LICENSE:${PN}-nxpiw612-sdio = "Firmware-nxp" |
1490 | LICENSE:${PN}-nxp-sr1xx = "Firmware-nxp" | ||
1250 | LICENSE:${PN}-nxp-license = "Firmware-nxp" | 1491 | LICENSE:${PN}-nxp-license = "Firmware-nxp" |
1251 | 1492 | ||
1252 | FILES:${PN}-nxp8987-sdio = "${nonarch_base_libdir}/firmware/nxp/*8987*" | 1493 | FILES:${PN}-nxp8987-sdio = "${nonarch_base_libdir}/firmware/nxp/*8987*" |
@@ -1261,6 +1502,7 @@ ALLOW_EMPTY:${PN}-nxp9098-pcie = "1" | |||
1261 | ALLOW_EMPTY:${PN}-nxp9098-sdio = "1" | 1502 | ALLOW_EMPTY:${PN}-nxp9098-sdio = "1" |
1262 | FILES:${PN}-nxpiw416-sdio = "${nonarch_base_libdir}/firmware/nxp/*iw416*" | 1503 | FILES:${PN}-nxpiw416-sdio = "${nonarch_base_libdir}/firmware/nxp/*iw416*" |
1263 | FILES:${PN}-nxpiw612-sdio = "${nonarch_base_libdir}/firmware/nxp/uartspi_n61x_v1.bin.se*" | 1504 | FILES:${PN}-nxpiw612-sdio = "${nonarch_base_libdir}/firmware/nxp/uartspi_n61x_v1.bin.se*" |
1505 | FILES:${PN}-nxp-sr1xx = "${nonarch_base_libdir}/firmware/nxp/sr150_fw.bin" | ||
1264 | FILES:${PN}-nxp-license = "${nonarch_base_libdir}/firmware/LICENSE.nxp" | 1506 | FILES:${PN}-nxp-license = "${nonarch_base_libdir}/firmware/LICENSE.nxp" |
1265 | 1507 | ||
1266 | RDEPENDS:${PN}-nxp8987-sdio += "${PN}-nxp-license" | 1508 | RDEPENDS:${PN}-nxp8987-sdio += "${PN}-nxp-license" |
@@ -1272,6 +1514,7 @@ RDEPENDS:${PN}-nxp9098-pcie += "${PN}-nxp9098-common" | |||
1272 | RDEPENDS:${PN}-nxp9098-sdio += "${PN}-nxp9098-common" | 1514 | RDEPENDS:${PN}-nxp9098-sdio += "${PN}-nxp9098-common" |
1273 | RDEPENDS:${PN}-nxpiw416-sdio += "${PN}-nxp-license" | 1515 | RDEPENDS:${PN}-nxpiw416-sdio += "${PN}-nxp-license" |
1274 | RDEPENDS:${PN}-nxpiw612-sdio += "${PN}-nxp-license" | 1516 | RDEPENDS:${PN}-nxpiw612-sdio += "${PN}-nxp-license" |
1517 | RDEPENDS:${PN}-nxp-sr1xx += "${PN}-nxp-license" | ||
1275 | 1518 | ||
1276 | # For nxp-mc | 1519 | # For nxp-mc |
1277 | LICENSE:${PN}-nxp-mc = "Firmware-nxp_mc_firmware" | 1520 | LICENSE:${PN}-nxp-mc = "Firmware-nxp_mc_firmware" |
@@ -1348,12 +1591,15 @@ RDEPENDS:${PN}-qla2xxx += "${PN}-qla2xxx-license" | |||
1348 | # For RSI RS911x WiFi | 1591 | # For RSI RS911x WiFi |
1349 | LICENSE:${PN}-rs9113 = "WHENCE" | 1592 | LICENSE:${PN}-rs9113 = "WHENCE" |
1350 | LICENSE:${PN}-rs9116 = "WHENCE" | 1593 | LICENSE:${PN}-rs9116 = "WHENCE" |
1594 | LICENSE:${PN}-rsi-91x = "WHENCE" | ||
1351 | 1595 | ||
1352 | FILES:${PN}-rs9113 = " ${nonarch_base_libdir}/firmware/rsi/rs9113*.rps* " | 1596 | FILES:${PN}-rs9113 = " ${nonarch_base_libdir}/firmware/rsi/rs9113*.rps* " |
1353 | FILES:${PN}-rs9116 = " ${nonarch_base_libdir}/firmware/rsi/rs9116*.rps* " | 1597 | FILES:${PN}-rs9116 = " ${nonarch_base_libdir}/firmware/rsi/rs9116*.rps* " |
1598 | FILES:${PN}-rsi-91x = " ${nonarch_base_libdir}/firmware/rsi_91x.fw " | ||
1354 | 1599 | ||
1355 | RDEPENDS:${PN}-rs9113 += "${PN}-whence-license" | 1600 | RDEPENDS:${PN}-rs9113 += "${PN}-whence-license" |
1356 | RDEPENDS:${PN}-rs9116 += "${PN}-whence-license" | 1601 | RDEPENDS:${PN}-rs9116 += "${PN}-whence-license" |
1602 | RDEPENDS:${PN}-rsi-91x += "${PN}-whence-license" | ||
1357 | 1603 | ||
1358 | # For rtl | 1604 | # For rtl |
1359 | LICENSE:${PN}-rtl8188 = "Firmware-rtlwifi_firmware" | 1605 | LICENSE:${PN}-rtl8188 = "Firmware-rtlwifi_firmware" |
@@ -1364,6 +1610,14 @@ LICENSE:${PN}-rtl8723 = "Firmware-rtlwifi_firmware" | |||
1364 | LICENSE:${PN}-rtl8761 = "Firmware-rtlwifi_firmware" | 1610 | LICENSE:${PN}-rtl8761 = "Firmware-rtlwifi_firmware" |
1365 | LICENSE:${PN}-rtl8821 = "Firmware-rtlwifi_firmware" | 1611 | LICENSE:${PN}-rtl8821 = "Firmware-rtlwifi_firmware" |
1366 | LICENSE:${PN}-rtl8822 = "Firmware-rtlwifi_firmware" | 1612 | LICENSE:${PN}-rtl8822 = "Firmware-rtlwifi_firmware" |
1613 | LICENSE:${PN}-rtl8192 = "Firmware-rtlwifi_firmware" | ||
1614 | LICENSE:${PN}-rtl8710 = "Firmware-rtlwifi_firmware" | ||
1615 | LICENSE:${PN}-rtl8812 = "Firmware-rtlwifi_firmware" | ||
1616 | LICENSE:${PN}-rtl8851 = "Firmware-rtlwifi_firmware" | ||
1617 | LICENSE:${PN}-rtl8852 = "Firmware-rtlwifi_firmware" | ||
1618 | LICENSE:${PN}-rtl8922 = "Firmware-rtlwifi_firmware" | ||
1619 | LICENSE:${PN}-rtl8703 = "Firmware-rtlwifi_firmware" | ||
1620 | LICENSE:${PN}-rtl8814 = "Firmware-rtlwifi_firmware" | ||
1367 | LICENSE:${PN}-rtl-license = "Firmware-rtlwifi_firmware" | 1621 | LICENSE:${PN}-rtl-license = "Firmware-rtlwifi_firmware" |
1368 | LICENSE:${PN}-rtl-nic = "WHENCE" | 1622 | LICENSE:${PN}-rtl-nic = "WHENCE" |
1369 | LICENSE:${PN}-rtl8168 = "WHENCE" | 1623 | LICENSE:${PN}-rtl8168 = "WHENCE" |
@@ -1390,6 +1644,7 @@ FILES:${PN}-rtl8723 = " \ | |||
1390 | " | 1644 | " |
1391 | FILES:${PN}-rtl8821 = " \ | 1645 | FILES:${PN}-rtl8821 = " \ |
1392 | ${nonarch_base_libdir}/firmware/rtlwifi/rtl8821*.bin* \ | 1646 | ${nonarch_base_libdir}/firmware/rtlwifi/rtl8821*.bin* \ |
1647 | ${nonarch_base_libdir}/firmware/rtw88/README \ | ||
1393 | ${nonarch_base_libdir}/firmware/rtw88/rtw8821*.bin* \ | 1648 | ${nonarch_base_libdir}/firmware/rtw88/rtw8821*.bin* \ |
1394 | ${nonarch_base_libdir}/firmware/rtl_bt/rtl8821*.bin \ | 1649 | ${nonarch_base_libdir}/firmware/rtl_bt/rtl8821*.bin \ |
1395 | " | 1650 | " |
@@ -1407,6 +1662,30 @@ FILES:${PN}-rtl8822 = " \ | |||
1407 | FILES:${PN}-rtl-nic = " \ | 1662 | FILES:${PN}-rtl-nic = " \ |
1408 | ${nonarch_base_libdir}/firmware/rtl_nic/*.fw* \ | 1663 | ${nonarch_base_libdir}/firmware/rtl_nic/*.fw* \ |
1409 | " | 1664 | " |
1665 | FILES:${PN}-rtl8192 = " \ | ||
1666 | ${nonarch_base_libdir}/firmware/rtlwifi/rtl8192* \ | ||
1667 | ${nonarch_base_libdir}/firmware/rtl_bt/rtl8192* \ | ||
1668 | " | ||
1669 | FILES:${PN}-rtl8710 = "${nonarch_base_libdir}/firmware/rtlwifi/rtl8710*" | ||
1670 | FILES:${PN}-rtl8812 = " \ | ||
1671 | ${nonarch_base_libdir}/firmware/rtlwifi/rtl8812* \ | ||
1672 | ${nonarch_base_libdir}/firmware/rtl_bt/rtl8812* \ | ||
1673 | ${nonarch_base_libdir}/firmware/rtw88/rtw8812* \ | ||
1674 | " | ||
1675 | FILES:${PN}-rtl8851 = " \ | ||
1676 | ${nonarch_base_libdir}/firmware/rtl_bt/rtl8851* \ | ||
1677 | ${nonarch_base_libdir}/firmware/rtw89/rtw8851* \ | ||
1678 | " | ||
1679 | FILES:${PN}-rtl8852 = " \ | ||
1680 | ${nonarch_base_libdir}/firmware/rtl_bt/rtl8852* \ | ||
1681 | ${nonarch_base_libdir}/firmware/rtw89/rtw8852* \ | ||
1682 | " | ||
1683 | FILES:${PN}-rtl8922 = " \ | ||
1684 | ${nonarch_base_libdir}/firmware/rtl_bt/rtl8922* \ | ||
1685 | ${nonarch_base_libdir}/firmware/rtw89/rtw8922* \ | ||
1686 | " | ||
1687 | FILES:${PN}-rtl8703 = "${nonarch_base_libdir}/firmware/rtw88/rtw8703*" | ||
1688 | FILES:${PN}-rtl8814 = "${nonarch_base_libdir}/firmware/rtw88/rtw8814*" | ||
1410 | 1689 | ||
1411 | RDEPENDS:${PN}-rtl8188 += "${PN}-rtl-license" | 1690 | RDEPENDS:${PN}-rtl8188 += "${PN}-rtl-license" |
1412 | RDEPENDS:${PN}-rtl8192ce += "${PN}-rtl-license" | 1691 | RDEPENDS:${PN}-rtl8192ce += "${PN}-rtl-license" |
@@ -1416,6 +1695,14 @@ RDEPENDS:${PN}-rtl8723 += "${PN}-rtl-license" | |||
1416 | RDEPENDS:${PN}-rtl8821 += "${PN}-rtl-license" | 1695 | RDEPENDS:${PN}-rtl8821 += "${PN}-rtl-license" |
1417 | RDEPENDS:${PN}-rtl8761 += "${PN}-rtl-license" | 1696 | RDEPENDS:${PN}-rtl8761 += "${PN}-rtl-license" |
1418 | RDEPENDS:${PN}-rtl8822 += "${PN}-rtl-license" | 1697 | RDEPENDS:${PN}-rtl8822 += "${PN}-rtl-license" |
1698 | RDEPENDS:${PN}-rtl8192 += "${PN}-rtl-license" | ||
1699 | RDEPENDS:${PN}-rtl8710 += "${PN}-rtl-license" | ||
1700 | RDEPENDS:${PN}-rtl8812 += "${PN}-rtl-license" | ||
1701 | RDEPENDS:${PN}-rtl8851 += "${PN}-rtl-license" | ||
1702 | RDEPENDS:${PN}-rtl8852 += "${PN}-rtl-license" | ||
1703 | RDEPENDS:${PN}-rtl8922 += "${PN}-rtl-license" | ||
1704 | RDEPENDS:${PN}-rtl8703 += "${PN}-rtl-license" | ||
1705 | RDEPENDS:${PN}-rtl8814 += "${PN}-rtl-license" | ||
1419 | RDEPENDS:${PN}-rtl8168 += "${PN}-whence-license" | 1706 | RDEPENDS:${PN}-rtl8168 += "${PN}-whence-license" |
1420 | RDEPENDS:${PN}-rtl-nic += "${PN}-whence-license" | 1707 | RDEPENDS:${PN}-rtl-nic += "${PN}-whence-license" |
1421 | 1708 | ||
@@ -1488,6 +1775,41 @@ FILES:${PN}-ti-keystone-license = " \ | |||
1488 | " | 1775 | " |
1489 | RDEPENDS:${PN}-ti-keystone += "${PN}-ti-keystone-license" | 1776 | RDEPENDS:${PN}-ti-keystone += "${PN}-ti-keystone-license" |
1490 | 1777 | ||
1778 | # For ti-tspa-license | ||
1779 | LICENSE:${PN}-ti-tspa-license = "Firmware-ti-tspa" | ||
1780 | FILES:${PN}-ti-tspa-license = "${nonarch_base_libdir}/firmware/LICENCE.ti-tspa" | ||
1781 | |||
1782 | # For ti-tas2563 - tas2563 firmware | ||
1783 | LICENSE:${PN}-ti-tas2563 = "Firmware-ti-tspa" | ||
1784 | FILES:${PN}-ti-tas2563 = "\ | ||
1785 | ${nonarch_base_libdir}/firmware/INT8866RCA2.bin \ | ||
1786 | ${nonarch_base_libdir}/firmware/TAS2XXX3870.bin \ | ||
1787 | ${nonarch_base_libdir}/firmware/ti/tas2563/* \ | ||
1788 | " | ||
1789 | RDEPENDS:${PN}-ti-tas2563 = "${PN}-ti-tspa-license" | ||
1790 | |||
1791 | # For ti-tas2781 - tas2781 firmware | ||
1792 | LICENSE:${PN}-ti-tas2781 = "Firmware-ti-tspa" | ||
1793 | FILES:${PN}-ti-tas2781 = "\ | ||
1794 | ${nonarch_base_libdir}/firmware/TAS2XXX*.bin \ | ||
1795 | ${nonarch_base_libdir}/firmware/TIAS2781*.bin \ | ||
1796 | ${nonarch_base_libdir}/firmware/TXNW2781*.bin \ | ||
1797 | ${nonarch_base_libdir}/firmware/ti/tas2781/* \ | ||
1798 | " | ||
1799 | RDEPENDS:${PN}-ti-tas2781 = "${PN}-ti-tspa-license" | ||
1800 | |||
1801 | # For ti-vpe - Texas Instruments V4L2 driver for Video Processing Engine | ||
1802 | LICENSE:${PN}-ti-vpe = "Firmware-ti-tspa" | ||
1803 | FILES:${PN}-ti-vpe = "${nonarch_base_libdir}/firmware/ti/vpdma-1b8.bin" | ||
1804 | RDEPENDS:${PN}-ti-vpe = "${PN}-ti-tspa-license" | ||
1805 | |||
1806 | # For ti_usb_3410_5052 - USB TI 3410/5052 serial device | ||
1807 | LICENSE:${PN}-ti-usb-3410-5052 = "GPL-2.0-or-later" | ||
1808 | FILES:${PN}-ti-usb-3410-5052 = "\ | ||
1809 | ${nonarch_base_libdir}/firmware/ti_3410.fw \ | ||
1810 | ${nonarch_base_libdir}/firmware/ti_5052.fw \ | ||
1811 | " | ||
1812 | |||
1491 | # For vt6656 | 1813 | # For vt6656 |
1492 | LICENSE:${PN}-vt6656 = "Firmware-via_vt6656" | 1814 | LICENSE:${PN}-vt6656 = "Firmware-via_vt6656" |
1493 | LICENSE:${PN}-vt6656-license = "Firmware-via_vt6656" | 1815 | LICENSE:${PN}-vt6656-license = "Firmware-via_vt6656" |
@@ -1549,9 +1871,12 @@ FILES:${PN}-bcm4339 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4339-sdio.bi | |||
1549 | ${nonarch_base_libdir}/firmware/cypress/cyfmac4339-sdio.bin* \ | 1871 | ${nonarch_base_libdir}/firmware/cypress/cyfmac4339-sdio.bin* \ |
1550 | " | 1872 | " |
1551 | FILES:${PN}-bcm43241b0 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43241b0-sdio.bin*" | 1873 | FILES:${PN}-bcm43241b0 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43241b0-sdio.bin*" |
1552 | FILES:${PN}-bcm43241b4 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43241b4-sdio.bin*" | 1874 | FILES:${PN}-bcm43241b4 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43241b4-sdio.*" |
1553 | FILES:${PN}-bcm43241b5 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43241b5-sdio.bin*" | 1875 | FILES:${PN}-bcm43241b5 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43241b5-sdio.bin*" |
1554 | FILES:${PN}-bcm43242a = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43242a.bin*" | 1876 | FILES:${PN}-bcm43242a = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43242a.bin*" |
1877 | FILES:${PN}-bcm43012 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43012-sdio.* \ | ||
1878 | ${nonarch_base_libdir}/firmware/cypress/cyfmac43012-sdio.* \ | ||
1879 | " | ||
1555 | FILES:${PN}-bcm43143 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43143.bin* \ | 1880 | FILES:${PN}-bcm43143 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43143.bin* \ |
1556 | ${nonarch_base_libdir}/firmware/brcm/brcmfmac43143-sdio.bin* \ | 1881 | ${nonarch_base_libdir}/firmware/brcm/brcmfmac43143-sdio.bin* \ |
1557 | " | 1882 | " |
@@ -1565,8 +1890,8 @@ FILES:${PN}-bcm4356 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4356-sdio.* | |||
1565 | ${nonarch_base_libdir}/firmware/cypress/cyfmac4356-sdio.* \ | 1890 | ${nonarch_base_libdir}/firmware/cypress/cyfmac4356-sdio.* \ |
1566 | " | 1891 | " |
1567 | FILES:${PN}-bcm43569 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43569.bin*" | 1892 | FILES:${PN}-bcm43569 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43569.bin*" |
1568 | FILES:${PN}-bcm43570 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43570-pcie.bin* \ | 1893 | FILES:${PN}-bcm43570 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43570-pcie.* \ |
1569 | ${nonarch_base_libdir}/firmware/cypress/cyfmac43570-pcie.bin* \ | 1894 | ${nonarch_base_libdir}/firmware/cypress/cyfmac43570-pcie.* \ |
1570 | " | 1895 | " |
1571 | FILES:${PN}-bcm4358 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4358-pcie.bin*" | 1896 | FILES:${PN}-bcm4358 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4358-pcie.bin*" |
1572 | FILES:${PN}-bcm43602 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43602-pcie.bin* \ | 1897 | FILES:${PN}-bcm43602 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43602-pcie.bin* \ |
@@ -1576,6 +1901,10 @@ FILES:${PN}-bcm4366b = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4366b-pcie. | |||
1576 | FILES:${PN}-bcm4366c = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4366c-pcie.bin*" | 1901 | FILES:${PN}-bcm4366c = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4366c-pcie.bin*" |
1577 | FILES:${PN}-bcm4371 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4371-pcie.bin*" | 1902 | FILES:${PN}-bcm4371 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4371-pcie.bin*" |
1578 | 1903 | ||
1904 | FILES:${PN}-bcm54591 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac54591-pcie.* \ | ||
1905 | ${nonarch_base_libdir}/firmware/cypress/cyfmac54591-pcie.* \ | ||
1906 | " | ||
1907 | |||
1579 | # for i in `grep brcm WHENCE | grep ^File | sed 's/File: brcm.//g'`; do pkg=`echo $i | sed 's/-[sp40].*//g; s/\.bin//g; s/brcmfmac/bcm/g; s/_hdr/-hdr/g; s/BCM/bcm-0bb4-0306/g'`; echo -e "LICENSE:\${PN}-$pkg = \"Firmware-broadcom_bcm43xx\"\nRDEPENDS_\${PN}-$pkg += \"\${PN}-broadcom-license\""; done | 1908 | # for i in `grep brcm WHENCE | grep ^File | sed 's/File: brcm.//g'`; do pkg=`echo $i | sed 's/-[sp40].*//g; s/\.bin//g; s/brcmfmac/bcm/g; s/_hdr/-hdr/g; s/BCM/bcm-0bb4-0306/g'`; echo -e "LICENSE:\${PN}-$pkg = \"Firmware-broadcom_bcm43xx\"\nRDEPENDS_\${PN}-$pkg += \"\${PN}-broadcom-license\""; done |
1580 | # Currently 1st one and last 6 have cypress LICENSE | 1909 | # Currently 1st one and last 6 have cypress LICENSE |
1581 | 1910 | ||
@@ -1605,6 +1934,8 @@ LICENSE:${PN}-bcm43241b5 = "Firmware-broadcom_bcm43xx" | |||
1605 | RDEPENDS:${PN}-bcm43241b5 += "${PN}-broadcom-license" | 1934 | RDEPENDS:${PN}-bcm43241b5 += "${PN}-broadcom-license" |
1606 | LICENSE:${PN}-bcm43242a = "Firmware-broadcom_bcm43xx" | 1935 | LICENSE:${PN}-bcm43242a = "Firmware-broadcom_bcm43xx" |
1607 | RDEPENDS:${PN}-bcm43242a += "${PN}-broadcom-license" | 1936 | RDEPENDS:${PN}-bcm43242a += "${PN}-broadcom-license" |
1937 | LICENSE:${PN}-bcm43012 = "Firmware-broadcom_bcm43xx" | ||
1938 | RDEPENDS:${PN}-bcm43012 += "${PN}-broadcom-license" | ||
1608 | LICENSE:${PN}-bcm43143 = "Firmware-broadcom_bcm43xx" | 1939 | LICENSE:${PN}-bcm43143 = "Firmware-broadcom_bcm43xx" |
1609 | RDEPENDS:${PN}-bcm43143 += "${PN}-broadcom-license" | 1940 | RDEPENDS:${PN}-bcm43143 += "${PN}-broadcom-license" |
1610 | LICENSE:${PN}-bcm43430a0 = "Firmware-broadcom_bcm43xx" | 1941 | LICENSE:${PN}-bcm43430a0 = "Firmware-broadcom_bcm43xx" |
@@ -1631,6 +1962,8 @@ LICENSE:${PN}-bcm4366c = "Firmware-broadcom_bcm43xx" | |||
1631 | RDEPENDS:${PN}-bcm4366c += "${PN}-broadcom-license" | 1962 | RDEPENDS:${PN}-bcm4366c += "${PN}-broadcom-license" |
1632 | LICENSE:${PN}-bcm4371 = "Firmware-broadcom_bcm43xx" | 1963 | LICENSE:${PN}-bcm4371 = "Firmware-broadcom_bcm43xx" |
1633 | RDEPENDS:${PN}-bcm4371 += "${PN}-broadcom-license" | 1964 | RDEPENDS:${PN}-bcm4371 += "${PN}-broadcom-license" |
1965 | LICENSE:${PN}-bcm54591 = "Firmware-broadcom_bcm43xx" | ||
1966 | RDEPENDS:${PN}-bcm54591 += "${PN}-broadcom-license" | ||
1634 | 1967 | ||
1635 | # For broadcom cypress | 1968 | # For broadcom cypress |
1636 | 1969 | ||
@@ -1638,14 +1971,15 @@ LICENSE:${PN}-cypress-license = "Firmware-cypress" | |||
1638 | FILES:${PN}-cypress-license = "${nonarch_base_libdir}/firmware/LICENCE.cypress" | 1971 | FILES:${PN}-cypress-license = "${nonarch_base_libdir}/firmware/LICENCE.cypress" |
1639 | 1972 | ||
1640 | FILES:${PN}-bcm-0bb4-0306 = "${nonarch_base_libdir}/firmware/brcm/BCM-0bb4-0306.hcd*" | 1973 | FILES:${PN}-bcm-0bb4-0306 = "${nonarch_base_libdir}/firmware/brcm/BCM-0bb4-0306.hcd*" |
1974 | FILES:${PN}-bcm-0a5c-6410 = "${nonarch_base_libdir}/firmware/brcm/BCM-0a5c-6410.hcd*" | ||
1641 | FILES:${PN}-bcm43340 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43340-sdio.* \ | 1975 | FILES:${PN}-bcm43340 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43340-sdio.* \ |
1642 | ${nonarch_base_libdir}/firmware/cypress/cyfmac43340-sdio.*" | 1976 | ${nonarch_base_libdir}/firmware/cypress/cyfmac43340-sdio.*" |
1643 | FILES:${PN}-bcm43362 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43362-sdio.* \ | 1977 | FILES:${PN}-bcm43362 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43362-sdio.* \ |
1644 | ${nonarch_base_libdir}/firmware/cypress/cyfmac43362-sdio.*" | 1978 | ${nonarch_base_libdir}/firmware/cypress/cyfmac43362-sdio.*" |
1645 | FILES:${PN}-bcm43430 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43430-sdio.* \ | 1979 | FILES:${PN}-bcm43430 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43430-sdio.* \ |
1646 | ${nonarch_base_libdir}/firmware/cypress/cyfmac43430-sdio.*" | 1980 | ${nonarch_base_libdir}/firmware/cypress/cyfmac43430-sdio.*" |
1647 | FILES:${PN}-bcm4354 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4354-sdio.bin* \ | 1981 | FILES:${PN}-bcm4354 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4354-sdio.* \ |
1648 | ${nonarch_base_libdir}/firmware/cypress/cyfmac4354-sdio.bin* \ | 1982 | ${nonarch_base_libdir}/firmware/cypress/cyfmac4354-sdio.* \ |
1649 | " | 1983 | " |
1650 | FILES:${PN}-bcm4356-pcie = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4356-pcie.* \ | 1984 | FILES:${PN}-bcm4356-pcie = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4356-pcie.* \ |
1651 | ${nonarch_base_libdir}/firmware/cypress/cyfmac4356-pcie.* \ | 1985 | ${nonarch_base_libdir}/firmware/cypress/cyfmac4356-pcie.* \ |
@@ -1659,6 +1993,8 @@ FILES:${PN}-bcm4373 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4373-sdio.bi | |||
1659 | 1993 | ||
1660 | LICENSE:${PN}-bcm-0bb4-0306 = "Firmware-cypress" | 1994 | LICENSE:${PN}-bcm-0bb4-0306 = "Firmware-cypress" |
1661 | RDEPENDS:${PN}-bcm-0bb4-0306 += "${PN}-cypress-license" | 1995 | RDEPENDS:${PN}-bcm-0bb4-0306 += "${PN}-cypress-license" |
1996 | LICENSE:${PN}-bcm-0a5c-6410 = "Firmware-cypress" | ||
1997 | RDEPENDS:${PN}-bcm-0a5c-6410 += "${PN}-bcm-0bb4-0306" | ||
1662 | LICENSE:${PN}-bcm43340 = "Firmware-cypress" | 1998 | LICENSE:${PN}-bcm43340 = "Firmware-cypress" |
1663 | RDEPENDS:${PN}-bcm43340 += "${PN}-cypress-license" | 1999 | RDEPENDS:${PN}-bcm43340 += "${PN}-cypress-license" |
1664 | LICENSE:${PN}-bcm43362 = "Firmware-cypress" | 2000 | LICENSE:${PN}-bcm43362 = "Firmware-cypress" |
@@ -1699,7 +2035,10 @@ RDEPENDS:${PN}-bnx2x += "${PN}-whence-license" | |||
1699 | LICENSE:${PN}-cirrus = "Firmware-cirrus" | 2035 | LICENSE:${PN}-cirrus = "Firmware-cirrus" |
1700 | LICENSE:${PN}-cirrus-license = "Firmware-cirrus" | 2036 | LICENSE:${PN}-cirrus-license = "Firmware-cirrus" |
1701 | 2037 | ||
1702 | FILES:${PN}-cirrus = "${nonarch_base_libdir}/firmware/cirrus/*" | 2038 | FILES:${PN}-cirrus = " \ |
2039 | ${nonarch_base_libdir}/firmware/cs42l43.bin \ | ||
2040 | ${nonarch_base_libdir}/firmware/cirrus/* \ | ||
2041 | " | ||
1703 | FILES:${PN}-cirrus-license = "${nonarch_base_libdir}/firmware/LICENSE.cirrus" | 2042 | FILES:${PN}-cirrus-license = "${nonarch_base_libdir}/firmware/LICENSE.cirrus" |
1704 | 2043 | ||
1705 | RDEPENDS:${PN}-cirrus += "${PN}-cirrus-license" | 2044 | RDEPENDS:${PN}-cirrus += "${PN}-cirrus-license" |
@@ -1708,7 +2047,7 @@ RDEPENDS:${PN}-cirrus += "${PN}-cirrus-license" | |||
1708 | LICENSE:${PN}-cnm = "Firmware-cnm" | 2047 | LICENSE:${PN}-cnm = "Firmware-cnm" |
1709 | LICENSE:${PN}-cnm-license = "Firmware-cnm" | 2048 | LICENSE:${PN}-cnm-license = "Firmware-cnm" |
1710 | 2049 | ||
1711 | FILES:${PN}-cnm = "${nonarch_base_libdir}/firmware/cnm/wave521c_k3_codec_fw.bin*" | 2050 | FILES:${PN}-cnm = "${nonarch_base_libdir}/firmware/cnm/*" |
1712 | FILES:${PN}-cnm-license = "${nonarch_base_libdir}/firmware/LICENCE.cnm" | 2051 | FILES:${PN}-cnm-license = "${nonarch_base_libdir}/firmware/LICENCE.cnm" |
1713 | 2052 | ||
1714 | RDEPENDS:${PN}-cnm += "${PN}-cnm-license" | 2053 | RDEPENDS:${PN}-cnm += "${PN}-cnm-license" |
@@ -1897,9 +2236,14 @@ LICENSE:${PN}-adsp-sst-license = "Firmware-adsp_sst" | |||
1897 | FILES:${PN}-adsp-sst = "\ | 2236 | FILES:${PN}-adsp-sst = "\ |
1898 | ${nonarch_base_libdir}/firmware/intel/dsp_fw* \ | 2237 | ${nonarch_base_libdir}/firmware/intel/dsp_fw* \ |
1899 | ${nonarch_base_libdir}/firmware/intel/avs/*/dsp_basefw.bin \ | 2238 | ${nonarch_base_libdir}/firmware/intel/avs/*/dsp_basefw.bin \ |
2239 | ${nonarch_base_libdir}/firmware/intel/avs/skl/dsp_mod_7CAD0808-AB10-CD23-EF45-12AB34CD56EF.bin \ | ||
1900 | " | 2240 | " |
1901 | RDEPENDS:${PN}-adsp-sst = "${PN}-adsp-sst-license" | 2241 | RDEPENDS:${PN}-adsp-sst = "${PN}-adsp-sst-license" |
1902 | 2242 | ||
2243 | # For snd_soc_avs - Intel AudioDSP driver for cAVS platforms | ||
2244 | LICENSE:${PN}-snd-soc-avs = "Apache-2.0" | ||
2245 | FILES:${PN}-snd-soc-avs = "${nonarch_base_libdir}/firmware/intel/avs/*" | ||
2246 | |||
1903 | # For QAT | 2247 | # For QAT |
1904 | LICENSE:${PN}-qat = "Firmware-qat" | 2248 | LICENSE:${PN}-qat = "Firmware-qat" |
1905 | LICENSE:${PN}-qat-license = "Firmware-qat" | 2249 | LICENSE:${PN}-qat-license = "Firmware-qat" |
@@ -2061,7 +2405,11 @@ FILES:${PN}-qcom-qrb4210-compute = "${nonarch_base_libdir}/firmware/qcom/qrb4210 | |||
2061 | FILES:${PN}-qcom-qrb4210-modem = "${nonarch_base_libdir}/firmware/qcom/qrb4210/modem*.*" | 2405 | FILES:${PN}-qcom-qrb4210-modem = "${nonarch_base_libdir}/firmware/qcom/qrb4210/modem*.*" |
2062 | FILES:${PN}-qcom-qrb4210-wifi = "${nonarch_base_libdir}/firmware/qcom/qrb4210/wlanmdsp.mbn* ${nonarch_base_libdir}/firmware/ath10k/WCN3990/hw1.0/qrb4210/*" | 2406 | FILES:${PN}-qcom-qrb4210-wifi = "${nonarch_base_libdir}/firmware/qcom/qrb4210/wlanmdsp.mbn* ${nonarch_base_libdir}/firmware/ath10k/WCN3990/hw1.0/qrb4210/*" |
2063 | FILES:${PN}-qcom-sa8775p-adreno = "${nonarch_base_libdir}/firmware/qcom/sa8775p/a663_zap.mbn*" | 2407 | FILES:${PN}-qcom-sa8775p-adreno = "${nonarch_base_libdir}/firmware/qcom/sa8775p/a663_zap.mbn*" |
2064 | FILES:${PN}-qcom-sa8775p-audio = "${nonarch_base_libdir}/firmware/qcom/sa8775p/adsp*.* ${nonarch_base_libdir}/firmware/qcom/qcs9100/LEMANS-EVK-tplg.bin*" | 2408 | FILES:${PN}-qcom-sa8775p-audio = "\ |
2409 | ${nonarch_base_libdir}/firmware/qcom/sa8775p/adsp*.* \ | ||
2410 | ${nonarch_base_libdir}/firmware/qcom/sa8775p/LEMANS-EVK-tplg.bin \ | ||
2411 | ${nonarch_base_libdir}/firmware/qcom/qcs9100/LEMANS-EVK-tplg.bin \ | ||
2412 | " | ||
2065 | FILES:${PN}-qcom-sa8775p-compute = "${nonarch_base_libdir}/firmware/qcom/sa8775p/cdsp*.*" | 2413 | FILES:${PN}-qcom-sa8775p-compute = "${nonarch_base_libdir}/firmware/qcom/sa8775p/cdsp*.*" |
2066 | FILES:${PN}-qcom-sa8775p-generalpurpose = "${nonarch_base_libdir}/firmware/qcom/sa8775p/gpdsp*.*" | 2414 | FILES:${PN}-qcom-sa8775p-generalpurpose = "${nonarch_base_libdir}/firmware/qcom/sa8775p/gpdsp*.*" |
2067 | FILES:${PN}-qcom-sa8775p-qupv3fw = "${nonarch_base_libdir}/firmware/qcom/sa8775p/qupv3fw.elf*" | 2415 | FILES:${PN}-qcom-sa8775p-qupv3fw = "${nonarch_base_libdir}/firmware/qcom/sa8775p/qupv3fw.elf*" |
@@ -2217,6 +2565,656 @@ FILES:${PN}-amlogic-vdec-license = "${nonarch_base_libdir}/firmware/LICENSE.amlo | |||
2217 | FILES:${PN}-amlogic-vdec = "${nonarch_base_libdir}/firmware/meson/vdec/*" | 2565 | FILES:${PN}-amlogic-vdec = "${nonarch_base_libdir}/firmware/meson/vdec/*" |
2218 | RDEPENDS:${PN}-amlogic-vdec = "${PN}-amlogic-vdec-license" | 2566 | RDEPENDS:${PN}-amlogic-vdec = "${PN}-amlogic-vdec-license" |
2219 | 2567 | ||
2568 | # For 3com typhoon | ||
2569 | LICENSE:${PN}-typhoon-license = "Firmware-typhoon" | ||
2570 | LICENSE:${PN}-typhoon = "Firmware-typhoon" | ||
2571 | FILES:${PN}-typhoon-license = "${nonarch_base_libdir}/firmware/LICENCE.typhoon" | ||
2572 | FILES:${PN}-typhoon = "${nonarch_base_libdir}/firmware/3com/typhoon.bin" | ||
2573 | RDEPENDS:${PN}-typhoon = "${PN}-typhoon-license" | ||
2574 | |||
2575 | # For ish - Intel Integrated Sensor Hub | ||
2576 | LICENSE:${PN}-intel-license = "Firmware-intel" | ||
2577 | FILES:${PN}-intel-license = "${nonarch_base_libdir}/firmware/LICENSE.intel" | ||
2578 | |||
2579 | LICENSE:${PN}-ish-lnlm = "Firmware-intel" | ||
2580 | FILES:${PN}-ish-lnlm = "${nonarch_base_libdir}/firmware/intel/ish/ish_lnlm.bin" | ||
2581 | RDEPENDS:${PN}-ish-lnlm = "${PN}-intel-license" | ||
2582 | |||
2583 | # For LENOVO ish - Intel Integrated Sensor Hub | ||
2584 | LICENSE:${PN}-lenovo-license = "Firmware-lenovo" | ||
2585 | FILES:${PN}-lenovo-license = "${nonarch_base_libdir}/firmware/LICENCE.lenovo" | ||
2586 | |||
2587 | LICENSE:${PN}-ish-lnlm-53c4ffad-2a17559f = "Firmware-lenovo" | ||
2588 | FILES:${PN}-ish-lnlm-53c4ffad-2a17559f = "\ | ||
2589 | ${nonarch_base_libdir}/firmware/LENOVO/ish/ish_lnlm_53c4ffad_2a17559f.bin \ | ||
2590 | ${nonarch_base_libdir}/firmware/intel/ish/ish_lnlm_53c4ffad_2a17559f.bin \ | ||
2591 | " | ||
2592 | RDEPENDS:${PN}-ish-lnlm-53c4ffad-2a17559f = "${PN}-lenovo-license" | ||
2593 | |||
2594 | # For advansys - AdvanSys SCSI | ||
2595 | LICENSE:${PN}-advansys-license = "Firmware-advansys" | ||
2596 | FILES:${PN}-advansys-license = "${nonarch_base_libdir}/firmware/LICENCE.advansys" | ||
2597 | |||
2598 | LICENSE:${PN}-advansys = "Firmware-advansys" | ||
2599 | FILES:${PN}-advansys = "${nonarch_base_libdir}/firmware/advansys/*" | ||
2600 | RDEPENDS:${PN}-advansys = "${PN}-advansys-license" | ||
2601 | |||
2602 | # For as21xxx | ||
2603 | LICENSE:${PN}-aeonsemi-license = "Firmware-aeonsemi" | ||
2604 | FILES:${PN}-aeonsemi-license = "${nonarch_base_libdir}/firmware/LICENSE.aeonsemi" | ||
2605 | |||
2606 | LICENSE:${PN}-as21xxx = "Firmware-aeonsemi" | ||
2607 | FILES:${PN}-as21xxx = "${nonarch_base_libdir}/firmware/aeonsemi/*" | ||
2608 | RDEPENDS:${PN}-as21xxx = "${PN}-aeonsemi-license" | ||
2609 | |||
2610 | # For orinoco - Agere/Prism/Symbol Orinoco support | ||
2611 | LICENSE:${PN}-agere-license = "Firmware-agere" | ||
2612 | FILES:${PN}-agere-license = "${nonarch_base_libdir}/firmware/LICENCE.agere" | ||
2613 | |||
2614 | LICENSE:${PN}-orinoco = "Firmware-agere" | ||
2615 | FILES:${PN}-orinoco = "${nonarch_base_libdir}/firmware/agere_*" | ||
2616 | RDEPENDS:${PN}-orinoco = "${PN}-agere-license" | ||
2617 | |||
2618 | # For en8811h - Airoha 2.5G Ethernet Phy | ||
2619 | LICENSE:${PN}-airoha-license = "Firmware-airoha" | ||
2620 | FILES:${PN}-airoha-license = "${nonarch_base_libdir}/firmware/LICENSE.airoha" | ||
2621 | |||
2622 | LICENSE:${PN}-en8811h = "Firmware-airoha" | ||
2623 | FILES:${PN}-en8811h = "${nonarch_base_libdir}/firmware/airoha/EthMD32*" | ||
2624 | RDEPENDS:${PN}-en8811h = "${PN}-airoha-license" | ||
2625 | |||
2626 | # For airoha-npu - Airoha Network Processor Unit driver | ||
2627 | LICENSE:${PN}-airoha-npu = "Firmware-airoha" | ||
2628 | FILES:${PN}-airoha-npu = "${nonarch_base_libdir}/firmware/airoha/en7581_npu*" | ||
2629 | RDEPENDS:${PN}-airoha-npu = "${PN}-airoha-license" | ||
2630 | |||
2631 | # For ccp - Platform Security Processor (PSP) device | ||
2632 | LICENSE:${PN}-amd-sev-license = "Firmware-amd-sev" | ||
2633 | FILES:${PN}-amd-sev-license = "${nonarch_base_libdir}/firmware/LICENSE.amd-sev" | ||
2634 | |||
2635 | LICENSE:${PN}-ccp = "Firmware-amd-sev" | ||
2636 | FILES:${PN}-ccp = "${nonarch_base_libdir}/firmware/amd/amd_sev*" | ||
2637 | RDEPENDS:${PN}-ccp = "${PN}-amd-sev-license" | ||
2638 | |||
2639 | # For amdxdna - AMD Inference processor | ||
2640 | LICENSE:${PN}-amdnpu-license = "Firmware-amdnpu" | ||
2641 | FILES:${PN}-amdnpu-license = "${nonarch_base_libdir}/firmware/LICENSE.amdnpu" | ||
2642 | |||
2643 | LICENSE:${PN}-amdxdna = "Firmware-amdnpu" | ||
2644 | FILES:${PN}-amdxdna = "${nonarch_base_libdir}/firmware/amdnpu/*" | ||
2645 | RDEPENDS:${PN}-amdxdna = "${PN}-amdnpu-license" | ||
2646 | |||
2647 | # For amd_pmf - AMD Platform Management Framework TA | ||
2648 | LICENSE:${PN}-amd-pmf-license = "Firmware-amd_pmf" | ||
2649 | FILES:${PN}-amd-pmf-license = "${nonarch_base_libdir}/firmware/LICENSE.amd_pmf" | ||
2650 | |||
2651 | LICENSE:${PN}-amd-pmf = "Firmware-amd_pmf" | ||
2652 | FILES:${PN}-amd-pmf = "${nonarch_base_libdir}/firmware/amdtee/*" | ||
2653 | RDEPENDS:${PN}-amd-pmf = "${PN}-amd-pmf-license" | ||
2654 | |||
2655 | # For microcode_amd - AMD CPU Microcode Update Driver for Linux | ||
2656 | LICENSE:${PN}-amd-ucode-license = "Firmware-amd-ucode" | ||
2657 | FILES:${PN}-amd-ucode-license = "${nonarch_base_libdir}/firmware/LICENSE.amd-ucode" | ||
2658 | |||
2659 | LICENSE:${PN}-microcode-amd = "Firmware-amd-ucode" | ||
2660 | FILES:${PN}-microcode-amd = "${nonarch_base_libdir}/firmware/amd-ucode/*" | ||
2661 | RDEPENDS:${PN}-microcode-amd = "${PN}-amd-ucode-license" | ||
2662 | |||
2663 | # For amlogic - Amlogic SoC Firmware | ||
2664 | LICENSE:${PN}-amlogic-license = "Firmware-amlogic" | ||
2665 | FILES:${PN}-amlogic-license = "${nonarch_base_libdir}/firmware/LICENSE.amlogic" | ||
2666 | |||
2667 | LICENSE:${PN}-amlogic = "Firmware-amlogic" | ||
2668 | FILES:${PN}-amlogic = "${nonarch_base_libdir}/firmware/amlogic/aml_*" | ||
2669 | RDEPENDS:${PN}-amlogic = "${PN}-amlogic-license" | ||
2670 | |||
2671 | # For starfire - Adaptec Starfire/DuraLAN support | ||
2672 | LICENSE:${PN}-starfire = "GPL-2.0-only" | ||
2673 | FILES:${PN}-starfire = "${nonarch_base_libdir}/firmware/adaptec/starfire*" | ||
2674 | |||
2675 | # For as102 - Abilis Systems Single DVB-T Receiver | ||
2676 | LICENSE:${PN}-abilis-license = "Firmware-Abilis" | ||
2677 | FILES:${PN}-abilis-license = "${nonarch_base_libdir}/firmware/LICENCE.Abilis" | ||
2678 | |||
2679 | LICENSE:${PN}-as102 = "Firmware-Abilis" | ||
2680 | FILES:${PN}-as102 = "${nonarch_base_libdir}/firmware/as102_data*_st.hex" | ||
2681 | RDEPENDS:${PN}-as102 = "${PN}-abilis-license" | ||
2682 | |||
2683 | # For wilc1000 - Atmel 802.11n WLAN driver for WILC1000 & WILC3000 | ||
2684 | LICENSE:${PN}-atmel-license = "Firmware-atmel" | ||
2685 | FILES:${PN}-atmel-license = "${nonarch_base_libdir}/firmware/LICENSE.atmel" | ||
2686 | |||
2687 | LICENSE:${PN}-wilc1000 = "Firmware-atmel" | ||
2688 | FILES:${PN}-wilc1000 = "${nonarch_base_libdir}/firmware/atmel/wilc1000*" | ||
2689 | RDEPENDS:${PN}-wilc1000 = "${PN}-atmel-license" | ||
2690 | |||
2691 | LICENSE:${PN}-wilc3000 = "Firmware-atmel" | ||
2692 | FILES:${PN}-wilc3000 = "${nonarch_base_libdir}/firmware/atmel/wilc3000*" | ||
2693 | RDEPENDS:${PN}-wilc3000 = "${PN}-atmel-license" | ||
2694 | |||
2695 | # For atusb - ATUSB IEEE 802.15.4 transceiver driver | ||
2696 | FILES:${PN}-atusb = "${nonarch_base_libdir}/firmware/atusb/*" | ||
2697 | LICENSE:${PN}-atusb = "GPL-2.0-or-later" | ||
2698 | |||
2699 | # For dvb-ttpci - AV7110 cards | ||
2700 | FILES:${PN}-dvb-ttpci = "${nonarch_base_libdir}/firmware/av7110/*" | ||
2701 | LICENSE:${PN}-dvb-ttpci = "GPL-2.0-or-later" | ||
2702 | |||
2703 | # For bmi260 - Bosch BMI260 IMU configuration data | ||
2704 | LICENSE:${PN}-bmi260-license = "Firmware-bmi260" | ||
2705 | FILES:${PN}-bmi260-license = "${nonarch_base_libdir}/firmware/LICENSE.bmi260" | ||
2706 | |||
2707 | LICENSE:${PN}-bmi260 = "Firmware-bmi260" | ||
2708 | FILES:${PN}-bmi260 = "${nonarch_base_libdir}/firmware/bmi260-init-data.fw" | ||
2709 | RDEPENDS:${PN}-bmi260 = "${PN}-bmi260-license" | ||
2710 | |||
2711 | # For cdns-mhdp - Cadence MHDP8546 DP bridge | ||
2712 | LICENSE:${PN}-cadence-license = "Firmware-cadence" | ||
2713 | FILES:${PN}-cadence-license = "${nonarch_base_libdir}/firmware/LICENCE.cadence" | ||
2714 | |||
2715 | LICENSE:${PN}-mhdp8546 = "Firmware-cadence" | ||
2716 | FILES:${PN}-mhdp8546 = "${nonarch_base_libdir}/firmware/cadence/mhdp8546.bin" | ||
2717 | RDEPENDS:${PN}-mhdp8546 = "${PN}-cadence-license" | ||
2718 | |||
2719 | # For nitrox - Cavium CNN55XX crypto driver | ||
2720 | LICENSE:${PN}-cavium-license = "Firmware-cavium" | ||
2721 | FILES:${PN}-cavium-license = "${nonarch_base_libdir}/firmware/LICENCE.cavium" | ||
2722 | |||
2723 | LICENSE:${PN}-cnn55xx = "Firmware-cavium" | ||
2724 | FILES:${PN}-cnn55xx = "${nonarch_base_libdir}/firmware/cavium/cnn55xx*" | ||
2725 | RDEPENDS:${PN}-cnn55xx = "${PN}-cavium-license" | ||
2726 | |||
2727 | # For BFA/BNA - QLogic BR-series Adapter FC/FCOE drivers | ||
2728 | LICENSE:${PN}-bfa-license = "Firmware-bfa" | ||
2729 | FILES:${PN}-bfa-license = "${nonarch_base_libdir}/firmware/LICENSE.bfa" | ||
2730 | |||
2731 | LICENSE:${PN}-cbfw = "Firmware-bfa" | ||
2732 | FILES:${PN}-cbfw = "${nonarch_base_libdir}/firmware/cbfw-3.2.5.1.bin" | ||
2733 | RDEPENDS:${PN}-cbfw = "${PN}-bfa-license" | ||
2734 | |||
2735 | LICENSE:${PN}-ctfw = "Firmware-bfa" | ||
2736 | FILES:${PN}-ctfw = "${nonarch_base_libdir}/firmware/ctfw-3.2.5.1.bin" | ||
2737 | RDEPENDS:${PN}-ctfw = "${PN}-bfa-license" | ||
2738 | |||
2739 | LICENSE:${PN}-ct2fw = "Firmware-bfa" | ||
2740 | FILES:${PN}-ct2fw = "${nonarch_base_libdir}/firmware/ct2fw-3.2.5.1.bin" | ||
2741 | RDEPENDS:${PN}-ct2fw = "${PN}-bfa-license" | ||
2742 | |||
2743 | # For pcnet_cs - NE2000 compatible PCMCIA adapter | ||
2744 | FILES:${PN}-pcnet-cs = " \ | ||
2745 | ${nonarch_base_libdir}/firmware/cis/LA-PCM.cis \ | ||
2746 | ${nonarch_base_libdir}/firmware/cis/PCMLM28.cis \ | ||
2747 | ${nonarch_base_libdir}/firmware/cis/DP83903.cis \ | ||
2748 | ${nonarch_base_libdir}/firmware/cis/NE2K.cis \ | ||
2749 | ${nonarch_base_libdir}/firmware/cis/tamarack.cis \ | ||
2750 | ${nonarch_base_libdir}/firmware/cis/PE-200.cis \ | ||
2751 | ${nonarch_base_libdir}/firmware/cis/PE520.cis \ | ||
2752 | " | ||
2753 | LICENSE:${PN}-pcnet-cs = "GPL-2.0-only & MPL-1.1" | ||
2754 | |||
2755 | # For 3c589_cs - 3Com PCMCIA adapter | ||
2756 | FILES:${PN}-3c589-cs = "${nonarch_base_libdir}/firmware/cis/3CXEM556.cis" | ||
2757 | LICENSE:${PN}-3c589-cs = "GPL-2.0-only & MPL-1.1" | ||
2758 | |||
2759 | # For 3c574-cs - 3Com PCMCIA adapter | ||
2760 | FILES:${PN}-3c574-cs = "${nonarch_base_libdir}/firmware/cis/3CCFEM556.cis" | ||
2761 | LICENSE:${PN}-3c574-cs = "GPL-2.0-only & MPL-1.1" | ||
2762 | |||
2763 | # For serial_cs - Serial PCMCIA adapter (pcmcia-cs project) | ||
2764 | FILES:${PN}-serial-cs = " \ | ||
2765 | ${nonarch_base_libdir}/firmware/cis/MT5634ZLX.cis \ | ||
2766 | ${nonarch_base_libdir}/firmware/cis/RS-COM-2P.cis \ | ||
2767 | ${nonarch_base_libdir}/firmware/cis/COMpad2.cis \ | ||
2768 | ${nonarch_base_libdir}/firmware/cis/COMpad4.cis \ | ||
2769 | " | ||
2770 | LICENSE:${PN}-serial-cs = "GPL-2.0-only & MPL-1.1" | ||
2771 | |||
2772 | # For Sierra Wireless serial_cs - Serial PCMCIA adapter | ||
2773 | FILES:${PN}-sw-serial = " \ | ||
2774 | ${nonarch_base_libdir}/firmware/cis/SW_555_SER.cis \ | ||
2775 | ${nonarch_base_libdir}/firmware/cis/SW_7xx_SER.cis \ | ||
2776 | ${nonarch_base_libdir}/firmware/cis/SW_8xx_SER.cis \ | ||
2777 | " | ||
2778 | LICENSE:${PN}-sw-serial = "GPL-3.0-only" | ||
2779 | |||
2780 | # For smsmdtv - Siano MDTV Core module | ||
2781 | LICENSE:${PN}-siano-license = "Firmware-siano" | ||
2782 | FILES:${PN}-siano-license = "${nonarch_base_libdir}/firmware/LICENCE.siano" | ||
2783 | |||
2784 | LICENSE:${PN}-smsmdtv = "Firmware-siano" | ||
2785 | FILES:${PN}-smsmdtv = " \ | ||
2786 | ${nonarch_base_libdir}/firmware/cmmb_vega_12mhz.inp \ | ||
2787 | ${nonarch_base_libdir}/firmware/cmmb_venice_12mhz.inp \ | ||
2788 | ${nonarch_base_libdir}/firmware/dvb_nova_12mhz.inp \ | ||
2789 | ${nonarch_base_libdir}/firmware/dvb_nova_12mhz_b0.inp \ | ||
2790 | ${nonarch_base_libdir}/firmware/isdbt_nova_12mhz.inp \ | ||
2791 | ${nonarch_base_libdir}/firmware/isdbt_nova_12mhz_b0.inp \ | ||
2792 | ${nonarch_base_libdir}/firmware/isdbt_rio.inp \ | ||
2793 | ${nonarch_base_libdir}/firmware/sms1xxx-hcw-55xxx-dvbt-02.fw \ | ||
2794 | ${nonarch_base_libdir}/firmware/sms1xxx-hcw-55xxx-isdbt-02.fw \ | ||
2795 | ${nonarch_base_libdir}/firmware/sms1xxx-nova-a-dvbt-01.fw \ | ||
2796 | ${nonarch_base_libdir}/firmware/sms1xxx-nova-b-dvbt-01.fw \ | ||
2797 | ${nonarch_base_libdir}/firmware/sms1xxx-stellar-dvbt-01.fw \ | ||
2798 | ${nonarch_base_libdir}/firmware/tdmb_nova_12mhz.inp \ | ||
2799 | " | ||
2800 | RDEPENDS:${PN}-smsmdtv = "${PN}-siano-license" | ||
2801 | |||
2802 | # For cpia2 - cameras based on Vision's CPiA2 | ||
2803 | FILES:${PN}-cpia2 = "${nonarch_base_libdir}/firmware/cpia2/*" | ||
2804 | LICENSE:${PN}-cpia2 = "GPL-2.0-or-later" | ||
2805 | |||
2806 | # For snd-hda-codec-ca0132 - Creative Sound Core3D codec | ||
2807 | LICENSE:${PN}-ca0132-license = "Firmware-ca0132" | ||
2808 | FILES:${PN}-ca0132-license = "${nonarch_base_libdir}/firmware/LICENCE.ca0132" | ||
2809 | |||
2810 | LICENSE:${PN}-ca0132 = "Firmware-ca0132" | ||
2811 | FILES:${PN}-ca0132 = " \ | ||
2812 | ${nonarch_base_libdir}/firmware/ctefx.bin \ | ||
2813 | ${nonarch_base_libdir}/firmware/ctspeq.bin \ | ||
2814 | " | ||
2815 | RDEPENDS:${PN}-ca0132 = "${PN}-ca0132-license" | ||
2816 | |||
2817 | # For cxgb3 - Chelsio Terminator 3 1G/10G Ethernet adapter | ||
2818 | LICENSE:${PN}-cxgb3-license = "Firmware-cxgb3" | ||
2819 | FILES:${PN}-cxgb3-license = "${nonarch_base_libdir}/firmware/LICENCE.cxgb3" | ||
2820 | |||
2821 | LICENSE:${PN}-cxgb3 = "Firmware-cxgb3 & GPL-2.0-only" | ||
2822 | FILES:${PN}-cxgb3 = "${nonarch_base_libdir}/firmware/cxgb3/*" | ||
2823 | RDEPENDS:${PN}-cxgb3 = "${PN}-cxgb3-license" | ||
2824 | |||
2825 | # For cxgb4 - Chelsio Terminator 4/5/6 1/10/25/40/100G Ethernet adapter | ||
2826 | LICENSE:${PN}-chelsio-firmware-license = "Firmware-chelsio_firmware" | ||
2827 | FILES:${PN}-chelsio-firmware-license = "${nonarch_base_libdir}/firmware/LICENCE.chelsio_firmware" | ||
2828 | |||
2829 | LICENSE:${PN}-cxgb4 = "Firmware-chelsio_firmware" | ||
2830 | FILES:${PN}-cxgb4 = "${nonarch_base_libdir}/firmware/cxgb4/*" | ||
2831 | RDEPENDS:${PN}-cxgb4 = "${PN}-chelsio-firmware-license" | ||
2832 | |||
2833 | # For dabusb - Digital Audio Broadcasting (DAB) Receiver for USB and Linux | ||
2834 | LICENSE:${PN}-dabusb-license = "Firmware-dabusb" | ||
2835 | FILES:${PN}-dabusb-license = "${nonarch_base_libdir}/firmware/LICENCE.dabusb" | ||
2836 | |||
2837 | LICENSE:${PN}-dabusb = "Firmware-dabusb" | ||
2838 | FILES:${PN}-dabusb = "${nonarch_base_libdir}/firmware/dabusb/*" | ||
2839 | RDEPENDS:${PN}-dabusb = "${PN}-dabusb-license" | ||
2840 | |||
2841 | # For dsp56k - Atari DSP56k support | ||
2842 | LICENSE:${PN}-dsp56k = "GPL-2.0-or-later" | ||
2843 | FILES:${PN}-dsp56k = "${nonarch_base_libdir}/firmware/dsp56k/*" | ||
2844 | |||
2845 | # For dib0700 - DiBcom dib0700 USB DVB bridge driver | ||
2846 | LICENSE:${PN}-dib0700-license = "Firmware-dib0700" | ||
2847 | FILES:${PN}-dib0700-license = "${nonarch_base_libdir}/firmware/LICENSE.dib0700" | ||
2848 | |||
2849 | LICENSE:${PN}-dib0700 = "Firmware-dib0700" | ||
2850 | FILES:${PN}-dib0700 = "${nonarch_base_libdir}/firmware/dvb-usb-dib0700-1.20.fw" | ||
2851 | RDEPENDS:${PN}-dib0700 = "${PN}-dib0700-license" | ||
2852 | |||
2853 | # For it9135 - ITEtech IT913x DVB-T USB driver | ||
2854 | LICENSE:${PN}-it913x-license = "Firmware-it913x" | ||
2855 | FILES:${PN}-it913x-license = "${nonarch_base_libdir}/firmware/LICENCE.it913x" | ||
2856 | |||
2857 | LICENSE:${PN}-it9135 = "Firmware-it913x" | ||
2858 | FILES:${PN}-it9135 = "${nonarch_base_libdir}/firmware/dvb-usb-it9135*" | ||
2859 | RDEPENDS:${PN}-it9135 = "${PN}-it913x-license" | ||
2860 | |||
2861 | # For drxk - Micronas DRX-K demodulator driver | ||
2862 | LICENSE:${PN}-drxk-license = "Firmware-drxk" | ||
2863 | FILES:${PN}-drxk-license = "${nonarch_base_libdir}/firmware/LICENSE.drxk" | ||
2864 | |||
2865 | LICENSE:${PN}-drxk = "Firmware-drxk" | ||
2866 | FILES:${PN}-drxk = "${nonarch_base_libdir}/firmware/dvb-usb-terratec-h5-drxk.fw" | ||
2867 | RDEPENDS:${PN}-drxk = "${PN}-drxk-license" | ||
2868 | |||
2869 | # For e100 - Intel PRO/100 Ethernet NIC | ||
2870 | LICENSE:${PN}-e100-license = "Firmware-e100" | ||
2871 | FILES:${PN}-e100-license = "${nonarch_base_libdir}/firmware/LICENCE.e100" | ||
2872 | |||
2873 | LICENSE:${PN}-e100 = "Firmware-e100" | ||
2874 | FILES:${PN}-e100 = "${nonarch_base_libdir}/firmware/e100/*" | ||
2875 | RDEPENDS:${PN}-e100 = "${PN}-e100-license" | ||
2876 | |||
2877 | # For io_ti - USB Inside Out Edgeport Serial Driver (TI Devices) | ||
2878 | LICENSE:${PN}-io-ti = "GPL-2.0-or-later" | ||
2879 | FILES:${PN}-io-ti = "${nonarch_base_libdir}/firmware/edgeport/down3.bin" | ||
2880 | |||
2881 | # For io_edgeport - USB Inside Out Edgeport Serial Driver | ||
2882 | LICENSE:${PN}-io-edgeport = "GPL-2.0-or-later" | ||
2883 | FILES:${PN}-io-edgeport = "${nonarch_base_libdir}/firmware/edgeport/*" | ||
2884 | |||
2885 | # For emi26 - EMI 2|6 USB Audio interface | ||
2886 | LICENSE:${PN}-emi26-license = "Firmware-emi26" | ||
2887 | FILES:${PN}-emi26-license = "${nonarch_base_libdir}/firmware/LICENCE.emi26" | ||
2888 | |||
2889 | LICENSE:${PN}-emi26 = "Firmware-emi26" | ||
2890 | FILES:${PN}-emi26 = "${nonarch_base_libdir}/firmware/emi26/*" | ||
2891 | RDEPENDS:${PN}-emi26 = "${PN}-drxk-license" | ||
2892 | |||
2893 | # For ene-ub6250 - ENE UB6250 SD card reader driver | ||
2894 | LICENSE:${PN}-ene-firmware-license = "Firmware-ene_firmware" | ||
2895 | FILES:${PN}-ene-firmware-license = "${nonarch_base_libdir}/firmware/LICENCE.ene_firmware" | ||
2896 | |||
2897 | LICENSE:${PN}-ene-ub6250 = "Firmware-ene_firmware" | ||
2898 | FILES:${PN}-ene-ub6250 = "${nonarch_base_libdir}/firmware/ene-ub6250/*" | ||
2899 | RDEPENDS:${PN}-ene-ub6250 = "${PN}-ene-firmware-license" | ||
2900 | |||
2901 | # For go7007-s2250 | ||
2902 | LICENSE:${PN}-go7007-s2250-license = "Firmware-go7007-s2250" | ||
2903 | FILES:${PN}-go7007-s2250-license = "${nonarch_base_libdir}/firmware/LICENCE.go7007-s2250" | ||
2904 | |||
2905 | LICENSE:${PN}-go7007-s2250 = "Firmware-go7007-s2250" | ||
2906 | FILES:${PN}-go7007-s2250 = " \ | ||
2907 | ${nonarch_base_libdir}/firmware/go7007/s2250* \ | ||
2908 | ${nonarch_base_libdir}/firmware/s2250* \ | ||
2909 | " | ||
2910 | RDEPENDS:${PN}-go7007-s2250 = "${PN}-go7007-s2250-license" | ||
2911 | |||
2912 | # For go7007 | ||
2913 | LICENSE:${PN}-go7007-license = "Firmware-go7007" | ||
2914 | FILES:${PN}-go7007-license = "${nonarch_base_libdir}/firmware/LICENCE.go7007" | ||
2915 | |||
2916 | LICENSE:${PN}-go7007 = "Firmware-go7007" | ||
2917 | FILES:${PN}-go7007 = "${nonarch_base_libdir}/firmware/go7007/*" | ||
2918 | RDEPENDS:${PN}-go7007 = "${PN}-go7007-license" | ||
2919 | |||
2920 | # For hfi1 - Intel OPA Gen 1 adapter | ||
2921 | LICENSE:${PN}-hfi1-license = "Firmware-hfi1_firmware" | ||
2922 | FILES:${PN}-hfi1-license = "${nonarch_base_libdir}/firmware/LICENSE.hfi1_firmware" | ||
2923 | |||
2924 | LICENSE:${PN}-hfi1 = "Firmware-hfi1_firmware" | ||
2925 | FILES:${PN}-hfi1 = "${nonarch_base_libdir}/firmware/hfi1_*" | ||
2926 | RDEPENDS:${PN}-hfi1 = "${PN}-hfi1-license" | ||
2927 | |||
2928 | # For inside-secure - Inside Secure EIP197 crypto driver | ||
2929 | LICENSE:${PN}-inside-secure-license = "Firmware-inside-secure" | ||
2930 | FILES:${PN}-inside-secure-license = "${nonarch_base_libdir}/firmware/LICENCE.inside-secure" | ||
2931 | |||
2932 | LICENSE:${PN}-inside-secure = "Firmware-inside-secure" | ||
2933 | FILES:${PN}-inside-secure = "${nonarch_base_libdir}/firmware/inside-secure/*" | ||
2934 | RDEPENDS:${PN}-inside-secure = "${PN}-inside-secure-license" | ||
2935 | |||
2936 | # For snd_soc_catpt - Intel AudioDSP driver for HSW/BDW platforms | ||
2937 | LICENSE:${PN}-intcsst2-license = "Firmware-IntcSST2" | ||
2938 | FILES:${PN}-intcsst2-license = "${nonarch_base_libdir}/firmware/LICENCE.IntcSST2" | ||
2939 | |||
2940 | LICENSE:${PN}-snd-soc-catpt = "Firmware-IntcSST2" | ||
2941 | FILES:${PN}-snd-soc-catpt = " \ | ||
2942 | ${nonarch_base_libdir}/firmware/intel/catpt/bdw/dsp_basefw.bin \ | ||
2943 | ${nonarch_base_libdir}/firmware/intel/IntcSST2.bin \ | ||
2944 | " | ||
2945 | RDEPENDS:${PN}-snd-soc-catpt = "${PN}-intcsst2-license" | ||
2946 | |||
2947 | # For snd_intel_sst_core | ||
2948 | LICENSE:${PN}-fw-sst-0f28-license = "Firmware-fw_sst_0f28" | ||
2949 | FILES:${PN}-fw-sst-0f28-license = "${nonarch_base_libdir}/firmware/LICENCE.fw_sst_0f28" | ||
2950 | |||
2951 | LICENSE:${PN}-snd-intel-sst-core = "Firmware-fw_sst_0f28" | ||
2952 | FILES:${PN}-snd-intel-sst-core = "${nonarch_base_libdir}/firmware/intel/fw_sst_*" | ||
2953 | RDEPENDS:${PN}-snd-intel-sst-core = "${PN}-fw-sst-0f28-license" | ||
2954 | |||
2955 | # For atomisp - Intel IPU2 (Image Processing Unit 2) driver | ||
2956 | LICENSE:${PN}-ivsc-license = "Firmware-ivsc" | ||
2957 | FILES:${PN}-ivsc-license = "${nonarch_base_libdir}/firmware/LICENSE.ivsc" | ||
2958 | |||
2959 | LICENSE:${PN}-atomisp = "Firmware-ivsc" | ||
2960 | FILES:${PN}-atomisp = "${nonarch_base_libdir}/firmware/intel/ipu/shisp_240*" | ||
2961 | RDEPENDS:${PN}-atomisp = "${PN}-ivsc-license" | ||
2962 | |||
2963 | # For intel-ipu6-isys - Intel IPU6 (Image Processing Unit 6) driver | ||
2964 | LICENSE:${PN}-intel-ipu6-isys = "Firmware-ivsc" | ||
2965 | FILES:${PN}-intel-ipu6-isys = "${nonarch_base_libdir}/firmware/intel/ipu/ipu6*" | ||
2966 | RDEPENDS:${PN}-intel-ipu6-isys = "${PN}-ivsc-license" | ||
2967 | |||
2968 | # For mei-vsc-hw - Intel Visual Sensing Controller | ||
2969 | LICENSE:${PN}-mei-vsc-hw = "Firmware-ivsc" | ||
2970 | FILES:${PN}-mei-vsc-hw = "${nonarch_base_libdir}/firmware/intel/vsc/*" | ||
2971 | RDEPENDS:${PN}-mei-vsc-hw = "${PN}-ivsc-license" | ||
2972 | |||
2973 | # For ipu3-imgu - Intel IPU3 (3rd Gen Image Processing Unit) driver | ||
2974 | LICENSE:${PN}-ipu3-firmware-license = "Firmware-ipu3_firmware" | ||
2975 | FILES:${PN}-ipu3-firmware-license = "${nonarch_base_libdir}/firmware/LICENSE.ipu3_firmware" | ||
2976 | |||
2977 | LICENSE:${PN}-ipu3-imgu = "Firmware-ipu3_firmware" | ||
2978 | FILES:${PN}-ipu3-imgu = " \ | ||
2979 | ${nonarch_base_libdir}/firmware/intel/ipu/irci_irci_ecr-master_20161208_0213_20170112_1500.bin \ | ||
2980 | ${nonarch_base_libdir}/firmware/intel/ipu3-fw.bin \ | ||
2981 | ${nonarch_base_libdir}/firmware/intel/irci_irci_ecr-master_20161208_0213_20170112_1500.bin \ | ||
2982 | " | ||
2983 | RDEPENDS:${PN}-ipu3-imgu = "${PN}-ipu3-firmware-license" | ||
2984 | |||
2985 | # For intel-ipu7-isys - Intel IPU7 (Image Processing Unit 7) driver | ||
2986 | LICENSE:${PN}-intel-ipu7-isys = "Firmware-intel" | ||
2987 | FILES:${PN}-intel-ipu7-isys = "${nonarch_base_libdir}/firmware/intel/ipu/ipu7*" | ||
2988 | RDEPENDS:${PN}-intel-ipu7-isys = "${PN}-intel-license" | ||
2989 | |||
2990 | # For intel_vpu - Intel NPU driver | ||
2991 | LICENSE:${PN}-intel-vpu-license = "Firmware-intel_vpu" | ||
2992 | FILES:${PN}-intel-vpu-license = "${nonarch_base_libdir}/firmware/LICENSE.intel_vpu" | ||
2993 | |||
2994 | LICENSE:${PN}-intel-vpu = "Firmware-intel_vpu" | ||
2995 | FILES:${PN}-intel-vpu = "${nonarch_base_libdir}/firmware/intel/vpu/*" | ||
2996 | RDEPENDS:${PN}-intel-vpu = "${PN}-intel-vpu-license" | ||
2997 | |||
2998 | # For isci - Intel C600 SAS controller driver | ||
2999 | LICENSE:${PN}-isci = "GPL-2.0-only" | ||
3000 | FILES:${PN}-isci = "${nonarch_base_libdir}/firmware/isci/*" | ||
3001 | |||
3002 | # For ixp4xx-npe - Intel IXP4xx XScale Network Processing Engine (NPE) Firmware | ||
3003 | LICENSE:${PN}-ixp4xx-license = "Firmware-ixp4xx" | ||
3004 | FILES:${PN}-ixp4xx-license = "${nonarch_base_libdir}/firmware/LICENSE.ixp4xx" | ||
3005 | |||
3006 | LICENSE:${PN}-ixp4xx-npe = "Firmware-ixp4xx" | ||
3007 | FILES:${PN}-ixp4xx-npe = "${nonarch_base_libdir}/firmware/ixp4xx/*" | ||
3008 | RDEPENDS:${PN}-ixp4xx-npe = "${PN}-ixp4xx-license" | ||
3009 | |||
3010 | # For kaweth - USB KLSI KL5USB101-based Ethernet device | ||
3011 | LICENSE:${PN}-kaweth-license = "Firmware-kaweth" | ||
3012 | FILES:${PN}-kaweth-license = "${nonarch_base_libdir}/firmware/LICENCE.kaweth" | ||
3013 | |||
3014 | LICENSE:${PN}-kaweth = "Firmware-kaweth" | ||
3015 | FILES:${PN}-kaweth = "${nonarch_base_libdir}/firmware/kaweth/*" | ||
3016 | RDEPENDS:${PN}-kaweth = "${PN}-kaweth-license" | ||
3017 | |||
3018 | # For keyspan - USB Keyspan USA-xxx serial device | ||
3019 | LICENSE:${PN}-keyspan-license = "Firmware-keyspan" | ||
3020 | FILES:${PN}-keyspan-license = "${nonarch_base_libdir}/firmware/LICENCE.keyspan" | ||
3021 | |||
3022 | LICENSE:${PN}-keyspan = "Firmware-keyspan" | ||
3023 | FILES:${PN}-keyspan = "${nonarch_base_libdir}/firmware/keyspan/*" | ||
3024 | RDEPENDS:${PN}-keyspan = "${PN}-keyspan-license" | ||
3025 | |||
3026 | # For keyspan_pda - USB Keyspan PDA single-port serial device | ||
3027 | LICENSE:${PN}-keyspan-pda = "GPL-2.0-or-later" | ||
3028 | FILES:${PN}-keyspan-pda = "${nonarch_base_libdir}/firmware/keyspan_pda/*" | ||
3029 | |||
3030 | # For mga - Matrox G200/G400/G550 | ||
3031 | LICENSE:${PN}-mga-license = "Firmware-mga" | ||
3032 | FILES:${PN}-mga-license = "${nonarch_base_libdir}/firmware/LICENSE.mga" | ||
3033 | |||
3034 | LICENSE:${PN}-mga = "Firmware-mga" | ||
3035 | FILES:${PN}-mga = "${nonarch_base_libdir}/firmware/matrox/*" | ||
3036 | RDEPENDS:${PN}-mga = "${PN}-mga-license" | ||
3037 | |||
3038 | # For myri10ge - Myri10GE 10GbE NIC driver | ||
3039 | LICENSE:${PN}-myri10ge-firmware-license = "Firmware-myri10ge_firmware" | ||
3040 | FILES:${PN}-myri10ge-firmware-license = "${nonarch_base_libdir}/firmware/LICENCE.myri10ge_firmware" | ||
3041 | |||
3042 | LICENSE:${PN}-myri10ge = "Firmware-myri10ge_firmware" | ||
3043 | FILES:${PN}-myri10ge = "${nonarch_base_libdir}/firmware/myri10ge_*" | ||
3044 | RDEPENDS:${PN}-myri10ge = "${PN}-myri10ge-firmware-license" | ||
3045 | |||
3046 | # For smc91c92_cs - SMC 91Cxx PCMCIA | ||
3047 | LICENSE:${PN}-smc91c92-cs = "GPL-1.0-only" | ||
3048 | FILES:${PN}-smc91c92-cs = "${nonarch_base_libdir}/firmware/ositech/Xilinx7OD.bin" | ||
3049 | |||
3050 | # For qla1280 - Qlogic QLA 1240/1x80/1x160 SCSI support | ||
3051 | LICENSE:${PN}-qla1280-license = "Firmware-qla1280" | ||
3052 | FILES:${PN}-qla1280-license = "${nonarch_base_libdir}/firmware/LICENCE.qla1280" | ||
3053 | |||
3054 | LICENSE:${PN}-qla1280 = "Firmware-qla1280" | ||
3055 | FILES:${PN}-qla1280 = " \ | ||
3056 | ${nonarch_base_libdir}/firmware/qlogic/1040.bin \ | ||
3057 | ${nonarch_base_libdir}/firmware/qlogic/1280.bin \ | ||
3058 | ${nonarch_base_libdir}/firmware/qlogic/12160.bin \ | ||
3059 | " | ||
3060 | RDEPENDS:${PN}-qla1280 = "${PN}-qla1280-license" | ||
3061 | |||
3062 | # For ib_qib - QLogic Infiniband | ||
3063 | LICENSE:${PN}-ib-qib-license = "Firmware-ib_qib" | ||
3064 | FILES:${PN}-ib-qib-license = "${nonarch_base_libdir}/firmware/LICENSE.ib_qib" | ||
3065 | |||
3066 | LICENSE:${PN}-ib-qib = "Firmware-ib_qib" | ||
3067 | FILES:${PN}-ib-qib = "${nonarch_base_libdir}/firmware/qlogic/sd7220.fw" | ||
3068 | RDEPENDS:${PN}-ib-qib = "${PN}-ib-qib-license" | ||
3069 | |||
3070 | # For xhci-rcar - Renesas R-Car Gen2/3 USB 3.0 host controller driver | ||
3071 | LICENSE:${PN}-r8a779x-usb3-license = "Firmware-r8a779x_usb3" | ||
3072 | FILES:${PN}-r8a779x-usb3-license = "${nonarch_base_libdir}/firmware/LICENCE.r8a779x_usb3" | ||
3073 | |||
3074 | LICENSE:${PN}-xhci-rcar = "Firmware-r8a779x_usb3" | ||
3075 | FILES:${PN}-xhci-rcar = "${nonarch_base_libdir}/firmware/r8a779x_usb3_*" | ||
3076 | RDEPENDS:${PN}-xhci-rcar = "${PN}-r8a779x-usb3-license" | ||
3077 | |||
3078 | # For r128 - ATI Rage 128 | ||
3079 | LICENSE:${PN}-r128 = "MIT" | ||
3080 | FILES:${PN}-r128 = "${nonarch_base_libdir}/firmware/r128/*" | ||
3081 | |||
3082 | # For rt1320 - Realtek rt1320 ASoC audio driver. | ||
3083 | LICENSE:${PN}-rt1320-license = "Firmware-rt1320" | ||
3084 | FILES:${PN}-rt1320-license = "${nonarch_base_libdir}/firmware/LICENSE.rt1320" | ||
3085 | |||
3086 | LICENSE:${PN}-rt1320 = "Firmware-rt1320" | ||
3087 | FILES:${PN}-rt1320 = "${nonarch_base_libdir}/firmware/realtek/rt1320/*" | ||
3088 | RDEPENDS:${PN}-rt1320 = "${PN}-rt1320-license" | ||
3089 | |||
3090 | # For rp2 - Comtrol RocketPort 2 serial driver | ||
3091 | LICENSE:${PN}-rp2-license = "Firmware-rp2" | ||
3092 | FILES:${PN}-rp2-license = "${nonarch_base_libdir}/firmware/LICENSE.rp2" | ||
3093 | |||
3094 | LICENSE:${PN}-rp2 = "Firmware-rp2" | ||
3095 | FILES:${PN}-rp2 = "${nonarch_base_libdir}/firmware/rp2.fw" | ||
3096 | RDEPENDS:${PN}-rp2 = "${PN}-rp2-license" | ||
3097 | |||
3098 | # For s5p-mfc - Samsung MFC video encoder/decoder driver | ||
3099 | LICENSE:${PN}-s5p-mfc-license = "Firmware-s5p-mfc" | ||
3100 | FILES:${PN}-s5p-mfc-license = "${nonarch_base_libdir}/firmware/LICENSE.s5p-mfc" | ||
3101 | |||
3102 | LICENSE:${PN}-s5p-mfc = "Firmware-s5p-mfc" | ||
3103 | FILES:${PN}-s5p-mfc = "${nonarch_base_libdir}/firmware/s5p-mfc*" | ||
3104 | RDEPENDS:${PN}-s5p-mfc = "${PN}-s5p-mfc-license" | ||
3105 | |||
3106 | # For snd-sb16-csp - Sound Blaster 16/AWE CSP support | ||
3107 | LICENSE:${PN}-snd-sb16-csp = "GPL-2.0-or-later" | ||
3108 | FILES:${PN}-snd-sb16-csp = "${nonarch_base_libdir}/firmware/sb16/*" | ||
3109 | |||
3110 | # For slicoss - Alacritech IS-NIC products | ||
3111 | LICENSE:${PN}-alacritech-license = "Firmware-alacritech" | ||
3112 | FILES:${PN}-alacritech-license = "${nonarch_base_libdir}/firmware/LICENCE.alacritech" | ||
3113 | |||
3114 | LICENSE:${PN}-slicoss = "Firmware-alacritech" | ||
3115 | FILES:${PN}-slicoss = "${nonarch_base_libdir}/firmware/slicoss/*" | ||
3116 | RDEPENDS:${PN}-slicoss = "${PN}-alacritech-license" | ||
3117 | |||
3118 | LICENSE:${PN}-sxg = "Firmware-alacritech" | ||
3119 | FILES:${PN}-sxg = "${nonarch_base_libdir}/firmware/sxg/*" | ||
3120 | RDEPENDS:${PN}-sxg = "${PN}-alacritech-license" | ||
3121 | |||
3122 | # For tehuti - Tehuti Networks 10G Ethernet | ||
3123 | LICENSE:${PN}-tehuti-license = "Firmware-tehuti" | ||
3124 | FILES:${PN}-tehuti-license = "${nonarch_base_libdir}/firmware/LICENSE.tehuti" | ||
3125 | |||
3126 | LICENSE:${PN}-tehuti = "Firmware-tehuti" | ||
3127 | FILES:${PN}-tehuti = "${nonarch_base_libdir}/firmware/tehuti/*" | ||
3128 | RDEPENDS:${PN}-tehuti = "${PN}-tehuti-license" | ||
3129 | |||
3130 | # For tg3 - Broadcom Tigon3 based gigabit Ethernet cards | ||
3131 | LICENSE:${PN}-tigon-license = "Firmware-tigon" | ||
3132 | FILES:${PN}-tigon-license = "${nonarch_base_libdir}/firmware/LICENCE.tigon" | ||
3133 | |||
3134 | LICENSE:${PN}-tg3 = "Firmware-tigon" | ||
3135 | FILES:${PN}-tg3 = "${nonarch_base_libdir}/firmware/tigon/*" | ||
3136 | RDEPENDS:${PN}-tg3 = "${PN}-tigon-license" | ||
3137 | |||
3138 | # For tlg2300 - Telgent 2300 V4L/DVB driver. | ||
3139 | LICENSE:${PN}-tlg2300-license = "Firmware-tlg2300" | ||
3140 | FILES:${PN}-tlg2300-license = "${nonarch_base_libdir}/firmware/LICENSE.tlg2300" | ||
3141 | |||
3142 | LICENSE:${PN}-tlg2300 = "Firmware-tlg2300" | ||
3143 | FILES:${PN}-tlg2300 = "${nonarch_base_libdir}/firmware/tlg2300*" | ||
3144 | RDEPENDS:${PN}-tlg2300 = "${PN}-tlg2300-license" | ||
3145 | |||
3146 | # For Mont-TSSE - Mont-TSSE(TM) Crypto Algorithm Accelerator Driver | ||
3147 | LICENSE:${PN}-montage-license = "Firmware-montage" | ||
3148 | FILES:${PN}-montage-license = "${nonarch_base_libdir}/firmware/LICENSE.montage" | ||
3149 | |||
3150 | LICENSE:${PN}-mont-tsse = "Firmware-montage" | ||
3151 | FILES:${PN}-mont-tsse = "${nonarch_base_libdir}/firmware/tsse_firmware.bin" | ||
3152 | RDEPENDS:${PN}-mont-tsse = "${PN}-montage-license" | ||
3153 | |||
3154 | # For ueagle-atm - Driver for USB ADSL Modems based on Eagle IV Chipset | ||
3155 | LICENSE:${PN}-ueagle-atm4-firmware-license = "Firmware-ueagle-atm4-firmware" | ||
3156 | FILES:${PN}-ueagle-atm4-firmware-license = "${nonarch_base_libdir}/firmware/LICENCE.ueagle-atm4-firmware" | ||
3157 | |||
3158 | LICENSE:${PN}-ueagle-atm = "Firmware-ueagle-atm4-firmware" | ||
3159 | FILES:${PN}-ueagle-atm = " \ | ||
3160 | ${nonarch_base_libdir}/firmware/ueagle-atm/CMV4p.bin.v2 \ | ||
3161 | ${nonarch_base_libdir}/firmware/ueagle-atm/DSP4p.bin \ | ||
3162 | ${nonarch_base_libdir}/firmware/ueagle-atm/eagleIV.fw \ | ||
3163 | " | ||
3164 | RDEPENDS:${PN}-ueagle-atm = "${PN}-ueagle-atm4-firmware-license" | ||
3165 | |||
3166 | # For usbdux/usbduxfast/usbduxsigma - usbdux data acquisition cards | ||
3167 | LICENSE:${PN}-usbdux = "GPL-2.0-or-later" | ||
3168 | FILES:${PN}-usbdux = "${nonarch_base_libdir}/firmware/usbdux*" | ||
3169 | |||
3170 | # For cx231xx - Conexant Cx23100/101/102 USB broadcast A/V decoder | ||
3171 | LICENSE:${PN}-conexant-license = "Firmware-conexant" | ||
3172 | FILES:${PN}-conexant-license = "${nonarch_base_libdir}/firmware/LICENSE.conexant" | ||
3173 | |||
3174 | LICENSE:${PN}-cx231xx = "Firmware-conexant" | ||
3175 | FILES:${PN}-cx231xx = "${nonarch_base_libdir}/firmware/v4l-cx231xx*" | ||
3176 | RDEPENDS:${PN}-cx231xx = "${PN}-conexant-license" | ||
3177 | |||
3178 | LICENSE:${PN}-cx23418 = "Firmware-conexant" | ||
3179 | FILES:${PN}-cx23418 = "${nonarch_base_libdir}/firmware/v4l-cx23418*" | ||
3180 | RDEPENDS:${PN}-cx23418 = "${PN}-conexant-license" | ||
3181 | |||
3182 | LICENSE:${PN}-cx23885 = "Firmware-conexant" | ||
3183 | FILES:${PN}-cx23885 = "${nonarch_base_libdir}/firmware/v4l-cx23885*" | ||
3184 | RDEPENDS:${PN}-cx23885 = "${PN}-conexant-license" | ||
3185 | |||
3186 | LICENSE:${PN}-cx23840 = "Firmware-conexant" | ||
3187 | FILES:${PN}-cx23840 = "${nonarch_base_libdir}/firmware/v4l-cx25840*" | ||
3188 | RDEPENDS:${PN}-cx23840 = "${PN}-conexant-license" | ||
3189 | |||
3190 | # For vxge - Exar X3100 Series 10GbE PCIe I/O Virtualized Server Adapter | ||
3191 | LICENSE:${PN}-vxge-license = "Firmware-vxge" | ||
3192 | FILES:${PN}-vxge-license = "${nonarch_base_libdir}/firmware/LICENSE.vxge" | ||
3193 | |||
3194 | LICENSE:${PN}-vxge = "Firmware-vxge" | ||
3195 | FILES:${PN}-vxge = "${nonarch_base_libdir}/firmware/vxge/*" | ||
3196 | RDEPENDS:${PN}-vxge = "${PN}-vxge-license" | ||
3197 | |||
3198 | # For whiteheat - USB ConnectTech WhiteHEAT serial device | ||
3199 | LICENSE:${PN}-whiteheat = "GPL-2.0-only" | ||
3200 | FILES:${PN}-whiteheat = "${nonarch_base_libdir}/firmware/whiteheat*" | ||
3201 | |||
3202 | # For wil6210 - Qualcomm Atheros support for 11ad family of chips | ||
3203 | LICENSE:${PN}-qualcommatheros-ath10k-license = "Firmware-qualcommAthos_ath10k" | ||
3204 | FILES:${PN}-qualcommatheros-ath10k-license = "${nonarch_base_libdir}/firmware/LICENSE.QualcommAtheros_ath10k" | ||
3205 | |||
3206 | LICENSE:${PN}-wil6210 = "Firmware-qualcommAthos_ath10k" | ||
3207 | FILES:${PN}-wil6210 = "${nonarch_base_libdir}/firmware/wil6210*" | ||
3208 | RDEPENDS:${PN}-wil6210 = "${PN}-qualcommatheros-ath10k-license" | ||
3209 | |||
3210 | # For xe - Intel Graphics driver | ||
3211 | LICENSE:${PN}-xe-license = "Firmware-xe" | ||
3212 | FILES:${PN}-xe-license = "${nonarch_base_libdir}/firmware/LICENSE.xe" | ||
3213 | |||
3214 | LICENSE:${PN}-xe = "Firmware-xe" | ||
3215 | FILES:${PN}-xe = "${nonarch_base_libdir}/firmware/xe/*" | ||
3216 | RDEPENDS:${PN}-xe = "${PN}-xe-license" | ||
3217 | |||
2220 | # For other firmwares | 3218 | # For other firmwares |
2221 | # Maybe split out to separate packages when needed. | 3219 | # Maybe split out to separate packages when needed. |
2222 | LICENSE:${PN} = "\ | 3220 | LICENSE:${PN} = "\ |
@@ -2269,6 +3267,7 @@ LICENSE:${PN} = "\ | |||
2269 | & Firmware-IntcSST2 \ | 3267 | & Firmware-IntcSST2 \ |
2270 | & Firmware-kaweth \ | 3268 | & Firmware-kaweth \ |
2271 | & Firmware-keyspan \ | 3269 | & Firmware-keyspan \ |
3270 | & Firmware-lenovo \ | ||
2272 | & Firmware-mellanox \ | 3271 | & Firmware-mellanox \ |
2273 | & Firmware-mga \ | 3272 | & Firmware-mga \ |
2274 | & Firmware-montage \ | 3273 | & Firmware-montage \ |
@@ -2312,8 +3311,13 @@ LICENSE:${PN} = "\ | |||
2312 | & WHENCE \ | 3311 | & WHENCE \ |
2313 | " | 3312 | " |
2314 | 3313 | ||
3314 | # The goal for this recipe is to creata bunch of breakout packages for the | ||
3315 | # firmware so that you can choose which files to include and not have to pull | ||
3316 | # them all in. To that end, we do want any files to be part of the | ||
3317 | # linux-firmware package. So set it to "". Do not change this. | ||
3318 | FILES:${PN} = "" | ||
3319 | |||
2315 | FILES:${PN}-license += "${nonarch_base_libdir}/firmware/LICEN*" | 3320 | FILES:${PN}-license += "${nonarch_base_libdir}/firmware/LICEN*" |
2316 | FILES:${PN} += "${nonarch_base_libdir}/firmware/*" | ||
2317 | RDEPENDS:${PN} += "${PN}-license" | 3321 | RDEPENDS:${PN} += "${PN}-license" |
2318 | RDEPENDS:${PN} += "${PN}-whence-license" | 3322 | RDEPENDS:${PN} += "${PN}-whence-license" |
2319 | 3323 | ||
diff --git a/scripts/install-buildtools b/scripts/install-buildtools index 50b5487eb8..93f3e2d678 100755 --- a/scripts/install-buildtools +++ b/scripts/install-buildtools | |||
@@ -57,8 +57,8 @@ logger = scriptutils.logger_create(PROGNAME, stream=sys.stdout) | |||
57 | 57 | ||
58 | DEFAULT_INSTALL_DIR = os.path.join(os.path.split(scripts_path)[0],'buildtools') | 58 | DEFAULT_INSTALL_DIR = os.path.join(os.path.split(scripts_path)[0],'buildtools') |
59 | DEFAULT_BASE_URL = 'https://downloads.yoctoproject.org/releases/yocto' | 59 | DEFAULT_BASE_URL = 'https://downloads.yoctoproject.org/releases/yocto' |
60 | DEFAULT_RELEASE = 'yocto-5.2.2' | 60 | DEFAULT_RELEASE = 'yocto-5.2.3' |
61 | DEFAULT_INSTALLER_VERSION = '5.2.2' | 61 | DEFAULT_INSTALLER_VERSION = '5.2.3' |
62 | DEFAULT_BUILDDATE = '202110XX' | 62 | DEFAULT_BUILDDATE = '202110XX' |
63 | 63 | ||
64 | # Python version sanity check | 64 | # Python version sanity check |
diff --git a/scripts/lib/wic/engine.py b/scripts/lib/wic/engine.py index b9e60cbe4e..9d596be3a7 100644 --- a/scripts/lib/wic/engine.py +++ b/scripts/lib/wic/engine.py | |||
@@ -345,29 +345,64 @@ class Disk: | |||
345 | path)) | 345 | path)) |
346 | 346 | ||
347 | def copy(self, src, dest): | 347 | def copy(self, src, dest): |
348 | """Copy partition image into wic image.""" | 348 | """Copy files or directories to/from the vfat or ext* partition.""" |
349 | pnum = dest.part if isinstance(src, str) else src.part | 349 | pnum = dest.part if isinstance(src, str) else src.part |
350 | partimg = self._get_part_image(pnum) | ||
350 | 351 | ||
351 | if self.partitions[pnum].fstype.startswith('ext'): | 352 | if self.partitions[pnum].fstype.startswith('ext'): |
352 | if isinstance(src, str): | 353 | if isinstance(src, str): # host to image case |
353 | cmd = "printf 'cd {}\nwrite {} {}\n' | {} -w {}".\ | 354 | if os.path.isdir(src): |
354 | format(os.path.dirname(dest.path), src, os.path.basename(src), | 355 | base = os.path.abspath(src) |
355 | self.debugfs, self._get_part_image(pnum)) | 356 | base_parent = os.path.dirname(base) |
356 | else: # copy from wic | 357 | cmds = [] |
357 | # run both dump and rdump to support both files and directory | 358 | made = set() |
359 | |||
360 | for root, dirs, files in os.walk(base): | ||
361 | for fname in files: | ||
362 | host_file = os.path.join(root, fname) | ||
363 | rel = os.path.relpath(host_file, base_parent) | ||
364 | dest_file = os.path.join(dest.path, rel) | ||
365 | dest_dir = os.path.dirname(dest_file) | ||
366 | |||
367 | # create dir structure (mkdir -p) | ||
368 | parts = dest_dir.strip('/').split('/') | ||
369 | cur = '' | ||
370 | for p in parts: | ||
371 | cur = cur + '/' + p | ||
372 | if cur not in made: | ||
373 | cmds.append(f'mkdir "{cur}"') | ||
374 | made.add(cur) | ||
375 | |||
376 | cmds.append(f'write "{host_file}" "{dest_file}"') | ||
377 | |||
378 | # write script to a temp file | ||
379 | with tempfile.NamedTemporaryFile(mode='w', delete=False, | ||
380 | prefix='wic-debugfs-') as tf: | ||
381 | for line in cmds: | ||
382 | tf.write(line + '\n') | ||
383 | scriptname = tf.name | ||
384 | |||
385 | cmd = f"{self.debugfs} -w -f {scriptname} {partimg}" | ||
386 | |||
387 | else: # single file | ||
388 | cmd = "printf 'cd {}\nwrite {} {}\n' | {} -w {}".\ | ||
389 | format(os.path.dirname(dest.path), src, | ||
390 | os.path.basename(src), self.debugfs, partimg) | ||
391 | |||
392 | else: # image to host case | ||
358 | cmd = "printf 'cd {}\ndump /{} {}\nrdump /{} {}\n' | {} {}".\ | 393 | cmd = "printf 'cd {}\ndump /{} {}\nrdump /{} {}\n' | {} {}".\ |
359 | format(os.path.dirname(src.path), src.path, | 394 | format(os.path.dirname(src.path), src.path, |
360 | dest, src.path, dest, self.debugfs, | 395 | dest, src.path, dest, self.debugfs, partimg) |
361 | self._get_part_image(pnum)) | 396 | |
362 | else: # fat | 397 | else: # fat |
363 | if isinstance(src, str): | 398 | if isinstance(src, str): |
364 | cmd = "{} -i {} -snop {} ::{}".format(self.mcopy, | 399 | cmd = "{} -i {} -snop {} ::{}".format(self.mcopy, |
365 | self._get_part_image(pnum), | 400 | partimg, |
366 | src, dest.path) | 401 | src, dest.path) |
367 | else: | 402 | else: |
368 | cmd = "{} -i {} -snop ::{} {}".format(self.mcopy, | 403 | cmd = "{} -i {} -snop ::{} {}".format(self.mcopy, |
369 | self._get_part_image(pnum), | 404 | partimg, |
370 | src.path, dest) | 405 | src.path, dest) |
371 | 406 | ||
372 | exec_cmd(cmd, as_shell=True) | 407 | exec_cmd(cmd, as_shell=True) |
373 | self._put_part_image(pnum) | 408 | self._put_part_image(pnum) |
diff --git a/scripts/runqemu b/scripts/runqemu index 2be7a0f286..72d827260f 100755 --- a/scripts/runqemu +++ b/scripts/runqemu | |||
@@ -421,8 +421,27 @@ class BaseConfig(object): | |||
421 | else: | 421 | else: |
422 | raise RunQemuError("Unknown path arg %s" % p) | 422 | raise RunQemuError("Unknown path arg %s" % p) |
423 | 423 | ||
424 | def uncompress_rootfs(self): | 424 | def rootfs_fixups(self): |
425 | """Decompress ZST rootfs image if needed""" | 425 | |
426 | """Decompress and/or resize the rootfs image, if needed""" | ||
427 | qb_rootfs_opt = self.get('QB_ROOTFS_OPT') | ||
428 | |||
429 | # Check if sdcard size is a power of 2, as that is currently a requirement for qemu | ||
430 | # See https://gitlab.com/qemu-project/qemu/-/issues/1754 | ||
431 | rootfs_size = os.path.getsize(self.rootfs) | ||
432 | rootfs_size_pwr2 = 1 << (rootfs_size - 1).bit_length() | ||
433 | if ("if=sd" in qb_rootfs_opt or "if=pflash" in qb_rootfs_opt) and rootfs_size != rootfs_size_pwr2: | ||
434 | logger.info("Using sd-card or pflash and is not power of 2. File size %d, power of 2 size %d" %(rootfs_size, rootfs_size_pwr2)) | ||
435 | logger.info("Attempting to use truncate to correct this.") | ||
436 | |||
437 | # Ensure the 'truncate' tool is installed before attempting to make a power of 2. | ||
438 | if not shutil.which('truncate'): | ||
439 | raise RunQemuError(f"'truncate' is required to make {self.rootfs} a power of 2 in size but was not found in PATH") | ||
440 | try: | ||
441 | subprocess.check_call(['truncate', '-s', str(rootfs_size_pwr2), self.rootfs]) | ||
442 | except subprocess.CalledProcessError as e: | ||
443 | raise RunQemuError(f"Failed to make {self.rootfs} power of 2 in size: {e}") | ||
444 | |||
426 | if not self.rootfs or not self.fstype.endswith('.zst'): | 445 | if not self.rootfs or not self.fstype.endswith('.zst'): |
427 | return | 446 | return |
428 | 447 | ||
@@ -884,7 +903,7 @@ to your build configuration. | |||
884 | self.set('QB_MEM', qb_mem) | 903 | self.set('QB_MEM', qb_mem) |
885 | 904 | ||
886 | mach = self.get('MACHINE') | 905 | mach = self.get('MACHINE') |
887 | if not mach.startswith(('qemumips', 'qemux86', 'qemuloongarch64')): | 906 | if not mach.startswith(('qemumips', 'qemux86', 'qemuloongarch64')) and self.get('QB_DTB') == "": |
888 | self.kernel_cmdline_script += ' mem=%s' % self.get('QB_MEM').replace('-m','').strip() + 'M' | 907 | self.kernel_cmdline_script += ' mem=%s' % self.get('QB_MEM').replace('-m','').strip() + 'M' |
889 | 908 | ||
890 | self.qemu_opt_script += ' %s' % self.get('QB_MEM') | 909 | self.qemu_opt_script += ' %s' % self.get('QB_MEM') |
@@ -1783,7 +1802,7 @@ def main(): | |||
1783 | config.check_args() | 1802 | config.check_args() |
1784 | config.read_qemuboot() | 1803 | config.read_qemuboot() |
1785 | config.check_and_set() | 1804 | config.check_and_set() |
1786 | config.uncompress_rootfs() | 1805 | config.rootfs_fixups() |
1787 | # Check whether the combos is valid or not | 1806 | # Check whether the combos is valid or not |
1788 | config.validate_combos() | 1807 | config.validate_combos() |
1789 | config.print_config() | 1808 | config.print_config() |