summary refs log tree commit diff
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)
downloadnixpkgs-044a8a24ed2361154de316ad0ba82cba8fd7631c.tar
nixpkgs-044a8a24ed2361154de316ad0ba82cba8fd7631c.tar.gz
nixpkgs-044a8a24ed2361154de316ad0ba82cba8fd7631c.tar.bz2
nixpkgs-044a8a24ed2361154de316ad0ba82cba8fd7631c.tar.lz
nixpkgs-044a8a24ed2361154de316ad0ba82cba8fd7631c.tar.xz
nixpkgs-044a8a24ed2361154de316ad0ba82cba8fd7631c.tar.zst
nixpkgs-044a8a24ed2361154de316ad0ba82cba8fd7631c.zip
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 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..47a84e5ca2b 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