fetchzip and friends: Set "name" to "source" by default

This makes them produce the same store paths as builtins.fetchgit,
builtins.fetchTarball etc. See
65b5f177b5.
This commit is contained in:
Eelco Dolstra 2017-10-30 17:17:07 +01:00
parent 6d41ae55dd
commit c3255fe8ec
No known key found for this signature in database
GPG Key ID: 8170B4726D7198DE
3 changed files with 7 additions and 27 deletions

View File

@ -1,19 +0,0 @@
{ lib }:
let
inherit (lib) removeSuffix hasPrefix removePrefix splitString stringToCharacters concatMapStrings last elem;
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"

View File

@ -11,10 +11,11 @@
stripRoot ? true
, url
, extraPostFetch ? ""
, name ? "source"
, ... } @ args:
lib.overrideDerivation (fetchurl ({
name = args.name or (baseNameOf url);
inherit name;
recursiveHash = true;

View File

@ -195,10 +195,8 @@ with pkgs;
fetchzip = callPackage ../build-support/fetchzip { };
gitRepoToName = callPackage ../build-support/fetchgit/gitrepotoname.nix { };
fetchFromGitHub = {
owner, repo, rev, name ? gitRepoToName repo rev,
owner, repo, rev, name ? "source",
fetchSubmodules ? false, private ? false,
githubBase ? "github.com", varPrefix ? null,
... # For hash agility
@ -231,7 +229,7 @@ with pkgs;
in fetcher fetcherArgs // { meta.homepage = baseUrl; inherit rev; };
fetchFromBitbucket = {
owner, repo, rev, name ? gitRepoToName repo rev,
owner, repo, rev, name ? "source",
... # For hash agility
}@args: fetchzip ({
inherit name;
@ -242,7 +240,7 @@ with pkgs;
# cgit example, snapshot support is optional in cgit
fetchFromSavannah = {
repo, rev, name ? gitRepoToName repo rev,
repo, rev, name ? "source",
... # For hash agility
}@args: fetchzip ({
inherit name;
@ -252,7 +250,7 @@ with pkgs;
# gitlab example
fetchFromGitLab = {
owner, repo, rev, name ? gitRepoToName repo rev,
owner, repo, rev, name ? "source",
... # For hash agility
}@args: fetchzip ({
inherit name;
@ -262,7 +260,7 @@ with pkgs;
# gitweb example, snapshot support is optional in gitweb
fetchFromRepoOrCz = {
repo, rev, name ? gitRepoToName repo rev,
repo, rev, name ? "source",
... # For hash agility
}@args: fetchzip ({
inherit name;