diff options
| author | Dylan Baker <dylan@pnwbakers.com> | 2025-10-24 09:26:35 -0700 |
|---|---|---|
| committer | Dylan Baker <dylan@pnwbakers.com> | 2025-12-17 14:47:18 -0800 |
| commit | 6f3d0ddd823cc0ac49634c353ebdac403dd4c799 (patch) | |
| tree | 9dff9533e0f84a4f25107d0df487eedf2e8c2e2d /mesonbuild | |
| parent | cd6824aaaec9eb4fd76bfd2ab7e8410f6c571c47 (diff) | |
| download | meson-6f3d0ddd823cc0ac49634c353ebdac403dd4c799.tar.gz | |
dependencies: Pass the `name` to `ExternalDependency` constructor
So we don't create a default name that is overwritten except in the case
of appleframeworks. This allows for some cleanup, including
deleting some initializers that were only setting the name.
Diffstat (limited to 'mesonbuild')
| -rw-r--r-- | mesonbuild/dependencies/base.py | 17 | ||||
| -rw-r--r-- | mesonbuild/dependencies/boost.py | 4 | ||||
| -rw-r--r-- | mesonbuild/dependencies/cmake.py | 3 | ||||
| -rw-r--r-- | mesonbuild/dependencies/coarrays.py | 6 | ||||
| -rw-r--r-- | mesonbuild/dependencies/configtool.py | 3 | ||||
| -rw-r--r-- | mesonbuild/dependencies/cuda.py | 4 | ||||
| -rw-r--r-- | mesonbuild/dependencies/dev.py | 19 | ||||
| -rw-r--r-- | mesonbuild/dependencies/dub.py | 3 | ||||
| -rw-r--r-- | mesonbuild/dependencies/framework.py | 3 | ||||
| -rw-r--r-- | mesonbuild/dependencies/misc.py | 18 | ||||
| -rw-r--r-- | mesonbuild/dependencies/pkgconfig.py | 3 | ||||
| -rw-r--r-- | mesonbuild/dependencies/platform.py | 4 | ||||
| -rw-r--r-- | mesonbuild/dependencies/python.py | 5 | ||||
| -rw-r--r-- | mesonbuild/dependencies/ui.py | 8 |
14 files changed, 43 insertions, 57 deletions
diff --git a/mesonbuild/dependencies/base.py b/mesonbuild/dependencies/base.py index 1de6e1bcf..eadd8afb8 100644 --- a/mesonbuild/dependencies/base.py +++ b/mesonbuild/dependencies/base.py @@ -416,10 +416,10 @@ class InternalDependency(Dependency): return new_dep class ExternalDependency(Dependency): - def __init__(self, environment: 'Environment', kwargs: DependencyObjectKWs, language: T.Optional[str] = None): + def __init__(self, name: str, environment: 'Environment', kwargs: DependencyObjectKWs, language: T.Optional[str] = None): Dependency.__init__(self, kwargs) self.env = environment - self.name = str(self.type_name) + self.name = name self.is_found = False self.language = language self.version_reqs = kwargs.get('version', []) @@ -526,8 +526,7 @@ class ExternalLibrary(ExternalDependency): def __init__(self, name: str, link_args: T.List[str], environment: 'Environment', language: str, silent: bool = False) -> None: - super().__init__(environment, {}, language=language) - self.name = name + super().__init__(name, environment, {}, language=language) self.language = language self.is_found = False if link_args: @@ -672,11 +671,6 @@ class SystemDependency(ExternalDependency): type_name = DependencyTypeName('system') - def __init__(self, name: str, env: 'Environment', kwargs: DependencyObjectKWs, - language: T.Optional[str] = None) -> None: - super().__init__(env, kwargs, language=language) - self.name = name - @staticmethod def log_tried() -> str: return 'system' @@ -688,11 +682,6 @@ class BuiltinDependency(ExternalDependency): type_name = DependencyTypeName('builtin') - def __init__(self, name: str, env: 'Environment', kwargs: DependencyObjectKWs, - language: T.Optional[str] = None) -> None: - super().__init__(env, kwargs, language=language) - self.name = name - @staticmethod def log_tried() -> str: return 'builtin' diff --git a/mesonbuild/dependencies/boost.py b/mesonbuild/dependencies/boost.py index 1aeb451f1..b4d7ba740 100644 --- a/mesonbuild/dependencies/boost.py +++ b/mesonbuild/dependencies/boost.py @@ -340,8 +340,8 @@ class BoostLibraryFile(): return [self.path.as_posix()] class BoostDependency(SystemDependency): - def __init__(self, environment: Environment, kwargs: DependencyObjectKWs) -> None: - super().__init__('boost', environment, kwargs, language='cpp') + def __init__(self, name: str, environment: Environment, kwargs: DependencyObjectKWs) -> None: + super().__init__(name, environment, kwargs, language='cpp') buildtype = environment.coredata.optstore.get_value_for(OptionKey('buildtype')) assert isinstance(buildtype, str) self.debug = buildtype.startswith('debug') diff --git a/mesonbuild/dependencies/cmake.py b/mesonbuild/dependencies/cmake.py index 2e7d19465..591c68ea0 100644 --- a/mesonbuild/dependencies/cmake.py +++ b/mesonbuild/dependencies/cmake.py @@ -90,8 +90,7 @@ class CMakeDependency(ExternalDependency): # Ensure that the list is unique self.language_list = list(set(self.language_list)) - super().__init__(environment, kwargs, language=language) - self.name = name + super().__init__(name, environment, kwargs, language=language) self.is_libtool = False # Where all CMake "build dirs" are located diff --git a/mesonbuild/dependencies/coarrays.py b/mesonbuild/dependencies/coarrays.py index a4dbdc535..0c8750ced 100644 --- a/mesonbuild/dependencies/coarrays.py +++ b/mesonbuild/dependencies/coarrays.py @@ -41,7 +41,7 @@ def coarray_factory(env: 'Environment', CMakeDependency, 'OpenCoarrays', env, kwargs, language='fortran')) if DependencyMethods.SYSTEM in methods: - candidates.append(functools.partial(CoarrayDependency, env, kwargs)) + candidates.append(functools.partial(CoarrayDependency, 'coarray', env, kwargs)) return candidates packages['coarray'] = coarray_factory @@ -56,8 +56,8 @@ class CoarrayDependency(SystemDependency): Coarrays may be thought of as a high-level language abstraction of low-level MPI calls. """ - def __init__(self, environment: 'Environment', kwargs: DependencyObjectKWs) -> None: - super().__init__('coarray', environment, kwargs, language='fortran') + def __init__(self, name: str, environment: 'Environment', kwargs: DependencyObjectKWs) -> None: + super().__init__(name, environment, kwargs, language='fortran') kwargs['required'] = False kwargs['silent'] = True diff --git a/mesonbuild/dependencies/configtool.py b/mesonbuild/dependencies/configtool.py index fa1d05afc..a87062114 100644 --- a/mesonbuild/dependencies/configtool.py +++ b/mesonbuild/dependencies/configtool.py @@ -39,8 +39,7 @@ class ConfigToolDependency(ExternalDependency): type_name = DependencyTypeName('config-tool') def __init__(self, name: str, environment: 'Environment', kwargs: DependencyObjectKWs, language: T.Optional[str] = None, exclude_paths: T.Optional[T.List[str]] = None): - super().__init__(environment, kwargs, language=language) - self.name = name + super().__init__(name, environment, kwargs, language=language) # You may want to overwrite the class version in some cases self.tools = listify(kwargs.get('tools', self.tools)) if not self.tool_name: diff --git a/mesonbuild/dependencies/cuda.py b/mesonbuild/dependencies/cuda.py index d80c62d8d..276b886f1 100644 --- a/mesonbuild/dependencies/cuda.py +++ b/mesonbuild/dependencies/cuda.py @@ -28,7 +28,7 @@ class CudaDependency(SystemDependency): supported_languages = ['cpp', 'c', 'cuda'] # see also _default_language targets_dir = 'targets' # Directory containing CUDA targets. - def __init__(self, environment: 'Environment', kwargs: DependencyObjectKWs) -> None: + def __init__(self, name: str, environment: 'Environment', kwargs: DependencyObjectKWs) -> None: for_machine = kwargs.get('native', mesonlib.MachineChoice.HOST) compilers = environment.coredata.compilers[for_machine] machine = environment.machines[for_machine] @@ -37,7 +37,7 @@ class CudaDependency(SystemDependency): if language not in self.supported_languages: raise DependencyException(f'Language \'{language}\' is not supported by the CUDA Toolkit. Supported languages are {self.supported_languages}.') - super().__init__('cuda', environment, kwargs, language=language) + super().__init__(name, environment, kwargs, language=language) self.lib_modules: T.Dict[str, T.List[str]] = {} self.requested_modules = kwargs.get('modules', []) if not any(runtime in self.requested_modules for runtime in ['cudart', 'cudart_static']): diff --git a/mesonbuild/dependencies/dev.py b/mesonbuild/dependencies/dev.py index 6b6e13000..c63aa8e0f 100644 --- a/mesonbuild/dependencies/dev.py +++ b/mesonbuild/dependencies/dev.py @@ -390,11 +390,10 @@ class LLVMDependencyCMake(CMakeDependency): compilers = env.coredata.compilers[for_machine] if not compilers or not {'c', 'cpp'}.issubset(compilers): # Initialize basic variables - ExternalDependency.__init__(self, env, kwargs) + ExternalDependency.__init__(self, name, env, kwargs) # Initialize CMake specific variables self.found_modules: T.List[str] = [] - self.name = name langs: T.List[str] = [] if not compilers: @@ -506,8 +505,8 @@ class ValgrindDependency(PkgConfigDependency): Consumers of Valgrind usually only need the compile args and do not want to link to its (static) libraries. ''' - def __init__(self, env: 'Environment', kwargs: DependencyObjectKWs): - super().__init__('valgrind', env, kwargs) + def __init__(self, name: str, env: 'Environment', kwargs: DependencyObjectKWs): + super().__init__(name, env, kwargs) def get_link_args(self, language: T.Optional[str] = None, raw: bool = False) -> T.List[str]: return [] @@ -554,8 +553,8 @@ class ZlibSystemDependency(SystemDependency): class JNISystemDependency(SystemDependency): - def __init__(self, environment: 'Environment', kwargs: DependencyObjectKWs): - super().__init__('jni', environment, kwargs) + def __init__(self, name: str, environment: 'Environment', kwargs: DependencyObjectKWs): + super().__init__(name, environment, kwargs) self.feature_since = ('0.62.0', '') @@ -682,8 +681,8 @@ packages['jni'] = JNISystemDependency class JDKSystemDependency(JNISystemDependency): - def __init__(self, environment: 'Environment', kwargs: DependencyObjectKWs): - super().__init__(environment, kwargs) + def __init__(self, name: str, environment: 'Environment', kwargs: DependencyObjectKWs): + super().__init__('jni', environment, kwargs) self.feature_since = ('0.59.0', '') self.featurechecks.append(FeatureDeprecated( @@ -748,8 +747,8 @@ class DiaSDKSystemDependency(SystemDependency): defval, _ = compiler.get_define(dname, '', [], []) return defval is not None - def __init__(self, environment: 'Environment', kwargs: DependencyObjectKWs) -> None: - super().__init__('diasdk', environment, kwargs) + def __init__(self, name: str, environment: 'Environment', kwargs: DependencyObjectKWs) -> None: + super().__init__(name, environment, kwargs) self.is_found = False compilers = environment.coredata.compilers.host diff --git a/mesonbuild/dependencies/dub.py b/mesonbuild/dependencies/dub.py index e00a7232a..a10a86c5e 100644 --- a/mesonbuild/dependencies/dub.py +++ b/mesonbuild/dependencies/dub.py @@ -78,8 +78,7 @@ class DubDependency(ExternalDependency): } def __init__(self, name: str, environment: 'Environment', kwargs: DependencyObjectKWs): - super().__init__(environment, kwargs, language='d') - self.name = name + super().__init__(name, environment, kwargs, language='d') from ..compilers.d import DCompiler, d_feature_args _temp_comp = super().get_compiler() diff --git a/mesonbuild/dependencies/framework.py b/mesonbuild/dependencies/framework.py index 9c897614f..1f5646682 100644 --- a/mesonbuild/dependencies/framework.py +++ b/mesonbuild/dependencies/framework.py @@ -20,8 +20,7 @@ class ExtraFrameworkDependency(ExternalDependency): def __init__(self, name: str, env: 'Environment', kwargs: DependencyObjectKWs, language: T.Optional[str] = None) -> None: paths = stringlistify(kwargs.get('paths', [])) - super().__init__(env, kwargs, language=language) - self.name = name + super().__init__(name, env, kwargs, language=language) # Full path to framework directory self.framework_path: T.Optional[str] = None if not self.clib_compiler: diff --git a/mesonbuild/dependencies/misc.py b/mesonbuild/dependencies/misc.py index b1b8b8e13..9c9475574 100644 --- a/mesonbuild/dependencies/misc.py +++ b/mesonbuild/dependencies/misc.py @@ -113,9 +113,9 @@ class OpenMPDependency(SystemDependency): '199810': '1.0', } - def __init__(self, environment: 'Environment', kwargs: DependencyObjectKWs) -> None: + def __init__(self, name: str, environment: 'Environment', kwargs: DependencyObjectKWs) -> None: language = kwargs.get('language') - super().__init__('openmp', environment, kwargs, language=language) + super().__init__(name, environment, kwargs, language=language) self.is_found = False if self.clib_compiler.get_id() == 'nagfor': # No macro defined for OpenMP, but OpenMP 3.1 is supported. @@ -181,8 +181,8 @@ class ThreadDependency(SystemDependency): class BlocksDependency(SystemDependency): - def __init__(self, environment: 'Environment', kwargs: DependencyObjectKWs) -> None: - super().__init__('blocks', environment, kwargs) + def __init__(self, name: str, environment: 'Environment', kwargs: DependencyObjectKWs) -> None: + super().__init__(name, environment, kwargs) self.name = 'blocks' self.is_found = False @@ -304,8 +304,8 @@ class GpgmeDependencyConfigTool(ConfigToolDependency): class ShadercDependency(SystemDependency): - def __init__(self, environment: 'Environment', kwargs: DependencyObjectKWs): - super().__init__('shaderc', environment, kwargs) + def __init__(self, name: str, environment: 'Environment', kwargs: DependencyObjectKWs): + super().__init__(name, environment, kwargs) static_lib = 'shaderc_combined' shared_lib = 'shaderc_shared' @@ -508,8 +508,8 @@ class ObjFWDependency(ConfigToolDependency): tools = ['objfw-config'] tool_name = 'objfw-config' - def __init__(self, environment: 'Environment', kwargs: DependencyObjectKWs): - super().__init__('objfw', environment, kwargs) + def __init__(self, name: str, environment: 'Environment', kwargs: DependencyObjectKWs): + super().__init__(name, environment, kwargs) self.feature_since = ('1.5.0', '') if not self.is_found: return @@ -586,7 +586,7 @@ def shaderc_factory(env: 'Environment', candidates.extend(c) if DependencyMethods.SYSTEM in methods: - candidates.append(functools.partial(ShadercDependency, env, kwargs)) + candidates.append(functools.partial(ShadercDependency, 'shaderc', env, kwargs)) return candidates packages['shaderc'] = shaderc_factory diff --git a/mesonbuild/dependencies/pkgconfig.py b/mesonbuild/dependencies/pkgconfig.py index 163f98959..c27841eea 100644 --- a/mesonbuild/dependencies/pkgconfig.py +++ b/mesonbuild/dependencies/pkgconfig.py @@ -311,8 +311,7 @@ class PkgConfigDependency(ExternalDependency): def __init__(self, name: str, environment: Environment, kwargs: DependencyObjectKWs, language: T.Optional[str] = None, extra_paths: T.Optional[T.List[str]] = None) -> None: - super().__init__(environment, kwargs, language=language) - self.name = name + super().__init__(name, environment, kwargs, language=language) self.is_libtool = False self.extra_paths = extra_paths or [] pkgconfig = PkgConfigInterface.instance(self.env, self.for_machine, self.silent, self.extra_paths) diff --git a/mesonbuild/dependencies/platform.py b/mesonbuild/dependencies/platform.py index 954556f41..f193c87eb 100644 --- a/mesonbuild/dependencies/platform.py +++ b/mesonbuild/dependencies/platform.py @@ -18,8 +18,8 @@ class AppleFrameworks(ExternalDependency): type_name = DependencyTypeName('appleframeworks') - def __init__(self, env: 'Environment', kwargs: DependencyObjectKWs) -> None: - super().__init__(env, kwargs) + def __init__(self, name: str, env: 'Environment', kwargs: DependencyObjectKWs) -> None: + super().__init__(name, env, kwargs) modules = kwargs.get('modules', []) if not modules: raise DependencyException("AppleFrameworks dependency requires at least one module.") diff --git a/mesonbuild/dependencies/python.py b/mesonbuild/dependencies/python.py index aa2e22c6f..f979e705e 100644 --- a/mesonbuild/dependencies/python.py +++ b/mesonbuild/dependencies/python.py @@ -457,7 +457,8 @@ class _PythonDependencyBase(_Base): class PythonPkgConfigDependency(PkgConfigDependency, _PythonDependencyBase): - def __init__(self, environment: 'Environment', kwargs: DependencyObjectKWs, + # name is needed for polymorphism + def __init__(self, name: str, environment: Environment, kwargs: DependencyObjectKWs, installation: 'BasicPythonExternalProgram', embed: bool, for_machine: 'MachineChoice'): pkg_embed = '-embed' if embed and mesonlib.version_compare(installation.info['version'], '>=3.8') else '' @@ -579,7 +580,7 @@ def python_factory(env: 'Environment', for_machine: 'MachineChoice', if DependencyMethods.PKGCONFIG in methods: if from_installation: - candidates.append(functools.partial(PythonPkgConfigDependency, env, kwargs, installation, embed, for_machine)) + candidates.append(functools.partial(PythonPkgConfigDependency, 'python3', env, kwargs, installation, embed, for_machine)) else: candidates.append(functools.partial(PkgConfigDependency, 'python3', env, kwargs)) diff --git a/mesonbuild/dependencies/ui.py b/mesonbuild/dependencies/ui.py index 566ba52dc..fb6fbcfaa 100644 --- a/mesonbuild/dependencies/ui.py +++ b/mesonbuild/dependencies/ui.py @@ -56,8 +56,8 @@ class GnuStepDependency(ConfigToolDependency): tools = ['gnustep-config'] tool_name = 'gnustep-config' - def __init__(self, environment: 'Environment', kwargs: DependencyObjectKWs) -> None: - super().__init__('gnustep', environment, kwargs, language='objc') + def __init__(self, name: str, environment: 'Environment', kwargs: DependencyObjectKWs) -> None: + super().__init__(name, environment, kwargs, language='objc') if not self.is_found: return self.modules = kwargs.get('modules', []) @@ -148,7 +148,9 @@ class WxDependency(ConfigToolDependency): tools = ['wx-config-3.0', 'wx-config-3.1', 'wx-config', 'wx-config-gtk3'] tool_name = 'wx-config' - def __init__(self, environment: 'Environment', kwargs: DependencyObjectKWs): + # name is intentionally ignored to maintain existing capitalization, + # but is needed for polymorphism + def __init__(self, name: str, environment: 'Environment', kwargs: DependencyObjectKWs): super().__init__('WxWidgets', environment, kwargs, language='cpp') if not self.is_found: return |
