diff options
author | Jan Malakhovski <oxij@oxij.org> | 2018-01-02 14:52:27 +0000 |
---|---|---|
committer | Jan Malakhovski <oxij@oxij.org> | 2018-01-14 13:24:30 +0000 |
commit | eaee2a119916b2761d08cb8f68f1b4afbde15e51 (patch) | |
tree | 68d5cead0b2bc61317ad48071e19b3714e78d780 /pkgs/stdenv/generic | |
parent | ecd3990cd4bd76e15658975f2e6f523f805ce52e (diff) | |
download | nixlib-eaee2a119916b2761d08cb8f68f1b4afbde15e51.tar nixlib-eaee2a119916b2761d08cb8f68f1b4afbde15e51.tar.gz nixlib-eaee2a119916b2761d08cb8f68f1b4afbde15e51.tar.bz2 nixlib-eaee2a119916b2761d08cb8f68f1b4afbde15e51.tar.lz nixlib-eaee2a119916b2761d08cb8f68f1b4afbde15e51.tar.xz nixlib-eaee2a119916b2761d08cb8f68f1b4afbde15e51.tar.zst nixlib-eaee2a119916b2761d08cb8f68f1b4afbde15e51.zip |
stdenv: implement `config.checkMetaRecursively`
This option makes `meta.evaluate` into a close approximation of the result of evaluating `.outPath` by checking all the dependencies recursively at a cost of 2x slowdown. Note that actually evaluating `.outPath` costs some 5x-7x more because `.outPath` also computes all the hashes.
Diffstat (limited to 'pkgs/stdenv/generic')
-rw-r--r-- | pkgs/stdenv/generic/make-derivation.nix | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/pkgs/stdenv/generic/make-derivation.nix b/pkgs/stdenv/generic/make-derivation.nix index 78e558daff1b..ab5edfcd17c0 100644 --- a/pkgs/stdenv/generic/make-derivation.nix +++ b/pkgs/stdenv/generic/make-derivation.nix @@ -72,6 +72,9 @@ rec { inherit erroneousHardeningFlags hardeningDisable hardeningEnable supportedHardeningFlags; }) else let + references = nativeBuildInputs ++ buildInputs + ++ propagatedNativeBuildInputs ++ propagatedBuildInputs; + dependencies = map (map lib.chooseDevOutputs) [ [ (map (drv: drv.__spliced.buildBuild or drv) depsBuildBuild) @@ -213,7 +216,10 @@ rec { position = pos.file + ":" + toString pos.line; # Expose the result of the checks for everyone to see. } // { - evaluates = validity.valid; + evaluates = validity.valid + && (if config.checkMetaRecursively or false + then lib.all (d: d.meta.evaluates or true) references + else true); }; in |