summary refs log tree commit diff
path: root/pkgs/build-support/fetchgit
diff options
context:
space:
mode:
authorVolth <volth@webmaster.ms>2017-07-05 16:01:26 +0000
committerVolth <volth@webmaster.ms>2017-07-05 16:01:26 +0000
commitab8dd33e5cda3abe78d244f23e6097cd3e3bca4e (patch)
tree8e2de60d863683934016ee674a2b59ee0cd56c45 /pkgs/build-support/fetchgit
parente7521e289ccbcba8928a0c0a2220fbbb35716556 (diff)
downloadnixpkgs-ab8dd33e5cda3abe78d244f23e6097cd3e3bca4e.tar
nixpkgs-ab8dd33e5cda3abe78d244f23e6097cd3e3bca4e.tar.gz
nixpkgs-ab8dd33e5cda3abe78d244f23e6097cd3e3bca4e.tar.bz2
nixpkgs-ab8dd33e5cda3abe78d244f23e6097cd3e3bca4e.tar.lz
nixpkgs-ab8dd33e5cda3abe78d244f23e6097cd3e3bca4e.tar.xz
nixpkgs-ab8dd33e5cda3abe78d244f23e6097cd3e3bca4e.tar.zst
nixpkgs-ab8dd33e5cda3abe78d244f23e6097cd3e3bca4e.zip
support old naming, just add escaping of unsafe chars
Diffstat (limited to 'pkgs/build-support/fetchgit')
-rw-r--r--pkgs/build-support/fetchgit/default.nix16
1 files changed, 14 insertions, 2 deletions
diff --git a/pkgs/build-support/fetchgit/default.nix b/pkgs/build-support/fetchgit/default.nix
index 57afb1c4ab8..8e060b87ebd 100644
--- a/pkgs/build-support/fetchgit/default.nix
+++ b/pkgs/build-support/fetchgit/default.nix
@@ -1,9 +1,21 @@
-{stdenv, git, cacert, gitRepoToName}:
+{stdenv, git, cacert}: let
+  urlToName = url: rev: let
+    inherit (stdenv.lib) removeSuffix splitString last;
+    base = last (splitString ":" (baseNameOf (removeSuffix "/" url)));
 
+    matched = builtins.match "(.*).git" base;
+
+    short = builtins.substring 0 7 rev;
+
+    appendShort = if (builtins.match "[a-f0-9]*" rev) != null
+      then "-${short}"
+      else "";
+  in "${if matched == null then base else builtins.head matched}${appendShort}";
+in
 { url, rev ? "HEAD", md5 ? "", sha256 ? "", leaveDotGit ? deepClone
 , fetchSubmodules ? true, deepClone ? false
 , branchName ? null
-, name ? gitRepoToName url rev
+, name ? urlToName url rev
 , # Shell code executed after the file has been fetched
   # successfully. This can do things like check or transform the file.
   postFetch ? ""