aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2022-11-07 15:00:12 -0500
committerXavier Claessens <xavier.claessens@collabora.com>2022-12-07 11:58:36 -0500
commit548c9adad44ce88788356180fc2ec8e3665b3952 (patch)
treec1e227b54fdedbd861052e397ba797e878b8d556 /mesonbuild
parent302a29593a49c875adb5638375c1e5018efb7fb9 (diff)
downloadmeson-548c9adad44ce88788356180fc2ec8e3665b3952.zip
meson-548c9adad44ce88788356180fc2ec8e3665b3952.tar.gz
meson-548c9adad44ce88788356180fc2ec8e3665b3952.tar.bz2
Remove useless EmptyExternalProgram
It is only used by Environment.get_exe_wrapper() and every callers were handling None already. Type annotation was wrong, it already could return None for the case an exe wrapper is needed but none is provided.
Diffstat (limited to 'mesonbuild')
-rw-r--r--mesonbuild/backend/backends.py5
-rw-r--r--mesonbuild/environment.py8
-rw-r--r--mesonbuild/modules/gnome.py5
-rw-r--r--mesonbuild/programs.py19
4 files changed, 6 insertions, 31 deletions
diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py
index f5b09f3..27004f8 100644
--- a/mesonbuild/backend/backends.py
+++ b/mesonbuild/backend/backends.py
@@ -1108,10 +1108,7 @@ class Backend:
break
is_cross = self.environment.is_cross_build(test_for_machine)
- if is_cross and self.environment.need_exe_wrapper():
- exe_wrapper = self.environment.get_exe_wrapper()
- else:
- exe_wrapper = None
+ exe_wrapper = self.environment.get_exe_wrapper()
machine = self.environment.machines[exe.for_machine]
if machine.is_windows() or machine.is_cygwin():
extra_bdeps: T.List[T.Union[build.BuildTarget, build.CustomTarget]] = []
diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py
index a9df75e..9691cf1 100644
--- a/mesonbuild/environment.py
+++ b/mesonbuild/environment.py
@@ -25,9 +25,7 @@ from .mesonlib import (
search_version, MesonBugException
)
from . import mlog
-from .programs import (
- ExternalProgram, EmptyExternalProgram
-)
+from .programs import ExternalProgram
from .envconfig import (
BinaryTable, MachineInfo, Properties, known_cpu_families, CMakeVariables,
@@ -852,7 +850,7 @@ class Environment:
return value
return not machine_info_can_run(self.machines[for_machine])
- def get_exe_wrapper(self) -> ExternalProgram:
+ def get_exe_wrapper(self) -> T.Optional[ExternalProgram]:
if not self.need_exe_wrapper():
- return EmptyExternalProgram()
+ return None
return self.exe_wrapper
diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py
index 1d5e746..d0d7dbf 100644
--- a/mesonbuild/modules/gnome.py
+++ b/mesonbuild/modules/gnome.py
@@ -39,7 +39,7 @@ from ..interpreterbase.decorators import typed_pos_args
from ..mesonlib import (
MachineChoice, MesonException, OrderedSet, Popen_safe, join_args,
)
-from ..programs import OverrideProgram, EmptyExternalProgram
+from ..programs import OverrideProgram
from ..scripts.gettext import read_linguas
if T.TYPE_CHECKING:
@@ -1464,9 +1464,8 @@ class GnomeModule(ExtensionModule):
t_args.append(f'--{program_name}={path}')
if namespace:
t_args.append('--namespace=' + namespace)
- # if not need_exe_wrapper, we get an EmptyExternalProgram. If none provided, we get NoneType
exe_wrapper = state.environment.get_exe_wrapper()
- if not isinstance(exe_wrapper, (NoneType, EmptyExternalProgram)):
+ if exe_wrapper:
t_args.append('--run=' + ' '.join(exe_wrapper.get_command()))
t_args.append(f'--htmlargs={"@@".join(kwargs["html_args"])}')
t_args.append(f'--scanargs={"@@".join(kwargs["scan_args"])}')
diff --git a/mesonbuild/programs.py b/mesonbuild/programs.py
index 458faba..1d616aa 100644
--- a/mesonbuild/programs.py
+++ b/mesonbuild/programs.py
@@ -345,25 +345,6 @@ class NonExistingExternalProgram(ExternalProgram): # lgtm [py/missing-call-to-i
return False
-class EmptyExternalProgram(ExternalProgram): # lgtm [py/missing-call-to-init]
- '''
- A program object that returns an empty list of commands. Used for cases
- such as a cross file exe_wrapper to represent that it's not required.
- '''
-
- def __init__(self) -> None:
- self.name = None
- self.command = []
- self.path = None
-
- def __repr__(self) -> str:
- r = '<{} {!r} -> {!r}>'
- return r.format(self.__class__.__name__, self.name, self.command)
-
- def found(self) -> bool:
- return True
-
-
class OverrideProgram(ExternalProgram):
"""A script overriding a program."""