diff options
author | Nikolay Amiantov <ab@fmap.me> | 2015-10-15 16:11:33 +0300 |
---|---|---|
committer | Nikolay Amiantov <ab@fmap.me> | 2015-10-22 15:35:39 +0300 |
commit | d49140f3e4fbb00de9523b73b30d6dfe13d2f67c (patch) | |
tree | 42a10b1ab563516f8bd36f9933b05fea44cd9528 /pkgs | |
parent | 7fb7fafe0ff47e1edc225fe2001327c1f70f9481 (diff) | |
download | nixpkgs-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-x | pkgs/build-support/buildenv/builder.pl | 12 | ||||
-rw-r--r-- | pkgs/build-support/buildenv/default.nix | 14 |
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} |