diff options
author | Ricardo M. Correia <rcorreia@wizy.org> | 2015-04-23 20:42:06 +0200 |
---|---|---|
committer | Ricardo M. Correia <rcorreia@wizy.org> | 2015-04-24 00:50:32 +0200 |
commit | 916b20ae3695682d6af8b1bfdc8c24936815f248 (patch) | |
tree | 8bd7d563a84b800da9c64f18aa06c4e6162f2343 /pkgs/top-level/rust-packages.nix | |
parent | d6093505cc59c7cf5540afd044dea9ab8d5c1e9b (diff) | |
download | nixlib-916b20ae3695682d6af8b1bfdc8c24936815f248.tar nixlib-916b20ae3695682d6af8b1bfdc8c24936815f248.tar.gz nixlib-916b20ae3695682d6af8b1bfdc8c24936815f248.tar.bz2 nixlib-916b20ae3695682d6af8b1bfdc8c24936815f248.tar.lz nixlib-916b20ae3695682d6af8b1bfdc8c24936815f248.tar.xz nixlib-916b20ae3695682d6af8b1bfdc8c24936815f248.tar.zst nixlib-916b20ae3695682d6af8b1bfdc8c24936815f248.zip |
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...
Diffstat (limited to 'pkgs/top-level/rust-packages.nix')
-rw-r--r-- | pkgs/top-level/rust-packages.nix | 49 |
1 files changed, 39 insertions, 10 deletions
diff --git a/pkgs/top-level/rust-packages.nix b/pkgs/top-level/rust-packages.nix index 2ad93feec0b3..2f2465a2b179 100644 --- a/pkgs/top-level/rust-packages.nix +++ b/pkgs/top-level/rust-packages.nix @@ -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' +'' |