summaryrefslogtreecommitdiff
path: root/mesonbuild/modules/python.py
diff options
context:
space:
mode:
Diffstat (limited to 'mesonbuild/modules/python.py')
-rw-r--r--mesonbuild/modules/python.py17
1 files changed, 13 insertions, 4 deletions
diff --git a/mesonbuild/modules/python.py b/mesonbuild/modules/python.py
index 3d8969f41..78798e5c0 100644
--- a/mesonbuild/modules/python.py
+++ b/mesonbuild/modules/python.py
@@ -22,7 +22,7 @@ from ..interpreterbase import (
InvalidArguments, typed_pos_args, typed_kwargs, KwargInfo,
FeatureNew, disablerIfNotFound, InterpreterObject
)
-from ..mesonlib import MachineChoice, listify
+from ..mesonlib import MachineChoice
from ..options import OptionKey
from ..programs import ExternalProgram, NonExistingExternalProgram
@@ -51,6 +51,8 @@ if T.TYPE_CHECKING:
class ExtensionModuleKw(SharedModuleKw):
+ # Yes, these are different between SharedModule and ExtensionModule
+ install_dir: T.Union[str, bool, None] # type: ignore[misc]
subdir: NotRequired[T.Optional[str]]
MaybePythonProg = T.Union[NonExistingExternalProgram, 'PythonExternalProgram']
@@ -140,14 +142,21 @@ class PythonInstallation(_ExternalProgramHolder['PythonExternalProgram']):
@permittedKwargs(mod_kwargs)
@typed_pos_args('python.extension_module', str, varargs=(str, mesonlib.File, CustomTarget, CustomTargetIndex, GeneratedList, StructuredSources, ExtractedObjects, BuildTarget))
- @typed_kwargs('python.extension_module', *_MOD_KWARGS, _DEFAULTABLE_SUBDIR_KW, _LIMITED_API_KW, allow_unknown=True)
+ @typed_kwargs(
+ 'python.extension_module',
+ *_MOD_KWARGS,
+ _DEFAULTABLE_SUBDIR_KW,
+ _LIMITED_API_KW,
+ KwargInfo('install_dir', (str, bool, NoneType)),
+ allow_unknown=True
+ )
@InterpreterObject.method('extension_module')
def extension_module_method(self, args: T.Tuple[str, T.List[BuildTargetSource]], kwargs: ExtensionModuleKw) -> 'SharedModule':
- if 'install_dir' in kwargs:
+ if kwargs['install_dir'] is not None:
if kwargs['subdir'] is not None:
raise InvalidArguments('"subdir" and "install_dir" are mutually exclusive')
# the build_target() method now expects this to be correct.
- kwargs['install_dir'] = listify(kwargs['install_dir'])
+ kwargs['install_dir'] = [kwargs['install_dir']]
else:
# We want to remove 'subdir', but it may be None and we want to replace it with ''
# It must be done this way since we don't allow both `install_dir`