From 7a10cc84a0cd532c8a248d26dedf61d15615fb4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= <joerg@thalheim.io> Date: Thu, 15 Jun 2017 22:12:31 +0100 Subject: [PATCH] rustRegistry: switch to mkDerivation fixes #26582 --- pkgs/build-support/rust/default.nix | 10 +++-- pkgs/top-level/all-packages.nix | 2 + pkgs/top-level/rust-packages.nix | 60 +++++++++++++++-------------- 3 files changed, 40 insertions(+), 32 deletions(-) diff --git a/pkgs/build-support/rust/default.nix b/pkgs/build-support/rust/default.nix index 6e2c4455225..36130289fba 100644 --- a/pkgs/build-support/rust/default.nix +++ b/pkgs/build-support/rust/default.nix @@ -1,5 +1,10 @@ -{ stdenv, callPackage, path, cacert, git, rust }: +{ stdenv, callPackage, path, cacert, git, rust, rustRegistry }: + +let + rustRegistry' = rustRegistry; +in { name, depsSha256 +, rustRegistry ? rustRegistry' , src ? null , srcs ? null , sourceRoot ? null @@ -8,13 +13,10 @@ , cargoUpdateHook ? "" , cargoDepsHook ? "" , cargoBuildFlags ? [] -, registry ? null , ... } @ args: let lib = stdenv.lib; - rustRegistry = callPackage (path + /pkgs/top-level/rust-packages.nix) - (lib.optionalAttrs (registry != null) { src = registry; }); fetchDeps = import ./fetchcargo.nix { inherit stdenv cacert git rust rustRegistry; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index d7a34f55f7a..51014116137 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5777,6 +5777,8 @@ with pkgs; inherit (darwin) apple_sdk; }; + rustRegistry = callPackage ./rust-packages.nix { }; + rust = rustStable; rustStable = callPackage ../development/compilers/rust { inherit (llvmPackages_4) llvm; diff --git a/pkgs/top-level/rust-packages.nix b/pkgs/top-level/rust-packages.nix index 67351b7bec0..aed51a44873 100644 --- a/pkgs/top-level/rust-packages.nix +++ b/pkgs/top-level/rust-packages.nix @@ -4,39 +4,43 @@ # version that we define here. If you're having problems downloading / finding # a Rust library, try updating this to a newer commit. -{ runCommand, fetchFromGitHub, git -, src ? fetchFromGitHub { +{ stdenv, fetchFromGitHub, git }: + +stdenv.mkDerivation { + name = "rustRegistry-2017-06-25"; + + src = fetchFromGitHub { owner = "rust-lang"; repo = "crates.io-index"; - rev = "cda0f689f844710a3d73c7ff459efa64997f73b5"; - sha256 = "1b3brl9nn3qqaysd8lx9gaazd863grqx547iw7y9j6mkcc7sakvc"; - } -}: + rev = "9714616bf3b7836cb827d8d1eabef017d730fb5e"; + sha256 = "02lpmjsqwa16j14y3jzgw4dpzfy001nfyi78x9b8rgp1w3qdjbkr"; + }; + phases = [ "unpackPhase" "installPhase" ]; + installPhase = '' + # For some reason, cargo doesn't like fetchgit's git repositories, not even + # if we set leaveDotGit to true, set the fetchgit branch to 'master' and clone + # the repository (tested with registry rev + # 965b634156cc5c6f10c7a458392bfd6f27436e7e), failing with the message: + # + # "Target OID for the reference doesn't exist on the repository" + # + # So we'll just have to create a new git repository from scratch with the + # contents downloaded with fetchgit... -runCommand "rustRegistry" { inherit src; } '' - # For some reason, cargo doesn't like fetchgit's git repositories, not even - # if we set leaveDotGit to true, set the fetchgit branch to 'master' and clone - # the repository (tested with registry rev - # 965b634156cc5c6f10c7a458392bfd6f27436e7e), failing with the message: - # - # "Target OID for the reference doesn't exist on the repository" - # - # So we'll just have to create a new git repository from scratch with the - # contents downloaded with fetchgit... + mkdir -p $out - mkdir -p $out + cp -r ./* $out/ - cp -r ${src}/* $out/ + cd $out - cd $out + git="${git}/bin/git" - git="${git}/bin/git" + $git init + $git config --local user.email "example@example.com" + $git config --local user.name "example" + $git add . + $git commit --quiet -m 'Rust registry commit' - $git init - $git config --local user.email "example@example.com" - $git config --local user.name "example" - $git add . - $git commit --quiet -m 'Rust registry commit' - - touch $out/touch . "$out/.cargo-index-lock" -'' + touch $out/touch . "$out/.cargo-index-lock" + ''; +}