summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorNikolay Amiantov <ab@fmap.me>2015-10-15 16:11:33 +0300
committerNikolay Amiantov <ab@fmap.me>2015-10-22 15:35:39 +0300
commitd49140f3e4fbb00de9523b73b30d6dfe13d2f67c (patch)
tree42a10b1ab563516f8bd36f9933b05fea44cd9528 /pkgs
parent7fb7fafe0ff47e1edc225fe2001327c1f70f9481 (diff)
downloadnixpkgs-d49140f3e4fbb00de9523b73b30d6dfe13d2f67c.tar
nixpkgs-d49140f3e4fbb00de9523b73b30d6dfe13d2f67c.tar.gz
nixpkgs-d49140f3e4fbb00de9523b73b30d6dfe13d2f67c.tar.bz2
nixpkgs-d49140f3e4fbb00de9523b73b30d6dfe13d2f67c.tar.lz
nixpkgs-d49140f3e4fbb00de9523b73b30d6dfe13d2f67c.tar.xz
nixpkgs-d49140f3e4fbb00de9523b73b30d6dfe13d2f67c.tar.zst
nixpkgs-d49140f3e4fbb00de9523b73b30d6dfe13d2f67c.zip
buildenv: support very long `paths`
Diffstat (limited to 'pkgs')
-rwxr-xr-xpkgs/build-support/buildenv/builder.pl12
-rw-r--r--pkgs/build-support/buildenv/default.nix14
2 files changed, 19 insertions, 7 deletions
diff --git a/pkgs/build-support/buildenv/builder.pl b/pkgs/build-support/buildenv/builder.pl
index fd8098caf13..155af314397 100755
--- a/pkgs/build-support/buildenv/builder.pl
+++ b/pkgs/build-support/buildenv/builder.pl
@@ -117,10 +117,20 @@ sub addPkg {
     }
 }
 
+# Read packages list.
+my $pkgs;
+
+if (exists $ENV{"pkgsPath"}) {
+    open FILE, $ENV{"pkgsPath"};
+    $pkgs = <FILE>;
+    close FILE;
+} else {
+    $pkgs = $ENV{"pkgs"}
+}
 
 # Symlink to the packages that have been installed explicitly by the
 # user.
-for my $pkg (@{decode_json $ENV{"pkgs"}}) {
+for my $pkg (@{decode_json $pkgs}) {
     for my $path (@{$pkg->{paths}}) {
         addPkg($path, $ENV{"ignoreCollisions"} eq "1", $pkg->{priority}) if -e $path;
     }
diff --git a/pkgs/build-support/buildenv/default.nix b/pkgs/build-support/buildenv/default.nix
index 8cbf0dc6c8e..e7ac87c109f 100644
--- a/pkgs/build-support/buildenv/default.nix
+++ b/pkgs/build-support/buildenv/default.nix
@@ -34,12 +34,14 @@
 }:
 
 runCommand name
-  { inherit manifest ignoreCollisions passthru pathsToLink extraPrefix postBuild buildInputs;
-    pkgs = builtins.toJSON (map (drv: {
-      paths = [ drv ]; # FIXME: handle multiple outputs
-      priority = drv.meta.priority or 5;
-    }) paths);
-    preferLocalBuild = true;
+  rec { inherit manifest ignoreCollisions passthru pathsToLink extraPrefix postBuild buildInputs;
+        pkgs = builtins.toJSON (map (drv: {
+          paths = [ drv ]; # FIXME: handle multiple outputs
+          priority = drv.meta.priority or 5;
+        }) paths);
+        preferLocalBuild = true;
+        # XXX: The size is somewhat arbitrary
+        passAsFile = if builtins.stringLength pkgs >= 128*1024 then [ "pkgs" ] else null;
   }
   ''
     ${perl}/bin/perl -w ${./builder.pl}