Carnix: 0.7.2 -> 0.8.10 (#40587)

Carnix: splits input into two parts: creates from creates.io and local ones
This commit is contained in:
Pierre-Etienne Meunier
2018-10-28 00:06:29 +01:00
committed by Joachim Schiele
parent a3e367ff4b
commit ae3b4655a4
6 changed files with 2353 additions and 1454 deletions
@@ -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;