forked from M-Labs/artiq
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:
parent
7584639acd
commit
e424927049
@ -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
|
||||
|
@ -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; };
|
||||
|
@ -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;
|
||||
};
|
||||
}
|
@ -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
|
||||
};
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user