* Get rid of "positive failures" and separate log phases.

[?]
Nov 25, 2008, 12:38 AM
BD3GRK4BQUGRQGTAILUITIH3RRSVUH6AKINVMMKYLBAAHAAUSB4AC

Dependencies

Change contents

  • replacement in src/HydraFrontend/lib/HydraFrontend/Controller/Root.pm at line 304
    [5.1886][5.1886:1929]()
    my ( $self, $c, $id, $logPhase ) = @_;
    [5.1886]
    [5.1929]
    my ( $self, $c, $id ) = @_;
  • replacement in src/HydraFrontend/lib/HydraFrontend/Controller/Root.pm at line 307
    [5.1965][5.1965:2042]()
    return error($c, "Build with ID $id doesn't exist.") if !defined $build;
    [5.1965]
    [5.2042]
    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;
    [5.2043]
    [5.2215]
    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
    [5.2253][5.2253:2309]()
    $c->stash->{id} = $id;
    $c->stash->{log} = $log;
    [5.2253]
    [5.2309]
    $c->stash->{build} = $build;
  • replacement in src/HydraFrontend/lib/HydraFrontend/Controller/Root.pm at line 315
    [5.2365][5.2365:2413]()
    $c->stash->{logtext} = loadLog($log->path);
    [5.2365]
    [5.162]
    $c->stash->{logtext} = loadLog($build->resultInfo->logfile);
  • edit in src/HydraFrontend/lib/HydraFrontend/Controller/Root.pm at line 341
    [5.2452]
    [4.0]
    die unless defined $path;
  • file deletion: Buildlogs.pm (----------)
    [5.3332][5.4230:4266](),[5.4266][5.3352:3352]()
    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 regeneration
    1;
    # 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
    [5.16][5.16:79]()
    { data_type => "VARCHAR", is_nullable => 0, size => undef },
    [5.16]
    [5.777]
    { data_type => "text", is_nullable => 0, size => undef },
  • replacement in src/HydraFrontend/lib/HydraFrontend/Schema/Buildinputs.pm at line 43
    [5.782][5.487:629]()
    # Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-17 17:09:46
    # DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:96p2HKZ/6kk0zZKq3JuvDg
    [5.782]
    [5.924]
    # 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
    [5.4922][5.773:915]()
    # Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-17 17:09:46
    # DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:kiP5lQxpuaZUZiqHigHYxQ
    [5.4922]
    [5.5064]
    # 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
    [5.2261]
    [5.2261]
    "logfile",
    { data_type => "text", is_nullable => 0, size => undef },
  • replacement in src/HydraFrontend/lib/HydraFrontend/Schema/Buildresultinfo.pm at line 30
    [5.2382][5.916:1058]()
    # Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-17 17:09:46
    # DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:MqQ972Qn6sjoWbbbzmE1cg
    [5.2382]
    [5.2524]
    # 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
    [5.6194][5.1059:1201]()
    # Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-17 17:09:46
    # DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:yYcxVJ1KnjD3KKWt4XQFMg
    [5.6194]
    [5.3377]
    # 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
    [5.4473][5.1202:1344]()
    # Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-17 17:09:46
    # DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:uAs9z69gMZRAQSzvOGsqEQ
    [5.4473]
    [5.4615]
    # 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
    [5.2816][5.1345:1487]()
    # 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
    [5.2816]
    [5.2958]
    # 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
    [5.1831][5.1488:1630]()
    # Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-17 17:09:46
    # DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:xj0LojYsbdSMWCv+KUH8sw
    [5.1831]
    [5.1973]
    # 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
    [5.1681][5.1631:1773]()
    # Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-17 17:09:46
    # DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:VO/SU4tv5UxNAmiwsqn6UA
    [5.1681]
    [5.1823]
    # 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
    [5.2992][5.1774:1916]()
    # Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-17 17:09:46
    # DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:jZ0kG9EzEJn5mJFSp2WFpw
    [5.2992]
    [5.3134]
    # 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
    [5.1624][5.1624:1687]()
    { data_type => "VARCHAR", is_nullable => 0, size => undef },
    [5.1624]
    [5.1917]
    { data_type => "text", is_nullable => 0, size => undef },
  • replacement in src/HydraFrontend/lib/HydraFrontend/Schema/Projects.pm at line 33
    [5.3685][5.1994:2136]()
    # Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-17 17:09:46
    # DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:XkQtF1ABmLxvxND62rBlCw
    [5.3685]
    [5.3827]
    # 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
    [5.6498][5.2137:2279]()
    # Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-17 17:09:46
    # DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:uZCNqZeWS46Z2RdysLEDaA
    [5.6498]
    [5.6640]
    # 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
    [5.602][5.3807:3888]()
    <strong class="error-msg">Build returned a non-zero exit code</strong>
    [5.602]
    [5.665]
    <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
    [5.735][5.3889:3947]()
    <strong class="error-msg">Build failed</strong>
    [5.735]
    [5.775]
    <span class="error">Build failed</span>
    (see <a href="#nix-error">below</a>)
  • edit in src/HydraFrontend/root/build.tt at line 106
    [5.6629]
    [5.6629]
    [% 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
    [5.2524][5.3977:3998]()
    <h2>Build steps</h2>
    [5.2524]
    [5.3998]
    <h2 id="buildsteps">Build steps</h2>
  • replacement in src/HydraFrontend/root/build.tt at line 179
    [5.1189][5.1189:1233]()
    [% curTime - step.starttime %]s
    [5.1189]
    [5.1233]
    [% 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
    [5.4322][5.4322:4360]()
    <strong>Building</strong>
    [5.4322]
    [5.4360]
    [% IF build.finished %]
    <span class="error">Aborted</span>
    [% ELSE %]
    <strong>Building</strong>
    [% END %]
  • replacement in src/HydraFrontend/root/build.tt at line 196
    [5.4442][5.4442:4517]()
    <strong class="error-msg">Failed: [% step.errormsg %]</strong>
    [5.4442]
    [5.4517]
    <span class="error">Failed: [% HTML.escape(step.errormsg) %]</span>
  • edit in src/HydraFrontend/root/build.tt at line 211
    [5.6761]
    [5.1107]
  • edit in src/HydraFrontend/root/build.tt at line 213
    [5.1108]
    [5.1108]
    [% IF build.resultInfo.errormsg %]
  • edit in src/HydraFrontend/root/build.tt at line 215
    [5.1109]
    [5.1109]
    <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
    [5.8224][5.8224:8238]()
    <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
    [5.1207][5.1207:1229]()
    <!-- !!! escaping -->
  • replacement in src/HydraFrontend/root/build.tt at line 364
    [5.1252][5.1252:1267]()
    [% logtext -%]
    [5.1252]
    [5.1267]
    [% HTML.escape(logtext) -%]
  • replacement in src/HydraFrontend/root/log.tt at line 3
    [5.11832][5.4703:4830]()
    <h1>Build log [% IF step %] of step [% step.stepnr %] [% ELSE %]<tt>[% log.logphase %]</tt>[% END %] of build ID [% id %]</h1>
    [5.11832]
    [5.11895]
    <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
    [5.10612]
    [5.10612]
    .error {
    color: red;
    font-weight: bold;
    }
  • replacement in src/HydraFrontend/root/static/css/logfile.css at line 78
    [4.1894][4.1894:1903]()
    .error {
    [4.1894]
    [4.1903]
    .errorLine {
  • replacement in src/HydraFrontend/xsl/log2html.xsl at line 66
    [4.5592][4.5592:5650]()
    <xsl:attribute name="class">error</xsl:attribute>
    [4.5592]
    [4.5650]
    <xsl:attribute name="class">errorLine</xsl:attribute>
  • edit in src/build.pl at line 30
    [5.3465]
    [5.3465]
    my $buildStatus = 0; # = succeeded
    my $errormsg = undef;
  • edit in src/build.pl at line 40
    [5.3598]
    [5.4831]
    my $thisBuildFailed = 0;
    my $someBuildFailed = 0;
  • edit in src/build.pl at line 54
    [5.5239]
    [5.5239]
    $errormsg .= $_;
  • replacement in src/build.pl at line 90
    [2.594][2.594:628]()
    my $drvPath = $1;
    [2.594]
    [5.6461]
    my $drvPathStep = $1;
    $someBuildFailed = 1;
    $thisBuildFailed = 1 if $drvPath eq $drvPathStep;
  • replacement in src/build.pl at line 95
    [5.6604][5.6604:6685]()
    {id => $build->id, type => 0, drvpath => $drvPath}, {});
    [5.6604]
    [5.2610]
    {id => $build->id, type => 0, drvpath => $drvPathStep}, {});
  • replacement in src/build.pl at line 108
    [5.3141][5.3141:3191]()
    , drvpath => $drvPath
    [5.3141]
    [5.3191]
    , drvpath => $drvPathStep
  • replacement in src/build.pl at line 173
    [5.3686][5.3686:3728]()
    $outputCreated = $res == 0;
    }
    [5.3686]
    [5.3728]
    if ($res != 0) {
    if ($thisBuildFailed) { $buildStatus = 1; }
    elsif ($someBuildFailed) { $buildStatus = 2; }
    else { $buildStatus = 3; }
    }
  • replacement in src/build.pl at line 179
    [5.3729][5.3729:4014]()
    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
    [5.3729]
    [5.4014]
    # 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
    [5.7527]
    [5.7527]
    my $logPath = "/nix/var/log/nix/drvs/" . basename $drvPath;
    $logPath = undef unless -e $logPath;
  • edit in src/build.pl at line 197
    [5.4537]
    [5.4574]
    , 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"
    });
    }
    [5.4797]
    [5.5155]
    if ($buildStatus == 0) {
  • edit in src/build.pl at line 203
    [5.5156][5.5156:5186](),[5.5186][5.3733:3734]()
    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
    [5.4462][5.4462:4502]()
    elsif ($buildStatus == 0) {
    [5.4462]
    [5.6352]
    else {
  • replacement in src/hydra.sql at line 5
    [5.8869][5.8869:8954]()
    -- found in several tables, such as BuildResultInfo, BuildLogs and
    -- BuildProducts.
    [5.8869]
    [5.8954]
    -- found in several tables, such as BuildResultInfo and BuildProducts.
  • replacement in src/hydra.sql at line 50
    [5.1910][5.9977:9982](),[5.9982][5.1910:2005](),[5.1910][5.1910:2005]()
    buildStatus integer, -- 0 = succeeded, 1 = Nix build failure, 2 = positive build failure
    [5.1910]
    [5.9983]
    -- 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
    [5.4221]
    [5.9991]
    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
    [5.10720][5.10720:10768]()
    delete from BuildLogs where build = old.id;
  • edit in src/test.sql at line 7
    [5.6921][5.8290:8392](),[5.8290][5.8290:8392](),[5.8392][5.6922:7058]()
    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');