5c8612d90c
Cargo uses git-rs which is made to be built against the bundled libgit2 version that hasn't been part of a stable release yet. Using our libgit2 instead of the master version fails during runtime as they are not compatible anymore. After the next libgit2 update we can try again but it is likely that there will also be yet another cargo release at that point in time…
58 lines
2 KiB
Nix
58 lines
2 KiB
Nix
{ stdenv, file, curl, pkgconfig, python3, openssl, cmake, zlib
|
|
, 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 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"
|
|
'';
|
|
|
|
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;
|
|
};
|
|
}
|