Je crée mon propre dépôt pour récupérer une source git.Comment `nix-build` à nouveau un chemin de magasin construit?
# packages.nix
with (import <nixpkgs> {});
rec {
rustcSource = fetchgit {
url = https://github.com/rust-lang/rust;
rev = "3191fbae9da539442351f883bdabcad0d72efcb6";
sha256 = "0w1l14kz9kxyj5dw3w9xxk1fzww5xqs3sf8saay0mh7nkmvrdb59";
};
}
Puis-je construire rustcSource
,
sudo nix-env -f package.nix -A rustcSource
Il révèle un chemin de magasin de /nix/store/096fpy9qjbz5r14aadjnq9d2md9ql9cg-rust-3191fba
. Le problème est, j'ai oublié de le télécharger est sous-modules, donc je changer mon expression pour inclure des sous-modules,
with (import <nixpkgs> {});
rec {
rustcSource = fetchgit {
url = https://github.com/rust-lang/rust;
rev = "3191fbae9da539442351f883bdabcad0d72efcb6";
sha256 = "0w1l14kz9kxyj5dw3w9xxk1fzww5xqs3sf8saay0mh7nkmvrdb59";
leaveDotGit = true;
fetchSubmodules = true;
};
}
Mais, j'ai découvert que nix-build
ne recalcule pas le hachage et voir que le chemin a été construit. Donc, il finit par ne pas télécharger les sous-modules.
Q: Est-ce bug nix? Comment puis-je "reconstruire" ou redéposer le référentiel?
P.S. En fait, je crée une dérivation avec fetchgit, mais elle échoue parce que les sous-modules ne sont pas téléchargés. Donc, le cas ci-dessus simplifie mon problème.
Merci pour la réponse! Une explication sur la façon de résoudre le problème? (donc je peux reconstruire en utilisant 'fetchSubmodules' réglé sur true) – Abdillah
Changez le hash en quelque chose de aléatoire et nix vous rapportera le hachage correct. – iElectric