nixpkgs/pkgs/development/compilers/rust/cargo.nix

59 lines
1.8 KiB
Nix
Raw Normal View History

2017-10-08 20:26:40 +02:00
{ stdenv, fetchFromGitHub, file, curl, pkgconfig, python, openssl, cmake, zlib
2016-08-08 15:55:26 +02:00
, makeWrapper, libiconv, cacert, rustPlatform, rustc, libgit2
, version, srcSha, depsSha256
2016-08-08 15:55:26 +02:00
, patches ? []}:
rustPlatform.buildRustPackage rec {
name = "cargo-${version}";
inherit version;
2017-10-08 20:26:40 +02:00
src = fetchFromGitHub {
owner = "rust-lang";
repo = "cargo";
rev = version;
sha256 = srcSha;
};
inherit depsSha256;
2016-08-08 15:55:26 +02:00
inherit patches;
passthru.rustc = rustc;
nativeBuildInputs = [ pkgconfig ];
buildInputs = [ file curl python openssl cmake zlib makeWrapper libgit2 ]
2016-08-08 15:55:26 +02:00
++ stdenv.lib.optionals stdenv.isDarwin [ libiconv ];
LIBGIT2_SYS_USE_PKG_CONFIG=1;
postInstall = ''
2016-08-08 15:55:26 +02:00
# NOTE: We override the `http.cainfo` option usually specified in
# `.cargo/config`. This is an issue when users want to specify
# their own certificate chain as environment variables take
# precedence
wrapProgram "$out/bin/cargo" \
--suffix PATH : "${rustc}/bin" \
2016-08-08 15:55:26 +02:00
--set CARGO_HTTP_CAINFO "${cacert}/etc/ssl/certs/ca-bundle.crt" \
--set SSL_CERT_FILE "${cacert}/etc/ssl/certs/ca-bundle.crt" \
${stdenv.lib.optionalString stdenv.isDarwin ''--suffix DYLD_LIBRARY_PATH : "${rustc}/lib"''}
'';
checkPhase = ''
# Export SSL_CERT_FILE as without it one test fails with SSL verification error
export SSL_CERT_FILE=${cacert}/etc/ssl/certs/ca-bundle.crt
# Disable cross compilation tests
export CFG_DISABLE_CROSS_TESTS=1
cargo test
'';
2016-12-29 08:56:19 +01:00
# Disable check phase as there are failures (4 tests fail)
doCheck = false;
meta = with stdenv.lib; {
homepage = https://crates.io;
description = "Downloads your Rust project's dependencies and builds your project";
maintainers = with maintainers; [ wizeman retrry ];
license = [ licenses.mit licenses.asl20 ];
platforms = platforms.linux ++ platforms.darwin;
};
}