Adds a `gitConfig` option (and `gitConfigFile`), to set a default `gitConfigFile` argument for `fetchgit`.
213 lines
6.9 KiB
Nix
213 lines
6.9 KiB
Nix
{
|
|
runCommand,
|
|
testers,
|
|
fetchgit,
|
|
nix-prefetch-git,
|
|
jq,
|
|
cacert,
|
|
nix,
|
|
closureInfo,
|
|
...
|
|
}:
|
|
{
|
|
simple = testers.invalidateFetcherByDrvHash fetchgit {
|
|
name = "simple-nix-source";
|
|
url = "https://github.com/NixOS/nix";
|
|
rev = "9d9dbe6ed05854e03811c361a3380e09183f4f4a";
|
|
sha256 = "sha256-7DszvbCNTjpzGRmpIVAWXk20P0/XTrWZ79KSOGLrUWY=";
|
|
};
|
|
|
|
sparseCheckout = testers.invalidateFetcherByDrvHash fetchgit {
|
|
name = "sparse-checkout-nix-source";
|
|
url = "https://github.com/NixOS/nix";
|
|
rev = "9d9dbe6ed05854e03811c361a3380e09183f4f4a";
|
|
sparseCheckout = [
|
|
"src"
|
|
"tests"
|
|
];
|
|
sha256 = "sha256-g1PHGTWgAcd/+sXHo1o6AjVWCvC6HiocOfMbMh873LQ=";
|
|
};
|
|
|
|
sparseCheckoutNonConeMode = testers.invalidateFetcherByDrvHash fetchgit {
|
|
name = "sparse-checkout-non-cone-nix-source";
|
|
url = "https://github.com/NixOS/nix";
|
|
rev = "9d9dbe6ed05854e03811c361a3380e09183f4f4a";
|
|
sparseCheckout = [
|
|
"src"
|
|
"tests"
|
|
];
|
|
nonConeMode = true;
|
|
sha256 = "sha256-FknO6C/PSnMPfhUqObD4vsW4PhkwdmPa9blNzcNvJQ4=";
|
|
};
|
|
|
|
leave-git = testers.invalidateFetcherByDrvHash fetchgit {
|
|
name = "leave-git-nix-source";
|
|
url = "https://github.com/NixOS/nix";
|
|
rev = "9d9dbe6ed05854e03811c361a3380e09183f4f4a";
|
|
sha256 = "sha256-VmQ38+lr+rNPaTnjjV41uC2XSN4fkfZAfytE2uKyLfo=";
|
|
leaveDotGit = true;
|
|
};
|
|
|
|
submodule-simple = testers.invalidateFetcherByDrvHash fetchgit {
|
|
name = "submodule-simple-source";
|
|
url = "https://github.com/pineapplehunter/nix-test-repo-with-submodule";
|
|
rev = "26473335b84ead88ee0a3b649b1c7fa4a91cfd4a";
|
|
sha256 = "sha256-rmP8PQT0wJBopdtr/hsB7Y/L1G+ZPdHC2r9LB05Qrj4=";
|
|
fetchSubmodules = true;
|
|
};
|
|
|
|
submodule-leave-git = testers.invalidateFetcherByDrvHash fetchgit {
|
|
name = "submodule-leave-git-source";
|
|
url = "https://github.com/pineapplehunter/nix-test-repo-with-submodule";
|
|
rev = "26473335b84ead88ee0a3b649b1c7fa4a91cfd4a";
|
|
sha256 = "sha256-EC2PMEEtA7f5OFdsluHn7pi4QXhCZuFML8tib4pV7Ek=";
|
|
leaveDotGit = true;
|
|
fetchSubmodules = true;
|
|
};
|
|
|
|
submodule-deep = testers.invalidateFetcherByDrvHash fetchgit {
|
|
name = "submodule-deep-source";
|
|
url = "https://github.com/pineapplehunter/nix-test-repo-with-submodule";
|
|
rev = "26473335b84ead88ee0a3b649b1c7fa4a91cfd4a";
|
|
sha256 = "sha256-3zWogs6EZBnzUfz6gBnigETTKGYl9KFKFgsy6Bl4DME=";
|
|
deepClone = true;
|
|
fetchSubmodules = true;
|
|
# deepClone implies leaveDotGit, so delete the .git directory after
|
|
# fetching to distinguish from the submodule-leave-git-deep test.
|
|
postFetch = "rm -r $out/.git";
|
|
};
|
|
|
|
submodule-leave-git-deep = testers.invalidateFetcherByDrvHash fetchgit {
|
|
name = "submodule-leave-git-deep-source";
|
|
url = "https://github.com/pineapplehunter/nix-test-repo-with-submodule";
|
|
rev = "26473335b84ead88ee0a3b649b1c7fa4a91cfd4a";
|
|
sha256 = "sha256-ieYn9I/0RgeSwQkSqwKaU3RgjKFlRqMg7zw0Nvu3azA=";
|
|
deepClone = true;
|
|
leaveDotGit = true;
|
|
fetchSubmodules = true;
|
|
};
|
|
|
|
dumb-http-signed-tag = testers.invalidateFetcherByDrvHash fetchgit {
|
|
name = "dumb-http-signed-tag-source";
|
|
url = "https://git.scottworley.com/pub/git/pinch";
|
|
rev = "v3.0.14";
|
|
sha256 = "sha256-bd0Lx75Gd1pcBJtwz5WGki7XoYSpqhinCT3a77wpY2c=";
|
|
};
|
|
|
|
fetchTags = testers.invalidateFetcherByDrvHash fetchgit {
|
|
name = "fetchgit-fetch-tags-test";
|
|
url = "https://github.com/NixOS/nix";
|
|
rev = "9d9dbe6ed05854e03811c361a3380e09183f4f4a";
|
|
fetchTags = true;
|
|
leaveDotGit = true;
|
|
sha256 = "sha256-y7l+46lVP2pzJwGON5qEV0EoxWofRoWAym5q9VXvpc8=";
|
|
postFetch = ''
|
|
cd $out && git describe --tags --always > describe-output.txt 2>&1 || echo "git describe failed" > describe-output.txt
|
|
# See https://github.com/NixOS/nixpkgs/issues/412967#issuecomment-2927452118
|
|
rm -rf .git
|
|
'';
|
|
};
|
|
|
|
rootDir = testers.invalidateFetcherByDrvHash fetchgit {
|
|
name = "fetchgit-with-rootdir";
|
|
url = "https://github.com/NixOS/nix";
|
|
rev = "9d9dbe6ed05854e03811c361a3380e09183f4f4a";
|
|
rootDir = "misc/systemd";
|
|
sha256 = "sha256-UhxHk4SrXYq7ZDMtXLig5SigpbITrVgkpFTmryuvpcM=";
|
|
};
|
|
|
|
# Make sure that if an expected hash is given and the corresponding store path exists already, no fetch is done
|
|
cached-prefetch-avoids-fetch =
|
|
let
|
|
name = "cached-prefetch-avoids-fetch";
|
|
url = "https://github.com/NixOS/nix";
|
|
rev = "9d9dbe6ed05854e03811c361a3380e09183f4f4a";
|
|
sha256 = "sha256-7DszvbCNTjpzGRmpIVAWXk20P0/XTrWZ79KSOGLrUWY=";
|
|
fetched = fetchgit {
|
|
inherit
|
|
name
|
|
url
|
|
rev
|
|
sha256
|
|
;
|
|
};
|
|
in
|
|
runCommand "cached-prefetch-avoids-fetch"
|
|
{
|
|
nativeBuildInputs = [
|
|
nix-prefetch-git
|
|
nix
|
|
];
|
|
}
|
|
''
|
|
export NIX_REMOTE=local?root=$(mktemp -d)
|
|
nix-store --load-db < ${closureInfo { rootPaths = fetched; }}/registration
|
|
nix-prefetch-git --name "${name}" "${url}" "${rev}" "${sha256}" > $out
|
|
'';
|
|
|
|
prefetch-git-no-add-path =
|
|
testers.invalidateFetcherByDrvHash
|
|
(
|
|
{
|
|
name,
|
|
url,
|
|
rev,
|
|
hash,
|
|
...
|
|
}:
|
|
runCommand name
|
|
{
|
|
buildInputs = [
|
|
nix-prefetch-git
|
|
nix
|
|
cacert
|
|
jq
|
|
];
|
|
outputHashMode = "recursive";
|
|
outputHashAlgo = null;
|
|
outputHash = hash;
|
|
inherit url rev;
|
|
}
|
|
''
|
|
store_root="$(mktemp -d)"
|
|
prefetch() { NIX_REMOTE="local?root=$store_root" nix-prefetch-git $@ "$url" --rev "$rev" | jq -r .path; }
|
|
path="$(prefetch --no-add-path)"
|
|
if test -e "$store_root/$path"; then
|
|
echo "$path exists in $NIX_REMOTE when it shouldn't" >&2
|
|
exit 1
|
|
fi
|
|
path_added="$(prefetch)"
|
|
if ! test -e "$store_root/$path"; then
|
|
echo "$path_added doesn't exist in NIX_REMOTE when it should" >&2
|
|
exit 1
|
|
fi
|
|
if test "$path" != "$path_added"; then
|
|
echo "Paths are different with and without --no-add-path: $path != $path_added" >&2
|
|
exit 1
|
|
fi
|
|
cp -r "$store_root/$path_added" "$out"
|
|
''
|
|
)
|
|
{
|
|
name = "nix-prefetch-git-no-add-path";
|
|
url = "https://github.com/NixOS/nix";
|
|
rev = "9d9dbe6ed05854e03811c361a3380e09183f4f4a";
|
|
hash = "sha256-7DszvbCNTjpzGRmpIVAWXk20P0/XTrWZ79KSOGLrUWY=";
|
|
};
|
|
|
|
withGitConfig =
|
|
let
|
|
pkgs = import ../../.. {
|
|
config.gitConfig = {
|
|
url."https://github.com".insteadOf = "https://doesntexist.forsure";
|
|
};
|
|
};
|
|
in
|
|
pkgs.testers.invalidateFetcherByDrvHash pkgs.fetchgit {
|
|
name = "fetchgit-with-config";
|
|
url = "https://doesntexist.forsure/NixOS/nix";
|
|
rev = "9d9dbe6ed05854e03811c361a3380e09183f4f4a";
|
|
sha256 = "sha256-7DszvbCNTjpzGRmpIVAWXk20P0/XTrWZ79KSOGLrUWY=";
|
|
};
|
|
}
|