[% WRAPPER layout.tt titleHTML="Log of " _ (step ? " step $step.stepnr of " : "") _ "build ${build.id} of job " _ linkToJob(build.jobset, job) title="Log of " _ (step ? " step $step.stepnr of " : "") _ "build ${build.id} of job " _ makeNameTextForJob(build.jobset, job) %] [% PROCESS common.tt %] <p> Below [% IF tail %] are the last lines of [% ELSE %] is [% END %] the build log of derivation <tt>[% IF step; step.drvpath; ELSE; build.drvpath; END %]</tt>. [% IF step && step.machine %] It was built on <tt>[% step.machine %]</tt>. [% END %] [% IF tail %] The <a href="[% step ? c.uri_for('/build' build.id 'nixlog' step.stepnr) : c.uri_for('/build' build.id 'log') %]">full log</a> is also available. [% END %] </p> <div class="card bg-light"><div class="card-body"><pre class="log" id="contents"> <em>Loading...</em> </pre></div></div> <script type="text/javascript"> $(document).ready(function() { requestPlainFile({ url: "[% HTML.escape(log_uri) %]", dataType: "text", type: 'GET', success: function (log_data) { [% IF tail %] /* The server may give us a full log (e.g. if the log is in S3). So extract the last lines. */ log_data = log_data.split("\n").slice(-[%tail%]).join("\n"); [% END %] $("#contents").text(log_data); }, error: function () { bootbox.alert("The log file is not available."); $("#contents").text("(Unavailable)"); } }); }); </script> [% END %]