* Get rid of "positive failures" and separate log phases.
[?]
Nov 25, 2008, 12:38 AM
BD3GRK4BQUGRQGTAILUITIH3RRSVUH6AKINVMMKYLBAAHAAUSB4ACDependencies
- [2]
AS5PAYLI - [3]
GCHNNFZP - [4]
BA46C5LN* Pretty-print the logs. - [5]
IK53RV4V - [6]
M552HLIA* Support variant builds. - [7]
KOTB7BKV - [8]
PHX2HIVG* Store info about the build inputs in the build record. - [9]
7YBYT2LQ - [10]
X27GNHDV* Basic job info in the database. - [11]
HJLYC753* Adding input value alternatives. - [12]
N22GPKYT* Put info about logs / build products in the DB. - [13]
CLJQCY2X* Store info about all the build actions and allow them to be - [14]
L2E6EVE2* Merged the Build and Job tables. - [15]
4JPNFWRB* Use jquery for the logfile manipulation. - [16]
WYN733ST* Store build duration, handle cached builds. - [17]
GWCV3TQV* BuildInputs table: link to dependencies, include store paths. - [18]
MOCEUXZA* Support serving products that are directories (such as manuals or - [19]
J5UVLXOK* Start of a basic Catalyst web interface. - [20]
ZEHSSVFG - [21]
TQKGQ5R3 - [22]
DVNWJXWW* Generic declaration of build products. - [23]
TLZ2SPBR - [24]
VCOSLZRP - [25]
67P45PY4 - [26]
BVOPAMLS - [27]
B72GLND4 - [28]
WHAFVCEI - [29]
YTZOC7C5* Editing of jobset inputs. - [30]
LQNBKF3D
Change contents
- replacement in src/HydraFrontend/lib/HydraFrontend/Controller/Root.pm at line 304
my ( $self, $c, $id, $logPhase ) = @_;my ( $self, $c, $id ) = @_; - replacement in src/HydraFrontend/lib/HydraFrontend/Controller/Root.pm at line 307
return error($c, "Build with ID $id doesn't exist.") if !defined $build;return error($c, "Build $id doesn't exist.") if !defined $build; - replacement in src/HydraFrontend/lib/HydraFrontend/Controller/Root.pm at line 309[5.2043]→[5.2043:2107](∅→∅),[5.2107]→[3.1406:1500](∅→∅),[3.1500]→[5.2210:2215](∅→∅),[5.2210]→[5.2210:2215](∅→∅)
my $log = $build->buildlogs->find({logphase => $logPhase});return error($c, "Build $id doesn't have a log phase named $logPhase.") if !defined $log;return error($c, "Build $id didn't produce a log.") if !defined $build->resultInfo->logfile; - replacement in src/HydraFrontend/lib/HydraFrontend/Controller/Root.pm at line 312
$c->stash->{id} = $id;$c->stash->{log} = $log;$c->stash->{build} = $build; - replacement in src/HydraFrontend/lib/HydraFrontend/Controller/Root.pm at line 315
$c->stash->{logtext} = loadLog($log->path);$c->stash->{logtext} = loadLog($build->resultInfo->logfile); - edit in src/HydraFrontend/lib/HydraFrontend/Controller/Root.pm at line 341
die unless defined $path; - file deletion: Buildlogs.pm
package HydraFrontend::Schema::Buildlogs;use strict;use warnings;use base 'DBIx::Class';__PACKAGE__->load_components("Core");__PACKAGE__->add_columns({ data_type => "integer", is_nullable => 0, size => undef },"logphase",{ data_type => "text", is_nullable => 0, size => undef },"path",{ data_type => "text", is_nullable => 0, size => undef },"type",{ data_type => "text", is_nullable => 0, size => undef },);# You can replace this text with custom content, and it will be preserved on regeneration1;# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-17 17:09:46# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:zWuDHHMl7eWUWU238D5MWg__PACKAGE__->set_primary_key("build", "logphase");__PACKAGE__->belongs_to("build", "HydraFrontend::Schema::Builds", { id => "build" });"build",__PACKAGE__->table("BuildLogs"); - replacement in src/HydraFrontend/lib/HydraFrontend/Schema/Buildinputs.pm at line 32
{ data_type => "VARCHAR", is_nullable => 0, size => undef },{ data_type => "text", is_nullable => 0, size => undef }, - replacement in src/HydraFrontend/lib/HydraFrontend/Schema/Buildinputs.pm at line 43
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-17 17:09:46# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:96p2HKZ/6kk0zZKq3JuvDg# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-24 17:46:46# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:9u9ep3Cq/SginPyhrzXlTA - replacement in src/HydraFrontend/lib/HydraFrontend/Schema/Buildproducts.pm at line 36
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-17 17:09:46# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:kiP5lQxpuaZUZiqHigHYxQ# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-24 17:46:46# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:d85fCxlq/WDfQa20zXYuzw - edit in src/HydraFrontend/lib/HydraFrontend/Schema/Buildresultinfo.pm at line 23
"logfile",{ data_type => "text", is_nullable => 0, size => undef }, - replacement in src/HydraFrontend/lib/HydraFrontend/Schema/Buildresultinfo.pm at line 30
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-17 17:09:46# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:MqQ972Qn6sjoWbbbzmE1cg# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-24 17:46:46# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:c2KXbqA8Xan4Lgf7AlK2EA - edit in src/HydraFrontend/lib/HydraFrontend/Schema/Builds.pm at line 75[5.1152]→[5.1152:1175](∅→∅),[5.1175]→[5.912:965](∅→∅),[5.965]→[5.1236:1272](∅→∅),[5.1236]→[5.1236:1272](∅→∅),[5.1272]→[5.1384:1387](∅→∅),[5.1384]→[5.1384:1387](∅→∅)
__PACKAGE__->has_many("buildlogs","HydraFrontend::Schema::Buildlogs",{ "foreign.build" => "self.id" },); - replacement in src/HydraFrontend/lib/HydraFrontend/Schema/Builds.pm at line 77
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-17 17:09:46# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:yYcxVJ1KnjD3KKWt4XQFMg# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-24 17:46:46# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:/Iabv2HeyAsubLe+yPc/6Q - replacement in src/HydraFrontend/lib/HydraFrontend/Schema/Buildschedulinginfo.pm at line 26
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-17 17:09:46# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:uAs9z69gMZRAQSzvOGsqEQ# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-24 17:46:46# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:vqJ7HEML5YNn5VIXEhZbnw - replacement in src/HydraFrontend/lib/HydraFrontend/Schema/Buildsteps.pm at line 38
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-17 17:09:46# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:mM/rt5x2l2wMZn+EnctifQ# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-24 17:46:46# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:BuZp6PHq9l/9xyA/x7TOVQ - replacement in src/HydraFrontend/lib/HydraFrontend/Schema/Jobsetinputalts.pm at line 34
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-17 17:09:46# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:xj0LojYsbdSMWCv+KUH8sw# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-24 17:46:46# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:x7OCv8YzB2L4H+RxEfwjbg - replacement in src/HydraFrontend/lib/HydraFrontend/Schema/Jobsetinputs.pm at line 46
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-17 17:09:46# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:VO/SU4tv5UxNAmiwsqn6UA# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-24 17:46:46# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:SKU48+1LqxIcuVY5gaDHCg - replacement in src/HydraFrontend/lib/HydraFrontend/Schema/Jobsets.pm at line 51
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-17 17:09:46# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:jZ0kG9EzEJn5mJFSp2WFpw# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-24 17:46:46# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:F3WF5YS/Yas12dK2Gyekpg - replacement in src/HydraFrontend/lib/HydraFrontend/Schema/Projects.pm at line 16
{ data_type => "VARCHAR", is_nullable => 0, size => undef },{ data_type => "text", is_nullable => 0, size => undef }, - replacement in src/HydraFrontend/lib/HydraFrontend/Schema/Projects.pm at line 33
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-17 17:09:46# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:XkQtF1ABmLxvxND62rBlCw# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-24 17:46:46# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:M+HA5YEL1oKKTQlLvhb6dw - replacement in src/HydraFrontend/lib/HydraFrontend/Schema.pm at line 11
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-17 17:09:46# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:uZCNqZeWS46Z2RdysLEDaA# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-24 17:46:46# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:rS2THZrlrDHnIAWmvduE1g - replacement in src/HydraFrontend/root/build.tt at line 39
<strong class="error-msg">Build returned a non-zero exit code</strong><span class="error">Build returned a non-zero exit code</span>[% ELSIF build.resultInfo.buildstatus == 2 %]<img src="/static/images/failure.gif" /><span class="error">A dependency of the build failed</span> - replacement in src/HydraFrontend/root/build.tt at line 45
<strong class="error-msg">Build failed</strong><span class="error">Build failed</span>(see <a href="#nix-error">below</a>) - edit in src/HydraFrontend/root/build.tt at line 106
[% IF build.resultInfo.logfile %]<tr><th>Logfile:</th><td><a href="[% c.uri_for('/log' build.id) %]"><strong>Available</strong></a></td></tr>[% END %] - replacement in src/HydraFrontend/root/build.tt at line 158
<h2>Build steps</h2><h2 id="buildsteps">Build steps</h2> - replacement in src/HydraFrontend/root/build.tt at line 179
[% curTime - step.starttime %]s[% IF build.finished %][% build.resultInfo.stoptime - step.starttime %]s[% ELSE %][% curTime - step.starttime %]s[% END %] - replacement in src/HydraFrontend/root/build.tt at line 188
<strong>Building</strong>[% IF build.finished %]<span class="error">Aborted</span>[% ELSE %]<strong>Building</strong>[% END %] - replacement in src/HydraFrontend/root/build.tt at line 196
<strong class="error-msg">Failed: [% step.errormsg %]</strong><span class="error">Failed: [% HTML.escape(step.errormsg) %]</span> - edit in src/HydraFrontend/root/build.tt at line 211
- edit in src/HydraFrontend/root/build.tt at line 213
[% IF build.resultInfo.errormsg %] - edit in src/HydraFrontend/root/build.tt at line 215
<h2 id="nix-error">Nix error output</h2><pre class="buildlog">[% HTML.escape(build.resultInfo.errormsg) -%]</pre>[% END %] - edit in src/HydraFrontend/root/build.tt at line 331[5.1151]→[5.1281:1282](∅→∅),[5.1151]→[5.8222:8223](∅→∅),[5.1282]→[5.8222:8223](∅→∅),[5.8222]→[5.8222:8223](∅→∅),[5.8223]→[5.1283:1308](∅→∅),[5.1308]→[5.3534:3536](∅→∅),[5.3536]→[5.400:406](∅→∅)
[% IF build.buildlogs %]<div> - edit in src/HydraFrontend/root/build.tt at line 332
<h2>Logs</h2> - edit in src/HydraFrontend/root/build.tt at line 333[5.8239]→[5.8239:8433](∅→∅),[5.8433]→[5.98:108](∅→∅),[5.108]→[5.3552:3560](∅→∅),[5.3560]→[5.1309:1319](∅→∅),[5.108]→[5.1309:1319](∅→∅),[5.1319]→[5.108:109](∅→∅),[5.108]→[5.108:109](∅→∅),[5.109]→[5.1320:1321](∅→∅)
<table><tr><th>Phase</th></tr>[% FOREACH log IN build.buildlogs -%]<tr><td><a href="[% c.uri_for('/log' build.id log.logphase) %]">[% log.logphase %]</a></td></tr>[% END -%]</table></div>[% END %] - edit in src/HydraFrontend/root/build.tt at line 363
<!-- !!! escaping --> - replacement in src/HydraFrontend/root/build.tt at line 364
[% logtext -%][% HTML.escape(logtext) -%] - replacement in src/HydraFrontend/root/log.tt at line 3
<h1>Build log [% IF step %] of step [% step.stepnr %] [% ELSE %]<tt>[% log.logphase %]</tt>[% END %] of build ID [% id %]</h1><h1>Logfile for <tt>[% build.project.name %]:[% build.attrname %]</tt> build [% build.id %]</h1> - edit in src/HydraFrontend/root/static/css/hydra.css at line 156
.error {color: red;font-weight: bold;} - replacement in src/HydraFrontend/root/static/css/logfile.css at line 78
.error {.errorLine { - replacement in src/HydraFrontend/xsl/log2html.xsl at line 66
<xsl:attribute name="class">error</xsl:attribute><xsl:attribute name="class">errorLine</xsl:attribute> - edit in src/build.pl at line 30
my $buildStatus = 0; # = succeededmy $errormsg = undef; - edit in src/build.pl at line 40
my $thisBuildFailed = 0;my $someBuildFailed = 0; - edit in src/build.pl at line 54
$errormsg .= $_; - replacement in src/build.pl at line 90
my $drvPath = $1;my $drvPathStep = $1;$someBuildFailed = 1;$thisBuildFailed = 1 if $drvPath eq $drvPathStep; - replacement in src/build.pl at line 95
{id => $build->id, type => 0, drvpath => $drvPath}, {});{id => $build->id, type => 0, drvpath => $drvPathStep}, {}); - replacement in src/build.pl at line 108
, drvpath => $drvPath, drvpath => $drvPathStep - replacement in src/build.pl at line 173
$outputCreated = $res == 0;}if ($res != 0) {if ($thisBuildFailed) { $buildStatus = 1; }elsif ($someBuildFailed) { $buildStatus = 2; }else { $buildStatus = 3; }} - replacement in src/build.pl at line 179
my $buildStatus;if ($outputCreated) {# "Positive" failures, e.g. the builder returned exit code 0# but flagged some error condition.$buildStatus = -e "$outPath/nix-support/failed" ? 2 : 0;} else {$buildStatus = 1; # = Nix failure# Only store the output of running Nix if we have a miscellaneous error.$errormsg = undef unless $buildStatus == 3; - edit in src/build.pl at line 188
my $logPath = "/nix/var/log/nix/drvs/" . basename $drvPath;$logPath = undef unless -e $logPath; - edit in src/build.pl at line 197
, logfile => $logPath, errormsg => $errormsg - replacement in src/build.pl at line 201[5.4797]→[5.4797:4892](∅→∅),[5.4892]→[5.6969:7018](∅→∅),[5.1460]→[5.4934:5155](∅→∅),[5.7018]→[5.4934:5155](∅→∅),[5.4934]→[5.4934:5155](∅→∅)
my $logPath = "/nix/var/log/nix/drvs/" . basename $drvPath;if (-e $logPath) {print STDERR "found log $logPath\n";$db->resultset('Buildlogs')->create({ build => $build->id, logphase => "full", path => $logPath, type => "raw"});}if ($buildStatus == 0) { - edit in src/build.pl at line 203
if ($outputCreated) { - edit in src/build.pl at line 204[5.3765]→[5.5186:5286](∅→∅),[5.5186]→[5.5186:5286](∅→∅),[5.5286]→[5.7019:7076](∅→∅),[5.1511]→[5.5336:5639](∅→∅),[5.7076]→[5.5336:5639](∅→∅),[5.5336]→[5.5336:5639](∅→∅)
if (-e "$outPath/log") {foreach my $logPath (glob "$outPath/log/*") {print STDERR "found log $logPath\n";$db->resultset('Buildlogs')->create({ build => $build->id, logphase => basename($logPath), path => $logPath, type => "raw"});}} - replacement in src/build.pl at line 244
elsif ($buildStatus == 0) {else { - replacement in src/hydra.sql at line 5
-- found in several tables, such as BuildResultInfo, BuildLogs and-- BuildProducts.-- found in several tables, such as BuildResultInfo and BuildProducts. - replacement in src/hydra.sql at line 50
buildStatus integer, -- 0 = succeeded, 1 = Nix build failure, 2 = positive build failure-- Status codes:-- 0 = succeeded-- 1 = build of this derivation failed-- 2 = build of some dependency failed-- 3 = other failure (see errorMsg)buildStatus integer, - edit in src/hydra.sql at line 63
logfile text, -- the path of the logfile - edit in src/hydra.sql at line 131[5.4905]→[5.10362:10449](∅→∅),[5.5332]→[5.10362:10449](∅→∅),[5.5419]→[5.732:737](∅→∅),[5.10449]→[5.732:737](∅→∅),[5.732]→[5.732:737](∅→∅),[5.737]→[5.10450:10475](∅→∅),[5.10475]→[5.5420:5456](∅→∅),[5.762]→[5.5420:5456](∅→∅),[5.5456]→[5.798:897](∅→∅),[5.798]→[5.798:897](∅→∅),[5.897]→[5.5457:5494](∅→∅)
foreign key (build) references Builds(id) on delete cascade -- ignored by sqlite);create table BuildLogs (build integer not null,logPhase text not null,path text not null,type text not null,primary key (build, logPhase), - edit in src/hydra.sql at line 142
delete from BuildLogs where build = old.id; - edit in src/test.sql at line 7
insert into jobSetInputs(project, jobset, name, type) values('patchelf', 'trunk', 'release', 'path');insert into jobSetInputAlts(project, jobset, input, altnr, value) values('patchelf', 'trunk', 'release', 0, '/home/eelco/Dev/release');