From d49140f3e4fbb00de9523b73b30d6dfe13d2f67c Mon Sep 17 00:00:00 2001 From: Nikolay Amiantov Date: Thu, 15 Oct 2015 16:11:33 +0300 Subject: buildenv: support very long `paths` --- pkgs/build-support/buildenv/builder.pl | 12 +++++++++++- pkgs/build-support/buildenv/default.nix | 14 ++++++++------ 2 files changed, 19 insertions(+), 7 deletions(-) (limited to 'pkgs') diff --git a/pkgs/build-support/buildenv/builder.pl b/pkgs/build-support/buildenv/builder.pl index fd8098caf13c..155af314397b 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 = ; + 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 8cbf0dc6c8e4..e7ac87c109f3 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} -- cgit 1.4.1