e1ed62abc2
I thought about doing a seperate output for these, but they're tiny compared to the size of the binary, so there's no point. (cherry picked from commit 0489c1b4b20d13fa04e6460ead73893889ff2529)
61 lines
2.0 KiB
Nix
61 lines
2.0 KiB
Nix
{ stdenv, file, curl, pkgconfig, python3, openssl, cmake, zlib
|
|
, installShellFiles, makeWrapper, libiconv, cacert, rustPlatform, rustc
|
|
, CoreFoundation, Security
|
|
}:
|
|
|
|
rustPlatform.buildRustPackage {
|
|
name = "cargo-${rustc.version}";
|
|
inherit (rustc) version src;
|
|
|
|
# the rust source tarball already has all the dependencies vendored, no need to fetch them again
|
|
cargoVendorDir = "vendor";
|
|
preBuild = "pushd src/tools/cargo";
|
|
postBuild = "popd";
|
|
|
|
passthru.rustc = rustc;
|
|
|
|
# changes hash of vendor directory otherwise
|
|
dontUpdateAutotoolsGnuConfigScripts = true;
|
|
|
|
nativeBuildInputs = [ pkgconfig cmake installShellFiles makeWrapper ];
|
|
buildInputs = [ cacert file curl python3 openssl zlib ]
|
|
++ stdenv.lib.optionals stdenv.isDarwin [ CoreFoundation Security libiconv ];
|
|
|
|
# cargo uses git-rs which is made for a version of libgit2 from recent master that
|
|
# is not compatible with the current version in nixpkgs.
|
|
#LIBGIT2_SYS_USE_PKG_CONFIG = 1;
|
|
|
|
# fixes: the cargo feature `edition` requires a nightly version of Cargo, but this is the `stable` channel
|
|
RUSTC_BOOTSTRAP = 1;
|
|
|
|
postInstall = ''
|
|
# 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" \
|
|
--set CARGO_HTTP_CAINFO "${cacert}/etc/ssl/certs/ca-bundle.crt" \
|
|
--set SSL_CERT_FILE "${cacert}/etc/ssl/certs/ca-bundle.crt"
|
|
|
|
installManPage src/tools/cargo/src/etc/man/*
|
|
'';
|
|
|
|
checkPhase = ''
|
|
# Disable cross compilation tests
|
|
export CFG_DISABLE_CROSS_TESTS=1
|
|
cargo test
|
|
'';
|
|
|
|
# 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; [ retrry ];
|
|
license = [ licenses.mit licenses.asl20 ];
|
|
platforms = platforms.unix;
|
|
};
|
|
}
|