diff options
Diffstat (limited to 'pkgs/applications/science/misc/openmodelica/omlibrary/fakegit.nix')
-rw-r--r-- | pkgs/applications/science/misc/openmodelica/omlibrary/fakegit.nix | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/pkgs/applications/science/misc/openmodelica/omlibrary/fakegit.nix b/pkgs/applications/science/misc/openmodelica/omlibrary/fakegit.nix new file mode 100644 index 00000000000..fdbc79aae59 --- /dev/null +++ b/pkgs/applications/science/misc/openmodelica/omlibrary/fakegit.nix @@ -0,0 +1,49 @@ +{ lib, stdenv, fetchgit, bash }: +let + mkscript = path: text: '' + mkdir -pv `dirname ${path}` + cat > ${path} <<"EOF" + #!${bash}/bin/bash + ME=$(basename ${path}) + ${text} + EOF + sed -i "s@%out@$out@g" ${path} + chmod +x ${path} + ''; + + hashname = r: + let + rpl = lib.replaceChars [ ":" "/" ] [ "_" "_" ]; + in + (rpl r.url) + "-" + (rpl r.rev); + +in +stdenv.mkDerivation { + name = "fakegit"; + + buildCommand = '' + mkdir -pv $out/repos + ${lib.concatMapStrings + (r: "cp -r ${fetchgit r} $out/repos/${hashname r}\n") + (import ./src-libs.nix)} + + ${mkscript "$out/bin/checkout-git.sh" '' + if test "$#" -ne 4; then + echo "Usage: $0 DESTINATION URL GITBRANCH HASH" + exit 1 + fi + DEST=$1 + URL=`echo $2 | tr :/ __` + GITBRANCH=$3 + REVISION=$4 + + REVISION=`echo $REVISION | tr :/ __` + + rm -rf $DEST + mkdir -pv $DEST + echo "FAKEGIT cp -r %out/repos/$URL-$REVISION $DEST" >&2 + cp -r %out/repos/$URL-$REVISION/* $DEST + chmod u+w -R $DEST + ''} + ''; +} |