3
0
Fork 0
forked from mirrors/nixpkgs

rustRegistry: Fix "Target OID..." cargo failure.

For some reason, `cargo` doesn't like git repositories downloaded with
`fetchgit`. It will sometimes fail with the error message "Target OID for
the reference doesn't exist on the repository".

To workaround this, we'll just have to create a new git repo from
scratch...
This commit is contained in:
Ricardo M. Correia 2015-04-23 20:42:06 +02:00
parent d6093505cc
commit 916b20ae36

View file

@ -4,16 +4,45 @@
# version that we define here. If you're having problems downloading / finding
# a Rust library, try updating this to a newer commit.
{ fetchgit }:
{ runCommand, fetchgit, git }:
fetchgit {
url = git://github.com/rust-lang/crates.io-index.git;
let
version = "2015-04-20";
# 2015-04-20
rev = "c7112fed5f973e438bb600946016c5083e66b1c9";
sha256 = "0vyrz7d6zvh79hx5fg557g93r9qm40wx1g4hx7304lina4smk30h";
src = fetchgit {
url = git://github.com/rust-lang/crates.io-index.git;
# cargo needs the 'master' branch to exist
leaveDotGit = true;
branchName = "master";
}
rev = "c7112fed5f973e438bb600946016c5083e66b1c9";
sha256 = "0vyrz7d6zvh79hx5fg557g93r9qm40wx1g4hx7304lina4smk30h";
# cargo needs the 'master' branch to exist
leaveDotGit = true;
branchName = "master";
};
in
runCommand "rustRegistry-${version}-${builtins.substring 0 7 src.rev}" {} ''
# For some reason, cargo doesn't like fetchgit's git repositories, not even
# if we clone them (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
cp -r ${src}/* $out/
cd $out
git="${git}/bin/git"
$git init
$git config --local user.email "example@example.com"
$git config --local user.name "example"
$git add .
$git commit -m 'Rust registry commit'
''