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]: https://github.com/rust-lang/rust/pull/105609
[clippy.nix]: https://github.com/NixOS/nixpkgs/blob/c8cf570dae9b41f30395b71f9b432418b4ff0ebc/pkgs/development/compilers/rust/clippy.nix#L27-L36

authored by Javier Olaechea and committed by winter.bsky.social dd584d82 d6259e6e

+11
+11
pkgs/development/compilers/rust/rustfmt.nix
··· 15 15 rustc.llvm 16 16 ] ++ lib.optional stdenv.isDarwin Security; 17 17 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 + 18 29 # As of 1.0.0 and rustc 1.30 rustfmt requires a nightly compiler 19 30 RUSTC_BOOTSTRAP = 1; 20 31