aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2019-06-21 18:34:43 +0200
committerEelco Dolstra <edolstra@gmail.com>2019-06-21 18:34:43 +0200
commitaa2846198f46c1260a91a6bf21a2f53997f1f274 (patch)
tree11631c437346fd77b01ab7d2b271f2c8fe7d5b14
parentd132d057a85aa1812c4133feed6c9b34ca70671d (diff)
Don't update the global registry when building a locked flake
It's unnecessary and slows things down (e.g. when you're on a Thalys with super-crappy Internet).
-rw-r--r--src/libexpr/flake/flake.cc4
-rw-r--r--tests/flakes.sh5
2 files changed, 7 insertions, 2 deletions
diff --git a/src/libexpr/flake/flake.cc b/src/libexpr/flake/flake.cc
index 215eb85b6..e9db9d80e 100644
--- a/src/libexpr/flake/flake.cc
+++ b/src/libexpr/flake/flake.cc
@@ -119,7 +119,9 @@ static FlakeRef lookupFlake(EvalState & state, const FlakeRef & flakeRef, const
static SourceInfo fetchFlake(EvalState & state, const FlakeRef & flakeRef, bool impureIsAllowed = false)
{
FlakeRef resolvedRef = lookupFlake(state, flakeRef,
- impureIsAllowed ? state.getFlakeRegistries() : std::vector<std::shared_ptr<FlakeRegistry>>());
+ impureIsAllowed && !flakeRef.isDirect()
+ ? state.getFlakeRegistries()
+ : std::vector<std::shared_ptr<FlakeRegistry>>());
if (evalSettings.pureEval && !impureIsAllowed && !resolvedRef.isImmutable())
throw Error("requested to fetch mutable flake '%s' in pure mode", resolvedRef);
diff --git a/tests/flakes.sh b/tests/flakes.sh
index bfe00a674..ccab84612 100644
--- a/tests/flakes.sh
+++ b/tests/flakes.sh
@@ -168,6 +168,9 @@ git -C $flake2Dir commit flake.lock -m 'Add flake.lock'
nix build -o $TEST_ROOT/result --flake-registry $registry $flake2Dir:bar
[[ -z $(git -C $flake2Dir diff master) ]]
+# Building with a lockfile should not require a fetch of the registry.
+nix build -o $TEST_ROOT/result --flake-registry file:///no-registry.json $flake2Dir:bar --tarball-ttl 0
+
# Updating the flake should not change the lockfile.
nix flake update --flake-registry $registry $flake2Dir
[[ -z $(git -C $flake2Dir diff master) ]]
@@ -297,7 +300,7 @@ nix build -o $TEST_ROOT/result --flake-registry $registry flake3:xyzzy flake3:fn
# Test doing multiple `lookupFlake`s
nix build -o $TEST_ROOT/result --flake-registry $registry flake4:xyzzy
-nix build -o $TEST_ROOT/result --flake-registry $registry file://$flake4Dir:xyzzy
+#nix build -o $TEST_ROOT/result --flake-registry $registry file://$flake4Dir:xyzzy
# Make branch "removeXyzzy" where flake3 doesn't have xyzzy anymore
git -C $flake3Dir checkout -b removeXyzzy