Unnamed repository; edit this file 'description' to name the repository.
Rollup merge of #120084 - weihanglo:pkgid-spec, r=Mark-Simulacrum
fix(rust-analyzer): use new pkgid spec to compare Starting from rust-lang/cargo#13311, Cargo's compiler artifact message uses Package ID specification as package's identifier format. Zulip topic: https://rust-lang.zulipchat.com/#narrow/stream/246057-t-cargo/topic/proc-macro-test.20bootstrap.20and.20pkgid.20JSON cc `@ehuss`
Nadrieril 2024-01-21
parent d2be11c · parent 277f24d · commit 622256d
-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]));
}
}