From c58f4f3539101bbee29ea4a049e39e578e28b4e9 Mon Sep 17 00:00:00 2001 From: Eli Schwartz Date: Wed, 18 Aug 2021 15:30:40 -0400 Subject: [PATCH] Fix incorrect .name attribute for python program It is always set to python3 even if we asked for python2... (cherry picked from commit 445f08869bb076a32a59653ef0db22d77366745e) --- mesonbuild/modules/python.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/mesonbuild/modules/python.py b/mesonbuild/modules/python.py index 076825a90..032f7a01f 100644 --- a/mesonbuild/modules/python.py +++ b/mesonbuild/modules/python.py @@ -284,7 +284,7 @@ class PythonExternalProgram(ExternalProgram): if ext_prog is None: super().__init__(name, command=command, silent=True) else: - self.name = ext_prog.name + self.name = name self.command = ext_prog.command self.path = ext_prog.path self.info: T.Dict[str, str] = {} @@ -515,13 +515,15 @@ class PythonModule(ExtensionModule): want_modules = mesonlib.extract_as_list(kwargs, 'modules') # type: T.List[str] found_modules = [] # type: T.List[str] missing_modules = [] # type: T.List[str] + fallback = args[0] if args else '' + display_name = fallback or 'python' if len(args) > 1: raise InvalidArguments('find_installation takes zero or one positional argument.') name_or_path = state.environment.lookup_binary_entry(MachineChoice.HOST, 'python') if name_or_path is None and args: - name_or_path = args[0] + name_or_path = fallback if not isinstance(name_or_path, str): raise InvalidArguments('find_installation argument must be a string.') @@ -532,8 +534,8 @@ class PythonModule(ExtensionModule): if not name_or_path: python = PythonExternalProgram('python3', mesonlib.python_command) else: - tmp_python = ExternalProgram.from_entry('python3', name_or_path) - python = PythonExternalProgram('python3', ext_prog=tmp_python) + tmp_python = ExternalProgram.from_entry(display_name, name_or_path) + python = PythonExternalProgram(display_name, ext_prog=tmp_python) if not python.found() and mesonlib.is_windows(): pythonpath = self._get_win_pythonpath(name_or_path)