diff options
author | Andreas Rammhold <andreas@rammhold.de> | 2019-02-18 00:10:36 +0100 |
---|---|---|
committer | Andreas Rammhold <andreas@rammhold.de> | 2019-02-18 00:10:36 +0100 |
commit | 044a8a24ed2361154de316ad0ba82cba8fd7631c (patch) | |
tree | 69a1e2fa8a92990aca6cdd39f161ed130ebfc5f8 /pkgs/build-support | |
parent | 5d42605b918f80a8cf4964ad42023791cae89e67 (diff) | |
download | nixpkgs-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')
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 |