summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2025-10-26 11:50:15 +0100
committerDylan Baker <dylan@pnwbakers.com>2025-10-29 11:34:19 -0700
commit940361f4596b5b12d10df28de2cca0f892135746 (patch)
treefb54ac9284a771c602845787d480130645a5f406
parent7945110915e438d4d47c26c5bfa510d88b99ac7a (diff)
downloadmeson-940361f4596b5b12d10df28de2cca0f892135746.tar.gz
cargo: propagate PackageState from the full resolution into workspaces
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r--mesonbuild/cargo/interpreter.py8
1 files changed, 6 insertions, 2 deletions
diff --git a/mesonbuild/cargo/interpreter.py b/mesonbuild/cargo/interpreter.py
index c7ee8e8fc..dc8bf4bdf 100644
--- a/mesonbuild/cargo/interpreter.py
+++ b/mesonbuild/cargo/interpreter.py
@@ -319,9 +319,13 @@ class Interpreter:
self._add_workspace_member(manifest_, ws, m)
def _add_workspace_member(self, manifest_: Manifest, ws: WorkspaceState, m: str) -> None:
- pkg = PackageState(manifest_, ws_subdir=ws.subdir, ws_member=m, downloaded=ws.downloaded)
- ws.packages[m] = pkg
+ key = PackageKey(manifest_.package.name, manifest_.package.api)
ws.packages_to_member[manifest_.package.name] = m
+ if key in self.packages:
+ ws.packages[m] = self.packages[key]
+ self._require_workspace_member(ws, m)
+ else:
+ ws.packages[m] = PackageState(manifest_, ws_subdir=ws.subdir, ws_member=m, downloaded=ws.downloaded)
def _get_workspace(self, manifest: T.Union[Workspace, Manifest], subdir: str, downloaded: bool) -> WorkspaceState:
ws = self.workspaces.get(subdir)