1{
2 lib,
3 stdenv,
4 fetchgit,
5 bash,
6}:
7let
8 mkscript = path: text: ''
9 mkdir -pv `dirname ${path}`
10 cat > ${path} <<"EOF"
11 #!${bash}/bin/bash
12 ME=$(basename ${path})
13 ${text}
14 EOF
15 sed -i "s@%out@$out@g" ${path}
16 chmod +x ${path}
17 '';
18
19 hashname =
20 r:
21 let
22 rpl = lib.replaceStrings [ ":" "/" ] [ "_" "_" ];
23 in
24 (rpl r.url) + "-" + (rpl r.rev);
25
26in
27stdenv.mkDerivation {
28 name = "fakegit";
29
30 buildCommand = ''
31 mkdir -pv $out/repos
32 ${lib.concatMapStrings (
33 r: "cp -r ${fetchgit r} $out/repos/${hashname r}\n"
34 ) (import ./src-libs.nix)}
35
36 ${mkscript "$out/bin/checkout-git.sh" ''
37 if test "$#" -ne 4; then
38 echo "Usage: $0 DESTINATION URL GITBRANCH HASH"
39 exit 1
40 fi
41 DEST=$1
42 URL=`echo $2 | tr :/ __`
43 GITBRANCH=$3
44 REVISION=$4
45
46 REVISION=`echo $REVISION | tr :/ __`
47
48 rm -rf $DEST
49 mkdir -pv $DEST
50 echo "FAKEGIT cp -r %out/repos/$URL-$REVISION $DEST" >&2
51 cp -r %out/repos/$URL-$REVISION/* $DEST
52 chmod u+w -R $DEST
53 ''}
54 '';
55}