Try harder to find build logs
[?]
Aug 30, 2013, 1:53 PM
ZH6B56XRZON7AGKUPGKABU2SWOIQSYBTXVOMR66X6P6MG25Y4WZACDependencies
- [2]
PEU6WJ4IDependency tree: Revert to "repeated" links - [3]
LZVO64YGMerge in the first bits of the API work - [4]
HN3V252LOn the build page, show how many aggregate constituents failed - [5]
UWVMQIAC* Refactoring. - [6]
LBNVQXUB* Build the /build stuff in a separate controller. - [7]
YPDYBK5GShow dependencies as a tree rather than a list - [8]
RBHHV7P7* Read logs using logContents function in stead of handling it everywhere separately. - [9]
PMNWRTGJAdd multiple output support - [10]
MMDLWWZ2automatic reload of tail log when build is running - [11]
7IJXKGHDTurn repeated dependencies into hyperlinks - [12]
36M6DGITShow the runtime/build dependencies in the build page - [13]
VH5ZABDRAdd a page to show the latest evaluations for the entire server - [14]
2GUAKGTBFix indentation of build.tt - [15]
YLLP6LP7Remove the related builds tab - [16]
M6WGSGNMDon't show duration of unfinished builds - [17]
SAIUFDP3hydra: make sure viewing logs works when logs are bz2'd - [18]
SBMOICGVEvil CSS hackery to prevent link targets from being under the navbar - [19]
FU4GO5VNOn build pages, provide a link to the build's first eval - [20]
CAFO4ATEAlways show the build duration (using the cached build if necessary) - [21]
BIVZGPUTOptimise clickable rows - [22]
VG4QG336Remove tablesorter - [23]
J5UVLXOK* Start of a basic Catalyst web interface. - [24]
HB3OHPJLhydra: in case of cached build, add link to build that built the storepath - [25]
OD5FSS5A* Quick hack to allow viewing of dependency graphs (via nix-store -q - [26]
XDDCO6CH* hydra: add dependency list with links to logfiles - [27]
MOX7XJ2EMerge the BuildSchedulingInfo table into the Builds table - [28]
H47WLVAT* Handle the case where there is no cached build step that produced - [29]
5EIPRLDDexport logContents - [30]
QE253KG4* Option to show the tail of a log. - [31]
PPJN6SDP* paging for releases page - [32]
6M4KNDXX* Catalyst::View::Download::Plain doesn't like empty files. - [33]
HPEG2RHVMerge the BuildResultInfo table into the Builds table - [34]
U6UJRDG2* Oops. - [35]
MMJYE535Also show number of evaluations of which a build is a part - [36]
XKXMU5PVEllipsize long jobset/job names to prevent bootstrap navbar breakage - [37]
6F4UNDTC* Provide access to the raw, non-pretty-printed logfiles. - [38]
3PNG7NIBRemove trailing whitespace - [39]
OZDDUMVPAutomatically chomp all [%...%] directives - [40]
Y6AHH4THRemove the logfile and logSize columns from the database - [*]
2GK5DOU7* Downloading closures. - [*]
IN272KZW* Automatically keep all builds in the latest successful release in
Change contents
- replacement in src/lib/Hydra/Controller/Build.pm at line 38
my ($self, $c, $path, $status) = @_;my ($self, $c, $path) = @_; - replacement in src/lib/Hydra/Controller/Build.pm at line 40
{ path => $path, busy => 0, status => $status },{ join => ["buildstepoutputs"], order_by => ["stopTime"], limit => 1 })->single;{ path => $path, busy => 0 },{ join => ["buildstepoutputs"], order_by => ["status", "stopTime"], rows => 1 })->single; - replacement in src/lib/Hydra/Controller/Build.pm at line 46
my ($self, $c, $drvPath, $status) = @_;my ($self, $c, $drvPath) = @_; - replacement in src/lib/Hydra/Controller/Build.pm at line 48
{ drvpath => $drvPath, busy => 0, status => $status },{ order_by => ["stopTime"], limit => 1 })->single;{ drvpath => $drvPath, busy => 0 },{ order_by => ["status", "stopTime"], rows => 1 })->single; - replacement in src/lib/Hydra/Controller/Build.pm at line 71
my $cachedBuildStep = findBuildStepByOutPath($self, $c, $path,$build->buildstatus == 0 || $build->buildstatus == 6 ? 0 : 1);my $cachedBuildStep = findBuildStepByOutPath($self, $c, $path); - replacement in src/lib/Hydra/Controller/Build.pm at line 97
($c->stash->{eval}) = $c->stash->{build}->jobsetevals->search($c->stash->{eval} = $c->stash->{build}->jobsetevals->search( - replacement in src/lib/Hydra/Controller/Build.pm at line 99
{ limit => 1, order_by => ["id"] });{ rows => 1, order_by => ["id"] })->single; - replacement in src/lib/Hydra/Controller/Build.pm at line 134
showLog($c, $step->drvpath, $mode);showLog($c, $mode, $step->drvpath, map { $_->path } $step->buildstepoutputs->all); - replacement in src/lib/Hydra/Controller/Build.pm at line 140
showLog($c, $c->stash->{build}->drvpath, $mode);showLog($c, $mode, $c->stash->{build}->drvpath, map { $_->path } $c->stash->{build}->buildoutputs->all); - replacement in src/lib/Hydra/Controller/Build.pm at line 145
my ($c, $drvPath, $mode) = @_;my ($c, $mode, $drvPath, @outPaths) = @_; - replacement in src/lib/Hydra/Controller/Build.pm at line 147
my $logPath = getDrvLogPath($drvPath);my $logPath = findLog($c, $drvPath, @outPaths);print STDERR "log = $logPath\n"; - replacement in src/lib/Hydra/Controller/Build.pm at line 154
my $pipeline = "nix-store -l $drvPath"my $pipeline = ($logPath =~ /.bz2$/ ? "bzip2 -d < $logPath" : "cat $logPath") - replacement in src/lib/Hydra/Controller/Build.pm at line 162
$c->stash->{'plain'} = { data => (scalar logContents($drvPath)) || " " };$c->stash->{'plain'} = { data => (scalar logContents($logPath)) || " " }; - replacement in src/lib/Hydra/Controller/Build.pm at line 172
$c->stash->{contents} = (scalar logContents($drvPath, 50)) || " ";$c->stash->{contents} = (scalar logContents($logPath, 50)) || " "; - replacement in src/lib/Hydra/Controller/Build.pm at line 177
$c->stash->{'plain'} = { data => (scalar logContents($drvPath, 50)) || " " };$c->stash->{'plain'} = { data => (scalar logContents($logPath, 50)) || " " }; - replacement in src/lib/Hydra/Controller/Build.pm at line 364
? findBuildStepByOutPath($self, $c, $path, 0): findBuildStepByDrvPath($self, $c, $path, 0)? findBuildStepByOutPath($self, $c, $path): findBuildStepByDrvPath($self, $c, $path) - replacement in src/lib/Hydra/Helper/Nix.pm at line 19
jobsetOverview removeAsciiEscapes getDrvLogPath logContentsjobsetOverview removeAsciiEscapes getDrvLogPath findLog logContents - edit in src/lib/Hydra/Helper/Nix.pm at line 263[5.1312][43.3643]
return undef;}# Find the log of the derivation denoted by $drvPath. It it doesn't# exist, try other derivations that produced its outputs (@outPaths).sub findLog {my ($c, $drvPath, @outPaths) = @_;if (defined $drvPath) {my $logPath = getDrvLogPath($drvPath);return $logPath if defined $logPath;}return undef if scalar @outPaths == 0;my @steps = $c->model('DB::BuildSteps')->search({ path => { -in => [@outPaths] } },{ select => ["drvpath"], distinct => 1, join => "buildstepoutputs"});foreach my $step (@steps) {my $logPath = getDrvLogPath($step->drvpath);return $logPath if defined $logPath;} - replacement in src/lib/Hydra/Helper/Nix.pm at line 296
my ($drvPath, $tail) = @_;my $logPath = getDrvLogPath($drvPath);die unless defined $logPath;my ($logPath, $tail) = @_; - replacement in src/lib/Hydra/View/TT.pm at line 11
expose_methods => [qw/log_exists ellipsize/]);expose_methods => [qw/log_exists buildLogExists buildStepLogExists/]); - edit in src/lib/Hydra/View/TT.pm at line 17
}sub buildLogExists {my ($self, $c, $build) = @_;my @outPaths = map { $_->path } $build->buildoutputs->all;return defined findLog($c, $build->drvpath, @outPaths); - replacement in src/lib/Hydra/View/TT.pm at line 25
sub ellipsize {my ($self, $c, $s, $n) = @_;return length $s <= $n ? $s : substr($s, 0, $n - 3) . "...";sub buildStepLogExists {my ($self, $c, $step) = @_;my @outPaths = map { $_->path } $step->buildstepoutputs->all;return defined findLog($c, $step->drvpath, @outPaths); - replacement in src/root/build.tt at line 26
[% has_log = log_exists(step.drvpath);[% has_log = buildStepLogExists(step); - replacement in src/root/build.tt at line 180
[% IF !isAggregate && log_exists(build.drvpath) %][% IF !isAggregate && buildLogExists(build) %] - replacement in src/root/deps.tt at line 15
IF log_exists(node.buildStep.drvpath);IF buildStepLogExists(node.buildStep);