J'ai posé cette question sur le canal IRC, mais j'ai pensé la documenter ici pour ma propre référence ainsi que celle des autres.
J'ai un fichier shell.nix qui prend beaucoup de temps à construire, en particulier il semble construire un HUnit
paquet.
Mon fichier shell.nix ressemble à :
{
sources ? import ./nix/sources.nix
, compiler ? "ghc865" } :
let
niv = import sources.nixpkgs {
overlays = [
(_ : _ : { niv = import sources.niv {}; })
] ;
config = {};
};
pkgs = niv.pkgs;
myHaskellPackages = pkgs.haskell.packages.${compiler}.override {
};
in
myHaskellPackages.callCabal2nix "moscoviumorange" (./.) {}
Et la source est épinglée à (avec niv):
{
"niv": {
"branch": "master",
"description": "Easy dependency management for Nix projects",
"homepage": "https://github.com/nmattia/niv",
"owner": "nmattia",
"repo": "niv",
"rev": "88d6f20882b0422470acbcbf2d1b5f07e1d436f0",
"sha256": "0wkvz4drnglmmdrz8q1i1yr2fqizpf96k1wq2rlhd8l8x1522izq",
"type": "tarball",
"url": "https://github.com/nmattia/niv/archive/88d6f20882b0422470acbcbf2d1b5f07e1d436f0.tar.gz",
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
},
"nixpkgs": {
"branch": "nixos-19.03",
"description": "A read-only mirror of NixOS/nixpkgs tracking the released channels. Send issues and PRs to",
"homepage": "https://github.com/NixOS/nixpkgs",
"owner": "NixOS",
"repo": "nixpkgs-channels",
"rev": "775fb69ed73e7cf6b7d3dd9853a60f40e8efc340",
"sha256": "1w068b0ydw4c26mcjiwlzdfqcdk3rrwmfx4hxzgfhfwcz2nmh3if",
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs-channels/archive/775fb69ed73e7cf6b7d3dd9853a60f40e8efc340.tar.gz",
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
}
}
Pourquoi nix construit-il un tas de paquets, alors que je suppose qu'ils devraient être dans le cache binaire de nixpkg ?
Par exemple, la sortie de nix-shell inclut :
building '/nix/store/7011izw8f2xyvhqadrhnmapddyz61f29-HUnit-1.6.0.0.drv'...
Réponse acceptée :
Nous pouvons rechercher le package HUnit à Hydra (pour 19.03):
https://hydra.nixos.org/eval/1552169?filter=HUnit&compare=1551557&full=#tabs-still-fail
Selon l'HUnit
ci-dessus est construit et serait dans le cache binaire.
Nous déterminons le chemin d'accès au magasin de la dérivation en cours de construction avec :
nix-store --query --binding out /nix/store/7011izw8f2xyvhqadrhnmapddyz61f29-HUnit-1.6.0.0.drv
/nix/store/ryr2qdms3n0qbj8d3l9pvs7ajz4dzav4-HUnit-1.6.0.0
Nous pouvons comparer ce qui suit avec hydra :https://hydra.nixos.org/build/103222205#tabs-details
curl https://cache.nixos.org/ryr2qdms3n0qbj8d3l9pvs7ajz4dzav4.narinfo
404
404 signifie que le chemin n'est PAS dans le cache binaire.
La réponse s'est avérée être que je faisais référence à ghc
être ghc865
alors que hydra est probablement en train de construire avec ghc864
par défaut (pour 19.03).
Les réponses ci-dessus provenaient à l'origine de clever
dans le #nixos
Canal IRC, merci !