Skip to content

Commit dd584d8

Browse files
PuercoPopwinterqt
authored andcommitted
rustfmt: fix on darwin
Reading this [rust-issue] it seems that we have to link against rustc_driver. The [clippy.nix] expression already does something similar Of the 4 executables found in the result of building rustfmt only rustfmt and git-rustfmt needed to be linked. The other worked without linking to rustc_driver. [rust-issue]: rust-lang/rust#105609 [clippy.nix]: https://github.com/NixOS/nixpkgs/blob/c8cf570dae9b41f30395b71f9b432418b4ff0ebc/pkgs/development/compilers/rust/clippy.nix#L27-L36
1 parent d6259e6 commit dd584d8

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

pkgs/development/compilers/rust/rustfmt.nix

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,17 @@ rustPlatform.buildRustPackage rec {
1515
rustc.llvm
1616
] ++ lib.optional stdenv.isDarwin Security;
1717

18+
# rustfmt uses the rustc_driver and std private libraries, and Rust's build process forces them to have
19+
# an install name of `@rpath/...` [0] [1] instead of the standard on macOS, which is an absolute path
20+
# to itself.
21+
#
22+
# [0]: https://github.com/rust-lang/rust/blob/f77f4d55bdf9d8955d3292f709bd9830c2fdeca5/src/bootstrap/builder.rs#L1543
23+
# [1]: https://github.com/rust-lang/rust/blob/f77f4d55bdf9d8955d3292f709bd9830c2fdeca5/compiler/rustc_codegen_ssa/src/back/linker.rs#L323-L331
24+
preFixup = lib.optionalString stdenv.isDarwin ''
25+
install_name_tool -add_rpath "${rustPlatform.rust.rustc}/lib" "$out/bin/rustfmt"
26+
install_name_tool -add_rpath "${rustPlatform.rust.rustc}/lib" "$out/bin/git-rustfmt"
27+
'';
28+
1829
# As of 1.0.0 and rustc 1.30 rustfmt requires a nightly compiler
1930
RUSTC_BOOTSTRAP = 1;
2031

0 commit comments

Comments
 (0)