It's pointless to store these, since Nix knows where the logs are. Also handle (in fact require) Nix's new log storage scheme. Also some cleanups in the build page.
Y6AHH4THYQA43V77L43YM42DYRPCMDSWLUV4NKWAQYMPL4NTUIPQC AZCCANUBA5NBQCU5EHKCNDLEUS5VPXSSVZVUKGKGJLUNYIGSJAYQC 5EIPRLDD7XE6BZQPU4C43IAE53AVZP7HGE54GYJA3OYQRXCT6FSQC 3PNG7NIBQQURUUPRVQXYL342OT7JUUYOMY2JJNP6YDX7SYJDZMYAC Q24QXGSMSBGB32S45SNOJO2ZDXEDRZQ2OGYVDVOH4I3QCAWSSIAQC XDDCO6CHPWGXFV3RSMMUYY45DTXJXQNYYHUT2PCYAGRODK43MD6AC LBNVQXUBEZ45SOTGVXK5UEZXIAIZTJLWZNUYFI4JZ6J65N3KPDVQC HSVVEKTY2U5XJ4ZDHF43YEQXRPRWNZLZDDD4W7JFJ55UWD7CEFBQC GJFYEU3SVP7TDSYXVZEYGKN4NVWSZX4754PPPTOYPRHUO5RMDWPQC MOX7XJ2E3XISXA7V7T4W6GEAGECGWBZ4PYSLTYBVVR4VAKOI33CQC RBHHV7P7MMFXUNWCJFNYKLGVLG2NQEDUKJ2IUCZ3WFMHH3SZRUHQC HB3OHPJLK47NODSPGPMHZOT2E6FNQMGJNVV7MKBCWF6P65TCAKKQC HPEG2RHVNHOPB5T4ZRXANIRBMVOVY3B5GFETJRYOTDJFVAYH2TQAC H47WLVATPA42U4UQEPR2O736DZMVGRW33ENHW6YZY3EKYFPFUUBQC ZNKPGZHFKUN5MWQNCSABTLGL42AOCBOPZEOYV44LQFKTC5ARXSEQC MPVX6MKXTP2NBSSIC77PKETMUDL5JC4PVH6QVIR5SN2AUIMSZUAQC NZI7E2E3LQJ6SGK3WURDUEE54JWEBVDNHTQ2PYSKHRCRZVOWKQVAC CQTN62OHT4DY35E2MJEG7GFTVNEE5KRDMV6ASBQLBHN7BUDK7WHAC WAZFSDSLS4XBU6I44LCEOCGGWDGAWJRBOO4QMPQHQSMPQIJDLVOAC PY4WQF5GIMT46FAALDW3PR6JURGY56PJOGOPDZ6NIEADQ7GTWJTAC 2R7GHSA4NUXPRWRPVXYDYWFIVVJGSUWUI2IPJGFN6ILZIAZGXGCAC 6F4UNDTCAW7LYSKTUUUCX32BLAAGYPUPK2LXMMZ32Y6H3CBWP6TQC SAIUFDP3EFXENSB3XS4OKXNOTGLCYGPW3QNHCXASXBDEEDGYRWUAC MMDLWWZ2W2XVHHOTG2S5XCPITVNIJQ6F7GLCF2MKQANFNFEID7DAC QE253KG464JLXJHTILULXUIK527FGXT42IHHDE3BR6ASIYC44MWAC INNOEHO6CTW75YEEGNLUKISQEMOAE4P2C2SEVHEKOVIFHADWY4OAC BMSQD2ZH3T37RNPRKKKNF5DTJEGBLY4YR2BZDKP7PXJGS3ZBBLWAC OOQ2D3KCLFPYNAN253PHWLBQMB6OMO2KYQWQXLTP65SQAYZWQ5LAC RXVJFQ5AV3WME4HDVBPSRCALQTXROT4KQPOQVO6KTWTBNZIZZGPAC QBQSQOSYZLHDZ65RLOFEWFAIKHA5UN7V4RQYVXHCWUJDDXXGOZFQC W3HI52QVYQUEMJDK6TI54WPNDQJOHYD47G45LNMI2YTH6YGKNXNQC C7CXMZ66BZTI5ABDJNPL2JKSHSKDQ645GXUKN7OTQBPEQJ452KQAC 2GK5DOU7ODF4WBSN3QTD3WIO52VTL2LOAXKGCDEMMAQPTEO4A4HAC BDSD2JLV4V4I52SE7MCZLYNDC4XU27ZNH7TYKLT7CA7YR5WRMQBAC IN272KZWHENW2TCR3LWQ6OZAEESJL5S7AEL3GYLJTWHJUDE6HADAC AFTXA575C6JTVLVXTYJUKQGPLBO3NFORLO5XDSPHNL44HXLRH4TAC AHTEIK7GGPHUC3AXIJ2NX4TI3RLX65XYKGAIIC6MC2S6I6QPWTAAC 3HCBU2FAXZMSF4JJR5Q64BSN66MBOGVETNHK33V2WSNDGOF4HHQAC PHX2HIVGHHKCAX6VNN2WXD4LRGSA74KQMJCCTMHK7HS6JPELVECAC SJLEZFC472OWVCR7WEUUYNS6BJDDR77SHWADKDCPIS2INMTPTIVAC 2NGV7NYNNHIPZ3EU64KM7OXAUSY7BMNVJPVUHCFCXW7Q4FVOSVGAC 7ZSVXUGFXOI3BOJE37SXIT6MDN6AJRBCCJNEICYDMBJF5QOEY6BAC SMCOU72FKTPFNCDXFJAILVUWFE4DY33CJJE4436H5POKENFFDFFAC SB2V735VJ2CDHGCXRUA5FOYHDRXQFVOZ3KXC3YKXWRNW6DIX7RXQC J5UVLXOK6EDIL5I7VKWH4V2QDS4DPD7FHRK6XBWSXFRQS4JKXFZQC JM3DPYOMVNMCL5GMEYC3Y4NDRGTNIFBBFTPGPVT66GPENVPU7EVQC CLJQCY2XHIDNNMFBJ5PK3GQEN6RFALEFKXBJRWZPEIKR4PR5ZQ5AC BVOPAMLSAU4UTV3DUX53OYDMXP2SETAQVUKAYE2OTCVVN4RD7LLQC L2E6EVE2RVFVDCUNRJ4CZYSQNS2DZUA5DTBETHBDUQUV2KQQRAOQC 3E6IP3R3JGH76PNGG7RCADV65KOV24HQXPXNLVVYIQ46AVYJRG3AC ZEHSSVFGKP2DCW2MKXHKW3LVHQ3DBCI6JJ36X6YOPLL7SJBXCMPAC G2T4WAHINIIKTEKR4JBIRXO5IEKO7MPYD7U5PQ4AIX3WL54EPP3AC 67P45PY4GTWQXZRCMR734D5YYN2OERZM57NBB2CZXEULQT2GRFNAC B72GLND4UQKSGNGIY4FA6HLQNFS42SKRXV5NHTHADUJRU73NELAAC RFE6T5LGBFFNEPHZOPF4UNMFC2L4CGD5TPAMOXDLRPH3TZJ43UBAC S5PV6IIMKJ7PGWIFLLXERHYF3BCP2UEGFRZEZLD6UUBLVEZXJLUAC KN3VYE5P2RJB3KZ355LA5C2T2D5S2IR3QZFE53AJIWUVMETEEYDAC 5SHCWE7XPQORSOLY7HGAIK2ODKBFPY4KVXRL2W7X6D4WALU544HQC KPZNJ33UUF6TK5OPB6K5KLM3ZEK7YV3IF32HTLJFURCO6ICDMGYAC M552HLIAP52D42AVXVC5SGROAYN2TBCEUZOXESWEMBBUX7G3U6TAC X27GNHDV5KPZ5GSH6DCAJMNCEMZLCP7M43JWF2X3O5QWXMOX273AC FYO6NECE4YJC76HQIG35NNJABODV7KNQKREK5YKZU6O2MNNSQTMAC ZWCTAZGLJZQNTYWTC2XQUKMILJF6JGDL5IND6QNYWK4FIGMLRFXAC NABL63FIFXIY2VIPFSK3RE4DLUVBVDJ7H2V6QA7LVY3RRQ3UWVGAC FHF6IZJQPUQHY5QWQYRPZVDBRLHREWRHGNKVQDT7F3GQKKLZXJKQC RBNQKATLSAKTGW2IRNB5CRV3SEH5F6E4BPVWX4BII7MH5TCIPINQC KXGOUX7PH4BOXPJRYRGDS4RY7RTXYWUXCRAB5JR3BLVS62PVKOQAC RU7AQO7U4HCWJNQTR2KRGDLLG24WYD47MWIHREV6SIAPCPDQHAWQC S66BOMVUACAUDSGSDWP7ZIXVMZSQHWXOZYVTB7ILUCWZ7DDFAKVAC P5X4P6VKS5CJOOLJRVL66GRJLDLVC3EKAVAHP2RJOXQJ7WTYAUBQC KAZWI5G4DN2WUW7L2KWZR3D3QQJON4ISQYP7CRLC5HAOPIDYQGRQC OEPUOUNBNTHTFZVDXREGBQCKFRCWMVP2MDVK4OA47VK2DBKEWVYAC BOFOHCPK7UVE3TUEL4NNOQXN2EQGN6N3ITJWTCOJK5Q6MSHYSOSQC 7YBYT2LQML2PKEO6UO4444AGSASS664UCDXW2YO3ALB7THQHCEBQC EFWN7JBV7YIHNMCA6ZGFRSHZIUQJ2EX57SWYGVT7ZRJCHPIM2R3QC LQNBKF3DKVYK3NPDGK7OLOTIWIF4HR3EKLRYNLZJB4G3NMIVBCEAC 3BKF6P72K4YGWSQD5PO6PKNM3KXGFLONB3SONKRZR4DJHH3W3PSAC 37R34XJOGMP3E3DD4RGGRX5LBW2LGB6J3E6XOXLWSU2QEIWBEM4QC 5O6E5SU5YQ4JIXLWGHTSAJO4UAMRN65GAZLYMVBMRLFS2F6X7AKAC 6US6LEC7V7LUTMPXOWGU7D4PQAFOG2AKNW4VBPSENNBEDMTBJCVQC DQD7JMSUAPXKASPXUDXY4LCE6QCAZSGWNQYTOKNIQE6RRSRP4KGAC WM5WAST3S67EWKA52NVQ2V55XO6E4WRPAOUGSQGA7XDX46ARX4OQC DTXTS7LNTY43YDI5FXVDEJZ75JMR4OW6WS7ZBUXXM3L242VEIIWQC D7TT2BNKYQH6KC2OLMDZKGQPUTPCWA5EBJZHQ7UMUOA7AJMUBGFAC N22GPKYTOLZLBGTGDATQDVZ4R5APZEAOIA7L32X4UXBH4XNI7MWAC (my $lastBuildStep) = $build->buildsteps->search({},{order_by => "stepnr DESC", rows => 1});my $path = defined $lastBuildStep ? $lastBuildStep->logfile : "" ;if ($build->finished && ($build->buildstatus == 1 || $build->buildstatus == 6) && !($path eq "") && -f $lastBuildStep->logfile) {my $logtext = logContents($path, 50);$c->stash->{logtext} = removeAsciiEscapes($logtext);}
error($c, "Build didn't produce a log.") if !defined $c->stash->{build}->logfile;showLog($c, $c->stash->{build}->logfile, $mode);
showLog($c, $c->stash->{build}->drvpath, $mode);
sub getBuildLog {my ($drvPath) = @_;my $logPath = ($ENV{NIX_LOG_DIR} || "/nix/var/log/nix"). "/drvs/" . basename $drvPath;return $logPath if -e $logPath;$logPath = "$logPath.bz2";return $logPath if -e $logPath;return undef;}
return undef;}# Return the path of the build log of the given derivation, or undef# if the log is gone.sub getDrvLogPath {my ($drvPath) = @_;my $base = basename $drvPath;my $fn =($ENV{NIX_LOG_DIR} || "/nix/var/log/nix") . "/drvs/". substr($base, 0, 2) . "/". substr($base, 2);return $fn if -f $fn;$fn .= ".bz2";return $fn if -f $fn;
# Created by DBIx::Class::Schema::Loader v0.07014 @ 2012-04-15 12:38:16# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:sav9OmLm3qA/jiK5k+KIjw
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-01-22 13:29:36# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:byU/SLN03zNJlSFbi/3Bcg
# Created by DBIx::Class::Schema::Loader v0.07014 @ 2011-12-05 14:15:43# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:CpwMC8YMFC4B7gzGBdzh0A
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-01-22 13:29:36# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:im3sfvrv5YY3i1IAOozeiA
# Created by DBIx::Class::Schema::Loader v0.07014 @ 2011-12-05 14:15:43# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:wboDtUIBUkvEiUHpe09kkg
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-01-22 13:29:36# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:OST5IMcvHKsXlNMCRazXhg
# Created by DBIx::Class::Schema::Loader v0.07014 @ 2012-02-29 00:47:18# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:dzTKwZ7bby7kplnSgta3Gw
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-01-22 13:29:36# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:KHwh/Np40jxKXc3ijMImEQ
# Created by DBIx::Class::Schema::Loader v0.07014 @ 2011-12-05 14:15:43# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:5H+OkGT0zQEWkAjU+OlBdg
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-01-22 13:29:36# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:ItI1OvxHfLTzLVEqfPRjHg
__PACKAGE__->belongs_to("project", "Hydra::Schema::Projects", { name => "project" }, {});
__PACKAGE__->belongs_to("project","Hydra::Schema::Projects",{ name => "project" },{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "CASCADE" },);
# Created by DBIx::Class::Schema::Loader v0.07014 @ 2012-04-15 16:38:10# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:AltTdmkzfwBMYToTkj84vA
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-01-22 13:34:39# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:wPBFqpUWncuD9xki8Pbnvg
__PACKAGE__->belongs_to("project", "Hydra::Schema::Projects", { name => "project" }, {});
__PACKAGE__->belongs_to("project","Hydra::Schema::Projects",{ name => "project" },{ is_deferrable => 0, on_delete => "CASCADE", on_update => "CASCADE" },);
# Created by DBIx::Class::Schema::Loader v0.07014 @ 2011-12-05 14:15:43# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:ZyDc4SrY9RfmsLK6VOqHhw
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-01-22 13:29:36# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:Vfl4QtuyeKeEk9+Ap7FP2A
# Created by DBIx::Class::Schema::Loader v0.07014 @ 2012-04-15 16:38:10# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:PNxVBdoUNeUzf5BztiIhLw
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-01-22 13:29:36# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:ng+Q6tMX5EJMD7DxRWVy7Q
# Created by DBIx::Class::Schema::Loader v0.07014 @ 2011-12-05 14:15:43# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:0K4lDPUQeK04SEXS5yBbeA
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-01-22 13:29:36# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:EVwSR9WBqbBdIHq1ANQMHg
__PACKAGE__->belongs_to("project", "Hydra::Schema::Projects", { name => "project" }, {});
__PACKAGE__->belongs_to("project","Hydra::Schema::Projects",{ name => "project" },{ is_deferrable => 0, on_delete => "CASCADE", on_update => "CASCADE" },);
# Created by DBIx::Class::Schema::Loader v0.07014 @ 2012-04-15 22:30:41# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:jn81MbsAb5KZGwRpQ7qTEQ
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-01-22 13:29:36# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:qElGj6zzuI0xo426np3r1w
# Created by DBIx::Class::Schema::Loader v0.07014 @ 2012-04-15 12:38:16# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:M1pOjrCZ2RgULsIPZjN7sg
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-01-22 13:29:36# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:M3pNBRLfxgSScrPj1zaajA
# Created by DBIx::Class::Schema::Loader v0.07014 @ 2011-12-05 14:15:43# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:F/eZhnWZHATn9+O6MzuPqA
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-01-22 13:29:36# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:xjioYUPo6visoLAVDkDZ0Q
__PACKAGE__->belongs_to("project", "Hydra::Schema::Projects", { name => "project" }, {});
__PACKAGE__->belongs_to("project","Hydra::Schema::Projects",{ name => "project" },{ is_deferrable => 0, on_delete => "CASCADE", on_update => "CASCADE" },);
# Created by DBIx::Class::Schema::Loader v0.07014 @ 2011-12-05 14:15:43# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:Ikvo8+cq03DzjEUvXSqYiQ
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-01-22 13:29:36# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:9smV/zbSSxQNLiBcnADFXA
# Created by DBIx::Class::Schema::Loader v0.07014 @ 2011-12-05 14:15:43# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:YRMh0QI4JezFLj7nywGu6Q
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-01-22 13:29:36# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:lnA5Utkwk5WTyKA/M5mlyg
# Created by DBIx::Class::Schema::Loader v0.07014 @ 2011-12-05 14:15:43# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:09p6h8c3+hRIjw3XmX15rA
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-01-22 13:29:36# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:zW87n6E7xWaShcFbgFkVuw
# Created by DBIx::Class::Schema::Loader v0.07014 @ 2011-12-05 14:15:43# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:cnheEOmK/5fCX1ui4OWPog
Type: many_to_manyComposing rels: L</projectmembers> -> username=cut__PACKAGE__->many_to_many("usernames", "projectmembers", "username");# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-01-22 13:29:36# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:OCuhmxs8pZxvmk81eVLLcQ
__PACKAGE__->belongs_to("project", "Hydra::Schema::Projects", { name => "project" }, {});
__PACKAGE__->belongs_to("project","Hydra::Schema::Projects",{ name => "project" },{ is_deferrable => 0, on_delete => "CASCADE", on_update => "CASCADE" },);
# Created by DBIx::Class::Schema::Loader v0.07014 @ 2011-12-05 14:15:43# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:SBMfzENPE0BjEwc2HAK7IA
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-01-22 13:29:36# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:eP00w5UJp1uTtiB7D5IhTQ
__PACKAGE__->belongs_to("project", "Hydra::Schema::Projects", { name => "project" }, {});
__PACKAGE__->belongs_to("project","Hydra::Schema::Projects",{ name => "project" },{ is_deferrable => 0, on_delete => "CASCADE", on_update => "NO ACTION" },);
# Created by DBIx::Class::Schema::Loader v0.07014 @ 2011-12-05 14:15:43# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:W6GOMPv7hc2EAdVaBOvc3A
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-01-22 13:29:36# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:UTUE3Hb89fT7prwnwwBgvQ
# Created by DBIx::Class::Schema::Loader v0.07014 @ 2011-12-05 14:15:43# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:TySGsLoTpeSuThILIXUaVg
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-01-22 13:29:36# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:KArPHyemtnm/siwE4x5mGQ
# Created by DBIx::Class::Schema::Loader v0.07014 @ 2011-12-05 14:15:43# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:3fmr8WMAE9Dg7TKom76YIQ
=cut__PACKAGE__->many_to_many("projects", "projectmembers", "project");# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-01-22 13:29:36# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:OAUFl/teGpfeleb6D8FPlw
__PACKAGE__->belongs_to("project", "Hydra::Schema::Projects", { name => "project" }, {});
__PACKAGE__->belongs_to("project","Hydra::Schema::Projects",{ name => "project" },{ is_deferrable => 0, on_delete => "CASCADE", on_update => "CASCADE" },);
# Created by DBIx::Class::Schema::Loader v0.07014 @ 2011-12-05 14:15:43# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:U9/ovaBs9kFO3flG/MZ5uA
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-01-22 13:29:36# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:cbSUw113ENPypbd/sICfgg
__PACKAGE__->belongs_to("project", "Hydra::Schema::Projects", { name => "project" }, {});
__PACKAGE__->belongs_to("project","Hydra::Schema::Projects",{ name => "project" },{ is_deferrable => 0, on_delete => "CASCADE", on_update => "CASCADE" },);
# Created by DBIx::Class::Schema::Loader v0.07014 @ 2011-12-05 14:15:43# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:cP9XYKw4y9QL+PDJYy9M5w
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-01-22 13:29:36# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:Vyd2+0RAF3XGTpq3KswfAQ
[% log = c.uri_for('/build' build.id 'nixlog' step.stepnr) %]<tr class="[% IF step.logfile %]clickable[% END %]"[% IF step.logfile %] onclick="window.location = '[% log %]'" [% END %]>
[% has_log = log_exists(step.drvpath);log = c.uri_for('/build' build.id 'nixlog' step.stepnr); -%]<tr [% IF has_log %] class="clickable" onclick="window.location = '[% log %]'" [% END %]>
<tr><th>Duration:</th><td>[% IF build.iscachedbuild %]<em>(cached build)</em>[% ELSE %][% INCLUDE renderDuration duration = build.stoptime - build.starttime %][% END %]</td></tr>[% IF build.logfile %]<tr><th>Logfile:</th><td><a href="[% c.uri_for('/build' build.id 'log') %]"><strong>Available</strong></a>(<a href="[% c.uri_for('/build' build.id 'log' 'raw') %]">raw</a>,<a href="[% c.uri_for('/build' build.id 'log' 'tail-reload') %]">tail</a>)</td></tr>[% END %]
<h3>Changes since previous build : [% INCLUDE renderFullBuildLink build=prevBuild, hideProjectName=1, hideJobsetName=1 %]</h3>
<h3>Changes since previous build: [% INCLUDE renderFullBuildLink build=prevBuild, hideProjectName=1, hideJobsetName=1 %]</h3>
my $logfile = getBuildLog($drvPath);my $logsize = defined $logfile ? stat($logfile)->size : 0;
{ drvpath => [ @drvs ], finished => 0, busy => 0, enabled => 1, disabled => 0 },{ join => ['project'], rows => 1 } ) ;
{ drvpath => [ @drvs ], finished => 0, busy => 0, enabled => 1, disabled => 0 },{ join => ['project'], rows => 1 } ) ;