mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-09 19:13:26 +03:00

Added fetchTags feature to fetchgit, explicit and clear support for fetching all tags after the source tree fetch completes. Doing this at build-time in the fetcher is required for packages that invoke commands like 'git describe' which require tags, and since the nix store is read-only by design, it is not possible to git fetch --tags at activation- or run-time. This feature may have been possible by specifying a postFetch option including calling git fetch --tags, however doing so obfuscates the solution to this very real problem. Explicit support for fetching tags should be a first class citizen just like fetching other refs.
98 lines
3.6 KiB
Nix
98 lines
3.6 KiB
Nix
{ testers, fetchgit, ... }:
|
|
{
|
|
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-2vfZnYjZlnC8ODz6B6aOqAqtb1Wbjojnn/5TmzwUrmo=";
|
|
postFetch = ''
|
|
cd $out && git describe --tags --always > describe-output.txt 2>&1 || echo "git describe failed" > describe-output.txt
|
|
'';
|
|
};
|
|
}
|