summaryrefslogtreecommitdiff
path: root/mesonbuild/modules
diff options
context:
space:
mode:
authorXavier Claessens <xclaessens@netflix.com>2025-10-12 10:20:47 -0400
committerXavier Claessens <xclaesse@gmail.com>2025-10-15 12:15:39 -0400
commitbd33265b04ca609afe6bb895453c5757bbbbb27d (patch)
tree03b87a92694d2f7821612f6405540cc0e044ab6d /mesonbuild/modules
parent4795475595ef6b87074df9e38d09a3dff2690396 (diff)
downloadmeson-bd33265b04ca609afe6bb895453c5757bbbbb27d.tar.gz
Replace OverrideExecutable and OverrideProgram with LocalProgram
Diffstat (limited to 'mesonbuild/modules')
-rw-r--r--mesonbuild/modules/__init__.py5
-rw-r--r--mesonbuild/modules/_qt.py12
-rw-r--r--mesonbuild/modules/dlang.py5
-rw-r--r--mesonbuild/modules/gnome.py7
-rw-r--r--mesonbuild/modules/i18n.py2
-rw-r--r--mesonbuild/modules/icestorm.py2
-rw-r--r--mesonbuild/modules/python.py6
-rw-r--r--mesonbuild/modules/rust.py3
-rw-r--r--mesonbuild/modules/wayland.py3
9 files changed, 20 insertions, 25 deletions
diff --git a/mesonbuild/modules/__init__.py b/mesonbuild/modules/__init__.py
index f306f3ca5..5f088e9ed 100644
--- a/mesonbuild/modules/__init__.py
+++ b/mesonbuild/modules/__init__.py
@@ -18,7 +18,6 @@ if T.TYPE_CHECKING:
from ..interpreter import Interpreter
from ..interpreter.interpreter import ProgramVersionFunc
from ..interpreterbase import TYPE_var, TYPE_kwargs
- from ..programs import OverrideProgram
from ..dependencies import Dependency
from ..options import ElementaryOptionValues
@@ -75,14 +74,14 @@ class ModuleState:
required: bool = True,
version_func: T.Optional[ProgramVersionFunc] = None,
wanted: T.Union[str, T.List[str]] = '', silent: bool = False,
- for_machine: MachineChoice = MachineChoice.HOST) -> T.Union[ExternalProgram, build.OverrideExecutable, OverrideProgram, build.LocalProgram]:
+ for_machine: MachineChoice = MachineChoice.HOST) -> T.Union[ExternalProgram, build.LocalProgram]:
if not isinstance(prog, list):
prog = [prog]
return self._interpreter.find_program_impl(prog, required=required, version_func=version_func,
wanted=wanted, silent=silent, for_machine=for_machine)
def find_tool(self, name: str, depname: str, varname: str, required: bool = True,
- wanted: T.Optional[str] = None) -> T.Union[build.OverrideExecutable, ExternalProgram, OverrideProgram, build.LocalProgram]:
+ wanted: T.Optional[str] = None) -> T.Union[ExternalProgram, build.LocalProgram]:
# Look in overrides in case it's built as subproject
progobj = self._interpreter.program_from_overrides([name], [])
if progobj is not None:
diff --git a/mesonbuild/modules/_qt.py b/mesonbuild/modules/_qt.py
index 85aab1829..0f6d2ecb2 100644
--- a/mesonbuild/modules/_qt.py
+++ b/mesonbuild/modules/_qt.py
@@ -208,7 +208,7 @@ class QtBaseModule(ExtensionModule):
self.qt_version = qt_version
# It is important that this list does not change order as the order of
# the returned ExternalPrograms will change as well
- self.tools: T.Dict[str, T.Union[ExternalProgram, build.Executable, build.LocalProgram]] = {
+ self.tools: T.Dict[str, T.Union[ExternalProgram, build.LocalProgram]] = {
tool: NonExistingExternalProgram(tool) for tool in self._set_of_qt_tools
}
self.methods.update({
@@ -250,7 +250,7 @@ class QtBaseModule(ExtensionModule):
arg = ['-v']
# Ensure that the version of qt and each tool are the same
- def get_version(p: T.Union[ExternalProgram, build.Executable]) -> str:
+ def get_version(p: T.Union[ExternalProgram, build.LocalProgram]) -> str:
_, out, err = Popen_safe(p.get_command() + arg)
if name == 'lrelease' or not qt_dep.version.startswith('4'):
care = out
@@ -445,7 +445,7 @@ class QtBaseModule(ExtensionModule):
for s in sources:
qrc_deps.extend(self._parse_qrc_deps(state, s))
- cmd: T.List[T.Union[ExternalProgram, build.Executable, build.LocalProgram, str]]
+ cmd: T.List[T.Union[ExternalProgram, build.LocalProgram, str]]
cmd = [self.tools['rcc'], '-name', name, '-o', '@OUTPUT@']
cmd.extend(extra_args)
cmd.append('@INPUT@')
@@ -733,7 +733,7 @@ class QtBaseModule(ExtensionModule):
ts = os.path.basename(ts)
else:
outdir = state.subdir
- cmd: T.List[T.Union[ExternalProgram, build.Executable, build.LocalProgram, str]] = [self.tools['lrelease'], '@INPUT@', '-qm', '@OUTPUT@']
+ cmd: T.List[T.Union[ExternalProgram, build.LocalProgram, str]] = [self.tools['lrelease'], '@INPUT@', '-qm', '@OUTPUT@']
lrelease_target = build.CustomTarget(
f'qt{self.qt_version}-compile-{ts}',
outdir,
@@ -873,7 +873,7 @@ class QtBaseModule(ExtensionModule):
input_args.append(f'@INPUT{input_counter}@')
input_counter += 1
- cmd: T.List[T.Union[ExternalProgram, build.Executable, build.LocalProgram, str]]
+ cmd: T.List[T.Union[ExternalProgram, build.LocalProgram, str]]
cmd = [self.tools['moc'], '--collect-json', '-o', '@OUTPUT@']
cmd.extend(input_args)
return build.CustomTarget(
@@ -920,7 +920,7 @@ class QtBaseModule(ExtensionModule):
ressource_path = os.path.join('/', kwargs['module_prefix'], source_basename)
cachegen_inputs.append(ressource_path)
- cmd: T.List[T.Union[ExternalProgram, build.Executable, build.LocalProgram, str]]
+ cmd: T.List[T.Union[ExternalProgram, build.LocalProgram, str]]
cmd = [self.tools['qmlcachegen'], '-o', '@OUTPUT@', '--resource-name', f'qmlcache_{target_name}']
cmd.extend(kwargs['extra_args'])
cmd.append('--resource=@INPUT@')
diff --git a/mesonbuild/modules/dlang.py b/mesonbuild/modules/dlang.py
index 6d35e30ac..860a62481 100644
--- a/mesonbuild/modules/dlang.py
+++ b/mesonbuild/modules/dlang.py
@@ -22,12 +22,11 @@ if T.TYPE_CHECKING:
from typing_extensions import Literal, TypeAlias
from . import ModuleState
- from ..build import OverrideExecutable
from ..interpreter.interpreter import Interpreter
from ..interpreterbase.baseobjects import TYPE_kwargs
- from ..programs import ExternalProgram, OverrideProgram
+ from ..programs import ExternalProgram
- _AnyProgram: TypeAlias = T.Union[OverrideExecutable, ExternalProgram, OverrideProgram, LocalProgram]
+ _AnyProgram: TypeAlias = T.Union[ExternalProgram, LocalProgram]
_JSONTypes: TypeAlias = T.Union[str, int, bool, None, T.List['_JSONTypes'], T.Dict[str, '_JSONTypes']]
diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py
index b4d4265b8..6219e4ce0 100644
--- a/mesonbuild/modules/gnome.py
+++ b/mesonbuild/modules/gnome.py
@@ -33,7 +33,6 @@ from ..mesonlib import (
MachineChoice, MesonException, OrderedSet, Popen_safe, join_args, quote_arg
)
from ..options import OptionKey
-from ..programs import OverrideProgram
from ..scripts.gettext import read_linguas
if T.TYPE_CHECKING:
@@ -198,7 +197,7 @@ if T.TYPE_CHECKING:
vtail: T.Optional[str]
depends: T.List[T.Union[BuildTarget, CustomTarget, CustomTargetIndex]]
- ToolType: TypeAlias = T.Union[Executable, ExternalProgram, LocalProgram]
+ ToolType: TypeAlias = T.Union[ExternalProgram, LocalProgram]
# Differs from the CustomTarget version in that it straight defaults to True
@@ -809,7 +808,7 @@ class GnomeModule(ExtensionModule):
@functools.lru_cache(maxsize=None)
def _gir_has_option(self, option: str) -> bool:
exe = self.giscanner
- if isinstance(exe, (Executable, OverrideProgram)):
+ if isinstance(exe, LocalProgram):
# Handle overridden g-ir-scanner
assert option in {'--extra-library', '--sources-top-dirs'}
return True
@@ -1193,7 +1192,7 @@ class GnomeModule(ExtensionModule):
gir_inc_dirs: T.List[str] = []
- scan_command: T.List[T.Union[str, ToolType]] = [giscanner]
+ scan_command: T.List[T.Union[str, ToolType, Executable]] = [giscanner]
scan_command += ['--quiet']
scan_command += ['--no-libtool']
scan_command += ['--namespace=' + ns, '--nsversion=' + nsversion]
diff --git a/mesonbuild/modules/i18n.py b/mesonbuild/modules/i18n.py
index b3779f968..06e891714 100644
--- a/mesonbuild/modules/i18n.py
+++ b/mesonbuild/modules/i18n.py
@@ -259,7 +259,7 @@ class I18nModule(ExtensionModule):
'itstool_join': self.itstool_join,
'xgettext': self.xgettext,
})
- self.tools: T.Dict[str, T.Optional[T.Union[ExternalProgram, build.Executable, build.LocalProgram]]] = {
+ self.tools: T.Dict[str, T.Optional[T.Union[ExternalProgram, build.LocalProgram]]] = {
'itstool': None,
'msgfmt': None,
'msginit': None,
diff --git a/mesonbuild/modules/icestorm.py b/mesonbuild/modules/icestorm.py
index a2a947d7f..86af78d8b 100644
--- a/mesonbuild/modules/icestorm.py
+++ b/mesonbuild/modules/icestorm.py
@@ -29,7 +29,7 @@ class IceStormModule(ExtensionModule):
def __init__(self, interpreter: Interpreter) -> None:
super().__init__(interpreter)
- self.tools: T.Dict[str, T.Union[ExternalProgram, build.Executable, build.LocalProgram]] = {}
+ self.tools: T.Dict[str, T.Union[ExternalProgram, build.LocalProgram]] = {}
self.methods.update({
'project': self.project,
})
diff --git a/mesonbuild/modules/python.py b/mesonbuild/modules/python.py
index 6f5a63a0b..3ec446267 100644
--- a/mesonbuild/modules/python.py
+++ b/mesonbuild/modules/python.py
@@ -15,7 +15,7 @@ from ..dependencies import NotFoundDependency
from ..dependencies.detect import get_dep_identifier, find_external_dependency
from ..dependencies.python import BasicPythonExternalProgram, python_factory, _PythonDependencyBase
from ..interpreter import extract_required_kwarg, permitted_dependency_kwargs, primitives as P_OBJ
-from ..interpreter.interpreterobjects import _ExternalProgramHolder
+from ..interpreter.interpreterobjects import _BaseProgramHolder
from ..interpreter.type_checking import NoneType, DEPENDENCY_KWS, PRESERVE_PATH_KW, SHARED_MOD_KWS
from ..interpreterbase import (
noPosargs, noKwargs, permittedKwargs, ContainerTypeInfo,
@@ -109,9 +109,9 @@ _SUBDIR_KW = KwargInfo('subdir', str, default='')
_LIMITED_API_KW = KwargInfo('limited_api', str, default='', since='1.3.0')
_DEFAULTABLE_SUBDIR_KW = KwargInfo('subdir', (str, NoneType))
-class PythonInstallation(_ExternalProgramHolder['PythonExternalProgram']):
+class PythonInstallation(_BaseProgramHolder['PythonExternalProgram']):
def __init__(self, python: 'PythonExternalProgram', interpreter: 'Interpreter'):
- _ExternalProgramHolder.__init__(self, python, interpreter)
+ _BaseProgramHolder.__init__(self, python, interpreter)
info = python.info
prefix = self.interpreter.environment.coredata.optstore.get_value_for(OptionKey('prefix'))
assert isinstance(prefix, str), 'for mypy'
diff --git a/mesonbuild/modules/rust.py b/mesonbuild/modules/rust.py
index cd61b776d..3d0ad771e 100644
--- a/mesonbuild/modules/rust.py
+++ b/mesonbuild/modules/rust.py
@@ -33,7 +33,6 @@ if T.TYPE_CHECKING:
from ..interpreter import kwargs as _kwargs
from ..interpreter.interpreter import SourceInputs, SourceOutputs
from ..interpreter.interpreterobjects import Test
- from ..programs import OverrideProgram
from ..interpreter.type_checking import SourcesVarargsType
from typing_extensions import TypedDict, Literal
@@ -91,7 +90,7 @@ class RustModule(ExtensionModule):
def __init__(self, interpreter: Interpreter) -> None:
super().__init__(interpreter)
- self._bindgen_bin: T.Optional[T.Union[ExternalProgram, Executable, OverrideProgram, LocalProgram]] = None
+ self._bindgen_bin: T.Optional[T.Union[ExternalProgram, LocalProgram]] = None
if 'rust' in interpreter.compilers.host:
rustc = T.cast('RustCompiler', interpreter.compilers.host['rust'])
self._bindgen_rust_target = 'nightly' if rustc.is_nightly else rustc.version
diff --git a/mesonbuild/modules/wayland.py b/mesonbuild/modules/wayland.py
index 458a0a78d..675a6d974 100644
--- a/mesonbuild/modules/wayland.py
+++ b/mesonbuild/modules/wayland.py
@@ -15,7 +15,6 @@ if T.TYPE_CHECKING:
from typing_extensions import Literal, TypedDict
from . import ModuleState
- from ..build import Executable
from ..dependencies import Dependency
from ..interpreter import Interpreter
from ..programs import ExternalProgram
@@ -42,7 +41,7 @@ class WaylandModule(ExtensionModule):
self.protocols_dep: T.Optional[Dependency] = None
self.pkgdatadir: T.Optional[str] = None
- self.scanner_bin: T.Optional[T.Union[ExternalProgram, Executable, LocalProgram]] = None
+ self.scanner_bin: T.Optional[T.Union[ExternalProgram, LocalProgram]] = None
self.methods.update({
'scan_xml': self.scan_xml,