Fix KeyError in Python module
0e7fb07
introduced a subtile bug in the Python module.
If a python version is found, but is missing a required module,
it is added to the list of python installations, but the
`run_bytecompile` attribute for that version was not initialized.
Therefore, if any other python version added something to install, it
was raising a KeyError when trying to read the `run_bytecompile`
attribute for the python version with missing module.
This commit is contained in:
parent
43fe006190
commit
b290a82541
|
@ -74,6 +74,7 @@ class PythonExternalProgram(BasicPythonExternalProgram):
|
|||
if ret:
|
||||
self.platlib = self._get_path(state, 'platlib')
|
||||
self.purelib = self._get_path(state, 'purelib')
|
||||
self.run_bytecompile.setdefault(self.info['version'], False)
|
||||
return ret
|
||||
|
||||
def _get_path(self, state: T.Optional['ModuleState'], key: str) -> str:
|
||||
|
@ -544,7 +545,6 @@ class PythonModule(ExtensionModule):
|
|||
assert isinstance(python, PythonExternalProgram), 'for mypy'
|
||||
python = copy.copy(python)
|
||||
python.pure = kwargs['pure']
|
||||
python.run_bytecompile.setdefault(python.info['version'], False)
|
||||
return python
|
||||
|
||||
raise mesonlib.MesonBugException('Unreachable code was reached (PythonModule.find_installation).')
|
||||
|
|
|
@ -1,7 +1,19 @@
|
|||
project('python kwarg')
|
||||
project('python kwarg',
|
||||
default_options: [
|
||||
'python.bytecompile=-1',
|
||||
'python.purelibdir=/pure',
|
||||
]
|
||||
)
|
||||
|
||||
py = import('python')
|
||||
prog_python = py.find_installation('python3', modules : ['os', 'sys', 're'])
|
||||
prog_python = py.find_installation('python3', modules : ['os', 'sys', 're'], pure: true)
|
||||
assert(prog_python.found() == true, 'python not found when should be')
|
||||
|
||||
# In meson 1.2 - 1.3.2, there was a bug when a python installation
|
||||
# with a different version did not have a module, and we try to install
|
||||
# something with another python version...
|
||||
py.find_installation('python3.7', modules: ['notamodule'], required: false)
|
||||
prog_python.install_sources('a.py')
|
||||
|
||||
prog_python = py.find_installation('python3', modules : ['thisbetternotexistmod'], required : false)
|
||||
assert(prog_python.found() == false, 'python not found but reported as found')
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"installed": [
|
||||
{ "type": "python_file", "file": "pure/a.py"}
|
||||
]
|
||||
}
|
Loading…
Reference in New Issue