Merge the BuildResultInfo table into the Builds table
[?]
Mar 5, 2012, 8:52 PM
HPEG2RHVNHOPB5T4ZRXANIRBMVOVY3B5GFETJRYOTDJFVAYH2TQACDependencies
- [2]
AWYTL4HO* Don't show platforms that are not included in the current jobset. - [3]
JSG5QEZJ* Only show status changes from successful to failed and failed to - [4]
KZAP6QPO - [5]
JAUTUNGIbug fix - [6]
ALXRI3Y5hydra: removed need for HYDRA_BUILD_BASEURL env variable - [7]
LTG2CO3Vhydra: make size columns bigger (integer -> bigint) - [8]
LL36GPHAadded help, removed nix closure from 'failed build with output' productlist - [9]
UVNQPK3THydra/56: handle failed builds with result only at build level, not buildsteps - [10]
NW3ZYPCMadded store path size graph - [11]
FU3ZFU2Q* me.id -> build.id. - [12]
WAZFSDSLusing backquote as argument resulted in only first line as first argument to removeAsciiEscapes - [13]
FFMOQLJQfix nrbuilds query - [14]
BAOVFU73fix mercurial diffs, should change to cloned repo first - [15]
3466DZDElogdiff now support bzipped logs for logdiff - [16]
ZCQOOAGYRemove redundant dot in status emails - [17]
FCBQMIF3hydra-build: Do not send email following an abortion. - [18]
MOX7XJ2EMerge the BuildSchedulingInfo table into the Builds table - [19]
IK53RV4V - [20]
XJFHFZCA* Provide some redirects to build products by type so that we can for - [21]
UMFB2767Hydra/64: Leaving number of builds empty gives DBIx error - [22]
TM6XBAG2git branches can share local clones - [23]
C5XKS77Nhydra: added missing fields to query - [24]
OZ5UBJEK - [25]
SHBLLAVH* More global substitution. - [26]
SZYY2EQQ* Make the queries more readable. - [27]
4D4U5IPY* Allow jobsets to be disabled. - [28]
DSM3TTSOHydra/31: "Duration" field broken in cached builds that are not in DB anymore - [29]
CMU3YKOU* Store the release name. - [30]
ID5DHUFU* Cleanup. - [31]
6KJXJB7Nqualify ordery_by clauses when necessary, remove unnecessary order_by's, reported by Ludo, resulted in errors in sqlite - [32]
X27GNHDV* Basic job info in the database. - [33]
EYNG4EL4* Regenerate the bindings from a clean sqlite database. - [34]
JXPHAZMVMinor style changes - [35]
J5UVLXOK* Start of a basic Catalyst web interface. - [36]
BOFOHCPKremoved debug print, added last 50 lines in failure emails - [37]
777XFGVYHydra/22: on job page, 'finished builds' shows nothing for old (non-current) jobs - [38]
KXGOUX7P* Creating releases. - [39]
FPK5LF53* Put the project-related actions in a separate controller. Put the - [40]
XBU2ODSP* More renaming. - [41]
BHZXGT2H* Channels: provide an index page that lists all the packages in the - [42]
4BXTDMSA* I should test before committing. - [43]
5O6E5SU5hydra: store logfile/output path/closure size - [44]
T6KISLR6Fix indentation - [45]
VVOAXWH4fix wrong dbix:class:loader generation - [46]
7YBYT2LQ - [47]
D3DIBMOK* For products that are directories (like manuals), allow a default - [48]
AKAXJDMW* Disable the statistics on the project, jobset and job pages for now - [49]
R3ON2RJ3hydra: missing argument - [50]
3ZCEPLNO - [51]
HZ2U4QEVno branch info available yet in scmdiff, so disable for now - [52]
45ESKY6T* hydra: show finish time on build status overview - [53]
H47WLVAT* Handle the case where there is no cached build step that produced - [54]
IS32JFKX* Typo. - [55]
TH674WKJadd log diff to compare logs to previous builds - [56]
BD3GRK4B* Get rid of "positive failures" and separate log phases. - [57]
RI4S7SYT* Job status: show the active jobs. - [58]
US27ZTX5* HydraFrontend -> Hydra. - [59]
3XTHEUMP* Implemented the clone feature. - [60]
YZUQKPNJ* hydra: remove excess layout - [61]
2T42QGZD* Register builds as GC roots so they don't get deleted. - [62]
TCHEWSZL* The "latest" channel shouldn't contain inactive jobs. - [63]
VJHIHMEH* Store the meta.longDescription and meta.license attributes in the - [64]
SJN2QPWH* Big speed-up of the job status page and the channel generation (such - [65]
6FRLEP4Pfirst try for timeline of last 24 hours in hydra - [66]
N22GPKYT* Put info about logs / build products in the DB. - [67]
ZNKPGZHFhydra: error on buildpage for queued build - [68]
KPZNJ33U* In views, support selecting a job that doesn't depend on the - [69]
DHMTPGST* Ran update-dbix. - [70]
FLXJYCRB - [71]
YFPZ46YK* hydra: added variant of build input type, 'build output (same system)' to allow better continous integration in one jobset for multiple system. it makes sure that the system of the build that is passed as input for a job has the same system as the job. - [72]
UXHP37RFset threshold to show status on jobset page to a more usable size - [73]
BVOPAMLS - [74]
LOMVF2KHdo not send email for builds with status 'aborted' - [75]
ELABMHJI* hydra: layout changes - [76]
ODWGRX32check for revisions - [77]
WWZWUPFIif no previous successful build, do not show changes section - [78]
KOTB7BKV - [79]
A63IHCMX* Register GC roots properly. - [80]
E6IC7YIK* Release sets: need to include the jobset name to disambiguate - [81]
AH2YD57S* More database hackery. - [82]
KA45EBF5* Send email if a build fails. - [83]
K4C6DNSMchanged queries for compatibility with postgresql - [84]
TLZ2SPBR - [85]
NABL63FI* hydra: project members can do stuff that the owner can do - [86]
BTUDUY6F* Provide some redirects to the latest successful build for a job (or - [87]
TW5ZQX5Z* Move up the build products in the builds page, since they're more - [88]
KAZWI5G4* hydra: buildpage, show changes since last build/successful build - [89]
KN3VYE5P* Cleaned up the foreign key constraints. - [90]
A52HEFHQ* Allow builds to be restarted (if they failed with a transient error, - [91]
EJFVQ33S* In the job status page and the channels, pick the build with the - [92]
TQKGQ5R3 - [93]
NZI7E2E3* hydra: handle case where logfile is empty - [94]
2R7GHSA4* hydra: added initial version of build graph - [95]
S5PV6IIM* Represent jobs explicitly in the DB. - [96]
AVOPQAF7* Make the "all" page faster by not doing four identical `select - [97]
QWB5ON4Dremove old line - [98]
T2232OBS* Add some DB indices to make the /releases page much faster. - [99]
SMCOU72Fhydra: add some admin for adding/enabling/etc build machines - [100]
JLDUSNUO* Unify rendering of finished and scheduled builds. - [101]
JTRG7RDQadd support for git as jobinput - [102]
Z6MDQIGO* A quick (non-Web 2.0) interface to manually add builds to a release. - [103]
P5X4P6VK* Renaming "release sets" to "views" (not finished yet). Having - [104]
NP6QUCL7* Fix indentation. - [105]
CS7T2XFI - [106]
ZEEZRG2Eclean up build page for build that failed with result - [107]
SMM4HQTP* Put actions related to builds under /build (e.g. /log/<buildid> - [108]
FYO6NECEhydra - [109]
TWVSALRL* Allow the maximum number of concurrent builds per platform to be - [110]
RFE6T5LG* Store jobset evaluations in the database explicitly. This includes - [111]
F5RYSE7Tqualify order by column - [112]
SHYRGAWZhydra: when no external url is given for diff's of git/hg input, revert to a diff done on a local available clone - [113]
ZVTSOVHN* Support Subversion checkouts. - [114]
FHF6IZJQ* Basic release management: releases are now dynamically computed as - [115]
3BKF6P72* Use Nix's negative caching. - [116]
6F4UNDTC* Provide access to the raw, non-pretty-printed logfiles. - [117]
HB3OHPJLhydra: in case of cached build, add link to build that built the storepath - [118]
V62IBGJV* Cannot call isValidPath on a logfile. This happened to work because - [119]
3HZY24CX* Make jobsets viewable under - [120]
X5UVREJY* PostgreSQL compatibility. - [121]
5NO7NCKT* Refactoring. - [122]
ODNCGFQ5* Improved the navigation bar: don't include all projects (since that - [123]
5SHCWE7X* Prevent repeated evaluation of a jobset with the same inputs. This - [124]
4X6NS66Q* Keep the most recent builds for each job. - [125]
SJLEZFC4check getHydraPath in stead of Envvar HYDRA_DBI directly - [126]
UCLYDK2A* Disambiguate. - [127]
D5QIOJGP* Move everything up one directory. - [128]
3HEMN2Q2* Speed up the jobstatus query a little bit. - [129]
FD76WVTQmissing file - [130]
GPRYAAFPhydra: change icon for positive failures - [131]
ZI535LI6* hydra: 'new' UI for project/jobset/job/build - [132]
V4RNHJNR* Add a link to each project's homepage. Suggested by karltk. - [133]
GAIBDEZZ* Store the name of the machine that performed a build step in the - [134]
CVWQXYKMuse newer icons consistently - [135]
EFWN7JBV* Added a status page that shows all the currently executing build steps. - [136]
LZO3C2KI* Hack around those SQLite timeouts: just retry the transaction. - [137]
PPJN6SDP* paging for releases page - [138]
JM3DPYOMgenerated schema with new dbix class schema loader, grrrrrr - [139]
PHX2HIVG* Store info about the build inputs in the build record. - [140]
BKOIYITRadded some json responses - [141]
HSVVEKTY* Start of a JSON API to get information about a specific build. - [142]
JUZVPV6Squalify id column in queries - [143]
KQS7DSKJ* Clean up indentation. - [144]
L2E6EVE2* Merged the Build and Job tables. - [145]
7PYQLDQLAdded sequences for auto increment primary key columns (for PostgreSQL) - [146]
UHANDRAR* Closure downloads: don't include the product number; it's not needed. - [147]
GNIEG2GC* Disambiguate jobs by jobset name. I.e. jobs with the same name in - [148]
QUTWJR7P* Include more info in notification emails. - [149]
M552HLIA* Support variant builds. - [150]
TCXFZZFN* hydra: make chart zoomable and clickable - [151]
HUH62VDLshow current builds on job page - [152]
2QA4Y4G3* hydra: added index, actual build time (buildstep with same outpath, so without deps) of the build - [153]
VZYX66Q3* hydra: only show current jobs in status overview of jobset page - [154]
LA27PR4Uhydra: fix enable email notification bug - [155]
OSVLMLCQhydra: factored out build restart and - [156]
LCKWLQW3* In Sqlite "release" is now a keyword, so use "release_" instead. - [157]
E5DMQRPORemove unnecessary whitespace in the HTML output - [158]
NEWDDAOF* Allow users to change the value of a build's "keep" flag, which - [159]
RBNQKATL* Adding persistant releases. A release is a named set of builds. - [160]
3HCBU2FA - [161]
J7EE2XZAFix a huge performance regression in the jobstatus page - [162]
7UJ5YV4V* Provide a channel for each project containing all the latest - [163]
AEFNBIIW* Merge the GC branch. - [164]
CXRCPDSQ* added support for twitter notification - [165]
S66BOMVU* Added authentication. - [166]
FM4O2L4Mhydra: if evaluator sees cached build, also add the buildproducts - [167]
CEARA7OH* hydra: show running buildsteps on build page - [168]
K7IRNVRFhydra: fixed email notification bug, when build is performed for the first time (it always said succeeded in the body of the mail - [169]
ZTQEU5QSHydra: Add support for maxSilent meta attribute (also already added timeout, but not implemented the actual timeout for the build yet) - [170]
AHTEIK7G* Added a maintainers field to the Builds table. - [171]
YAPITGB3* Boolean inputs. - [172]
H27UAGSXproject with 0 build resulted in error - [173]
SB2V735VKeep track of the database schema version - [174]
PKPWUHUX* Idem. - [175]
IW2LHCLLfixed email bug - [176]
TJPIS3UPhydra: minor improvements in hydra ui - [177]
PY4WQF5Gremove ascii escapes from log in tail page and emails - [178]
H7CNGK4O* Log evaluation errors etc. in the DB. - [179]
ZD5AEKWM* Job status / error pages: show only active jobs. - [180]
37R34XJO* Negative caching: don't perform a build if a dependency already - [181]
AWZPRK2Ofirst try for timeline of last 24 hours in hydra - [182]
OG7BEM57 - [183]
ZWCTAZGLadded newsitems, added some admin options to clear various caches. - [184]
75XUS62Y* Added a page to quickly see all failed builds and failed evaluations - [185]
RU7AQO7U* Role-based access control. Only admins can create projects. Only - [186]
5DSF5KWY* Perl sucks. "getBuildLog $drvPath" doesn't mean the same as - [187]
YTZOC7C5* Editing of jobset inputs. - [188]
3E6IP3R3* Add the name of the jobset to ReleaseSetJobs, otherwise we can't - [189]
QQ4STW3Smissing file - [190]
2I2ZX6JB* Make the "latest succeeded" query (used by the "latest" channel) - [191]
ZDNXMJ3J* Typo. - [192]
OOQ2D3KC* Refactoring: move fetchInput out of hydra_scheduler into a separate - [193]
KSD75RNJHydra/18: fixed uninitialized value error when logfile is null - [194]
3EGKZC3Chydra: in jobstatus pages, allow maintainer query argument to show only the packages you are maintaining - [195]
MRVTLC76 - [196]
EDRUQ4UKDie TABs die - [197]
XHK7IGYI* hdyra: show last succeeded build and changes since on build status summary if build has failed - [198]
Y35C6GHH* One-click installs. - [199]
36V375MDchange content type of logdiff to ->response->content_type('application/json'); - [200]
3SQCOHZN* minor performance tweaks - [201]
S6OISBQ3* Mark the "current" builds in a jobset, i.e. those corresponding to - [202]
2BUX775I* More release -> view. - [203]
WYN733ST* Store build duration, handle cached builds. - [204]
A22P7HCOhydra: at evaluation, check if path is already built, and mark as built in stead of adding to the queue. - [205]
6BLUKEQ2* Caching of "path" inputs, and fake a revision number for those. - [206]
JFZNAYJX* Showing releases. - [207]
ECBA3GQO* Make the schema class names match the case of the SQL table names. - [208]
OW6XV2YS* Allow a view result to be saved as a release. - [209]
JJT5QG3Kremove revision from cached cvs inputs, and added missing files - [210]
R5D7DZPE - [211]
WZ3AEJ67* hydra_update_gc_roots.pl registers build outputs that should be kept - [212]
LBNVQXUB* Build the /build stuff in a separate controller. - [213]
67P45PY4 - [214]
IN272KZW* Automatically keep all builds in the latest successful release in - [215]
LUPEGYR7Hydra: In case of failure, also show changes between last succesful build and the first failed build after this - [216]
B72GLND4 - [217]
Z4KRJX4Q* In the last succeeded / job status queries, use the Builds.isCurrent - [218]
FHAVPTZ6Hydra/23: added some X-headers with meta info in email notifications, added more descriptive status - [219]
RAKTHYAI* In the job status and error pages, show when the status of a job - [220]
6QRHXIM3* Speed up the jobset index page. Especially the query to get the - [221]
2WRTOU2ZCleanup - [222]
CLJQCY2X* Store info about all the build actions and allow them to be - [*]
DEMSSSB2* Controller for jobs which inherits all actions in ListBuilds. So - [*]
2GK5DOU7* Downloading closures. - [*]
T7Z63K6Thydra: moves jobsetOverview sub - [*]
AFTXA575* $HYDRA_DATA environment variable.
Change contents
- edit in src/lib/Hydra/Base/Controller/ListBuilds.pm at line 13
my $latest = joinWithResultInfo($c, $c->stash->{jobStatus}); - replacement in src/lib/Hydra/Base/Controller/ListBuilds.pm at line 15
$latest = $latest->search(my $latest = $c->stash->{jobStatus}->search( - replacement in src/lib/Hydra/Base/Controller/ListBuilds.pm at line 17
{ '+select' => ["me.statusChangeId", "me.statusChangeTime", "resultInfo.buildStatus"], '+as' => ["statusChangeId", "statusChangeTime", "buildStatus"]{ '+select' => ["me.statusChangeId", "me.statusChangeTime"], '+as' => ["statusChangeId", "statusChangeTime"] - replacement in src/lib/Hydra/Base/Controller/ListBuilds.pm at line 44
[getJobStatus($self, $c)->search({'resultInfo.buildstatus' => {'!=' => 0}})];[getJobStatus($self, $c)->search({buildStatus => {'!=' => 0}})]; - replacement in src/lib/Hydra/Base/Controller/ListBuilds.pm at line 65
$c->stash->{builds} = [ joinWithResultInfo($c, $c->stash->{allBuilds})->search($c->stash->{builds} = [ $c->stash->{allBuilds}->search( - replacement in src/lib/Hydra/Base/Controller/ListBuilds.pm at line 67
{ '+select' => ["resultInfo.buildStatus"], '+as' => ["buildStatus"], order_by => "timestamp DESC"{ order_by => "timestamp DESC" - replacement in src/lib/Hydra/Base/Controller/ListBuilds.pm at line 96
my ($latest) = joinWithResultInfo($c, $c->stash->{allBuilds})->search({finished => 1, buildstatus => 0}, {order_by => ["isCurrent DESC", "timestamp DESC"]});my ($latest) = $c->stash->{allBuilds}->search({finished => 1, buildstatus => 0}, {order_by => ["isCurrent DESC", "timestamp DESC"]}); - replacement in src/lib/Hydra/Base/Controller/ListBuilds.pm at line 111
my ($latest) = joinWithResultInfo($c, $c->stash->{allBuilds})->search({finished => 1, buildstatus => 0, system => $system}, {order_by => ["isCurrent DESC", "timestamp DESC"]});my ($latest) = $c->stash->{allBuilds}->search({finished => 1, buildstatus => 0, system => $system}, {order_by => ["isCurrent DESC", "timestamp DESC"]}); - edit in src/lib/Hydra/Controller/API.pm at line 17
- edit in src/lib/Hydra/Controller/API.pm at line 23
- edit in src/lib/Hydra/Controller/API.pm at line 32
- replacement in src/lib/Hydra/Controller/API.pm at line 37
my @projects = $c->model('DB::Projects')->search({hidden => 0}, {order_by => 'name'}) ;my @projects = $c->model('DB::Projects')->search({hidden => 0}, {order_by => 'name'}); - replacement in src/lib/Hydra/Controller/API.pm at line 39
my @list ;my @list; - replacement in src/lib/Hydra/Controller/API.pm at line 41
push @list, projectToHash($p) ;push @list, projectToHash($p); - edit in src/lib/Hydra/Controller/API.pm at line 49
- replacement in src/lib/Hydra/Controller/API.pm at line 65
$result->{'buildstatus'} = $build->get_column("buildstatus") ;$result->{'buildstatus'} = $build->get_column("buildstatus"); - edit in src/lib/Hydra/Controller/API.pm at line 74
- replacement in src/lib/Hydra/Controller/API.pm at line 77
my $nr = $c->request->params->{nr} ;my $nr = $c->request->params->{nr}; - replacement in src/lib/Hydra/Controller/API.pm at line 80
my $project = $c->request->params->{project} ;my $jobset = $c->request->params->{jobset} ;my $job = $c->request->params->{job} ;my $system = $c->request->params->{system} ;my $project = $c->request->params->{project};my $jobset = $c->request->params->{jobset};my $job = $c->request->params->{job};my $system = $c->request->params->{system}; - replacement in src/lib/Hydra/Controller/API.pm at line 85
my $filter = {finished => 1} ;my $filter = {finished => 1}; - replacement in src/lib/Hydra/Controller/API.pm at line 91
my @latest = joinWithResultInfo($c, $c->model('DB::Builds'))->search($filter, {rows => $nr, order_by => ["timestamp DESC"] });my @latest = $c->model('DB::Builds')->search($filter, {rows => $nr, order_by => ["timestamp DESC"] }); - replacement in src/lib/Hydra/Controller/API.pm at line 93
my @list ;foreach my $b (@latest) {push @list, buildToHash($b) ;}my @list;push @list, buildToHash($_) foreach @latest; - edit in src/lib/Hydra/Controller/API.pm at line 102
- edit in src/lib/Hydra/Controller/API.pm at line 115
- replacement in src/lib/Hydra/Controller/API.pm at line 119
my $projectName = $c->request->params->{project} ;my $projectName = $c->request->params->{project}; - replacement in src/lib/Hydra/Controller/API.pm at line 127
my @list ;foreach my $j (@jobsets) {push @list, jobsetToHash($j) ;}my @list;push @list, jobsetToHash($_) foreach @jobsets; - edit in src/lib/Hydra/Controller/API.pm at line 136
- replacement in src/lib/Hydra/Controller/API.pm at line 140
my $nr = $c->request->params->{nr} ;my $nr = $c->request->params->{nr}; - edit in src/lib/Hydra/Controller/API.pm at line 154
- edit in src/lib/Hydra/Controller/API.pm at line 164
- edit in src/lib/Hydra/Controller/API.pm at line 174
- replacement in src/lib/Hydra/Controller/API.pm at line 177
my $nr = $c->request->params->{nr} ;my $period = $c->request->params->{period} ;my $nr = $c->request->params->{nr};my $period = $c->request->params->{period}; - replacement in src/lib/Hydra/Controller/API.pm at line 183
my $project = $c->request->params->{project} ;my $jobset = $c->request->params->{jobset} ;my $job = $c->request->params->{job} ;my $system = $c->request->params->{system} ;my $project = $c->request->params->{project};my $jobset = $c->request->params->{jobset};my $job = $c->request->params->{job};my $system = $c->request->params->{system}; - replacement in src/lib/Hydra/Controller/API.pm at line 188
my $filter = {finished => 1} ;my $filter = {finished => 1}; - replacement in src/lib/Hydra/Controller/API.pm at line 197
my @stats = $c->model('DB::Builds')->search($filter, {select => [{ count => "*" }], as => ["nr"], group_by => ["timestamp - timestamp % $base"], order_by => "timestamp - timestamp % $base DESC", rows => $nr}) ;my @arr ;foreach my $d (@stats) {push @arr, int($d->get_column("nr"));}my @stats = $c->model('DB::Builds')->search($filter, {select => [{ count => "*" }], as => ["nr"], group_by => ["timestamp - timestamp % $base"], order_by => "timestamp - timestamp % $base DESC", rows => $nr});my @arr;push @arr, int($_->get_column("nr")) foreach @stats; - edit in src/lib/Hydra/Controller/API.pm at line 208
- replacement in src/lib/Hydra/Controller/API.pm at line 212
my $uri = $c->request->params->{uri} ;my $type = $c->request->params->{type} ;my $rev1 = $c->request->params->{rev1} ;my $rev2 = $c->request->params->{rev2} ;my $uri = $c->request->params->{uri};my $type = $c->request->params->{type};my $rev1 = $c->request->params->{rev1};my $rev2 = $c->request->params->{rev2}; - replacement in src/lib/Hydra/Controller/API.pm at line 218
die("invalid revisions: [$rev1] [$rev2]") if $rev1 !~ m/^[a-zA-Z0-9_.]+$/ || $rev2 !~ m/^[a-zA-Z0-9_.]+$/ ;die("invalid revisions: [$rev1] [$rev2]") if $rev1 !~ m/^[a-zA-Z0-9_.]+$/ || $rev2 !~ m/^[a-zA-Z0-9_.]+$/; - replacement in src/lib/Hydra/Controller/API.pm at line 221
if($type eq "hg") {if ($type eq "hg") { - replacement in src/lib/Hydra/Controller/API.pm at line 224[19.552]→[14.0:77](∅→∅),[14.77]→[19.189:256](∅→∅),[19.189]→[19.189:256](∅→∅),[19.56]→[19.605:659](∅→∅),[19.151]→[19.605:659](∅→∅),[19.256]→[19.605:659](∅→∅),[19.605]→[19.605:659](∅→∅)
$branch = `(cd $clonePath ; hg log --template '{branch}' -r $rev2)`;$diff .= `(cd $clonePath ; hg log -r $rev1 -r $rev2 -b $branch)`;$diff .= `(cd $clonePath ; hg diff -r $rev1:$rev2)`;$branch = `(cd $clonePath; hg log --template '{branch}' -r $rev2)`;$diff .= `(cd $clonePath; hg log -r $rev1 -r $rev2 -b $branch)`;$diff .= `(cd $clonePath; hg diff -r $rev1:$rev2)`; - replacement in src/lib/Hydra/Controller/API.pm at line 230
$diff .= `(cd $clonePath ; git log $rev1..$rev2)`;$diff .= `(cd $clonePath ; git diff $rev1..$rev2)`;$diff .= `(cd $clonePath; git log $rev1..$rev2)`;$diff .= `(cd $clonePath; git diff $rev1..$rev2)`; - edit in src/lib/Hydra/Controller/API.pm at line 237
- replacement in src/lib/Hydra/Controller/API.pm at line 241
my $pipe = (-f "$file.bz2" ? "cat $file.bz2 | bzip2 -d" : "cat $file") ;my $pipe = (-f "$file.bz2" ? "cat $file.bz2 | bzip2 -d" : "cat $file"); - edit in src/lib/Hydra/Controller/API.pm at line 250
- replacement in src/lib/Hydra/Controller/API.pm at line 263
if (-f $build1->resultInfo->logfile && -f $build2->resultInfo->logfile) {my $logtext1 = readNormalizedLog($build1->resultInfo->logfile);my $logtext2 = readNormalizedLog($build2->resultInfo->logfile);if (-f $build1->logfile && -f $build2->logfile) {my $logtext1 = readNormalizedLog($build1->logfile);my $logtext2 = readNormalizedLog($build2->logfile); - edit in src/lib/Hydra/Controller/API.pm at line 276
- replacement in src/lib/Hydra/Controller/Build.pm at line 51
if (defined $build->resultInfo && $build->resultInfo->iscachedbuild) {if ($build->finished && $build->iscachedbuild) { - replacement in src/lib/Hydra/Controller/Build.pm at line 58
if (defined $build->resultInfo && ($build->resultInfo->buildstatus == 1 || $build->resultInfo->buildstatus == 6) && !($path eq "") && -f $lastBuildStep->logfile) {if ($build->finished && ($build->buildstatus == 1 || $build->buildstatus == 6) && !($path eq "") && -f $lastBuildStep->logfile) { - replacement in src/lib/Hydra/Controller/Build.pm at line 63
if($build->finished) {$c->stash->{prevBuilds} = [joinWithResultInfo($c, $c->model('DB::Builds'))->search(if ($build->finished) {$c->stash->{prevBuilds} = [$c->model('DB::Builds')->search( - replacement in src/lib/Hydra/Controller/Build.pm at line 108
error($c, "Build didn't produce a log.") if !defined $c->stash->{build}->resultInfo->logfile;error($c, "Build didn't produce a log.") if !defined $c->stash->{build}->logfile; - replacement in src/lib/Hydra/Controller/Build.pm at line 110
showLog($c, $c->stash->{build}->resultInfo->logfile, $mode);showLog($c, $c->stash->{build}->logfile, $mode); - replacement in src/lib/Hydra/Controller/Build.pm at line 441
$build->resultInfo->update({keep => int $newStatus});$build->update({keep => int $newStatus}); - replacement in src/lib/Hydra/Controller/Job.pm at line 28
$c->stash->{currentBuilds} = [$c->stash->{job}->builds->search({iscurrent => 1}, { join => 'resultInfo', '+select' => ["resultInfo.releasename", "resultInfo.buildStatus"], '+as' => ["releasename", "buildStatus"], order_by => 'system' })];$c->stash->{currentBuilds} = [$c->stash->{job}->builds->search({finished => 1, iscurrent => 1}, { order_by => 'system' })]; - replacement in src/lib/Hydra/Controller/Job.pm at line 32
{ join => 'resultInfo',, '+select' => ["resultInfo.releasename", "resultInfo.buildStatus"], '+as' => ["releasename", "buildStatus"], order_by => 'timestamp DESC', rows => 10}) ];{ order_by => 'timestamp DESC', rows => 10 }) ]; - replacement in src/lib/Hydra/Controller/Jobset.pm at line 68
push(@select, "(select buildstatus from BuildResultInfo bri join Builds b using (id) where b.id = (select max(id) from Builds t where t.project = me.project and t.jobset = me.jobset and t.job = me.job and t.system = '$system' and t.iscurrent = 1 ))");push(@select, "(select buildstatus from Builds b where b.id = (select max(id) from Builds t where t.project = me.project and t.jobset = me.jobset and t.job = me.job and t.system = '$system' and t.iscurrent = 1 ))"); - replacement in src/lib/Hydra/Controller/Jobset.pm at line 70
push(@select, "(select b.id from BuildResultInfo bri join Builds b using (id) where b.id = (select max(id) from Builds t where t.project = me.project and t.jobset = me.jobset and t.job = me.job and t.system = '$system' and t.iscurrent = 1 ))");push(@select, "(select b.id from Builds b where b.id = (select max(id) from Builds t where t.project = me.project and t.jobset = me.jobset and t.job = me.job and t.system = '$system' and t.iscurrent = 1 ))"); - edit in src/lib/Hydra/Controller/Jobset.pm at line 84
my $tmp = $c->stash->{jobset}->builds; - replacement in src/lib/Hydra/Controller/Jobset.pm at line 85
[ joinWithResultInfo($c, $tmp)->search({ finished => 1 },{ order_by => "timestamp DESC", rows => 5, '+select' => ["resultInfo.buildStatus"], '+as' => ["buildStatus"]}) ];[ $c->stash->{jobset}->builds->search({ finished => 1 },{ order_by => "timestamp DESC", rows => 5 }) ]; - replacement in src/lib/Hydra/Controller/Root.pm at line 89[19.194]→[19.194:375](∅→∅),[19.375]→[19.525:686](∅→∅),[19.686]→[19.542:555](∅→∅),[19.542]→[19.542:555](∅→∅)
$c->stash->{builds} = [$c->model('DB::Builds')->search({finished => 1, stoptime => { '>' => $pit } }, { join => 'resultInfo', order_by => ["starttime"], '+select' => [ 'resultInfo.starttime', 'resultInfo.stoptime', 'resultInfo.buildstatus' ], '+as' => [ 'starttime', 'stoptime', 'buildstatus' ]})];$c->stash->{builds} = [ $c->model('DB::Builds')->search( { finished => 1, stoptime => { '>' => $pit } }, { order_by => ["starttime"] }) ]; - replacement in src/lib/Hydra/Controller/View.pm at line 156
my $primaryBuild = $c->stash->{project}->builds->find($id,{ join => 'resultInfo',, '+select' => ["resultInfo.releasename", "resultInfo.buildstatus"], '+as' => ["releasename", "buildstatus"] })my $primaryBuild = $c->stash->{project}->builds->find($id) - replacement in src/lib/Hydra/Helper/AddBuilds.pm at line 247
{ join => 'resultInfo', order_by => "me.id DESC", rows => 1{ order_by => "me.id DESC", rows => 1 - replacement in src/lib/Hydra/Helper/AddBuilds.pm at line 260
my $relName = ($prevBuild->resultInfo->releasename or $prevBuild->nixname);my $relName = ($prevBuild->releasename or $prevBuild->nixname); - replacement in src/lib/Hydra/Helper/AddBuilds.pm at line 297
my $relName = ($prevBuild->resultInfo->releasename or $prevBuild->nixname);my $relName = ($prevBuild->releasename or $prevBuild->nixname); - replacement in src/lib/Hydra/Helper/AddBuilds.pm at line 858[19.580]→[18.2901:2941](∅→∅),[18.2941]→[19.624:715](∅→∅),[19.3408]→[19.624:715](∅→∅),[19.624]→[19.624:715](∅→∅)
$build->update({ finished => 1 });$build->create_related('buildresultinfo',{ iscachedbuild => 1$build->update({ finished => 1, iscachedbuild => 1 - edit in src/lib/Hydra/Helper/AddBuilds.pm at line 924
$build->resultInfo->delete; - replacement in src/lib/Hydra/Helper/CatalystUtils.pm at line 11
getBuild getPreviousBuild getNextBuild getPreviousSuccessfulBuild getBuildStats joinWithResultInfo getChannelDatagetBuild getPreviousBuild getNextBuild getPreviousSuccessfulBuild getBuildStats getChannelData - replacement in src/lib/Hydra/Helper/CatalystUtils.pm at line 61
(my $prevBuild) = joinWithResultInfo($c, $c->model('DB::Builds'))->search((my $prevBuild) = $c->model('DB::Builds')->search( - replacement in src/lib/Hydra/Helper/CatalystUtils.pm at line 79
$c->stash->{succeededBuilds} = $builds->search({finished => 1, buildStatus => 0},{join => 'resultInfo'}) || 0;$c->stash->{succeededBuilds} = $builds->search({finished => 1, buildStatus => 0}) || 0; - replacement in src/lib/Hydra/Helper/CatalystUtils.pm at line 86[19.14]→[19.14:45](∅→∅),[19.45]→[19.10328:10418](∅→∅),[19.10328]→[19.10328:10418](∅→∅),[19.10418]→[19.46:72](∅→∅)
$res = $builds->search({},{join => 'resultInfo', select => {sum => 'stoptime - starttime'}, as => ['sum']})->first ;$res = $builds->search({}, {select => {sum => 'stoptime - starttime'}, as => ['sum']})->first; - edit in src/lib/Hydra/Helper/CatalystUtils.pm at line 93[19.10585]→[19.1636:1786](∅→∅),[19.1786]→[19.783:784](∅→∅),[19.783]→[19.783:784](∅→∅),[19.784]→[19.1787:1935](∅→∅),[19.1935]→[19.331:381](∅→∅),[19.381]→[19.1985:1997](∅→∅),[19.1985]→[19.1985:1997](∅→∅),[19.1997]→[19.621:625](∅→∅),[19.11101]→[19.621:625](∅→∅)
# Add the releaseName and buildStatus attributes from the# BuildResultInfo table for each build.sub joinWithResultInfo {my ($c, $source) = @_;return $source->search({ },{ join => 'resultInfo', '+select' => ["resultInfo.releasename", "resultInfo.buildstatus"], '+as' => ["releasename", "buildStatus"]});} - replacement in src/lib/Hydra/Helper/CatalystUtils.pm at line 96
my @builds2 = joinWithResultInfo($c, $builds)->search_literal("exists (select 1 from buildproducts where build = resultInfo.id and type = 'nix-build')");my @builds2 = $builds->search_literal("exists (select 1 from buildproducts where build = me.id and type = 'nix-build')"); - replacement in src/lib/Hydra/Helper/Nix.pm at line 124
{ join => 'resultInfo', order_by => "timestamp DESC", '+select' => ["resultInfo.releasename", "resultInfo.buildstatus"], '+as' => ["releasename", "buildstatus"]{ order_by => "timestamp DESC" - replacement in src/lib/Hydra/Helper/Nix.pm at line 166
{ join => 'resultInfo', rows => 1{ rows => 1 - edit in src/lib/Hydra/Helper/Nix.pm at line 169
, '+select' => ["resultInfo.buildstatus"], '+as' => ["buildstatus"] - replacement in src/lib/Hydra/Helper/Nix.pm at line 180
{ join => 'resultInfo', rows => 1{ rows => 1 - edit in src/lib/Hydra/Helper/Nix.pm at line 183
, '+select' => ["resultInfo.buildstatus"], '+as' => ["buildstatus"] - edit in src/lib/Hydra/Helper/Nix.pm at line 189
- replacement in src/lib/Hydra/Helper/Nix.pm at line 196
, "(select count(*) from Builds as a join BuildResultInfo r using (id) where me.project = a.project and me.name = a.jobset and buildstatus <> 0 and a.isCurrent = 1)", "(select count(*) from Builds as a join BuildResultInfo r using (id) where me.project = a.project and me.name = a.jobset and buildstatus = 0 and a.isCurrent = 1)", "(select count(*) from Builds as a where a.finished = 1 and me.project = a.project and me.name = a.jobset and buildstatus <> 0 and a.isCurrent = 1)", "(select count(*) from Builds as a where a.finished = 1 and me.project = a.project and me.name = a.jobset and buildstatus = 0 and a.isCurrent = 1)" - edit in src/lib/Hydra/Helper/Nix.pm at line 203
- edit in src/lib/Hydra/Helper/Nix.pm at line 258[19.3668][227.849]
- edit in src/lib/Hydra/Helper/Nix.pm at line 266[19.372][227.850]
- file deletion: Buildresultinfo.pm Buildresultinfo.pm BuildResultInfo.pm BuildResultInfo.pm Buildresultinfo.pm[19.207]→[19.304:346](∅→∅),[19.346]→[19.1594:1594](∅→∅),[19.294]→[19.391:433](∅→∅),[19.433]→[19.1594:1594](∅→∅),[19.207]→[19.531:573](∅→∅),[19.573]→[19.1594:1594](∅→∅),[19.477]→[19.574:616](∅→∅),[19.616]→[19.1594:1594](∅→∅),[19.3332]→[19.2620:2662](∅→∅),[19.2662]→[19.1594:1594](∅→∅)
use utf8;package Hydra::Schema::BuildResultInfo;# Created by DBIx::Class::Schema::Loader# DO NOT MODIFY THE FIRST PART OF THIS FILE=head1 NAMEHydra::Schema::BuildResultInfo=cutuse strict;use warnings;=cut__PACKAGE__->table("BuildResultInfo");=head1 ACCESSORS=head2 idis_foreign_key: 1is_nullable: 0=head2 iscachedbuildis_nullable: 0=head2 buildstatusis_nullable: 1=head2 errormsgis_nullable: 1=head2 starttimeis_nullable: 1=head2 stoptimeis_nullable: 1=head2 logfileis_nullable: 1=head2 logsizedefault_value: 0is_nullable: 0=head2 sizedefault_value: 0is_nullable: 0=head2 closuresizedefault_value: 0is_nullable: 0data_type: 'bigint'=head2 releasenameis_nullable: 1=head2 keepdefault_value: 0is_nullable: 0=head2 faileddepbuildis_nullable: 1=head2 faileddepstepnris_nullable: 1=cutdata_type: 'integer'data_type: 'integer'data_type: 'integer'data_type: 'text'data_type: 'bigint'data_type: 'bigint'data_type: 'text'data_type: 'integer'data_type: 'integer'data_type: 'text'data_type: 'integer'data_type: 'integer'data_type: 'integer'is_auto_increment: 1__PACKAGE__->add_columns("id",{},"iscachedbuild","buildstatus","errormsg","starttime","stoptime","logfile","logsize","size","closuresize","releasename","keep","faileddepbuild","faileddepstepnr",);=head1 PRIMARY KEY=over 4=item * L</id>=back=cut__PACKAGE__->set_primary_key("id");=head1 RELATIONS=head2 idType: belongs_toRelated object: L<Hydra::Schema::Builds>=cut__PACKAGE__->belongs_to("id", "Hydra::Schema::Builds", { id => "id" }, {});1;__PACKAGE__->belongs_to("failedDep","Hydra::Schema::BuildSteps",{ build => "faileddepbuild", stepnr => "faileddepstepnr" },);# Created by DBIx::Class::Schema::Loader v0.07014 @ 2011-12-05 14:15:43# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:hX3+iQYrGslQqY9vKvyw3g{ data_type => "integer", is_nullable => 1 },{ data_type => "integer", is_nullable => 1 },{ data_type => "integer", default_value => 0, is_nullable => 0 },{ data_type => "text", is_nullable => 1 },{ data_type => "bigint", default_value => 0, is_nullable => 0 },{ data_type => "bigint", default_value => 0, is_nullable => 0 },{ data_type => "bigint", default_value => 0, is_nullable => 0 },{ data_type => "text", is_nullable => 1 },{ data_type => "integer", is_nullable => 1 },{ data_type => "integer", is_nullable => 1 },{ data_type => "text", is_nullable => 1 },{ data_type => "integer", is_nullable => 1 },{ data_type => "integer", is_nullable => 0 },data_type => "integer",is_auto_increment => 1,is_foreign_key => 1,is_nullable => 0,=head1 TABLE: C<BuildResultInfo>use base 'DBIx::Class::Core'; - edit in src/lib/Hydra/Schema/Builds.pm at line 162
data_type: 'integer'is_nullable: 1=head2 stoptimedata_type: 'integer'is_nullable: 1=head2 iscachedbuilddata_type: 'integer'is_nullable: 1=head2 buildstatus - edit in src/lib/Hydra/Schema/Builds.pm at line 179
is_nullable: 1=head2 errormsgdata_type: 'text'is_nullable: 1=head2 logsizedata_type: 'bigint'is_nullable: 1=head2 sizedata_type: 'bigint' - edit in src/lib/Hydra/Schema/Builds.pm at line 195
=head2 closuresize - edit in src/lib/Hydra/Schema/Builds.pm at line 198
data_type: 'bigint'is_nullable: 1=head2 releasenamedata_type: 'text'is_nullable: 1=head2 keepdata_type: 'integer'default_value: 0is_nullable: 0 - edit in src/lib/Hydra/Schema/Builds.pm at line 266
{ data_type => "integer", is_nullable => 1 },"stoptime", - edit in src/lib/Hydra/Schema/Builds.pm at line 269
"iscachedbuild",{ data_type => "integer", is_nullable => 1 },"buildstatus",{ data_type => "integer", is_nullable => 1 },"errormsg",{ data_type => "text", is_nullable => 1 },"logsize",{ data_type => "bigint", is_nullable => 1 },"size",{ data_type => "bigint", is_nullable => 1 },"closuresize",{ data_type => "bigint", is_nullable => 1 },"releasename",{ data_type => "text", is_nullable => 1 },"keep",{ data_type => "integer", default_value => 0, is_nullable => 0 }, - edit in src/lib/Hydra/Schema/Builds.pm at line 343[19.9820]→[19.9169:9175](∅→∅),[19.1020]→[19.9169:9175](∅→∅),[19.9175]→[19.1020:1023](∅→∅),[19.1020]→[19.1020:1023](∅→∅),[19.1023]→[19.9176:9177](∅→∅),[19.9177]→[19.9821:9844](∅→∅),[19.9844]→[19.9204:9223](∅→∅),[19.9204]→[19.9204:9223](∅→∅),[19.9223]→[19.9845:9895](∅→∅),[19.9895]→[19.9277:9284](∅→∅),[19.9277]→[19.9277:9284](∅→∅),[19.9284]→[19.8805:8830](∅→∅),[19.1023]→[19.8805:8830](∅→∅),[19.8830]→[19.9896:9953](∅→∅),[19.1247]→[19.2847:2880](∅→∅),[19.1582]→[19.2847:2880](∅→∅),[19.9953]→[19.2847:2880](∅→∅),[19.2847]→[19.2847:2880](∅→∅)
{},);=head2 buildresultinfoType: might_haveRelated object: L<Hydra::Schema::BuildResultInfo>=cut__PACKAGE__->might_have("buildresultinfo","Hydra::Schema::BuildResultInfo",{ "foreign.id" => "self.id" }, - replacement in src/lib/Hydra/Schema/Builds.pm at line 432
# Created by DBIx::Class::Schema::Loader v0.07014 @ 2012-02-29 00:47:54# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:VnnyFTwnLncGb2Dj2/giiA# Created by DBIx::Class::Schema::Loader v0.07014 @ 2012-02-29 18:56:22# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:w16c86FRReLPdA8H0yTIRg - edit in src/lib/Hydra/Schema/Builds.pm at line 449[19.3660]→[19.3660:3705](∅→∅),[19.3705]→[19.1757:1793](∅→∅),[19.1793]→[19.3749:3767](∅→∅),[19.2128]→[19.3749:3767](∅→∅),[19.3749]→[19.3749:3767](∅→∅)
);__PACKAGE__->belongs_to("resultInfo","Hydra::Schema::BuildResultInfo",{ id => "id" }, - edit in src/lib/Hydra/Schema/Builds.pm at line 478[19.5]→[19.1005:1036](∅→∅),[19.2536]→[19.1005:1036](∅→∅),[19.1036]→[19.6:23](∅→∅),[19.23]→[18.5179:5223](∅→∅),[18.5223]→[19.64:115](∅→∅),[19.64]→[19.64:115](∅→∅),[19.115]→[18.5224:5325](∅→∅),[18.5325]→[19.206:336](∅→∅),[19.206]→[19.206:336](∅→∅),[19.336]→[3.0:166](∅→∅),[3.166]→[19.402:408](∅→∅),[19.402]→[19.402:408](∅→∅),[19.408]→[19.616:617](∅→∅)
my $joinWithStatusChange =<<QUERY;join BuildResultInfo r using (id)left join Builds b onb.id =(select max(c.id)from builds c join buildresultinfo r2 on c.id = r2.idwherex.project = c.project and x.jobset = c.jobset and x.job = c.job and x.system = c.system andx.id > c.id and((r.buildstatus = 0 and r2.buildstatus != 0) or(r.buildstatus != 0 and r2.buildstatus = 0)))QUERY - replacement in src/lib/Hydra/Schema/Builds.pm at line 484[19.553]→[19.553:731](∅→∅),[19.731]→[19.0:79](∅→∅),[19.79]→[18.5326:5455](∅→∅),[19.51]→[19.794:862](∅→∅),[19.106]→[19.794:862](∅→∅),[18.5455]→[19.794:862](∅→∅),[19.794]→[19.794:862](∅→∅)
selectx.id, x.finished, x.timestamp, x.project, x.jobset, x.job, x.nixname,x.description, x.drvpath, x.outpath, x.system, x.longdescription,x.license, x.homepage, x.maintainers, x.isCurrent, x.nixExprInput,x.nixExprPath, x.maxsilent, x.timeout, x.priority, x.busy, x.locker,x.logfile, x.disabled, x.startTime,b.id as statusChangeId, b.timestamp as statusChangeTimeselect x.*, b.id as statusChangeId, b.timestamp as statusChangeTime - replacement in src/lib/Hydra/Schema/Builds.pm at line 487
(select max(b.id) from builds b(select max(b.id) from Builds b - replacement in src/lib/Hydra/Schema/Builds.pm at line 496[19.362]→[19.1090:1122](∅→∅),[19.663]→[19.1090:1122](∅→∅),[19.10248]→[19.1090:1122](∅→∅),[19.1090]→[19.1090:1122](∅→∅)
$joinWithStatusChangeleft join Builds b onb.id =(select max(c.id) from Builds cwherec.finished = 1 andx.project = c.project and x.jobset = c.jobset and x.job = c.job and x.system = c.system andx.id > c.id and((x.buildStatus = 0 and c.buildStatus != 0) or(x.buildStatus != 0 and c.buildStatus = 0))) - replacement in src/lib/Hydra/Schema/Builds.pm at line 520
and finished = 1and exists (select 1 from buildresultinfo where id = b.id and buildstatus = 0)and finished = 1 and buildstatus = 0 - edit in src/root/build.tt at line 10
[% resultInfo = build.resultInfo %] - replacement in src/root/build.tt at line 37
[% INCLUDE renderDuration duration = resultInfo.stoptime - step.starttime %][% INCLUDE renderDuration duration = build.stoptime - step.starttime %] - replacement in src/root/build.tt at line 108
[% IF resultInfo.releasename %][% IF build.releasename %] - replacement in src/root/build.tt at line 111
<td><tt>[% HTML.escape(resultInfo.releasename) %]</tt></td><td><tt>[% HTML.escape(build.releasename) %]</tt></td> - replacement in src/root/build.tt at line 133
[% IF resultInfo.iscachedbuild %][% IF build.iscachedbuild %] - replacement in src/root/build.tt at line 136
[% INCLUDE renderDuration duration = resultInfo.stoptime - resultInfo.starttime %] <tt>finished at [% INCLUDE renderDateTime timestamp = resultInfo.stoptime %]</tt>[% INCLUDE renderDuration duration = build.stoptime - build.starttime %] <tt>finished at [% INCLUDE renderDateTime timestamp = build.stoptime %]</tt> - replacement in src/root/build.tt at line 141
[% IF resultInfo.logfile %][% IF build.logfile %] - replacement in src/root/build.tt at line 184
[% IF build.buildsteps && resultInfo.buildstatus != 0 && resultInfo.buildstatus != 6 %][% IF build.buildsteps && build.buildstatus != 0 && build.buildstatus != 6 %] - replacement in src/root/build.tt at line 216
[% IF resultInfo.errormsg && resultInfo.buildstatus != 5 %][% IF build.errormsg && build.buildstatus != 5 %] - replacement in src/root/build.tt at line 220
<pre class="buildlog">[% HTML.escape(resultInfo.errormsg) -%]</pre><pre class="buildlog">[% HTML.escape(build.errormsg) -%]</pre> - replacement in src/root/build.tt at line 266
[% IF resultInfo.releasename %][% IF build.releasename %] - replacement in src/root/build.tt at line 269
<td><tt>[% HTML.escape(resultInfo.releasename) %]</tt></td><td><tt>[% HTML.escape(build.releasename) %]</tt></td> - replacement in src/root/build.tt at line 330
[% IF build.finished && resultInfo.buildstatus != 4 %][% IF resultInfo.iscachedbuild && cachedBuild %][% IF build.finished && build.buildstatus != 4 %][% IF build.iscachedbuild && cachedBuild %] - replacement in src/root/build.tt at line 340
<td>[% IF resultInfo.starttime %][% INCLUDE renderDateTime timestamp = resultInfo.starttime %][% ELSE %]<em>(cached build)</em>[% END %]</td><td>[% IF build.starttime %][% INCLUDE renderDateTime timestamp = build.starttime %][% ELSE %]<em>(cached build)</em>[% END %]</td> - replacement in src/root/build.tt at line 344
<td>[% IF resultInfo.stoptime %][% INCLUDE renderDateTime timestamp = resultInfo.stoptime %][% ELSE %]<em>(cached build)</em>[% END %]</td><td>[% IF build.stoptime %][% INCLUDE renderDateTime timestamp = build.stoptime %][% ELSE %]<em>(cached build)</em>[% END %]</td> - replacement in src/root/build.tt at line 349
[% IF resultInfo.iscachedbuild %][% IF build.iscachedbuild %] - replacement in src/root/build.tt at line 352
[% INCLUDE renderDuration duration = resultInfo.stoptime - resultInfo.starttime %][% INCLUDE renderDuration duration = build.stoptime - build.starttime %] - replacement in src/root/build.tt at line 356
[% IF resultInfo.logfile %][% IF build.logfile %] - replacement in src/root/build.tt at line 379
[% ELSIF resultInfo.keep %][% ELSIF build.keep %] - replacement in src/root/build.tt at line 489
[% FOREACH prevbuild IN prevBuilds %][% IF prevbuild.resultInfo.starttime != 0 %][% pbResultInfo = prevbuild.resultInfo %]d.push([[% pbResultInfo.starttime * 1000 %],[% prevbuild.get_column('actualBuildTime') %]]);ids[[% pbResultInfo.starttime * 1000 %]] = [% prevbuild.id %] ;[% FOREACH prevbuild IN prevBuilds %][% IF prevbuild.build.starttime != 0 %]d.push([[% prevbuild.starttime * 1000 %],[% prevbuild.get_column('actualBuildTime') %]]);ids[[% prevbuild.starttime * 1000 %]] = [% prevbuild.id %] ; - replacement in src/root/build.tt at line 561
[% FOREACH prevbuild IN prevBuilds %][% IF prevbuild.resultInfo.size != 0 %]d.push([[% prevbuild.resultInfo.starttime * 1000 %],[% prevbuild.resultInfo.size / (1024*1024.0) %]]);ids[[% prevbuild.resultInfo.starttime * 1000 %]] = [% prevbuild.id %] ;[% FOREACH prevbuild IN prevBuilds %][% IF prevbuild.size != 0 %]d.push([[% prevbuild.starttime * 1000 %],[% prevbuild.size / (1024*1024.0) %]]);ids[[% prevbuild.starttime * 1000 %]] = [% prevbuild.id %] ; - replacement in src/root/common.tt at line 103
[%- INCLUDE renderBuildStatusIcon size=16 busy=(showSchedulingInfo ? 1 : 0) buildstatus=build.get_column('buildStatus') -%][%- INCLUDE renderBuildStatusIcon size=16 busy=(showSchedulingInfo ? 1 : 0) buildstatus=build.buildstatus -%] - replacement in src/root/common.tt at line 207
[%- buildstatus = buildstatus != undef ? buildstatus : build.resultInfo.buildstatus -%][%- buildstatus = buildstatus != undef ? buildstatus : build.buildstatus -%] - replacement in src/root/common.tt at line 233
[% buildstatus = build.resultInfo.buildstatus %][% buildstatus = build.buildstatus %] - edit in src/root/common.tt at line 245
[% failedDep = build.resultInfo.failedDep %](namely, <a href="[% c.uri_for('/build' failedDep.build.id 'nixlog' failedDep.stepnr) %]"><tt>[% failedDep.outpath %]</tt></a>) - replacement in src/root/product-list.tt at line 22
[% IF build.resultInfo.buildstatus == 6 %][% IF build.buildstatus == 6 %] - replacement in src/root/view-result.tt at line 27
[% IF j.build.resultInfo.buildstatus == 0 %][% IF j.build.buildstatus == 0 %] - replacement in src/script/hydra-build at line 37
my $status = $build->resultInfo->buildstatus == 0 ? "SUCCEEDED" : "FAILED";my $status = $build->buildstatus == 0 ? "SUCCEEDED" : "FAILED"; - replacement in src/script/hydra-build at line 39
my $duration = ($build->resultInfo->stoptime - $build->resultInfo->starttime) . " seconds";my $duration = ($build->stoptime - $build->starttime) . " seconds"; - replacement in src/script/hydra-build at line 77
die unless defined $build->resultInfo;die unless $build->finished; - replacement in src/script/hydra-build at line 96
if (defined $prevBuild && ($build->resultInfo->buildstatus == $prevBuild->resultInfo->buildstatus)) {if (defined $prevBuild && ($build->buildstatus == $prevBuild->buildstatus)) { - replacement in src/script/hydra-build at line 102
if ($build->resultInfo->buildstatus == 3 || (defined $prevBuild && ($prevBuild->resultInfo->buildstatus == 3))) {if ($build->buildstatus == 3 || (defined $prevBuild && ($prevBuild->buildstatus == 3))) { - replacement in src/script/hydra-build at line 113
my $status = statusDescription($build->resultInfo->buildstatus);my $status = statusDescription($build->buildstatus); - replacement in src/script/hydra-build at line 135
[ "Build started:", showTime $build->resultInfo->starttime ],[ "Build finished:", showTime $build->resultInfo->stoptime ],[ "Duration:", $build->resultInfo->stoptime - $build->resultInfo->starttime . "s" ],) if $build->resultInfo->starttime;[ "Build started:", showTime $build->starttime ],[ "Build finished:", showTime $build->stoptime ],[ "Duration:", $build->stoptime - $build->starttime . "s" ],) if $build->starttime; - replacement in src/script/hydra-build at line 160
my $logfile = $build->resultInfo->logfile;my $logfile = $build->logfile; - replacement in src/script/hydra-build at line 167
. " of job " . $jobName . " " . (defined $prevBuild ? "has changed from '" . statusDescription($prevBuild->resultInfo->buildstatus) . "' to '$status'" : "is '$status'" ) .".\n". " of job " . $jobName . " " . (defined $prevBuild ? "has changed from '" . statusDescription($prevBuild->buildstatus) . "' to '$status'" : "is '$status'" ) .".\n" - replacement in src/script/hydra-build at line 171
. ($build->resultInfo->buildstatus != 0 ? "\nThe last $loglines lines of the build log are shown at the bottom of this email.\n" : ""). ($build->buildstatus != 0 ? "\nThe last $loglines lines of the build log are shown at the bottom of this email.\n" : "") - replacement in src/script/hydra-build at line 184
. ($build->resultInfo->buildstatus != 0 ? "\n---\n$logtext" : "");. ($build->buildstatus != 0 ? "\n---\n$logtext" : ""); - edit in src/script/hydra-build at line 401
$build->update({finished => 1, busy => 0, locker => '', logfile => '', timestamp => time}); - replacement in src/script/hydra-build at line 403
if ($buildStatus == 0 && -f "$outPath/nix-support/failed") {$buildStatus = 6;}$buildStatus = 6 if $buildStatus == 0 && -f "$outPath/nix-support/failed"; - replacement in src/script/hydra-build at line 405[9.124]→[19.4931:4982](∅→∅),[19.4472]→[19.4931:4982](∅→∅),[19.4982]→[19.7578:7609](∅→∅),[19.7578]→[19.7578:7609](∅→∅)
$db->resultset('BuildResultInfo')->create({ id => $build->id$build->update({ finished => 1, busy => 0, locker => '', logfile => '', timestamp => time # !!! Why change the timestamp? - replacement in src/script/hydra-build at line 453
die "build $buildId already done" if defined $build->resultInfo;die "build $buildId already done" if $build->finished; - replacement in src/script/hydra-update-gc-roots at line 72
{ join => 'resultInfo', order_by => 'me.id DESC'{ order_by => 'me.id DESC' - replacement in src/script/hydra-update-gc-roots at line 108
my @buildsToKeep = $db->resultset('Builds')->search({finished => 1, keep => 1}, {join => 'resultInfo'});my @buildsToKeep = $db->resultset('Builds')->search({finished => 1, keep => 1}); - replacement in src/sql/hydra.sql at line 166[19.2570]→[18.7882:8143](∅→∅),[19.7923]→[19.9857:9861](∅→∅),[18.8143]→[19.9857:9861](∅→∅),[19.9857]→[19.9857:9861](∅→∅)
foreign key (project) references Projects(name) on update cascade,foreign key (project, jobset) references Jobsets(project, name) on update cascade,foreign key (project, jobset, job) references Jobs(project, jobset, name) on update cascade);stopTime integer, - replacement in src/sql/hydra.sql at line 168
-- Info for a finished build.create table BuildResultInfo (id integer primary key not null,isCachedBuild integer not null, -- boolean-- Information about finished builds.isCachedBuild integer, -- boolean - replacement in src/sql/hydra.sql at line 182[19.9990]→[19.2071:2144](∅→∅),[19.2071]→[19.2071:2144](∅→∅),[19.2144]→[19.3792:3819](∅→∅),[19.4220]→[19.4220:4221](∅→∅),[19.4221]→[19.4875:4926](∅→∅),[19.4926]→[19.1922:1923](∅→∅),[19.1923]→[7.0:135](∅→∅)
startTime integer, -- in Unix time, 0 = used cached build resultstopTime integer,logfile text, -- the path of the logfilelogsize bigint not null default 0,size bigint not null default 0,closuresize bigint not null default 0,logSize bigint,size bigint,closureSize bigint, - replacement in src/sql/hydra.sql at line 190[19.5211]→[19.127:209](∅→∅),[19.209]→[19.4926:4931](∅→∅),[19.2383]→[19.4926:4931](∅→∅),[19.2508]→[19.4926:4931](∅→∅),[19.5339]→[19.4926:4931](∅→∅),[19.4926]→[19.4926:4931](∅→∅),[19.4931]→[19.7924:7987](∅→∅)
failedDepBuild integer, -- obsoletefailedDepStepNr integer, -- obsoleteforeign key (id) references Builds(id) on delete cascadeforeign key (project) references Projects(name) on update cascade,foreign key (project, jobset) references Jobsets(project, name) on update cascade,foreign key (project, jobset, job) references Jobs(project, jobset, name) on update cascade - replacement in src/sql/upgrade-2.sql at line 7
add column startTime integer;--alter table Builds-- add column isCachedBuild integer,-- add column buildStatus integer,-- add column errorMsg text;add column startTime integer,add column stopTime integer,add column isCachedBuild integer,add column buildStatus integer,add column errorMsg text,add column logSize bigint,add column size bigint,add column closureSize bigint,add column releaseName text,add column keep integer not null default 0; - replacement in src/sql/upgrade-2.sql at line 28
-- isCachedBuild = (select isCachedBuild from BuildResultInfo r where r.id = b.id),-- buildStatus = (select buildStatus from BuildResultInfo r where r.id = b.id),-- errorMsg = (select errorMsg from BuildResultInfo r where r.id = b.id);[18.9187]update Builds b setisCachedBuild = (select isCachedBuild from BuildResultInfo r where r.id = b.id),buildStatus = (select buildStatus from BuildResultInfo r where r.id = b.id),errorMsg = (select errorMsg from BuildResultInfo r where r.id = b.id),startTime = (select startTime from BuildResultInfo r where r.id = b.id),stopTime = (select stopTime from BuildResultInfo r where r.id = b.id),logfile = (select logfile from BuildResultInfo r where r.id = b.id),logSize = (select logsize from BuildResultInfo r where r.id = b.id),size = (select size from BuildResultInfo r where r.id = b.id),closureSize = (select closuresize from BuildResultInfo r where r.id = b.id),releaseName = (select releaseName from BuildResultInfo r where r.id = b.id),keep = (select keep from BuildResultInfo r where r.id = b.id)where exists (select 1 from BuildResultInfo r where r.id = b.id);