rustRegistry: switch to mkDerivation

fixes #26582
This commit is contained in:
Jörg Thalheim 2017-06-15 22:12:31 +01:00
parent c610f99d8f
commit 7a10cc84a0
3 changed files with 40 additions and 32 deletions

View File

@ -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;

View File

@ -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;

View File

@ -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"
'';
}