lix/src/libstore/build
Eelco Dolstra 5cd72598fe Add support for impure derivations
Impure derivations are derivations that can produce a different result
every time they're built. Example:

  stdenv.mkDerivation {
    name = "impure";
    __impure = true; # marks this derivation as impure
    outputHashAlgo = "sha256";
    outputHashMode = "recursive";
    buildCommand = "date > $out";
  };

Some important characteristics:

* This requires the 'impure-derivations' experimental feature.

* Impure derivations are not "cached". Thus, running "nix-build" on
  the example above multiple times will cause a rebuild every time.

* They are implemented similar to CA derivations, i.e. the output is
  moved to a content-addressed path in the store. The difference is
  that we don't register a realisation in the Nix database.

* Pure derivations are not allowed to depend on impure derivations. In
  the future fixed-output derivations will be allowed to depend on
  impure derivations, thus forming an "impurity barrier" in the
  dependency graph.

* When sandboxing is enabled, impure derivations can access the
  network in the same way as fixed-output derivations. In relaxed
  sandboxing mode, they can access the local filesystem.
2022-03-31 13:43:20 +02:00
..
derivation-goal.cc Add support for impure derivations 2022-03-31 13:43:20 +02:00
derivation-goal.hh Add support for impure derivations 2022-03-31 13:43:20 +02:00
drv-output-substitution-goal.cc BuildResult: Use DerivedPath 2022-03-09 12:25:35 +01:00
drv-output-substitution-goal.hh Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
entry-points.cc BuildResult: Use DerivedPath 2022-03-09 12:25:35 +01:00
goal.cc Random cleanup 2022-03-24 23:24:10 +01:00
goal.hh Random cleanup 2022-03-24 23:09:43 +01:00
hook-instance.cc Change .cc files to use split build headers 2020-10-12 17:08:52 +00:00
hook-instance.hh Trim hook-instance.hh 2020-10-12 17:16:13 +00:00
local-derivation-goal.cc Add support for impure derivations 2022-03-31 13:43:20 +02:00
local-derivation-goal.hh Add Store::buildPathsWithResults() 2022-03-08 19:56:34 +01:00
substitution-goal.cc BuildResult: Use DerivedPath 2022-03-09 12:25:35 +01:00
substitution-goal.hh Add Store::buildPathsWithResults() 2022-03-08 19:56:34 +01:00
worker.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
worker.hh Remove std::set alias 2022-02-21 16:28:23 +01:00