about summary refs log tree commit diff
path: root/pkgs/top-level/rust-packages.nix
diff options
context:
space:
mode:
authorRicardo M. Correia <rcorreia@wizy.org>2015-04-23 20:42:06 +0200
committerRicardo M. Correia <rcorreia@wizy.org>2015-04-24 00:50:32 +0200
commit916b20ae3695682d6af8b1bfdc8c24936815f248 (patch)
tree8bd7d563a84b800da9c64f18aa06c4e6162f2343 /pkgs/top-level/rust-packages.nix
parentd6093505cc59c7cf5540afd044dea9ab8d5c1e9b (diff)
downloadnixlib-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.nix49
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'
+''