summaryrefslogtreecommitdiff
path: root/mesonbuild
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2025-10-24 09:26:35 -0700
committerDylan Baker <dylan@pnwbakers.com>2025-12-17 14:47:18 -0800
commit6f3d0ddd823cc0ac49634c353ebdac403dd4c799 (patch)
tree9dff9533e0f84a4f25107d0df487eedf2e8c2e2d /mesonbuild
parentcd6824aaaec9eb4fd76bfd2ab7e8410f6c571c47 (diff)
downloadmeson-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.py17
-rw-r--r--mesonbuild/dependencies/boost.py4
-rw-r--r--mesonbuild/dependencies/cmake.py3
-rw-r--r--mesonbuild/dependencies/coarrays.py6
-rw-r--r--mesonbuild/dependencies/configtool.py3
-rw-r--r--mesonbuild/dependencies/cuda.py4
-rw-r--r--mesonbuild/dependencies/dev.py19
-rw-r--r--mesonbuild/dependencies/dub.py3
-rw-r--r--mesonbuild/dependencies/framework.py3
-rw-r--r--mesonbuild/dependencies/misc.py18
-rw-r--r--mesonbuild/dependencies/pkgconfig.py3
-rw-r--r--mesonbuild/dependencies/platform.py4
-rw-r--r--mesonbuild/dependencies/python.py5
-rw-r--r--mesonbuild/dependencies/ui.py8
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