fetchFromGitHub: Revert to the original version
fetchFromGitHub was intended as a simple wrapper around the common pattern 'fetchzip { url = https://github.com/${owner}/${repo}/archive/${rev}.zip"; ... }'. It was not intended to handle private repositories, submodules, other sites than github.com (!), etc. In particular, we don't want to use fetchgit because it's not reproducible.
This commit is contained in:
parent
a4edba9943
commit
3d5391c256
@ -203,38 +203,11 @@ with pkgs;
|
|||||||
|
|
||||||
fetchCrate = callPackage ../build-support/rust/fetchcrate.nix { };
|
fetchCrate = callPackage ../build-support/rust/fetchcrate.nix { };
|
||||||
|
|
||||||
fetchFromGitHub = {
|
fetchFromGitHub = { owner, repo, rev, sha256 }: fetchzip {
|
||||||
owner, repo, rev, name ? "source",
|
name = "source";
|
||||||
fetchSubmodules ? false, private ? false,
|
url = "https://github.com/${owner}/${repo}/archive/${rev}.zip";
|
||||||
githubBase ? "github.com", varPrefix ? null,
|
inherit sha256;
|
||||||
... # For hash agility
|
};
|
||||||
}@args: assert private -> !fetchSubmodules;
|
|
||||||
let
|
|
||||||
baseUrl = "https://${githubBase}/${owner}/${repo}";
|
|
||||||
passthruAttrs = removeAttrs args [ "owner" "repo" "rev" "fetchSubmodules" "private" "githubBase" "varPrefix" ];
|
|
||||||
varBase = "NIX${if varPrefix == null then "" else "_${varPrefix}"}_GITHUB_PRIVATE_";
|
|
||||||
# We prefer fetchzip in cases we don't need submodules as the hash
|
|
||||||
# is more stable in that case.
|
|
||||||
fetcher = if fetchSubmodules then fetchgit else fetchzip;
|
|
||||||
privateAttrs = lib.optionalAttrs private {
|
|
||||||
netrcPhase = ''
|
|
||||||
if [ -z "''$${varBase}USERNAME" -o -z "''$${varBase}PASSWORD" ]; then
|
|
||||||
echo "Error: Private fetchFromGitHub requires the nix building process (nix-daemon in multi user mode) to have the ${varBase}USERNAME and ${varBase}PASSWORD env vars set." >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
cat > netrc <<EOF
|
|
||||||
machine ${githubBase}
|
|
||||||
login ''$${varBase}USERNAME
|
|
||||||
password ''$${varBase}PASSWORD
|
|
||||||
EOF
|
|
||||||
'';
|
|
||||||
netrcImpureEnvVars = [ "${varBase}USERNAME" "${varBase}PASSWORD" ];
|
|
||||||
};
|
|
||||||
fetcherArgs = (if fetchSubmodules
|
|
||||||
then { inherit rev fetchSubmodules; url = "${baseUrl}.git"; }
|
|
||||||
else ({ url = "${baseUrl}/archive/${rev}.tar.gz"; } // privateAttrs)
|
|
||||||
) // passthruAttrs // { inherit name; };
|
|
||||||
in fetcher fetcherArgs // { meta.homepage = baseUrl; inherit rev; };
|
|
||||||
|
|
||||||
fetchFromBitbucket = {
|
fetchFromBitbucket = {
|
||||||
owner, repo, rev, name ? "source",
|
owner, repo, rev, name ? "source",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user