summaryrefslogtreecommitdiffstats
path: root/pkgs/build-support
diff options
context:
space:
mode:
authorAndreas Rammhold <andreas@rammhold.de>2019-02-24 23:56:13 +0100
committerGitHub <noreply@github.com>2019-02-24 23:56:13 +0100
commit8b20328230519b9459ac7d696e302ebd72f45875 (patch)
tree3ae5c93377d88830108ec2b72b6e1312ab088975 /pkgs/build-support
parent66cead586375caa21bf026bb55f8e4784403f02a (diff)
parent6a3b144d02d8b1215142be610ec9b8c1f2213094 (diff)
Merge pull request #55972 from andir/rust-editions
buildRustCrate support editions
Diffstat (limited to 'pkgs/build-support')
-rw-r--r--pkgs/build-support/rust/build-rust-crate/build-crate.nix10
-rw-r--r--pkgs/build-support/rust/build-rust-crate/configure-crate.nix22
-rw-r--r--pkgs/build-support/rust/build-rust-crate/default.nix8
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 252a0ff521fd..0978f7e1756f 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 7630c6471dcd..700dff8499f9 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 dbb2f1b80cc9..fd7b6ec7ddaf 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