summary refs log tree commit diff
path: root/pkgs/build-support/fetchgit
diff options
context:
space:
mode:
authorVolth <volth@webmaster.ms>2017-07-04 20:09:34 +0000
committerVolth <volth@webmaster.ms>2017-07-04 20:22:13 +0000
commite7521e289ccbcba8928a0c0a2220fbbb35716556 (patch)
treecfd1dfefd88393a11df136408a7c7fcacd929c49 /pkgs/build-support/fetchgit
parentb935b21ffd06284d0c8297651d7d28c0961d3274 (diff)
downloadnixpkgs-e7521e289ccbcba8928a0c0a2220fbbb35716556.tar
nixpkgs-e7521e289ccbcba8928a0c0a2220fbbb35716556.tar.gz
nixpkgs-e7521e289ccbcba8928a0c0a2220fbbb35716556.tar.bz2
nixpkgs-e7521e289ccbcba8928a0c0a2220fbbb35716556.tar.lz
nixpkgs-e7521e289ccbcba8928a0c0a2220fbbb35716556.tar.xz
nixpkgs-e7521e289ccbcba8928a0c0a2220fbbb35716556.tar.zst
nixpkgs-e7521e289ccbcba8928a0c0a2220fbbb35716556.zip
gitRepoToName: make it compatible with old fetchFromGitHub's "${repo}-${rev}-scr" to avoid mass rebuild
Diffstat (limited to 'pkgs/build-support/fetchgit')
-rw-r--r--pkgs/build-support/fetchgit/gitrepotoname.nix27
1 files changed, 16 insertions, 11 deletions
diff --git a/pkgs/build-support/fetchgit/gitrepotoname.nix b/pkgs/build-support/fetchgit/gitrepotoname.nix
index 9f4392c387f..90005b54569 100644
--- a/pkgs/build-support/fetchgit/gitrepotoname.nix
+++ b/pkgs/build-support/fetchgit/gitrepotoname.nix
@@ -1,14 +1,19 @@
 { lib }:
 
-urlOrRepo: rev: let
-  inherit (lib) removeSuffix splitString last;
-  base = last (splitString ":" (baseNameOf (removeSuffix "/" urlOrRepo)));
+let
+  inherit (lib) removeSuffix hasPrefix removePrefix splitString stringToCharacters concatMapStrings last elem;
 
-  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}"
\ No newline at end of file
+  allowedChars = stringToCharacters "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+-._?=";
+  sanitizeStoreName = s:
+    let
+      s' = concatMapStrings (c: if elem c allowedChars then c else "") (stringToCharacters s);
+      s'' = if hasPrefix "." s' then "_${removePrefix "." s'}" else s';
+    in
+      s'';
+in
+  urlOrRepo: rev:
+    let
+      repo' = last (splitString ":" (baseNameOf (removeSuffix ".git" (removeSuffix "/" urlOrRepo))));
+      rev' = baseNameOf rev;
+    in
+     "${sanitizeStoreName repo'}-${sanitizeStoreName rev'}-src"