parent
c610f99d8f
commit
7a10cc84a0
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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"
|
||||
'';
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user