summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXavier Claessens <xclaessens@netflix.com>2024-12-01 10:53:16 -0500
committerXavier Claessens <xclaesse@gmail.com>2024-12-03 08:05:37 -0500
commit9e4feed91ac0c43bf60103c26c1ceb004c7bac0a (patch)
treeaf40e6b2a751e5ca679a28d0f363ca87a0fe57ac
parentfd309fff248bb697498befa89c3b81049b8b2c0c (diff)
downloadmeson-9e4feed91ac0c43bf60103c26c1ceb004c7bac0a.tar.gz
cargo: Fix crash when enabling feature on dev/build dependencies
-rw-r--r--mesonbuild/cargo/interpreter.py15
1 files changed, 11 insertions, 4 deletions
diff --git a/mesonbuild/cargo/interpreter.py b/mesonbuild/cargo/interpreter.py
index 0528c4c90..53c0a8095 100644
--- a/mesonbuild/cargo/interpreter.py
+++ b/mesonbuild/cargo/interpreter.py
@@ -17,6 +17,7 @@ import os
import shutil
import collections
import urllib.parse
+import itertools
import typing as T
from . import builder
@@ -546,8 +547,13 @@ class Interpreter:
def _add_dependency(self, pkg: PackageState, depname: str) -> None:
if depname in pkg.required_deps:
return
+ dep = pkg.manifest.dependencies.get(depname)
+ if not dep:
+ if depname in itertools.chain(pkg.manifest.dev_dependencies, pkg.manifest.build_dependencies):
+ # FIXME: Not supported yet
+ return
+ raise MesonException(f'Dependency {depname} not defined in {pkg.manifest.package.name} manifest')
pkg.required_deps.add(depname)
- dep = pkg.manifest.dependencies[depname]
dep_pkg, _ = self._fetch_package(dep.package, dep.api)
if dep.default_features:
self._enable_feature(dep_pkg, 'default')
@@ -580,9 +586,10 @@ class Interpreter:
pkg.optional_deps_features[depname].add(dep_f)
else:
self._add_dependency(pkg, depname)
- dep = pkg.manifest.dependencies[depname]
- dep_pkg = self._dep_package(dep)
- self._enable_feature(dep_pkg, dep_f)
+ dep = pkg.manifest.dependencies.get(depname)
+ if dep:
+ dep_pkg = self._dep_package(dep)
+ self._enable_feature(dep_pkg, dep_f)
elif f.startswith('dep:'):
self._add_dependency(pkg, f[4:])
else: