summaryrefslogtreecommitdiffstats
path: root/pkgs/build-support
diff options
context:
space:
mode:
authorAndreas Rammhold <andreas@rammhold.de>2019-02-18 00:10:36 +0100
committerAndreas Rammhold <andreas@rammhold.de>2019-02-18 00:10:36 +0100
commit044a8a24ed2361154de316ad0ba82cba8fd7631c (patch)
tree69a1e2fa8a92990aca6cdd39f161ed130ebfc5f8 /pkgs/build-support
parent5d42605b918f80a8cf4964ad42023791cae89e67 (diff)
buildRustCrate: pass extraRustcOpts to configure crate
Previously build flags would not be available during the configure phase while they might be required to build the `build.rs` file.
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.nix4
3 files changed, 27 insertions, 9 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..47a84e5ca2b8 100644
--- a/pkgs/build-support/rust/build-rust-crate/default.nix
+++ b/pkgs/build-support/rust/build-rust-crate/default.nix
@@ -136,13 +136,13 @@ stdenv.mkDerivation (rec {
(crate.type or ["lib"]);
colors = lib.attrByPath [ "colors" ] "always" crate;
extraLinkFlags = builtins.concatStringsSep " " (crate.extraLinkFlags or []);
+ extraRustcOpts = (if crate ? extraRustcOpts then crate.extraRustcOpts else []) ++ extraRustcOpts_;
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