summaryrefslogtreecommitdiff
path: root/mesonbuild
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2025-10-23 14:54:52 +0200
committerDylan Baker <dylan@pnwbakers.com>2025-10-29 11:34:19 -0700
commit000ff395cb44f87ede718926d6b73269a35afdc0 (patch)
treec41d557a20b796a99e7335c5dc45c41966a102cd /mesonbuild
parentff0da8872cc7270e0f1a375666ccad6a52bc215f (diff)
downloadmeson-000ff395cb44f87ede718926d6b73269a35afdc0.tar.gz
cargo: ensure all prepared package are in self.packages
The next step is to ensure that all packages are in self.packages prior to _prepare_package. For now, instead, ensure that nothing breaks if the packages are _absent_ from self.packages. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'mesonbuild')
-rw-r--r--mesonbuild/cargo/interpreter.py6
1 files changed, 6 insertions, 0 deletions
diff --git a/mesonbuild/cargo/interpreter.py b/mesonbuild/cargo/interpreter.py
index ec5a93306..de40a3fac 100644
--- a/mesonbuild/cargo/interpreter.py
+++ b/mesonbuild/cargo/interpreter.py
@@ -243,6 +243,11 @@ class Interpreter:
self.workspaces[subdir] = ws
return ws
+ def _record_package(self, pkg: PackageState) -> None:
+ key = PackageKey(pkg.manifest.package.name, pkg.manifest.package.api)
+ if key not in self.packages:
+ self.packages[key] = pkg
+
def _require_workspace_member(self, ws: WorkspaceState, member: str) -> PackageState:
member = os.path.normpath(member)
pkg = ws.packages[member]
@@ -308,6 +313,7 @@ class Interpreter:
return pkg, False
def _prepare_package(self, pkg: PackageState) -> None:
+ self._record_package(pkg)
# Merge target specific dependencies that are enabled
cfgs = self._get_cfgs(MachineChoice.HOST)
for condition, dependencies in pkg.manifest.target.items():