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:
Eelco Dolstra 2018-01-19 15:51:10 +01:00
parent a4edba9943
commit 3d5391c256
No known key found for this signature in database
GPG key ID: 8170B4726D7198DE

View file

@ -203,38 +203,11 @@ with pkgs;
fetchCrate = callPackage ../build-support/rust/fetchcrate.nix { };
fetchFromGitHub = {
owner, repo, rev, name ? "source",
fetchSubmodules ? false, private ? false,
githubBase ? "github.com", varPrefix ? null,
... # 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; };
fetchFromGitHub = { owner, repo, rev, sha256 }: fetchzip {
name = "source";
url = "https://github.com/${owner}/${repo}/archive/${rev}.zip";
inherit sha256;
};
fetchFromBitbucket = {
owner, repo, rev, name ? "source",