summaryrefslogtreecommitdiff
path: root/mesonbuild
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2025-10-24 09:14:25 -0700
committerDylan Baker <dylan@pnwbakers.com>2025-12-17 14:47:18 -0800
commitcd6824aaaec9eb4fd76bfd2ab7e8410f6c571c47 (patch)
treed1042171ea45d1cbd95026717e690726a7d33f59 /mesonbuild
parent0e04fcc664f1817d486156c6a149142ba4bc472e (diff)
downloadmeson-cd6824aaaec9eb4fd76bfd2ab7e8410f6c571c47.tar.gz
dependencies: Move type_name to class level
This is really class constant for all dependencies, and by taking it out of the initializer we make the `__init__` call have a more consistent interface.
Diffstat (limited to 'mesonbuild')
-rw-r--r--mesonbuild/dependencies/base.py34
-rw-r--r--mesonbuild/dependencies/cmake.py4
-rw-r--r--mesonbuild/dependencies/configtool.py3
-rw-r--r--mesonbuild/dependencies/dev.py4
-rw-r--r--mesonbuild/dependencies/dub.py4
-rw-r--r--mesonbuild/dependencies/framework.py4
-rw-r--r--mesonbuild/dependencies/pkgconfig.py4
-rw-r--r--mesonbuild/dependencies/platform.py5
8 files changed, 44 insertions, 18 deletions
diff --git a/mesonbuild/dependencies/base.py b/mesonbuild/dependencies/base.py
index 4536746d9..1de6e1bcf 100644
--- a/mesonbuild/dependencies/base.py
+++ b/mesonbuild/dependencies/base.py
@@ -129,7 +129,9 @@ DependencyTypeName = T.NewType('DependencyTypeName', str)
class Dependency(HoldableObject):
- def __init__(self, type_name: DependencyTypeName, kwargs: DependencyObjectKWs) -> None:
+ type_name: DependencyTypeName
+
+ def __init__(self, kwargs: DependencyObjectKWs) -> None:
# This allows two Dependencies to be compared even after being copied.
# The purpose is to allow the name to be changed, but still have a proper comparison
self._id = uuid.uuid4().int
@@ -137,7 +139,6 @@ class Dependency(HoldableObject):
self.version: T.Optional[str] = None
self.language: T.Optional[str] = None # None means C-like
self.is_found = False
- self.type_name = type_name
self.compile_args: T.List[str] = []
self.link_args: T.List[str] = []
# Raw -L and -l arguments without manual library searching
@@ -298,6 +299,9 @@ class Dependency(HoldableObject):
return self
class InternalDependency(Dependency):
+
+ type_name = DependencyTypeName('internal')
+
def __init__(self, version: str, incdirs: T.List['IncludeDirs'], compile_args: T.List[str],
link_args: T.List[str],
libraries: T.List[LibTypes],
@@ -308,7 +312,7 @@ class InternalDependency(Dependency):
d_module_versions: T.List[T.Union[str, int]], d_import_dirs: T.List['IncludeDirs'],
objects: T.List['ExtractedObjects'],
name: T.Optional[str] = None):
- super().__init__(DependencyTypeName('internal'), {})
+ super().__init__({})
self.version = version
self.is_found = True
self.include_directories = incdirs
@@ -412,10 +416,10 @@ class InternalDependency(Dependency):
return new_dep
class ExternalDependency(Dependency):
- def __init__(self, type_name: DependencyTypeName, environment: 'Environment', kwargs: DependencyObjectKWs, language: T.Optional[str] = None):
- Dependency.__init__(self, type_name, kwargs)
+ def __init__(self, environment: 'Environment', kwargs: DependencyObjectKWs, language: T.Optional[str] = None):
+ Dependency.__init__(self, kwargs)
self.env = environment
- self.name = type_name # default
+ self.name = str(self.type_name)
self.is_found = False
self.language = language
self.version_reqs = kwargs.get('version', [])
@@ -499,8 +503,11 @@ class ExternalDependency(Dependency):
class NotFoundDependency(Dependency):
+
+ type_name = DependencyTypeName('not-found')
+
def __init__(self, name: str, environment: 'Environment') -> None:
- super().__init__(DependencyTypeName('not-found'), {})
+ super().__init__({})
self.env = environment
self.name = name
self.is_found = False
@@ -514,9 +521,12 @@ class NotFoundDependency(Dependency):
class ExternalLibrary(ExternalDependency):
+
+ type_name = DependencyTypeName('library')
+
def __init__(self, name: str, link_args: T.List[str], environment: 'Environment',
language: str, silent: bool = False) -> None:
- super().__init__(DependencyTypeName('library'), environment, {}, language=language)
+ super().__init__(environment, {}, language=language)
self.name = name
self.language = language
self.is_found = False
@@ -660,9 +670,11 @@ class SystemDependency(ExternalDependency):
"""Dependency base for System type dependencies."""
+ type_name = DependencyTypeName('system')
+
def __init__(self, name: str, env: 'Environment', kwargs: DependencyObjectKWs,
language: T.Optional[str] = None) -> None:
- super().__init__(DependencyTypeName('system'), env, kwargs, language=language)
+ super().__init__(env, kwargs, language=language)
self.name = name
@staticmethod
@@ -674,9 +686,11 @@ class BuiltinDependency(ExternalDependency):
"""Dependency base for Builtin type dependencies."""
+ type_name = DependencyTypeName('builtin')
+
def __init__(self, name: str, env: 'Environment', kwargs: DependencyObjectKWs,
language: T.Optional[str] = None) -> None:
- super().__init__(DependencyTypeName('builtin'), env, kwargs, language=language)
+ super().__init__(env, kwargs, language=language)
self.name = name
@staticmethod
diff --git a/mesonbuild/dependencies/cmake.py b/mesonbuild/dependencies/cmake.py
index 066bb2900..2e7d19465 100644
--- a/mesonbuild/dependencies/cmake.py
+++ b/mesonbuild/dependencies/cmake.py
@@ -39,6 +39,8 @@ class CMakeDependency(ExternalDependency):
class_cmake_generators = ['', 'Ninja', 'Unix Makefiles', 'Visual Studio 10 2010']
class_working_generator: T.Optional[str] = None
+ type_name = DependencyTypeName('cmake')
+
def _gen_exception(self, msg: str) -> DependencyException:
return DependencyException(f'Dependency {self.name} not found: {msg}')
@@ -88,7 +90,7 @@ class CMakeDependency(ExternalDependency):
# Ensure that the list is unique
self.language_list = list(set(self.language_list))
- super().__init__(DependencyTypeName('cmake'), environment, kwargs, language=language)
+ super().__init__(environment, kwargs, language=language)
self.name = name
self.is_libtool = False
diff --git a/mesonbuild/dependencies/configtool.py b/mesonbuild/dependencies/configtool.py
index e2721fe3b..fa1d05afc 100644
--- a/mesonbuild/dependencies/configtool.py
+++ b/mesonbuild/dependencies/configtool.py
@@ -36,9 +36,10 @@ class ConfigToolDependency(ExternalDependency):
skip_version: T.Optional[str] = None
allow_default_for_cross = False
__strip_version = re.compile(r'^[0-9][0-9.]+')
+ 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__(DependencyTypeName('config-tool'), environment, kwargs, language=language)
+ super().__init__(environment, kwargs, language=language)
self.name = name
# You may want to overwrite the class version in some cases
self.tools = listify(kwargs.get('tools', self.tools))
diff --git a/mesonbuild/dependencies/dev.py b/mesonbuild/dependencies/dev.py
index 4d219a589..6b6e13000 100644
--- a/mesonbuild/dependencies/dev.py
+++ b/mesonbuild/dependencies/dev.py
@@ -17,7 +17,7 @@ from mesonbuild.interpreterbase.decorators import FeatureDeprecated
from .. import mesonlib, mlog
from ..tooldetect import get_llvm_tool_names
from ..mesonlib import version_compare, version_compare_many, search_version
-from .base import DependencyException, DependencyMethods, detect_compiler, strip_system_includedirs, strip_system_libdirs, SystemDependency, ExternalDependency, DependencyTypeName
+from .base import DependencyException, DependencyMethods, detect_compiler, strip_system_includedirs, strip_system_libdirs, SystemDependency, ExternalDependency
from .cmake import CMakeDependency
from .configtool import ConfigToolDependency
from .detect import packages
@@ -390,7 +390,7 @@ class LLVMDependencyCMake(CMakeDependency):
compilers = env.coredata.compilers[for_machine]
if not compilers or not {'c', 'cpp'}.issubset(compilers):
# Initialize basic variables
- ExternalDependency.__init__(self, DependencyTypeName('cmake'), env, kwargs)
+ ExternalDependency.__init__(self, env, kwargs)
# Initialize CMake specific variables
self.found_modules: T.List[str] = []
diff --git a/mesonbuild/dependencies/dub.py b/mesonbuild/dependencies/dub.py
index 2166a951e..e00a7232a 100644
--- a/mesonbuild/dependencies/dub.py
+++ b/mesonbuild/dependencies/dub.py
@@ -68,6 +68,8 @@ class DubDependency(ExternalDependency):
class_dubbin_searched = False
class_cache_dir = ''
+ type_name = DependencyTypeName('dub')
+
# Map Meson Compiler ID's to Dub Compiler ID's
_ID_MAP: T.Mapping[str, str] = {
'dmd': 'dmd',
@@ -76,7 +78,7 @@ class DubDependency(ExternalDependency):
}
def __init__(self, name: str, environment: 'Environment', kwargs: DependencyObjectKWs):
- super().__init__(DependencyTypeName('dub'), environment, kwargs, language='d')
+ super().__init__(environment, kwargs, language='d')
self.name = name
from ..compilers.d import DCompiler, d_feature_args
diff --git a/mesonbuild/dependencies/framework.py b/mesonbuild/dependencies/framework.py
index a23b4a66b..9c897614f 100644
--- a/mesonbuild/dependencies/framework.py
+++ b/mesonbuild/dependencies/framework.py
@@ -16,9 +16,11 @@ if T.TYPE_CHECKING:
class ExtraFrameworkDependency(ExternalDependency):
system_framework_paths: T.Optional[T.List[str]] = None
+ type_name = DependencyTypeName('extraframeworks')
+
def __init__(self, name: str, env: 'Environment', kwargs: DependencyObjectKWs, language: T.Optional[str] = None) -> None:
paths = stringlistify(kwargs.get('paths', []))
- super().__init__(DependencyTypeName('extraframeworks'), env, kwargs, language=language)
+ super().__init__(env, kwargs, language=language)
self.name = name
# Full path to framework directory
self.framework_path: T.Optional[str] = None
diff --git a/mesonbuild/dependencies/pkgconfig.py b/mesonbuild/dependencies/pkgconfig.py
index b628e005b..163f98959 100644
--- a/mesonbuild/dependencies/pkgconfig.py
+++ b/mesonbuild/dependencies/pkgconfig.py
@@ -306,10 +306,12 @@ class PkgConfigCLI(PkgConfigInterface):
class PkgConfigDependency(ExternalDependency):
+ type_name = DependencyTypeName('pkgconfig')
+
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__(DependencyTypeName('pkgconfig'), environment, kwargs, language=language)
+ super().__init__(environment, kwargs, language=language)
self.name = name
self.is_libtool = False
self.extra_paths = extra_paths or []
diff --git a/mesonbuild/dependencies/platform.py b/mesonbuild/dependencies/platform.py
index 49ec980b2..954556f41 100644
--- a/mesonbuild/dependencies/platform.py
+++ b/mesonbuild/dependencies/platform.py
@@ -15,8 +15,11 @@ if T.TYPE_CHECKING:
from .base import DependencyObjectKWs
class AppleFrameworks(ExternalDependency):
+
+ type_name = DependencyTypeName('appleframeworks')
+
def __init__(self, env: 'Environment', kwargs: DependencyObjectKWs) -> None:
- super().__init__(DependencyTypeName('appleframeworks'), env, kwargs)
+ super().__init__(env, kwargs)
modules = kwargs.get('modules', [])
if not modules:
raise DependencyException("AppleFrameworks dependency requires at least one module.")