GNU/Linux >> Linux の 問題 >  >> Linux

NixpkgsバイナリキャッシュにあるべきときにNixがパッケージを不必要に構築している理由のデバッグ?

IRCチャネルでこの質問をしましたが、自分自身と他の人の参考のために、ここに文書化すると思いました。

ビルドに時間がかかるshell.nixファイルがあります。特に、HUnitをビルドしているようです。 パッケージ。

私のshell.nixファイルは次のようになります:

{
 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" (./.) {}

そして、ソースは(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"
    }
}

nixpkgのバイナリキャッシュにあるはずなのに、nixが一連のパッケージを構築するのはなぜですか?

たとえば、nix-shellの出力には次のものが含まれます。

building '/nix/store/7011izw8f2xyvhqadrhnmapddyz61f29-HUnit-1.6.0.0.drv'...

承認された回答:

HydraでHUnitパッケージを検索できます(19.03の場合):

https://hydra.nixos.org/eval/1552169?filter=HUnit&compare=1551557&full=#tabs-still-fail

上記のHUnitによると ビルドされ、バイナリキャッシュにあります。

構築されていた派生のストアパスを決定します:

nix-store --query --binding out /nix/store/7011izw8f2xyvhqadrhnmapddyz61f29-HUnit-1.6.0.0.drv
/nix/store/ryr2qdms3n0qbj8d3l9pvs7ajz4dzav4-HUnit-1.6.0.0

以下をhydraと比較できます:https://hydra.nixos.org/build/103222205#tabs-details

curl https://cache.nixos.org/ryr2qdms3n0qbj8d3l9pvs7ajz4dzav4.narinfo
404

404は、パスがバイナリキャッシュにないことを意味します。

答えは、私がghcを参照していたということでした。 ghc865になります hydraはおそらくghc864で構築されています デフォルト(19.03の場合)。

上記の回答は元々cleverからのものでした #nixosで IRCチャンネル、ありがとう!


Linux
  1. Nix –LinuxおよびUnix用の強力なパッケージマネージャー

  2. Linux – -9プロセスを強制終了すべきではないのはいつですか?

  3. / var / cacheを安全に削除しますか?

  1. ディレクトリで末尾のスラッシュを使用する必要があるのはいつですか?

  2. 〜/ .profileを〜/.bash_profileに追加する理由

  3. いつソースからコンパイルしてインストールする必要がありますか?

  1. いつ、なぜApt-get Updateを使用する必要がありますか?

  2. 引用符を使用すると、なぜ単一の円記号が表示されるのですか?

  3. Linux での軽量メモリ リークのデバッグ