about summary refs log tree commit diff
path: root/pkgs/development/tools
diff options
context:
space:
mode:
authorRicardo M. Correia <rcorreia@wizy.org>2015-05-12 17:30:11 +0200
committerRicardo M. Correia <rcorreia@wizy.org>2015-05-12 17:30:11 +0200
commit755df64ee36c3d59a2451dda626415618657f513 (patch)
tree32df0f963114fe2ca5de8f1b0da6edd774d86a08 /pkgs/development/tools
parent88fbc8a0dacc69677f58e66f09a07690402bc162 (diff)
parente40a43cd1f4ea69f9ec95fbcbbb89621db31ccae (diff)
downloadnixlib-755df64ee36c3d59a2451dda626415618657f513.tar
nixlib-755df64ee36c3d59a2451dda626415618657f513.tar.gz
nixlib-755df64ee36c3d59a2451dda626415618657f513.tar.bz2
nixlib-755df64ee36c3d59a2451dda626415618657f513.tar.lz
nixlib-755df64ee36c3d59a2451dda626415618657f513.tar.xz
nixlib-755df64ee36c3d59a2451dda626415618657f513.tar.zst
nixlib-755df64ee36c3d59a2451dda626415618657f513.zip
Merge pull request #7501 from wizeman/u/upd-rust
Add support for Rust / Cargo packaging
Diffstat (limited to 'pkgs/development/tools')
-rw-r--r--pkgs/development/tools/build-managers/cargo/common.nix12
-rw-r--r--pkgs/development/tools/build-managers/cargo/default.nix36
-rw-r--r--pkgs/development/tools/build-managers/cargo/snapshot.nix11
-rw-r--r--pkgs/development/tools/rust/racer/default.nix22
-rw-r--r--pkgs/development/tools/rust/racer/pr-232.patch26
5 files changed, 89 insertions, 18 deletions
diff --git a/pkgs/development/tools/build-managers/cargo/common.nix b/pkgs/development/tools/build-managers/cargo/common.nix
index f0d8f92dfaa3..84158e65a4d8 100644
--- a/pkgs/development/tools/build-managers/cargo/common.nix
+++ b/pkgs/development/tools/build-managers/cargo/common.nix
@@ -3,6 +3,16 @@
 {
   inherit version;
 
+  name = "cargo-${version}";
+
+  postInstall = ''
+    rm "$out/lib/rustlib/components" \
+       "$out/lib/rustlib/install.log" \
+       "$out/lib/rustlib/rust-installer-version" \
+       "$out/lib/rustlib/uninstall.sh" \
+       "$out/lib/rustlib/manifest-cargo"
+  '';
+
   platform = if stdenv.system == "i686-linux"
     then "i686-unknown-linux-gnu"
     else if stdenv.system == "x86_64-linux"
@@ -19,6 +29,4 @@
     license = [ licenses.mit licenses.asl20 ];
     platforms = platforms.linux;
   };
-
-  name = "cargo-${version}";
 }
diff --git a/pkgs/development/tools/build-managers/cargo/default.nix b/pkgs/development/tools/build-managers/cargo/default.nix
new file mode 100644
index 000000000000..8e7d8cf8ee83
--- /dev/null
+++ b/pkgs/development/tools/build-managers/cargo/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchgit, rustPlatform, file, curl, python, pkgconfig, openssl
+, cmake, zlib }:
+
+with ((import ./common.nix) { inherit stdenv; version = "2015-05-11"; });
+
+with rustPlatform;
+
+buildRustPackage rec {
+  inherit name version meta;
+
+  src = fetchgit {
+    url = "https://github.com/rust-lang/cargo.git";
+    rev = "a078e01ffab70738eafb7401704d1eaf90b94de2";
+    sha256 = "0vw62kxlmkajyix6n4cdz7w9l26dspjiw2fk4xkj33gzzc8rq9g8";
+    leaveDotGit = true;
+  };
+
+  depsSha256 = "1sk79w2wxvpgfkxr0nbrqqxdih4abiqvawdd88r2p9cqzrkdg8by";
+
+  buildInputs = [ file curl pkgconfig python openssl cmake zlib ];
+
+  configurePhase = ''
+    ./configure --enable-optimize --prefix=$out --local-cargo=${cargo}/bin/cargo
+  '';
+
+  buildPhase = "make";
+
+  # Disable check phase as there are lots of failures (some probably due to
+  # trying to access the network).
+  doCheck = false;
+
+  installPhase = ''
+    make install
+    ${postInstall}
+  '';
+}
diff --git a/pkgs/development/tools/build-managers/cargo/snapshot.nix b/pkgs/development/tools/build-managers/cargo/snapshot.nix
index 64aeb0736c17..a76fb4601e8b 100644
--- a/pkgs/development/tools/build-managers/cargo/snapshot.nix
+++ b/pkgs/development/tools/build-managers/cargo/snapshot.nix
@@ -19,11 +19,8 @@ let snapshotHash = if stdenv.system == "i686-linux"
     snapshotName = "cargo-nightly-${platform}.tar.gz";
 in
 
