From e4249270497e89efeb2b1dc78e414e0029548622 Mon Sep 17 00:00:00 2001 From: Sebastien Bourdeauducq Date: Sat, 9 Feb 2019 14:19:34 +0800 Subject: [PATCH] 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. --- nix/artiq-dev.nix | 2 +- nix/default.nix | 2 +- nix/pkgs/rust/cargo.nix | 70 --------------------------------------- nix/pkgs/rust/default.nix | 9 ----- 4 files changed, 2 insertions(+), 81 deletions(-) delete mode 100644 nix/pkgs/rust/cargo.nix diff --git a/nix/artiq-dev.nix b/nix/artiq-dev.nix index 479352d2c..33e888d81 100644 --- a/nix/artiq-dev.nix +++ b/nix/artiq-dev.nix @@ -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 diff --git a/nix/default.nix b/nix/default.nix index 90063b48d..5b27187aa 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -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; }; diff --git a/nix/pkgs/rust/cargo.nix b/nix/pkgs/rust/cargo.nix deleted file mode 100644 index cdeca0fa8..000000000 --- a/nix/pkgs/rust/cargo.nix +++ /dev/null @@ -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; - }; -} diff --git a/nix/pkgs/rust/default.nix b/nix/pkgs/rust/default.nix index fa8f93856..3971c6f57 100644 --- a/nix/pkgs/rust/default.nix +++ b/nix/pkgs/rust/default.nix @@ -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 - }; }