mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-17 15:22:59 +01:00
rustfmt: use the src as defined by the git submodule in rust
This commit makes sure rustc and rustfmt are compatible by setting rustfmt's src to the rustfmt git submodule as defined in: https://github.com/rust-lang/rust/tree/1.36.0/src/tools
This commit is contained in:
parent
c0e56afddb
commit
16cb2611d9
4 changed files with 91 additions and 35 deletions
|
@ -59,6 +59,7 @@
|
|||
pkgsBuildHost = pkgsBuildBuild // { targetPackages.stdenv = llvmPackages_5.stdenv; };
|
||||
pkgsBuildTarget = pkgsBuildTarget // { targetPackages.stdenv = llvmPackages_5.stdenv; };
|
||||
});
|
||||
rustfmt = self.callPackage ./rustfmt.nix { inherit Security; };
|
||||
cargo = self.callPackage ./cargo.nix {
|
||||
# Use boot package set to break cycle
|
||||
rustPlatform = bootRustPlatform;
|
||||
|
|
89
pkgs/development/compilers/rust/rustfmt.nix
Normal file
89
pkgs/development/compilers/rust/rustfmt.nix
Normal file
|
@ -0,0 +1,89 @@
|
|||
{ 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";
|
||||
postBuild = "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;
|
||||
};
|
||||
}
|
|
@ -1,34 +0,0 @@
|
|||
{ stdenv, fetchFromGitHub, rustPlatform, darwin }:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
name = "rustfmt-${version}";
|
||||
version = "1.2.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "rust-lang";
|
||||
repo = "rustfmt";
|
||||
rev = "v${version}";
|
||||
sha256 = "1k9p6sp8q87flx9vzg46880ir7likvbydai3g6q76278h86rn0v8";
|
||||
};
|
||||
|
||||
cargoSha256 = "08x6vy5v2vgrk3gsw3qcvv52a7hifsgcsnsg1phlk1ikaff21y4z";
|
||||
|
||||
buildInputs = stdenv.lib.optional stdenv.isDarwin darwin.apple_sdk.frameworks.Security;
|
||||
|
||||
# As of 1.0.0 and rustc 1.30 rustfmt requires a nightly compiler
|
||||
RUSTC_BOOTSTRAP = 1;
|
||||
|
||||
# we run tests in debug mode so tests look for a debug build of
|
||||
# rustfmt. Anyway this adds nearly no compilation time.
|
||||
preCheck = ''
|
||||
cargo build
|
||||
'';
|
||||
|
||||
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 = [ maintainers.globin ];
|
||||
platforms = platforms.all;
|
||||
};
|
||||
}
|
|
@ -8243,7 +8243,7 @@ in
|
|||
rls = callPackage ../development/tools/rust/rls {
|
||||
inherit (darwin.apple_sdk.frameworks) CoreFoundation Security;
|
||||
};
|
||||
rustfmt = callPackage ../development/tools/rust/rustfmt { };
|
||||
rustfmt = rustPackages.rustfmt;
|
||||
rustracer = callPackage ../development/tools/rust/racer {
|
||||
inherit (darwin.apple_sdk.frameworks) Security;
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue