summaryrefslogtreecommitdiff
path: root/mesonbuild/cargo
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2023-06-02 12:11:45 -0400
committerXavier Claessens <xclaesse@gmail.com>2023-10-09 21:13:58 -0400
commitdc329f0f04d917da5bf295e013f393caed4a85fc (patch)
tree00ec4bd14f1af655fa049ec102649dad9e53f0f7 /mesonbuild/cargo
parentea42d2d01999c00c7fe7846de38416b8693bfb79 (diff)
downloadmeson-dc329f0f04d917da5bf295e013f393caed4a85fc.tar.gz
interpreter: Add support for cargo subproject
Diffstat (limited to 'mesonbuild/cargo')
-rw-r--r--mesonbuild/cargo/__init__.py5
-rw-r--r--mesonbuild/cargo/interpreter.py8
2 files changed, 12 insertions, 1 deletions
diff --git a/mesonbuild/cargo/__init__.py b/mesonbuild/cargo/__init__.py
index e69de29bb..0007b9d64 100644
--- a/mesonbuild/cargo/__init__.py
+++ b/mesonbuild/cargo/__init__.py
@@ -0,0 +1,5 @@
+__all__ = [
+ 'interpret'
+]
+
+from .interpreter import interpret
diff --git a/mesonbuild/cargo/interpreter.py b/mesonbuild/cargo/interpreter.py
index 68517ba45..12365bb1d 100644
--- a/mesonbuild/cargo/interpreter.py
+++ b/mesonbuild/cargo/interpreter.py
@@ -457,7 +457,13 @@ def _create_lib(cargo: Manifest, build: builder.Builder, crate_type: manifest.CR
]
-def interpret(cargo: Manifest, env: Environment) -> mparser.CodeBlockNode:
+def interpret(subp_name: str, subdir: str, env: Environment) -> mparser.CodeBlockNode:
+ package_name = subp_name[:-3] if subp_name.endswith('-rs') else subp_name
+ manifests = _load_manifests(os.path.join(env.source_dir, subdir))
+ cargo = manifests.get(package_name)
+ if not cargo:
+ raise MesonException(f'Cargo package {package_name!r} not found in {subdir}')
+
filename = os.path.join(cargo.subdir, cargo.path, 'Cargo.toml')
build = builder.Builder(filename)