Show the runtime/build dependencies in the build page

[?]
Feb 20, 2013, 4:58 PM
36M6DGITWMQQGZ7VROEHUOY4FP7OHPJ5DXMQMHHISBIAJLQE24YAC

Dependencies

  • [2] 2GUAKGTB Fix indentation of build.tt
  • [3] CLJQCY2X * Store info about all the build actions and allow them to be
  • [4] ZI535LI6 * hydra: 'new' UI for project/jobset/job/build
  • [5] YS3AVMLC Remove buildtime and runtime dependency graph. It is useless on normal derivations.
  • [6] NW3ZYPCM added store path size graph
  • [7] CAFO4ATE Always show the build duration (using the cached build if necessary)
  • [8] 3PNG7NIB Remove trailing whitespace
  • [9] HSVVEKTY * Start of a JSON API to get information about a specific build.
  • [10] J5UVLXOK * Start of a basic Catalyst web interface.
  • [11] 67P45PY4
  • [12] ZHHFJ4K5 Simplify the tree implementation a bit more
  • [13] 7IJXKGHD Turn repeated dependencies into hyperlinks
  • [14] WHAFVCEI
  • [15] 5NO7NCKT * Refactoring.
  • [16] TCXFZZFN * hydra: make chart zoomable and clickable
  • [17] OD5FSS5A * Quick hack to allow viewing of dependency graphs (via nix-store -q
  • [18] CQTN62OH Die tabs die
  • [19] LQNBKF3D
  • [20] PMNWRTGJ Add multiple output support
  • [21] OEPUOUNB Using twitter bootstrap for more consistent looks for Hydra
  • [22] L2E6EVE2 * Merged the Build and Job tables.
  • [23] SBMOICGV Evil CSS hackery to prevent link targets from being under the navbar
  • [24] VCOSLZRP
  • [25] XDDCO6CH * hydra: add dependency list with links to logfiles
  • [26] XHK7IGYI * hdyra: show last succeeded build and changes since on build status summary if build has failed
  • [27] GJFYEU3S * Nix now stores logs by default as bzip2, make sure the build page uncompresses before showing.
  • [28] PZL3SZM3 Give every page a consistent title
  • [29] YPDYBK5G Show dependencies as a tree rather than a list
  • [*] LBNVQXUB * Build the /build stuff in a separate controller.
  • [*] D5QIOJGP * Move everything up one directory.
  • [*] 2R7GHSA4 * hydra: added initial version of build graph

Change contents

  • replacement in src/lib/Hydra/Controller/Build.pm at line 342
    [3.1017][3.26:73](),[3.1010][3.26:73]()
    sub deps : Chained('build') PathPart('deps') {
    [3.1017]
    [3.73]
    sub build_deps : Chained('build') PathPart('build-deps') {
  • edit in src/lib/Hydra/Controller/Build.pm at line 344
    [3.98][3.607:608]()
  • edit in src/lib/Hydra/Controller/Build.pm at line 346
    [3.2487]
    [3.2487]
    error($c, "Derivation no longer available.") unless isValidPath $drvPath;
    $c->stash->{buildTimeGraph} = getDependencyGraph($self, $c, 0, {}, $drvPath);
    $c->stash->{template} = 'build-deps.tt';
    }
    sub runtime_deps : Chained('build') PathPart('runtime-deps') {
    my ($self, $c) = @_;
    my $build = $c->stash->{build};
  • replacement in src/lib/Hydra/Controller/Build.pm at line 360
    [3.1011][3.2551:2669]()
    $c->stash->{available} = all { isValidPath($_) } @outPaths;
    $c->stash->{drvAvailable} = isValidPath $drvPath;
    [3.1011]
    [3.613]
    error($c, "Build outputs no longer available.") unless all { isValidPath($_) } @outPaths;
  • replacement in src/lib/Hydra/Controller/Build.pm at line 362
    [3.614][3.1018:1178](),[3.1178][3.937:943](),[3.1450][3.937:943](),[3.937][3.937:943]()
    if ($c->stash->{available}) {
    my $done = {};
    $c->stash->{runtimeGraph} = [ map { getDependencyGraph($self, $c, 1, $done, $_) } @outPaths ];
    }
    [3.614]
    [3.943]
    my $done = {};
    $c->stash->{runtimeGraph} = [ map { getDependencyGraph($self, $c, 1, $done, $_) } @outPaths ];
  • replacement in src/lib/Hydra/Controller/Build.pm at line 365
    [3.944][3.1179:1328](),[3.1328][3.1171:1178](),[3.1654][3.1171:1178](),[3.1171][3.1171:1178](),[3.618][3.1284:1323](),[3.1284][3.1284:1323]()
    if ($c->stash->{drvAvailable}) {
    my $done = {};
    $c->stash->{buildTimeGraph} = getDependencyGraph($self, $c, 0, $done, $drvPath);
    }
    $c->stash->{template} = 'deps.tt';
    [3.944]
    [3.1323]
    $c->stash->{template} = 'runtime-deps.tt';
  • file addition: build-deps.tt (----------)
    [32.1486]
    [% PROCESS deps.tt %]
    <div class="dep-tree">
    <ul class="tree">
    [% INCLUDE renderNode node=buildTimeGraph %]
    </ul>
    </div>
  • edit in src/root/build.tt at line 73
    [2.2164]
    [2.2164]
    [% IF drvAvailable %]<li><a href="#tabs-build-deps" data-toggle="tab">Build dependencies</a></li>[% END %]
    [% IF available %]<li><a href="#tabs-runtime-deps" data-toggle="tab">Runtime dependencies</a></li>[% END %]
  • replacement in src/root/build.tt at line 106
    [2.3025][2.3025:3044]()
    <tr>
    [2.3025]
    [2.3044]
    g <tr>
  • replacement in src/root/build.tt at line 254
    [2.9093][2.9093:9261]()
    <td><tt>[% build.drvpath %]</tt>[% IF drvAvailable %] (<a href="[% c.uri_for('/build' build.id 'deps') %]#buildtime">build-time dependencies</a>)[% END %]</td>
    [2.9093]
    [2.9261]
    <td><tt>[% build.drvpath %]</tt></td>
  • replacement in src/root/build.tt at line 258
    [2.9321][2.9321:9516]()
    <td><tt>[% INCLUDE renderOutputs outputs=build.buildoutputs %]</tt> [% IF available %](<a href="[% c.uri_for('/build' build.id 'deps') %]#runtime">runtime dependencies</a>)[% END %]</td>
    [2.9321]
    [2.9516]
    <td><tt>[% INCLUDE renderOutputs outputs=build.buildoutputs %]</tt></td>
  • edit in src/root/build.tt at line 348
    [3.2258][3.145:146](),[3.4210][3.145:146](),[3.13780][3.145:146](),[3.145][3.145:146](),[3.146][2.12476:12499]()
    <h2>Used by</h2>
  • replacement in src/root/build.tt at line 371
    [2.13259][2.13259:13306]()
    <h2>Build time history (in seconds)</h2>
    [2.13259]
    [2.13306]
    <h3>Build time history (in seconds)</h3>
  • replacement in src/root/build.tt at line 440
    [3.21227][2.15686:15733]()
    <h2>Store path size history (in MB)</h2>
    [3.21227]
    [2.15733]
    <h3>Store path size history (in MB)</h3>
  • edit in src/root/build.tt at line 444
    [2.15909]
    [2.15909]
  • edit in src/root/build.tt at line 507
    [33.2840]
    [2.17954]
    [% END %]
    [% IF drvAvailable %]
    <div id="tabs-build-deps" class="tab-pane"><i class="icon-time icon-black"></i></div>
    <script>
    $('#tabs-build-deps').load("[% c.uri_for('/build' build.id 'build-deps') %]");
    </script>
    [% END %]
    [% IF available %]
    <div id="tabs-runtime-deps" class="tab-pane"><i class="icon-time icon-black"></i></div>
    <script>
    $('#tabs-runtime-deps').load("[% c.uri_for('/build' build.id 'runtime-deps') %]");
    </script>
  • edit in src/root/build.tt at line 526
    [3.8454][3.8454:8455]()
  • edit in src/root/deps.tt at line 1
    [3.1684][3.1611:1669]()
    [% WRAPPER layout.tt title="Dependencies of build $id" %]
  • edit in src/root/deps.tt at line 2
    [3.1798][3.1798:1813]()
    [% USE HTML %]
  • replacement in src/root/deps.tt at line 3
    [3.1814][3.0:98]()
    [% project = build.project;
    jobset = build.jobset;
    job = build.job;
    global.nodeId = 1 %]
    [3.1814]
    [3.1894]
    [% global.nodeId = 1 %]
  • edit in src/root/deps.tt at line 31
    [3.2248][3.2248:2258](),[3.2258][3.2292:2293](),[3.2293][3.1670:1726](),[3.140][3.2350:2369](),[3.1726][3.2350:2369](),[3.2350][3.2350:2369](),[3.2369][3.153:171](),[3.171][3.2374:2445](),[3.2374][3.2374:2445](),[3.2445][3.2258:2275](),[3.2258][3.2258:2275](),[3.2275][3.2446:2483](),[3.2483][3.2309:2319](),[3.2309][3.2309:2319](),[3.2319][3.1727:1738](),[3.1738][3.2319:2320](),[3.2319][3.2319:2320](),[3.2320][3.1739:1746](),[3.1746][3.193:194](),[3.193][3.193:194](),[3.194][3.1747:1808](),[3.194][3.2345:2367](),[3.1808][3.2345:2367](),[3.2521][3.2345:2367](),[3.2345][3.2345:2367](),[3.2367][3.172:190](),[3.190][3.2522:2569](),[3.2429][3.2522:2569](),[3.2569][3.2693:2710](),[3.2693][3.2693:2710](),[3.2710][3.2570:2607](),[3.2607][3.2750:2760](),[3.2750][3.2750:2760](),[3.2760][3.1809:1820](),[3.1820][3.2760:2761](),[3.2760][3.2760:2761]()
    [% END %]
    <section><h2 id="runtime">Runtime dependency graph</h2>
    [% IF available %]
    <ul class="tree">
    [% done={}; FOREACH node IN runtimeGraph; INCLUDE renderNode; END %]
    </ul>
    [% ELSE %]
    <p><em>No longer available.</em></p>
    [% END %]
    </section>
    <br />
    <section><h2 id="buildtime">Build-time dependency graph</h2>
    [% IF drvAvailable %]
    <ul class="tree">
    [% INCLUDE renderNode node=buildTimeGraph %]
    </ul>
    [% ELSE %]
    <p><em>No longer available.</em></p>
    [% END %]
    </section>
  • edit in src/root/deps.tt at line 32
    [3.2771][3.2771:2772]()
  • file addition: runtime-deps.tt (----------)
    [32.1486]
    [% PROCESS deps.tt %]
    <div class="dep-tree">
    <ul class="tree">
    [% FOREACH node IN runtimeGraph; INCLUDE renderNode; END %]
    </ul>
    </div>
  • replacement in src/root/static/css/hydra.css at line 33
    [3.682][3.682:784]()
    padding-top: 40px;
    margin-top: -40px;
    display: inline-block; /* required for webkit browsers */
    [3.682]
    [3.784]
    padding-top: 40px;
    margin-top: -40px;
    display: inline-block; /* required for webkit browsers */