aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scripts/nix-pull.in20
1 files changed, 16 insertions, 4 deletions
diff --git a/scripts/nix-pull.in b/scripts/nix-pull.in
index f1fb57e9b..86004102d 100644
--- a/scripts/nix-pull.in
+++ b/scripts/nix-pull.in
@@ -139,11 +139,23 @@ $? == 0 or die "nix-instantiate failed";
# Register all substitutes.
print STDERR "registering substitutes...\n";
-system "nix-store --substitute @subs";
-if ($?) { die "`nix-store --substitute' failed"; }
+while (scalar @subs > 0) {
+ my $n = scalar @subs;
+ if ($n > 256) { $n = 256 };
+ my @subs2 = @subs[0..$n - 1];
+ @subs = @subs[$n..scalar @subs - 1];
+ system "nix-store --substitute @subs2";
+ if ($?) { die "`nix-store --substitute' failed"; }
+}
# Register all successors.
print STDERR "registering successors...\n";
-system "nix-store --successor @sucs";
-if ($?) { die "`nix-store --successor' failed"; }
+while (scalar @sucs > 0) {
+ my $n = scalar @sucs;
+ if ($n > 256) { $n = 256 };
+ my @sucs2 = @sucs[0..$n - 1];
+ @sucs = @sucs[$n..scalar @sucs - 1];
+ system "nix-store --successor @sucs";
+ if ($?) { die "`nix-store --successor' failed"; }
+}