From 4527567c9f83a8985a96a75577fd46c9bfa786d6 Mon Sep 17 00:00:00 2001 From: Weihang Lo Date: Fri, 22 Nov 2024 00:01:14 -0500 Subject: [PATCH] fix(build-std): always link to std when testing/running proc-macros --- src/cargo/core/compiler/compilation.rs | 5 ++++- tests/build-std/main.rs | 8 -------- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/src/cargo/core/compiler/compilation.rs b/src/cargo/core/compiler/compilation.rs index c31ee9ee4..7531f0fa6 100644 --- a/src/cargo/core/compiler/compilation.rs +++ b/src/cargo/core/compiler/compilation.rs @@ -315,7 +315,10 @@ impl<'gctx> Compilation<'gctx> { // libs from the sysroot that ships with rustc. This may not be // required (at least I cannot craft a situation where it // matters), but is here to be safe. - if self.gctx.cli_unstable().build_std.is_none() { + if self.gctx.cli_unstable().build_std.is_none() || + // Proc macros dynamically link to std, so set it anyway. + pkg.proc_macro() + { search_path.push(self.sysroot_target_libdir[&kind].clone()); } } diff --git a/tests/build-std/main.rs b/tests/build-std/main.rs index 07c6919fb..9906d0a89 100644 --- a/tests/build-std/main.rs +++ b/tests/build-std/main.rs @@ -386,15 +386,7 @@ fn test_proc_macro() { [COMPILING] foo v0.0.0 ([ROOT]/foo) [FINISHED] `test` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s [RUNNING] unittests src/lib.rs (target/debug/deps/foo-[HASH]) -dyld[[..]]: Library not loaded: @rpath/libstd-[HASH].dylib - Referenced from: <[..]> [ROOT]/foo/target/debug/deps/foo-[HASH] - Reason: tried: '[ROOT]/foo/target/debug/deps/libstd-[HASH].dylib' (no such file), '[ROOT]/foo/target/debug/libstd-[HASH].dylib' (no such file), '/usr/local/lib/libstd-[HASH].dylib' (no such file), '/usr/lib/libstd-[HASH].dylib' (no such file, not in dyld cache) -[ERROR] test failed, to rerun pass `--lib` - -Caused by: - process didn't exit successfully: `[ROOT]/foo/target/debug/deps/foo-[HASH]` ([..]) "#]]) - .with_status(101) .run(); }