aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2021-10-07 11:12:04 +0200
committerNirbheek Chauhan <nirbheek.chauhan@gmail.com>2021-11-23 18:10:15 +0530
commit47ba919b2146c956c4a7221f4f078804122a6990 (patch)
tree99e86c92aa852782226088d7fa6dea83523206f2 /mesonbuild
parent5163a02fec8836a55952353fb598ac6ced3b6a3c (diff)
downloadmeson-47ba919b2146c956c4a7221f4f078804122a6990.zip
meson-47ba919b2146c956c4a7221f4f078804122a6990.tar.gz
meson-47ba919b2146c956c4a7221f4f078804122a6990.tar.bz2
rust: clean up inputs and outputs to bindgen
Make the handling of bindgen inputs consistent with the inputs and outputs of source_strings_to_files. However, for the first source argument reject anything that cannot possibly be an header file. This also fixes a mypy failure from the next patch, since ExtractedObjects does not have a zero-argument get_outputs method. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'mesonbuild')
-rw-r--r--mesonbuild/modules/unstable_rust.py10
1 files changed, 6 insertions, 4 deletions
diff --git a/mesonbuild/modules/unstable_rust.py b/mesonbuild/modules/unstable_rust.py
index 998dbfd..d0d9ca5 100644
--- a/mesonbuild/modules/unstable_rust.py
+++ b/mesonbuild/modules/unstable_rust.py
@@ -17,7 +17,7 @@ import typing as T
from . import ExtensionModule, ModuleReturnValue
from .. import mlog
-from ..build import BothLibraries, BuildTarget, CustomTargetIndex, Executable, GeneratedList, IncludeDirs, CustomTarget
+from ..build import BothLibraries, BuildTarget, CustomTargetIndex, Executable, ExtractedObjects, GeneratedList, IncludeDirs, CustomTarget
from ..dependencies import Dependency, ExternalLibrary
from ..interpreter.interpreter import TEST_KWARGS
from ..interpreterbase import ContainerTypeInfo, InterpreterException, KwargInfo, FeatureNew, typed_kwargs, typed_pos_args, noPosargs
@@ -27,7 +27,7 @@ if T.TYPE_CHECKING:
from . import ModuleState
from ..interpreter import Interpreter
from ..interpreter import kwargs as _kwargs
- from ..interpreter.interpreter import SourceInputs
+ from ..interpreter.interpreter import SourceInputs, SourceOutputs
from ..programs import ExternalProgram
from typing_extensions import TypedDict
@@ -168,7 +168,7 @@ class RustModule(ExtensionModule):
KwargInfo('include_directories', ContainerTypeInfo(list, IncludeDirs), default=[], listify=True),
KwargInfo(
'input',
- ContainerTypeInfo(list, (File, GeneratedList, BuildTarget, BothLibraries, CustomTargetIndex, CustomTarget, str), allow_empty=False),
+ ContainerTypeInfo(list, (File, GeneratedList, BuildTarget, BothLibraries, ExtractedObjects, CustomTargetIndex, CustomTarget, str), allow_empty=False),
default=[],
listify=True,
required=True,
@@ -184,7 +184,7 @@ class RustModule(ExtensionModule):
header, *_deps = self.interpreter.source_strings_to_files(kwargs['input'])
# Split File and Target dependencies to add pass to CustomTarget
- depends: T.List[T.Union[GeneratedList, BuildTarget, CustomTargetIndex, CustomTarget]] = []
+ depends: T.List['SourceOutputs'] = []
depend_files: T.List[File] = []
for d in _deps:
if isinstance(d, File):
@@ -203,6 +203,8 @@ class RustModule(ExtensionModule):
name: str
if isinstance(header, File):
name = header.fname
+ elif isinstance(header, (BuildTarget, BothLibraries, ExtractedObjects)):
+ raise InterpreterException('bindgen source file must be a C header, not an object or build target')
else:
name = header.get_outputs()[0]