buildenv: support very long paths

This commit is contained in:
Nikolay Amiantov 2015-10-15 16:11:33 +03:00
parent 7fb7fafe0f
commit d49140f3e4
2 changed files with 19 additions and 7 deletions

View File

@ -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;
}

View File

@ -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}