about summary refs log tree commit diff
path: root/pkgs/build-support/rust
diff options
context:
space:
mode:
authorRicardo M. Correia <rcorreia@wizy.org>2015-05-29 19:35:31 +0200
committerRicardo M. Correia <rcorreia@wizy.org>2015-05-29 19:46:20 +0200
commitd7ebe7a4f3e3d1f4fdd450f8f80a005e6d80e8c5 (patch)
tree733ccd21ef611151f2c7e93add9ca8d502053f11 /pkgs/build-support/rust
parent023f0f79922eef4301f95cdd2d25f4de3c018b35 (diff)
downloadnixlib-d7ebe7a4f3e3d1f4fdd450f8f80a005e6d80e8c5.tar
nixlib-d7ebe7a4f3e3d1f4fdd450f8f80a005e6d80e8c5.tar.gz
nixlib-d7ebe7a4f3e3d1f4fdd450f8f80a005e6d80e8c5.tar.bz2
nixlib-d7ebe7a4f3e3d1f4fdd450f8f80a005e6d80e8c5.tar.lz
nixlib-d7ebe7a4f3e3d1f4fdd450f8f80a005e6d80e8c5.tar.xz
nixlib-d7ebe7a4f3e3d1f4fdd450f8f80a005e6d80e8c5.tar.zst
nixlib-d7ebe7a4f3e3d1f4fdd450f8f80a005e6d80e8c5.zip
buildRustPackage: Accept `srcs` attribute as well
Add support for building Rust packages that have multiple sources, i.e.,
that use the `srcs` and `sourceRoot` attributes instead of just `src`.
Diffstat (limited to 'pkgs/build-support/rust')
-rw-r--r--pkgs/build-support/rust/default.nix10
-rw-r--r--pkgs/build-support/rust/fetch-builder.sh17
-rw-r--r--pkgs/build-support/rust/fetchcargo.nix12
3 files changed, 16 insertions, 23 deletions
diff --git a/pkgs/build-support/rust/default.nix b/pkgs/build-support/rust/default.nix
index 87115e392daf..cd19782e6115 100644
--- a/pkgs/build-support/rust/default.nix
+++ b/pkgs/build-support/rust/default.nix
@@ -1,5 +1,11 @@
 { stdenv, cacert, git, rustc, cargo, rustRegistry }:
-{ name, src, depsSha256, buildInputs ? [], cargoUpdateHook ? "", ... } @ args:
+{ name, depsSha256
+, src ? null
+, srcs ? null
+, sourceRoot ? null
+, buildInputs ? []
+, cargoUpdateHook ? ""
+, ... } @ args:
 
 let
   fetchDeps = import ./fetchcargo.nix {
@@ -7,7 +13,7 @@ let
   };
 
   cargoDeps = fetchDeps {
-    inherit name src cargoUpdateHook;
+    inherit name src srcs sourceRoot cargoUpdateHook;
     sha256 = depsSha256;
   };
 
diff --git a/pkgs/build-support/rust/fetch-builder.sh b/pkgs/build-support/rust/fetch-builder.sh
deleted file mode 100644
index faa17e653289..000000000000
--- a/pkgs/build-support/rust/fetch-builder.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-source $stdenv/setup
-
-# cargo-fetch needs to write to Cargo.lock, even to do nothing. We
-# create a fake checkout with symlinks and and editable Cargo.lock.
-mkdir copy
-cd copy
-for f in $(ls $src); do
-  ln -s $src/"$f" .
-done
-rm Cargo.lock
-cp $src/Cargo.lock .
-chmod +w Cargo.lock
-
-$fetcher . $out
-
-cd ..
-rm -rf copy
diff --git a/pkgs/build-support/rust/fetchcargo.nix b/pkgs/build-support/rust/fetchcargo.nix
index 7ebd02a485d7..575df64c6b29 100644
--- a/pkgs/build-support/rust/fetchcargo.nix
+++ b/pkgs/build-support/rust/fetchcargo.nix
@@ -1,12 +1,16 @@
 { stdenv, cacert, git, rustc, cargo, rustRegistry }:
-{ name ? "cargo-deps", src, sha256, cargoUpdateHook ? "" }:
+{ name ? "cargo-deps", src, srcs, sourceRoot, sha256, cargoUpdateHook ? "" }:
 
 stdenv.mkDerivation {
   name = "${name}-fetch";
   buildInputs = [ rustc cargo git ];
-  builder = ./fetch-builder.sh;
-  fetcher = ./fetch-cargo-deps;
-  inherit src rustRegistry cargoUpdateHook;
+  inherit src srcs sourceRoot rustRegistry cargoUpdateHook;
+
+  phases = "unpackPhase installPhase";
+
+  installPhase = ''
+    ${./fetch-cargo-deps} . "$out"
+  '';
 
   outputHashAlgo = "sha256";
   outputHashMode = "recursive";