nixpkgs/pkgs/development/compilers/rust/rustfmt.nix
Bas van Dijk dc374218c9
rustfmt: make sure to test rustfmt instead of rustc
Co-Authored-By: symphorien <symphorien@users.noreply.github.com>
2019-08-19 12:54:40 +02:00

90 lines
3.7 KiB
Nix

{ stdenv, rustPlatform, rustc, Security }:
rustPlatform.buildRustPackage rec {
name = "rustfmt-${version}";
inherit (rustc) version src;
# the rust source tarball already has all the dependencies vendored, no need to fetch them again
cargoVendorDir = "vendor";
preBuild = "pushd src/tools/rustfmt";
preInstall = "popd";
buildInputs = stdenv.lib.optional stdenv.isDarwin Security;
# As of 1.0.0 and rustc 1.30 rustfmt requires a nightly compiler
RUSTC_BOOTSTRAP = 1;
# Without disabling the test the build fails with:
#
# Compiling rustc_llvm v0.0.0 (/private/tmp/nix-build-rustfmt-1.36.0.drv-0/rustc-1.36.0-src/src/librustc_llvm)
# ...
# error: failed to run custom build command for `rustc_llvm v0.0.0
# (/private/tmp/nix-build-rustfmt-1.36.0.drv-0/rustc-1.36.0-src/src/librustc_llvm)`
#
# Caused by:
# process didn't exit successfully:
# `/private/tmp/nix-build-rustfmt-1.36.0.drv-0/rustc-1.36.0-src/target/debug/build/rustc_llvm-4d3eb1eff32fd46b/build-script-build` (exit code: 101)
# --- stdout
# cargo:rerun-if-env-changed=REAL_LIBRARY_PATH_VAR
# cargo:rerun-if-env-changed=REAL_LIBRARY_PATH
#
# --- stderr
# thread 'main' panicked at 'REAL_LIBRARY_PATH_VAR', src/libcore/option.rs:1036:5
# note: Run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
#
# Setting the following:
#
# # This mimics https://github.com/rust-lang/rust/blob/1.36.0/src/bootstrap/util.rs#L58:L70
# REAL_LIBRARY_PATH_VAR =
# if stdenv.isDarwin then "DYLD_LIBRARY_PATH"
# else "LD_LIBRARY_PATH";
#
# Results in:
#
# Compiling rustc_llvm v0.0.0 (/private/tmp/nix-build-rustfmt-1.36.0.drv-0/rustc-1.36.0-src/src/librustc_llvm)
# ...
# error: failed to run custom build command for `rustc_llvm v0.0.0 (/private/tmp/nix-build-rustfmt-1.36.0.drv-0/rustc-1.36.0-src/src/librustc_llvm)`
#
# Caused by:
# process didn't exit successfully: `/private/tmp/nix-build-rustfmt-1.36.0.drv-0/rustc-1.36.0-src/target/debug/build/rustc_llvm-4d3eb1eff32fd46b/build-script-build` (exit code: 1)
# --- stdout
# cargo:rerun-if-env-changed=REAL_LIBRARY_PATH_VAR
# cargo:rerun-if-env-changed=REAL_LIBRARY_PATH
# cargo:rerun-if-changed=llvm-config
# cargo:rerun-if-env-changed=LLVM_CONFIG
#
#
# failed to execute command: "llvm-config" "--version"
# error: No such file or directory (os error 2)
#
# Adding `llvmSharedForBuild` to rustc's `passthru` and adding
# `rustc.llvmSharedForBuild` to the `buildInputs` fixes this but then the
# build fails lateron with:
#
# Compiling rustc_llvm v0.0.0 (/private/tmp/nix-build-rustfmt-1.36.0.drv-0/rustc-1.36.0-src/src/librustc_llvm)
# ...
# error[E0658]: use of unstable library feature 'rustc_private': this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via `Cargo.toml` instead?
# --> src/librustc_llvm/lib.rs:9:1
# |
# 9 | extern crate rustc_cratesio_shim;
# | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
# |
# = note: for more information, see https://github.com/rust-lang/rust/issues/27812
# = help: add #![feature(rustc_private)] to the crate attributes to enable
#
# error: aborting due to previous error
#
# For more information about this error, try `rustc --explain E0658`.
#
# error: Could not compile `rustc_llvm`.
doCheck = false;
meta = with stdenv.lib; {
description = "A tool for formatting Rust code according to style guidelines";
homepage = https://github.com/rust-lang-nursery/rustfmt;
license = with licenses; [ mit asl20 ];
maintainers = with maintainers; [ globin basvandijk ];
platforms = platforms.all;
};
}