* Speed up manifest generation.
[?]
Feb 26, 2009, 4:57 PM
BDSD2JLV4V4I52SE7MCZLYNDC4XU27ZNH7TYKLT7CA7YR5WRMQBACDependencies
- [2]
2T42QGZD* Register builds as GC roots so they don't get deleted. - [3]
2JQ7WEFM - [4]
5NO7NCKT* Refactoring. - [5]
IWVA2P2Y* Generate manifests on demand. Next step: generate NAR archives on - [6]
NYC3LZKH* Generate NAR archives on the fly. Necessary for producing channels - [7]
AFTXA575* $HYDRA_DATA environment variable. - [8]
Y35C6GHH* One-click installs. - [9]
ZRBXLKFO - [10]
IN272KZW* Automatically keep all builds in the latest successful release in - [*]
2GK5DOU7* Downloading closures. - [*]
WZ3AEJ67* hydra_update_gc_roots.pl registers build outputs that should be kept
Change contents
- replacement in src/Hydra/lib/Hydra/Helper/Nix.pm at line 10
isValidPath getHydraPath getHydraDBPath openHydraDBisValidPath queryPathInfogetHydraPath getHydraDBPath openHydraDB - edit in src/Hydra/lib/Hydra/Helper/Nix.pm at line 23[13.374][4.298]
}sub queryPathInfo {my $path = shift;# !!! like above, this breaks abstraction. What we really need is# Perl bindings for libstore :-)open FH, "</nix/var/nix/db/info/" . basename $pathor die "cannot open info file for $path";my $hash;my $deriver;my @refs = ();while (<FH>) {if (/^Hash: (\S+)$/) {$hash = $1;}elsif (/^Deriver: (\S+)$/) {$deriver = $1;}elsif (/^References: (.*)$/) {@refs = split / /, $1;}}close FH;die unless defined $hash;return ($hash, $deriver, \@refs); - replacement in src/Hydra/lib/Hydra/View/NixManifest.pm at line 5
use IO::Pipe;use POSIX qw(dup2);use Hydra::Helper::Nix; - replacement in src/Hydra/lib/Hydra/View/NixManifest.pm at line 24
my @refs = split '\n', `nix-store --query --references $path`;die "cannot query references of `$path': $?" if $? != 0;my ($hash, $deriver, $refs) = queryPathInfo $path; - edit in src/Hydra/lib/Hydra/View/NixManifest.pm at line 26
my $hash = `nix-store --query --hash $path`or die "cannot query hash of `$path': $?";chomp $hash; - edit in src/Hydra/lib/Hydra/View/NixManifest.pm at line 28
my $deriver = `nix-store --query --deriver $path`or die "cannot query deriver of `$path': $?";chomp $deriver; - replacement in src/Hydra/lib/Hydra/View/NixManifest.pm at line 31
(scalar @refs > 0 ? " References: @refs\n" : "") .($deriver ne "unknown-deriver" ? " Deriver: $deriver\n" : "") .(scalar @{$refs} > 0 ? " References: @{$refs}\n" : "") .(defined $deriver ? " Deriver: $deriver\n" : "") .