Unnamed repository; edit this file 'description' to name the repository.
fix(rust-analyzer): use new pkgid spec to compare
Starting from cargo#13311, Cargo's compiler artifact message uses Package ID specification as package's identifier format.
Weihang Lo 2024-01-18
parent a8a0df1 · commit 277f24d
-rw-r--r--crates/proc-macro-srv/proc-macro-test/build.rs16
1 files changed, 14 insertions, 2 deletions
diff --git a/crates/proc-macro-srv/proc-macro-test/build.rs b/crates/proc-macro-srv/proc-macro-test/build.rs
index 6cf2b5643e..e6903fb8d4 100644
--- a/crates/proc-macro-srv/proc-macro-test/build.rs
+++ b/crates/proc-macro-srv/proc-macro-test/build.rs
@@ -92,12 +92,24 @@ fn main() {
panic!("proc-macro-test-impl failed to build");
}
+ // Old Package ID Spec
+ let repr = format!("{name} {version}");
+ // New Package Id Spec since rust-lang/cargo#13311
+ let pkgid = String::from_utf8(
+ Command::new(toolchain::cargo())
+ .current_dir(&staging_dir)
+ .args(["pkgid", name])
+ .output()
+ .unwrap().stdout,
+ )
+ .unwrap();
+ let pkgid = pkgid.trim();
+
let mut artifact_path = None;
for message in Message::parse_stream(output.stdout.as_slice()) {
if let Message::CompilerArtifact(artifact) = message.unwrap() {
if artifact.target.kind.contains(&"proc-macro".to_string()) {
- let repr = format!("{name} {version}");
- if artifact.package_id.repr.starts_with(&repr) {
+ if artifact.package_id.repr.starts_with(&repr) || artifact.package_id.repr == pkgid {
artifact_path = Some(PathBuf::from(&artifact.filenames[0]));
}
}