diff options
| author | Xavier Claessens <xclaessens@netflix.com> | 2024-12-01 10:53:16 -0500 |
|---|---|---|
| committer | Xavier Claessens <xclaesse@gmail.com> | 2024-12-03 08:05:37 -0500 |
| commit | 9e4feed91ac0c43bf60103c26c1ceb004c7bac0a (patch) | |
| tree | af40e6b2a751e5ca679a28d0f363ca87a0fe57ac | |
| parent | fd309fff248bb697498befa89c3b81049b8b2c0c (diff) | |
| download | meson-9e4feed91ac0c43bf60103c26c1ceb004c7bac0a.tar.gz | |
cargo: Fix crash when enabling feature on dev/build dependencies
| -rw-r--r-- | mesonbuild/cargo/interpreter.py | 15 |
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: |
