Allow any hash for git-based fetch* derivations

Instead of hard-coding which hash types are available, merge the input
arg set into the fetchzip arguments to enable passing any hash type
that the underyling fetchurl (underneath fetchzip, which does the same
thing) supports for hash agility.

Also, provide rev attributes on all of these derivations,
not just fetchFromGitHub.
This commit is contained in:
Aneesh Agrawal 2016-05-01 13:00:49 -04:00
parent 41efe6535d
commit 208f1fb7e1

View File

@ -223,39 +223,54 @@ in
fetchzip = callPackage ../build-support/fetchzip { };
fetchFromGitHub = { owner, repo, rev, sha256, name ? "${repo}-${rev}-src" }: fetchzip {
inherit name sha256;
fetchFromGitHub = {
owner, repo, rev, name ? "${repo}-${rev}-src",
... # For hash agility
}@args: fetchzip ({
inherit name;
url = "https://github.com/${owner}/${repo}/archive/${rev}.tar.gz";
meta.homepage = "https://github.com/${owner}/${repo}/";
} // { inherit rev; };
} // removeAttrs args [ "owner" "repo" "rev" ]) // { inherit rev; };
fetchFromBitbucket = { owner, repo, rev, sha256, name ? "${repo}-${rev}-src" }: fetchzip {
inherit name sha256;
fetchFromBitbucket = {
owner, repo, rev, name ? "${repo}-${rev}-src",
... # For hash agility
}@args: fetchzip ({
inherit name;
url = "https://bitbucket.org/${owner}/${repo}/get/${rev}.tar.gz";
meta.homepage = "https://bitbucket.org/${owner}/${repo}/";
extraPostFetch = ''rm -f "$out"/.hg_archival.txt''; # impure file; see #12002
};
} // removeAttrs args [ "owner" "repo" "rev" ]) // { inherit rev; };
# cgit example, snapshot support is optional in cgit
fetchFromSavannah = { repo, rev, sha256, name ? "${repo}-${rev}-src" }: fetchzip {
inherit name sha256;
fetchFromSavannah = {
repo, rev, name ? "${repo}-${rev}-src",
... # For hash agility
}@args: fetchzip ({
inherit name;
url = "http://git.savannah.gnu.org/cgit/${repo}.git/snapshot/${repo}-${rev}.tar.gz";
meta.homepage = "http://git.savannah.gnu.org/cgit/${repo}.git/";
};
} // removeAttrs args [ "repo" "rev" ]) // { inherit rev; };
# gitlab example
fetchFromGitLab = { owner, repo, rev, sha256, name ? "${repo}-${rev}-src" }: fetchzip {
inherit name sha256;
fetchFromGitLab = {
owner, repo, rev, name ? "${repo}-${rev}-src",
... # For hash agility
}@args: fetchzip ({
inherit name;
url = "https://gitlab.com/${owner}/${repo}/repository/archive.tar.gz?ref=${rev}";
meta.homepage = "https://gitlab.com/${owner}/${repo}/";
};
} // removeAttrs args [ "owner" "repo" "rev" ]) // { inherit rev; };
# gitweb example, snapshot support is optional in gitweb
fetchFromRepoOrCz = { repo, rev, sha256, name ? "${repo}-${rev}-src" }: fetchzip {
inherit name sha256;
fetchFromRepoOrCz = {
repo, rev, name ? "${repo}-${rev}-src",
... # For hash agility
}@args: fetchzip ({
inherit name;
url = "http://repo.or.cz/${repo}.git/snapshot/${rev}.tar.gz";
meta.homepage = "http://repo.or.cz/${repo}.git/";
};
} // removeAttrs args [ "repo" "rev" ]) // { inherit rev; };
fetchNuGet = callPackage ../build-support/fetchnuget { };
buildDotnetPackage = callPackage ../build-support/build-dotnet-package { };