nix: use nixpkgs cargo

This simplifies the code and avoids multiplication of cargo versions.
This installs cargo 1.27, but it is compatible enough with artiq rustc
1.28 not to cause any problems for our purposes.
This commit is contained in:
Sebastien Bourdeauducq 2019-02-09 14:19:34 +08:00
parent 7584639acd
commit e424927049
4 changed files with 2 additions and 81 deletions

View File

@ -20,10 +20,10 @@ in
xorg.libXi
(python3.withPackages(ps: with ps; [ jinja2 numpy artiqpkgs.migen artiqpkgs.microscope artiqpkgs.misoc artiqpkgs.jesd204b artiqpkgs.artiq ]))
git
cargo
] ++
(with artiqpkgs; [
rustc
cargo
binutils-or1k
llvm-or1k
openocd

View File

@ -8,7 +8,7 @@ let
});
llvm-src = callPackage ./fetch-llvm-clang.nix {};
in rec {
inherit (rust) cargo rustc;
inherit (rust) rustc;
inherit (callPackage ./pkgs/python3Packages.nix {}) migen microscope misoc jesd204b;
binutils-or1k = callPackage ./pkgs/binutils-or1k.nix {};
llvm-or1k = callPackage ./pkgs/llvm-or1k.nix { inherit llvm-src; };

View File

@ -1,70 +0,0 @@
{ stdenv, fetchurl, file, curl, pkgconfig, python, openssl, cmake, zlib
, makeWrapper, libiconv, cacert, rustPlatform, rustc, libgit2, darwin
, version
, patches ? []
, src }:
let
inherit (darwin.apple_sdk.frameworks) CoreFoundation;
src_rustc = fetchurl {
url = "https://static.rust-lang.org/dist/rustc-1.28.0-src.tar.gz";
sha256 = "11k4rn77bca2rikykkk9fmprrgjswd4x4kaq7fia08vgkir82nhx";
};
in
rustPlatform.buildRustPackage rec {
name = "cargo-${version}";
inherit version src patches;
# the rust source tarball already has all the dependencies vendored, no need to fetch them again
cargoVendorDir = "src/vendor";
preBuild = "cd src; pushd tools/cargo";
postBuild = "popd";
passthru.rustc = rustc;
# changes hash of vendor directory otherwise
dontUpdateAutotoolsGnuConfigScripts = true;
nativeBuildInputs = [ pkgconfig ];
buildInputs = [ cacert file curl python openssl cmake zlib makeWrapper libgit2 ]
++ stdenv.lib.optionals stdenv.isDarwin [ CoreFoundation libiconv ];
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;
preConfigure = ''
tar xf ${src_rustc}
mv rustc-1.28.0-src/src/vendor/ src/vendor
'';
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; [ sb0 ];
license = [ licenses.mit licenses.asl20 ];
platforms = platforms.unix;
};
}

View File

@ -8,7 +8,6 @@
let
rustPlatform = recurseIntoAttrs (makeRustPlatform (callPackage ./bootstrap.nix {}));
version = "1.28.0";
cargoVersion = "1.28.0";
src = fetchFromGitHub {
owner = "m-labs";
repo = "rust";
@ -86,12 +85,4 @@ in rec {
# Disabled for now; see https://github.com/NixOS/nixpkgs/pull/42348#issuecomment-402115598.
doCheck = false;
};
cargo = callPackage ./cargo.nix rec {
version = cargoVersion;
inherit src;
inherit stdenv;
inherit rustc; # the rustc that will be wrapped by cargo
inherit rustPlatform; # used to build cargo
};
}