-
 stdenv.mkDerivation {
-  inherit name;
-  inherit version;
-  inherit meta;
+  inherit name version meta;
 
   src = fetchurl {
     url = "https://static-rust-lang-org.s3.amazonaws.com/cargo-dist/${snapshotDate}/${snapshotName}";
@@ -35,10 +32,8 @@ stdenv.mkDerivation {
   installPhase = ''
     mkdir -p "$out"
     ./install.sh "--prefix=$out"
-    rm "$out/lib/rustlib/components" \
-       "$out/lib/rustlib/install.log" \
-       "$out/lib/rustlib/rust-installer-version" \
-       "$out/lib/rustlib/uninstall.sh"
+
+    ${postInstall}
   '' + (if stdenv.isLinux then ''
     patchelf --interpreter "${stdenv.glibc}/lib/${stdenv.cc.dynamicLinker}" \
              --set-rpath "${stdenv.cc.cc}/lib/:${stdenv.cc.cc}/lib64/:${zlib}/lib" \
diff --git a/pkgs/development/tools/rust/racer/default.nix b/pkgs/development/tools/rust/racer/default.nix
index 4ef9cc6d285f..5169cd1567ca 100644
--- a/pkgs/development/tools/rust/racer/default.nix
+++ b/pkgs/development/tools/rust/racer/default.nix
@@ -1,18 +1,24 @@
-{stdenv, fetchgit, rustc, cargo, makeWrapper }:
+{stdenv, fetchgit, rustPlatform, makeWrapper }:
 
-stdenv.mkDerivation rec {
+with rustPlatform;
+
+buildRustPackage rec {
   #TODO add emacs support
-  name = "racer-git-2015-04-12";
+  name = "racer-git-2015-05-04";
   src = fetchgit {
     url = https://github.com/phildawes/racer;
-    rev = "5437e2074d87dfaab75a0f1bd2597bed61c0bbf1";
-    sha256 = "0a768gvjry86l0xa5q0122iyq7zn2h9adfniglsgrbs4fan49xyn";
+    rev = "bf2373ec08b0be03598283bd610c5b61bdb8738c";
+    sha256 = "0ldf05d19ghxk3fslxrc87j18zg8bam2y0ygdy456h37y2p1d1ck";
   };
 
-  buildInputs = [ rustc cargo makeWrapper ];
+  patches = [ ./pr-232.patch ];
+
+  depsSha256 = "0rinyh365znx39aygxyyxmi496pw0alblf2dl7l8fbmz63nkhfv2";
+
+  buildInputs = [ makeWrapper ];
 
-  buildPhase = ''
-    CARGO_HOME="$NIX_BUILD_TOP/.cargo" cargo build --release
+  preCheck = ''
+    export RUST_SRC_PATH="${rustc.src}/src"
   '';
 
   installPhase = ''
diff --git a/pkgs/development/tools/rust/racer/pr-232.patch b/pkgs/development/tools/rust/racer/pr-232.patch
new file mode 100644
index 000000000000..354307d71e4f
--- /dev/null
+++ b/pkgs/development/tools/rust/racer/pr-232.patch
@@ -0,0 +1,26 @@
+From 3f354d69881424c7c902408d22f9138412a872b4 Mon Sep 17 00:00:00 2001
+From: Ricardo Martins <ricardo@scarybox.net>
+Date: Sat, 9 May 2015 17:12:55 +0100
+Subject: [PATCH] Use `Vec::extend` instead of binary operation `+`.
+
+---
+ src/racer/nameres.rs | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/racer/nameres.rs b/src/racer/nameres.rs
+index 60636c6..ad1e01c 100644
+--- a/src/racer/nameres.rs
++++ b/src/racer/nameres.rs
+@@ -620,9 +620,9 @@ pub fn search_scope(start: usize, point: usize, src: &str,
+         }
+ 
+         // There's a good chance of a match. Run the matchers
+-        out = out + &*run_matchers_on_blob(src, start+blobstart, start+blobend,
+-                                      searchstr,
+-                                      filepath, search_type, local, namespace);
++        out.extend(run_matchers_on_blob(src, start+blobstart, start+blobend,
++                                        searchstr,
++                                        filepath, search_type, local, namespace));
+         if let ExactMatch = search_type {
+             if !out.is_empty() {
+                 return out.into_iter();