Skip to content

Commit

Permalink
Merge pull request NixOS#10992 from hercules-ci/issue-10947-dont-cach…
Browse files Browse the repository at this point in the history
…e-disallowed-ifd

Fix NixOS#10947; don't cache disallowed IFD
  • Loading branch information
edolstra authored Jul 1, 2024

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
2 parents 10ceb7d + fd94b74 commit 10c9764
Showing 2 changed files with 17 additions and 2 deletions.
2 changes: 1 addition & 1 deletion src/libexpr/primops.cc
Original file line number Diff line number Diff line change
@@ -78,7 +78,7 @@ StringMap EvalState::realiseContext(const NixStringContext & context, StorePathS
if (drvs.empty()) return {};

if (isIFD && !settings.enableImportFromDerivation)
error<EvalError>(
error<EvalBaseError>(
"cannot build '%1%' during evaluation because the option 'allow-import-from-derivation' is disabled",
drvs.begin()->to_string(*store)
).debugThrow();
17 changes: 16 additions & 1 deletion tests/functional/flakes/eval-cache.sh
Original file line number Diff line number Diff line change
@@ -7,12 +7,22 @@ requireGit
flake1Dir="$TEST_ROOT/eval-cache-flake"

createGitRepo "$flake1Dir" ""
cp ../simple.nix ../simple.builder.sh ../config.nix "$flake1Dir/"
git -C "$flake1Dir" add simple.nix simple.builder.sh config.nix
git -C "$flake1Dir" commit -m "config.nix"

cat >"$flake1Dir/flake.nix" <<EOF
{
description = "Fnord";
outputs = { self }: {
outputs = { self }: let inherit (import ./config.nix) mkDerivation; in {
foo.bar = throw "breaks";
drv = mkDerivation {
name = "build";
buildCommand = ''
echo true > \$out
'';
};
ifd = assert (import self.drv); self.drv;
};
}
EOF
@@ -22,3 +32,8 @@ git -C "$flake1Dir" commit -m "Init"

expect 1 nix build "$flake1Dir#foo.bar" 2>&1 | grepQuiet 'error: breaks'
expect 1 nix build "$flake1Dir#foo.bar" 2>&1 | grepQuiet 'error: breaks'

# Conditional error should not be cached
expect 1 nix build "$flake1Dir#ifd" --option allow-import-from-derivation false 2>&1 \
| grepQuiet 'error: cannot build .* during evaluation because the option '\''allow-import-from-derivation'\'' is disabled'
nix build "$flake1Dir#ifd"

0 comments on commit 10c9764

Please sign in to comment.