summaryrefslogtreecommitdiff
path: root/mesonbuild
diff options
context:
space:
mode:
Diffstat (limited to 'mesonbuild')
-rw-r--r--mesonbuild/build.py14
-rw-r--r--mesonbuild/interpreter/interpreter.py18
-rw-r--r--mesonbuild/interpreter/interpreterobjects.py42
-rw-r--r--mesonbuild/interpreter/mesonmain.py7
-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
-rw-r--r--mesonbuild/programs.py11
14 files changed, 46 insertions, 91 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py
index 88666e9a9..3fee807d4 100644
--- a/mesonbuild/build.py
+++ b/mesonbuild/build.py
@@ -292,7 +292,7 @@ class Build:
self.stdlibs = PerMachine({}, {})
self.test_setups: T.Dict[str, TestSetup] = {}
self.test_setup_default_name = None
- self.find_overrides: T.Dict[str, T.Union[OverrideExecutable, programs.ExternalProgram, programs.OverrideProgram, LocalProgram]] = {}
+ self.find_overrides: T.Dict[str, T.Union[programs.ExternalProgram, LocalProgram]] = {}
self.searched_programs: T.Set[str] = set() # The list of all programs that have been searched for.
# If we are doing a cross build we need two caches, if we're doing a
@@ -3353,18 +3353,6 @@ class ConfigurationData(HoldableObject):
def keys(self) -> T.Iterator[str]:
return self.values.keys()
-class OverrideExecutable(Executable):
- def __init__(self, executable: Executable, version: str):
- self._executable = executable
- self._version = version
-
- def __getattr__(self, name: str) -> T.Any:
- _executable = object.__getattribute__(self, '_executable')
- return getattr(_executable, name)
-
- def get_version(self, interpreter: T.Optional[Interpreter] = None) -> str:
- return self._version
-
class LocalProgram(HoldableObject):
''' A wrapper for a program that may have build dependencies.'''
def __init__(self, program: T.Union[programs.ExternalProgram, Executable, CustomTarget, CustomTargetIndex], version: str,
diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py
index 62922c2b3..552e1331b 100644
--- a/mesonbuild/interpreter/interpreter.py
+++ b/mesonbuild/interpreter/interpreter.py
@@ -118,7 +118,6 @@ if T.TYPE_CHECKING:
from ..backend.backends import Backend
from ..interpreterbase.baseobjects import InterpreterObject, TYPE_var, TYPE_kwargs
from ..options import OptionDict
- from ..programs import OverrideProgram
from .type_checking import SourcesVarargsType
# Input source types passed to Targets
@@ -130,7 +129,7 @@ if T.TYPE_CHECKING:
BuildTargetSource = T.Union[mesonlib.FileOrString, build.GeneratedTypes, build.StructuredSources]
- ProgramVersionFunc = T.Callable[[T.Union[ExternalProgram, build.Executable, OverrideProgram]], str]
+ ProgramVersionFunc = T.Callable[[T.Union[ExternalProgram, build.LocalProgram]], str]
TestClass = T.TypeVar('TestClass', bound=Test)
@@ -441,7 +440,6 @@ class Interpreter(InterpreterBase, HoldableObject):
build.Generator: OBJ.GeneratorHolder,
build.GeneratedList: OBJ.GeneratedListHolder,
build.ExtractedObjects: OBJ.GeneratedObjectsHolder,
- build.OverrideExecutable: OBJ.OverrideExecutableHolder,
build.LocalProgram: OBJ.LocalProgramHolder,
build.RunTarget: OBJ.RunTargetHolder,
build.AliasTarget: OBJ.AliasTargetHolder,
@@ -1623,7 +1621,7 @@ class Interpreter(InterpreterBase, HoldableObject):
def program_from_overrides(self, command_names: T.List[mesonlib.FileOrString],
extra_info: T.List['mlog.TV_Loggable']
- ) -> T.Optional[T.Union[ExternalProgram, OverrideProgram, build.OverrideExecutable, build.LocalProgram]]:
+ ) -> T.Optional[T.Union[ExternalProgram, build.LocalProgram]]:
for name in command_names:
if not isinstance(name, str):
continue
@@ -1638,7 +1636,7 @@ class Interpreter(InterpreterBase, HoldableObject):
if isinstance(name, str):
self.build.searched_programs.add(name)
- def add_find_program_override(self, name: str, exe: T.Union[build.OverrideExecutable, ExternalProgram, OverrideProgram, build.LocalProgram]) -> None:
+ def add_find_program_override(self, name: str, exe: T.Union[ExternalProgram, build.LocalProgram]) -> None:
if name in self.build.searched_programs:
raise InterpreterException(f'Tried to override finding of executable "{name}" which has already been found.')
if name in self.build.find_overrides:
@@ -1663,7 +1661,7 @@ class Interpreter(InterpreterBase, HoldableObject):
search_dirs: T.Optional[T.List[str]] = None,
version_arg: T.Optional[str] = '',
version_func: T.Optional[ProgramVersionFunc] = None
- ) -> T.Union[ExternalProgram, build.OverrideExecutable, OverrideProgram, build.LocalProgram]:
+ ) -> T.Union[ExternalProgram, build.LocalProgram]:
args = mesonlib.listify(args)
extra_info: T.List[mlog.TV_Loggable] = []
@@ -1695,7 +1693,7 @@ class Interpreter(InterpreterBase, HoldableObject):
version_arg: T.Optional[str],
version_func: T.Optional[ProgramVersionFunc],
extra_info: T.List[mlog.TV_Loggable]
- ) -> T.Optional[T.Union[ExternalProgram, build.Executable, OverrideProgram, build.LocalProgram]]:
+ ) -> T.Optional[T.Union[ExternalProgram, build.LocalProgram]]:
progobj = self.program_from_overrides(args, extra_info)
if progobj:
return progobj
@@ -1731,7 +1729,7 @@ class Interpreter(InterpreterBase, HoldableObject):
return progobj
- def check_program_version(self, progobj: T.Union[ExternalProgram, build.Executable, OverrideProgram, build.LocalProgram],
+ def check_program_version(self, progobj: T.Union[ExternalProgram, build.LocalProgram],
wanted: T.Union[str, T.List[str]],
version_func: T.Optional[ProgramVersionFunc],
extra_info: T.List[mlog.TV_Loggable]) -> bool:
@@ -1758,7 +1756,7 @@ class Interpreter(InterpreterBase, HoldableObject):
def find_program_fallback(self, fallback: str, args: T.List[mesonlib.FileOrString],
default_options: OptionDict,
required: bool, extra_info: T.List[mlog.TV_Loggable]
- ) -> T.Optional[T.Union[ExternalProgram, build.Executable, OverrideProgram]]:
+ ) -> T.Optional[T.Union[ExternalProgram, build.LocalProgram]]:
mlog.log('Fallback to subproject', mlog.bold(fallback), 'which provides program',
mlog.bold(' '.join(args)))
sp_kwargs: kwtypes.DoSubproject = {
@@ -1785,7 +1783,7 @@ class Interpreter(InterpreterBase, HoldableObject):
@disablerIfNotFound
def func_find_program(self, node: mparser.BaseNode, args: T.Tuple[T.List[mesonlib.FileOrString]],
kwargs: 'kwtypes.FindProgram',
- ) -> T.Union['build.Executable', ExternalProgram, 'OverrideProgram']:
+ ) -> T.Union[ExternalProgram, build.LocalProgram]:
disabled, required, feature = extract_required_kwarg(kwargs, self.subproject)
if disabled:
assert feature, 'for mypy'
diff --git a/mesonbuild/interpreter/interpreterobjects.py b/mesonbuild/interpreter/interpreterobjects.py
index 82d0a75df..431086669 100644
--- a/mesonbuild/interpreter/interpreterobjects.py
+++ b/mesonbuild/interpreter/interpreterobjects.py
@@ -605,10 +605,10 @@ class DependencyHolder(ObjectHolder[Dependency]):
raise InterpreterException('as_shared method is only supported on declare_dependency() objects')
return self.held_object.get_as_shared(kwargs['recursive'])
-_EXTPROG = T.TypeVar('_EXTPROG', bound=ExternalProgram)
+_BASEPROG = T.TypeVar('_BASEPROG', bound=T.Union[ExternalProgram, build.LocalProgram])
-class _ExternalProgramHolder(ObjectHolder[_EXTPROG]):
- def __init__(self, ep: _EXTPROG, interpreter: 'Interpreter') -> None:
+class _BaseProgramHolder(ObjectHolder[_BASEPROG]):
+ def __init__(self, ep: _BASEPROG, interpreter: 'Interpreter') -> None:
super().__init__(ep, interpreter)
@noPosargs
@@ -619,15 +619,15 @@ class _ExternalProgramHolder(ObjectHolder[_EXTPROG]):
@noPosargs
@noKwargs
- @FeatureDeprecated('ExternalProgram.path', '0.55.0',
- 'use ExternalProgram.full_path() instead')
+ @FeatureDeprecated('Program.path', '0.55.0',
+ 'use Program.full_path() instead')
@InterpreterObject.method('path')
def path_method(self, args: T.List[TYPE_var], kwargs: TYPE_kwargs) -> str:
return self._full_path()
@noPosargs
@noKwargs
- @FeatureNew('ExternalProgram.full_path', '0.55.0')
+ @FeatureNew('Program.full_path', '0.55.0')
@InterpreterObject.method('full_path')
def full_path_method(self, args: T.List[TYPE_var], kwargs: TYPE_kwargs) -> str:
return self._full_path()
@@ -641,9 +641,11 @@ class _ExternalProgramHolder(ObjectHolder[_EXTPROG]):
@noPosargs
@noKwargs
- @FeatureNew('ExternalProgram.version', '0.62.0')
+ @FeatureNew('Program.version', '0.62.0')
@InterpreterObject.method('version')
def version_method(self, args: T.List[TYPE_var], kwargs: TYPE_kwargs) -> str:
+ if isinstance(self.held_object, build.LocalProgram) and isinstance(self.held_object.program, build.Executable):
+ FeatureNew.single_use('Program.version with an executable', '1.9.0', subproject=self.subproject, location=self.current_node)
if not self.found():
raise InterpreterException('Unable to get the version of a not-found external program')
try:
@@ -654,7 +656,10 @@ class _ExternalProgramHolder(ObjectHolder[_EXTPROG]):
def found(self) -> bool:
return self.held_object.found()
-class ExternalProgramHolder(_ExternalProgramHolder[ExternalProgram]):
+class ExternalProgramHolder(_BaseProgramHolder[ExternalProgram]):
+ pass
+
+class LocalProgramHolder(_BaseProgramHolder[build.LocalProgram]):
pass
class ExternalLibraryHolder(ObjectHolder[ExternalLibrary]):
@@ -1163,24 +1168,3 @@ class StructuredSourcesHolder(ObjectHolder[build.StructuredSources]):
def __init__(self, sources: build.StructuredSources, interp: 'Interpreter'):
super().__init__(sources, interp)
-
-class OverrideExecutableHolder(BuildTargetHolder[build.OverrideExecutable]):
- @noPosargs
- @noKwargs
- @FeatureNew('OverrideExecutable.version', '1.9.0')
- @InterpreterObject.method('version')
- def version_method(self, args: T.List[TYPE_var], kwargs: TYPE_kwargs) -> str:
- return self.held_object.get_version(self.interpreter)
-
-class LocalProgramHolder(ObjectHolder[build.LocalProgram]):
- @noPosargs
- @noKwargs
- @InterpreterObject.method('version')
- def version_method(self, args: T.List[TYPE_var], kwargs: TYPE_kwargs) -> str:
- return self.held_object.version
-
- @noPosargs
- @noKwargs
- @InterpreterObject.method('found')
- def found_method(self, args: T.List[TYPE_var], kwargs: TYPE_kwargs) -> bool:
- return True
diff --git a/mesonbuild/interpreter/mesonmain.py b/mesonbuild/interpreter/mesonmain.py
index 79ebd9af1..5a4d7f899 100644
--- a/mesonbuild/interpreter/mesonmain.py
+++ b/mesonbuild/interpreter/mesonmain.py
@@ -14,7 +14,7 @@ from .. import mlog, coredata
from ..mesonlib import MachineChoice
from ..options import OptionKey
-from ..programs import OverrideProgram, ExternalProgram
+from ..programs import ExternalProgram
from ..interpreter.type_checking import ENV_KW, ENV_METHOD_KW, ENV_SEPARATOR_KW, env_convertor_with_method
from ..interpreterbase import (MesonInterpreterObject, FeatureNew, FeatureDeprecated,
typed_pos_args, noArgsFlattening, noPosargs, noKwargs,
@@ -322,9 +322,10 @@ class MesonMain(MesonInterpreterObject):
self.interpreter.environment.build_dir)
if not os.path.exists(abspath):
raise InterpreterException(f'Tried to override {name} with a file that does not exist.')
- exe = OverrideProgram(name, self.interpreter.project_version, command=[abspath])
+ prog = ExternalProgram(name, command=[abspath], silent=True)
+ exe = build.LocalProgram(prog, self.interpreter.project_version)
elif isinstance(exe, build.Executable):
- exe = build.OverrideExecutable(exe, self.interpreter.project_version)
+ exe = build.LocalProgram(exe, self.interpreter.project_version)
self.interpreter.add_find_program_override(name, exe)
@typed_kwargs(
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,
diff --git a/mesonbuild/programs.py b/mesonbuild/programs.py
index 0abf09720..80acb98c8 100644
--- a/mesonbuild/programs.py
+++ b/mesonbuild/programs.py
@@ -357,17 +357,6 @@ class NonExistingExternalProgram(ExternalProgram): # lgtm [py/missing-call-to-i
return False
-class OverrideProgram(ExternalProgram):
-
- """A script overriding a program."""
-
- def __init__(self, name: str, version: str, command: T.Optional[T.List[str]] = None,
- silent: bool = False, search_dirs: T.Optional[T.List[T.Optional[str]]] = None,
- exclude_paths: T.Optional[T.List[str]] = None):
- super().__init__(name, command=command, silent=silent,
- search_dirs=search_dirs, exclude_paths=exclude_paths)
- self.cached_version = version
-
def find_external_program(env: 'Environment', for_machine: MachineChoice, name: str,
display_name: str, default_names: T.List[str],
allow_default_for_cross: bool = True,