diff options
Diffstat (limited to 'pkgs/build-support/rust/build-rust-crate/default.nix')
-rw-r--r-- | pkgs/build-support/rust/build-rust-crate/default.nix | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/pkgs/build-support/rust/build-rust-crate/default.nix b/pkgs/build-support/rust/build-rust-crate/default.nix index a11cef9f1f46..ec11472bbaeb 100644 --- a/pkgs/build-support/rust/build-rust-crate/default.nix +++ b/pkgs/build-support/rust/build-rust-crate/default.nix @@ -4,7 +4,7 @@ # This can be useful for deploying packages with NixOps, and to share # binary dependencies between projects. -{ lib, stdenv, defaultCrateOverrides, fetchCrate, ncurses, rustc }: +{ lib, stdenv, defaultCrateOverrides, fetchCrate, rustc }: let # This doesn't appear to be officially documented anywhere yet. @@ -16,7 +16,7 @@ let makeDeps = dependencies: (lib.concatMapStringsSep " " (dep: let extern = lib.strings.replaceStrings ["-"] ["_"] dep.libName; in - (if dep.crateType == "lib" then + (if lib.lists.any (x: x == "lib") dep.crateType then " --extern ${extern}=${dep.out}/lib/lib${extern}-${dep.metadata}.rlib" else " --extern ${extern}=${dep.out}/lib/lib${extern}-${dep.metadata}${stdenv.hostPlatform.extensions.sharedLibrary}") @@ -86,7 +86,8 @@ stdenv.mkDerivation (rec { else fetchCrate { inherit (crate) crateName version sha256; }; name = "rust_${crate.crateName}-${crate.version}"; - buildInputs = [ rust ncurses ] ++ (crate.buildInputs or []) ++ buildInputs_; + depsBuildBuild = [ rust stdenv.cc ]; + buildInputs = (crate.buildInputs or []) ++ buildInputs_; dependencies = builtins.map (dep: dep.override { rust = rust; release = release; verbose = verbose; crateOverrides = crateOverrides; }) @@ -122,15 +123,16 @@ stdenv.mkDerivation (rec { ) "" crate.crateBin else ""; + hasCrateBin = crate ? crateBin; build = crate.build or ""; workspace_member = crate.workspace_member or "."; crateVersion = crate.version; crateAuthors = if crate ? authors && lib.isList crate.authors then crate.authors else []; crateType = - if lib.attrByPath ["procMacro"] false crate then "proc-macro" else - if lib.attrByPath ["plugin"] false crate then "dylib" else - (crate.type or "lib"); + if lib.attrByPath ["procMacro"] false crate then ["proc-macro"] else + if lib.attrByPath ["plugin"] false crate then ["dylib"] else + (crate.type or ["lib"]); colors = lib.attrByPath [ "colors" ] "always" crate; extraLinkFlags = builtins.concatStringsSep " " (crate.extraLinkFlags or []); configurePhase = configureCrate { @@ -143,7 +145,7 @@ stdenv.mkDerivation (rec { buildPhase = buildCrate { inherit crateName dependencies crateFeatures libName release libPath crateType - metadata crateBin verbose colors + metadata crateBin hasCrateBin verbose colors extraRustcOpts; }; installPhase = installCrate crateName metadata; |