diff options
author | Ricardo M. Correia <rcorreia@wizy.org> | 2015-05-12 17:30:11 +0200 |
---|---|---|
committer | Ricardo M. Correia <rcorreia@wizy.org> | 2015-05-12 17:30:11 +0200 |
commit | 755df64ee36c3d59a2451dda626415618657f513 (patch) | |
tree | 32df0f963114fe2ca5de8f1b0da6edd774d86a08 /pkgs/development/tools | |
parent | 88fbc8a0dacc69677f58e66f09a07690402bc162 (diff) | |
parent | e40a43cd1f4ea69f9ec95fbcbbb89621db31ccae (diff) | |
download | nixlib-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.nix | 12 | ||||
-rw-r--r-- | pkgs/development/tools/build-managers/cargo/default.nix | 36 | ||||
-rw-r--r-- | pkgs/development/tools/build-managers/cargo/snapshot.nix | 11 | ||||
-rw-r--r-- | pkgs/development/tools/rust/racer/default.nix | 22 | ||||
-rw-r--r-- | pkgs/development/tools/rust/racer/pr-232.patch | 26 |
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(); |