diff --git a/utils/checksymbolslib/br.py b/utils/checksymbolslib/br.py index a4c1b84c56..f3afa18a0a 100644 --- a/utils/checksymbolslib/br.py +++ b/utils/checksymbolslib/br.py @@ -120,7 +120,6 @@ re_menu = re.compile(r'^\s*menu\b') re_endmenu = re.compile(r'^\s*endmenu\b') re_comments = re.compile(r'#.*$') re_legacy_special_comment = re.compile(r'#.*(BR2_\w+)\s.*still referenced') -re_host_symbol = re.compile(r'(BR2_PACKAGE_HOST_\w+|BR2_PACKAGE_HAS_HOST_\w+)') re_makefile_symbol_usage = re.compile(r'\$\((BR2_\w+)\)') re_makefile_symbol_export = re.compile(r'export\s*(BR2_\w+)') re_makefile_symbol_attribution = re.compile(r'^\s*(BR2_\w+)\s*[?:=]') diff --git a/utils/checksymbolslib/db.py b/utils/checksymbolslib/db.py index cb0dfa476f..a92fe8e382 100644 --- a/utils/checksymbolslib/db.py +++ b/utils/checksymbolslib/db.py @@ -122,8 +122,6 @@ class DB: continue if legacy_definition in entries: continue - if br.re_host_symbol.search(symbol): - continue if br.is_an_optional_symbol_for_a_roofts(symbol): continue if symbol in br.symbols_defined_only_at_command_line: diff --git a/utils/checksymbolslib/makefile.py b/utils/checksymbolslib/makefile.py index e3894dd1f9..084530c29b 100644 --- a/utils/checksymbolslib/makefile.py +++ b/utils/checksymbolslib/makefile.py @@ -28,6 +28,8 @@ def handle_eval(db, filename, lineno, line): return # mimic package/pkg-generic.mk and package/pkg-virtual.mk + # They have ifeq ($$($$($(2)_KCONFIG_VAR)),y) so consider that a usage. + # Virtual packages have additional conditions. if '$(virtual-' in line: prefixes = ['BR2_PACKAGE_PROVIDES_', 'BR2_PACKAGE_HAS_'] if filename.startswith('toolchain/'): @@ -39,8 +41,13 @@ def handle_eval(db, filename, lineno, line): prefixes.append(prefix) elif '$(host-virtual-' in line: prefixes = ['BR2_PACKAGE_HOST_', 'BR2_PACKAGE_PROVIDES_HOST_', 'BR2_PACKAGE_HAS_HOST_'] + # For host packages, we allow it to not be defined in Config.in.host, so + # consider the symbol as defined as well. + db.add_symbol_definition('BR2_PACKAGE_HOST_' + package, filename, lineno) + db.add_symbol_virtual('BR2_PACKAGE_HAS_HOST_' + package, filename, lineno) elif '$(host-' in line: prefixes = ['BR2_PACKAGE_HOST_'] + db.add_symbol_definition('BR2_PACKAGE_HOST_' + package, filename, lineno) elif filename.startswith('boot/'): prefixes = [br.boot_prefix] elif filename.startswith('toolchain/'): diff --git a/utils/checksymbolslib/test_db.py b/utils/checksymbolslib/test_db.py index 15576fa897..ee5b626168 100644 --- a/utils/checksymbolslib/test_db.py +++ b/utils/checksymbolslib/test_db.py @@ -156,8 +156,6 @@ def test_get_warnings_for_symbols_without_definition(): db.add_symbol_usage_in_legacy('BR2_undef3', 'file', 3) db.add_symbol_usage('BR2_undef3', 'another', 1) db.add_symbol_legacy_usage('BR2_undef3', 'another', 2) - db.add_symbol_usage('BR2_PACKAGE_HOST_undef', 'file', 1) - db.add_symbol_usage('BR2_PACKAGE_HAS_HOST_undef', 'file', 1) db.add_symbol_usage('BR2_TARGET_ROOTFS_undef_XZ', 'file', 1) db.add_symbol_usage('BR2_GRAPH_ALT', 'file', 1) db.add_symbol_usage('BR2_EXTERNAL', 'file', 1) @@ -170,8 +168,6 @@ def test_get_warnings_for_symbols_without_definition(): 'BR2_undef1': {'normal usage': {'file': [1]}}, 'BR2_undef2': {'legacy usage': {'file': [2]}}, 'BR2_undef3': {'usage inside legacy': {'file': [3]}, 'normal usage': {'another': [1]}, 'legacy usage': {'another': [2]}}, - 'BR2_PACKAGE_HOST_undef': {'normal usage': {'file': [1]}}, - 'BR2_PACKAGE_HAS_HOST_undef': {'normal usage': {'file': [1]}}, 'BR2_TARGET_ROOTFS_undef_XZ': {'normal usage': {'file': [1]}}, 'BR2_GRAPH_ALT': {'normal usage': {'file': [1]}}, 'BR2_EXTERNAL': {'normal usage': {'file': [1]}}, diff --git a/utils/checksymbolslib/test_makefile.py b/utils/checksymbolslib/test_makefile.py index 9d24484124..859d99e42d 100644 --- a/utils/checksymbolslib/test_makefile.py +++ b/utils/checksymbolslib/test_makefile.py @@ -74,12 +74,15 @@ handle_eval = [ {'add_symbol_usage': [ call('BR2_PACKAGE_PROVIDES_HOST_FOO', 'package/foo/foo.mk', 18), call('BR2_PACKAGE_HAS_HOST_FOO', 'package/foo/foo.mk', 18), - call('BR2_PACKAGE_HOST_FOO', 'package/foo/foo.mk', 18)]}), + call('BR2_PACKAGE_HOST_FOO', 'package/foo/foo.mk', 18)], + 'add_symbol_definition': [call('BR2_PACKAGE_HOST_FOO', 'package/foo/foo.mk', 18)], + 'add_symbol_virtual': [call('BR2_PACKAGE_HAS_HOST_FOO', 'package/foo/foo.mk', 18)]}), ('host generic package', 'package/foo/foo.mk', 18, '$(eval $(host-package))', - {'add_symbol_usage': [call('BR2_PACKAGE_HOST_FOO', 'package/foo/foo.mk', 18)]}), + {'add_symbol_usage': [call('BR2_PACKAGE_HOST_FOO', 'package/foo/foo.mk', 18)], + 'add_symbol_definition': [call('BR2_PACKAGE_HOST_FOO', 'package/foo/foo.mk', 18)]}), ('boot package', 'boot/foo/foo.mk', 18, @@ -178,7 +181,9 @@ handle_usage = [ {'add_symbol_usage': [ call('BR2_PACKAGE_PROVIDES_HOST_FOO', 'package/foo/foo.mk', 18), call('BR2_PACKAGE_HAS_HOST_FOO', 'package/foo/foo.mk', 18), - call('BR2_PACKAGE_HOST_FOO', 'package/foo/foo.mk', 18)]}), + call('BR2_PACKAGE_HOST_FOO', 'package/foo/foo.mk', 18)], + 'add_symbol_definition': [call('BR2_PACKAGE_HOST_FOO', 'package/foo/foo.mk', 18)], + 'add_symbol_virtual': [call('BR2_PACKAGE_HAS_HOST_FOO', 'package/foo/foo.mk', 18)]}), ]