From c86b1a0bca28e5459530bef49afe127fd874a077 Mon Sep 17 00:00:00 2001 From: D Anzorge Date: Wed, 22 Mar 2023 16:11:36 +0100 Subject: [PATCH] rustPlatform.importCargoLock: handle workspace Cargo.toml false positives Since we grep for 'workspace', it's possible the script ends up running on a Cargo.toml that has the word 'workspace' in a comment, but does not actually use workspaces --- pkgs/build-support/rust/replace-workspace-values.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/pkgs/build-support/rust/replace-workspace-values.py b/pkgs/build-support/rust/replace-workspace-values.py index fe5462883302..f5108f840b33 100644 --- a/pkgs/build-support/rust/replace-workspace-values.py +++ b/pkgs/build-support/rust/replace-workspace-values.py @@ -63,8 +63,16 @@ def replace_dependencies( def main() -> None: + top_cargo_toml = load_file(sys.argv[2]) + + if "workspace" not in top_cargo_toml: + # If top_cargo_toml is not a workspace manifest, then this script was probably + # ran on something that does not actually use workspace dependencies + print(f"{sys.argv[2]} is not a workspace manifest, doing nothing.") + return + crate_manifest = load_file(sys.argv[1]) - workspace_manifest = load_file(sys.argv[2])["workspace"] + workspace_manifest = top_cargo_toml["workspace"] if "workspace" in crate_manifest: return