diff options
author | Andreas Rammhold <andreas@rammhold.de> | 2019-02-24 23:56:13 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-02-24 23:56:13 +0100 |
commit | 8b20328230519b9459ac7d696e302ebd72f45875 (patch) | |
tree | 3ae5c93377d88830108ec2b72b6e1312ab088975 /pkgs/build-support/rust | |
parent | 66cead586375caa21bf026bb55f8e4784403f02a (diff) | |
parent | 6a3b144d02d8b1215142be610ec9b8c1f2213094 (diff) | |
download | nixpkgs-8b20328230519b9459ac7d696e302ebd72f45875.tar nixpkgs-8b20328230519b9459ac7d696e302ebd72f45875.tar.gz nixpkgs-8b20328230519b9459ac7d696e302ebd72f45875.tar.bz2 nixpkgs-8b20328230519b9459ac7d696e302ebd72f45875.tar.lz nixpkgs-8b20328230519b9459ac7d696e302ebd72f45875.tar.xz nixpkgs-8b20328230519b9459ac7d696e302ebd72f45875.tar.zst nixpkgs-8b20328230519b9459ac7d696e302ebd72f45875.zip |
Merge pull request #55972 from andir/rust-editions
buildRustCrate support editions
Diffstat (limited to 'pkgs/build-support/rust')
3 files changed, 30 insertions, 10 deletions
diff --git a/pkgs/build-support/rust/build-rust-crate/build-crate.nix b/pkgs/build-support/rust/build-rust-crate/build-crate.nix index 252a0ff521f..0978f7e1756 100644 --- a/pkgs/build-support/rust/build-rust-crate/build-crate.nix +++ b/pkgs/build-support/rust/build-rust-crate/build-crate.nix @@ -8,11 +8,11 @@ let deps = makeDeps dependencies; - rustcOpts = - lib.lists.foldl' (opts: opt: opts + " " + opt) - (if release then "-C opt-level=3" else "-C debuginfo=2") - (["-C codegen-units=1"] ++ extraRustcOpts); - rustcMeta = "-C metadata=${metadata} -C extra-filename=-${metadata}"; + rustcOpts = + lib.lists.foldl' (opts: opt: opts + " " + opt) + (if release then "-C opt-level=3" else "-C debuginfo=2") + (["-C codegen-units=1"] ++ extraRustcOpts); + rustcMeta = "-C metadata=${metadata} -C extra-filename=-${metadata}"; # Some platforms have different names for rustc. rustPlatform = diff --git a/pkgs/build-support/rust/build-rust-crate/configure-crate.nix b/pkgs/build-support/rust/build-rust-crate/configure-crate.nix index 7630c6471dc..700dff8499f 100644 --- a/pkgs/build-support/rust/build-rust-crate/configure-crate.nix +++ b/pkgs/build-support/rust/build-rust-crate/configure-crate.nix @@ -1,9 +1,27 @@ { lib, stdenv, echo_build_heading, noisily, makeDeps }: -{ build, buildDependencies, colors, completeBuildDeps, completeDeps, crateAuthors, crateFeatures, crateName, crateVersion, extraLinkFlags, libName, libPath, release, target_os, verbose, workspace_member }: +{ build +, buildDependencies +, colors +, completeBuildDeps +, completeDeps +, crateAuthors +, crateFeatures +, crateName +, crateVersion +, extraLinkFlags +, extraRustcOpts +, libName +, libPath +, release +, target_os +, verbose +, workspace_member }: let version_ = lib.splitString "-" crateVersion; versionPre = if lib.tail version_ == [] then "" else builtins.elemAt version_ 1; version = lib.splitString "." (lib.head version_); - rustcOpts = (if release then "-C opt-level=3" else "-C debuginfo=2"); + rustcOpts = lib.lists.foldl' (opts: opt: opts + " " + opt) + (if release then "-C opt-level=3" else "-C debuginfo=2") + (["-C codegen-units=1"] ++ extraRustcOpts); buildDeps = makeDeps buildDependencies; authors = lib.concatStringsSep ":" crateAuthors; optLevel = if release then 3 else 0; diff --git a/pkgs/build-support/rust/build-rust-crate/default.nix b/pkgs/build-support/rust/build-rust-crate/default.nix index dbb2f1b80cc..fd7b6ec7dda 100644 --- a/pkgs/build-support/rust/build-rust-crate/default.nix +++ b/pkgs/build-support/rust/build-rust-crate/default.nix @@ -71,7 +71,7 @@ let crate = crate_ // (lib.attrByPath [ crate_.crateName ] (attr: {}) crateOverr processedAttrs = [ "src" "buildInputs" "crateBin" "crateLib" "libName" "libPath" "buildDependencies" "dependencies" "features" - "crateName" "version" "build" "authors" "colors" + "crateName" "version" "build" "authors" "colors" "edition" ]; extraDerivationAttrs = lib.filterAttrs (n: v: ! lib.elem n processedAttrs) crate; buildInputs_ = buildInputs; @@ -136,13 +136,15 @@ stdenv.mkDerivation (rec { (crate.type or ["lib"]); colors = lib.attrByPath [ "colors" ] "always" crate; extraLinkFlags = builtins.concatStringsSep " " (crate.extraLinkFlags or []); + edition = crate.edition or null; + extraRustcOpts = (if crate ? extraRustcOpts then crate.extraRustcOpts else []) ++ extraRustcOpts_ ++ (lib.optional (edition != null) "--edition ${edition}"); + configurePhase = configureCrate { inherit crateName buildDependencies completeDeps completeBuildDeps crateFeatures libName build workspace_member release libPath crateVersion - extraLinkFlags + extraLinkFlags extraRustcOpts crateAuthors verbose colors target_os; }; - extraRustcOpts = (if crate ? extraRustcOpts then crate.extraRustcOpts else []) ++ extraRustcOpts_; buildPhase = buildCrate { inherit crateName dependencies crateFeatures libName release libPath crateType |