From f54e800366b3c8540c60f0a35c407ad701e2f622 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Sat, 28 Mar 2009 16:12:27 +0000 Subject: [PATCH] * The `fixedOutput' variable didn't get initialised when using a build hook, causing negative caching to fail randomly. --- src/libstore/build.cc | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/libstore/build.cc b/src/libstore/build.cc index 8c5c6cc36..92bf1cab0 100644 --- a/src/libstore/build.cc +++ b/src/libstore/build.cc @@ -942,6 +942,11 @@ void DerivationGoal::inputsRealised() allPaths.insert(inputPaths.begin(), inputPaths.end()); + /* Is this a fixed-output derivation? */ + fixedOutput = true; + foreach (DerivationOutputs::iterator, i, drv.outputs) + if (i->second.hash == "") fixedOutput = false; + /* Okay, try to build. Note that here we don't wait for a build slot to become available, since we don't need one if there is a build hook. */ @@ -1479,11 +1484,7 @@ void DerivationGoal::startBuilder() derivation, tell the builder, so that for instance `fetchurl' can skip checking the output. On older Nixes, this environment variable won't be set, so `fetchurl' will do the check. */ - fixedOutput = true; - foreach (DerivationOutputs::iterator, i, drv.outputs) - if (i->second.hash == "") fixedOutput = false; - if (fixedOutput) - env["NIX_OUTPUT_CHECKED"] = "1"; + if (fixedOutput) env["NIX_OUTPUT_CHECKED"] = "1"; /* *Only* if this is a fixed-output derivation, propagate the values of the environment variables specified in the