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]
ODWGRX32check for revisions - [20]
BVOPAMLS - [21]
RAKTHYAI* In the job status and error pages, show when the status of a job - [22]
UHANDRAR* Closure downloads: don't include the product number; it's not needed. - [23]
RFE6T5LG* Store jobset evaluations in the database explicitly. This includes - [24]
LCKWLQW3* In Sqlite "release" is now a keyword, so use "release_" instead. - [25]
JXPHAZMVMinor style changes - [26]
6FRLEP4Pfirst try for timeline of last 24 hours in hydra - [27]
37R34XJO* Negative caching: don't perform a build if a dependency already - [28]
Y35C6GHH* One-click installs. - [29]
NZI7E2E3* hydra: handle case where logfile is empty - [30]
R3ON2RJ3hydra: missing argument - [31]
VJHIHMEH* Store the meta.longDescription and meta.license attributes in the - [32]
T2232OBS* Add some DB indices to make the /releases page much faster. - [33]
ZWCTAZGLadded newsitems, added some admin options to clear various caches. - [34]
EYNG4EL4* Regenerate the bindings from a clean sqlite database. - [35]
QQ4STW3Smissing file - [36]
JLDUSNUO* Unify rendering of finished and scheduled builds. - [37]
PPJN6SDP* paging for releases page - [38]
ZNKPGZHFhydra: error on buildpage for queued build - [39]
36V375MDchange content type of logdiff to ->response->content_type('application/json'); - [40]
7YBYT2LQ - [41]
LBNVQXUB* Build the /build stuff in a separate controller. - [42]
D5QIOJGP* Move everything up one directory. - [43]
T6KISLR6Fix indentation - [44]
3EGKZC3Chydra: in jobstatus pages, allow maintainer query argument to show only the packages you are maintaining - [45]
TQKGQ5R3 - [46]
Z6MDQIGO* A quick (non-Web 2.0) interface to manually add builds to a release. - [47]
ODNCGFQ5* Improved the navigation bar: don't include all projects (since that - [48]
ID5DHUFU* Cleanup. - [49]
AEFNBIIW* Merge the GC branch. - [50]
H47WLVAT* Handle the case where there is no cached build step that produced - [51]
RBNQKATL* Adding persistant releases. A release is a named set of builds. - [52]
AWZPRK2Ofirst try for timeline of last 24 hours in hydra - [53]
H27UAGSXproject with 0 build resulted in error - [54]
AHTEIK7G* Added a maintainers field to the Builds table. - [55]
QUTWJR7P* Include more info in notification emails. - [56]
TM6XBAG2git branches can share local clones - [57]
4D4U5IPY* Allow jobsets to be disabled. - [58]
HB3OHPJLhydra: in case of cached build, add link to build that built the storepath - [59]
IS32JFKX* Typo. - [60]
HSVVEKTY* Start of a JSON API to get information about a specific build. - [61]
JTRG7RDQadd support for git as jobinput - [62]
2I2ZX6JB* Make the "latest succeeded" query (used by the "latest" channel) - [63]
45ESKY6T* hydra: show finish time on build status overview - [64]
V4RNHJNR* Add a link to each project's homepage. Suggested by karltk. - [65]
CVWQXYKMuse newer icons consistently - [66]
KPZNJ33U* In views, support selecting a job that doesn't depend on the - [67]
US27ZTX5* HydraFrontend -> Hydra. - [68]
5O6E5SU5hydra: store logfile/output path/closure size - [69]
TCHEWSZL* The "latest" channel shouldn't contain inactive jobs. - [70]
X5UVREJY* PostgreSQL compatibility. - [71]
A52HEFHQ* Allow builds to be restarted (if they failed with a transient error, - [72]
KSD75RNJHydra/18: fixed uninitialized value error when logfile is null - [73]
TW5ZQX5Z* Move up the build products in the builds page, since they're more - [74]
GNIEG2GC* Disambiguate jobs by jobset name. I.e. jobs with the same name in - [75]
BD3GRK4B* Get rid of "positive failures" and separate log phases. - [76]
SMCOU72Fhydra: add some admin for adding/enabling/etc build machines - [77]
D3DIBMOK* For products that are directories (like manuals), allow a default - [78]
CXRCPDSQ* added support for twitter notification - [79]
L2E6EVE2* Merged the Build and Job tables. - [80]
CS7T2XFI - [81]
67P45PY4 - [82]
AH2YD57S* More database hackery. - [83]
SJN2QPWH* Big speed-up of the job status page and the channel generation (such - [84]
XJFHFZCA* Provide some redirects to build products by type so that we can for - [85]
SJLEZFC4check getHydraPath in stead of Envvar HYDRA_DBI directly - [86]
ZVTSOVHN* Support Subversion checkouts. - [87]
SZYY2EQQ* Make the queries more readable. - [88]
F5RYSE7Tqualify order by column - [89]
UMFB2767Hydra/64: Leaving number of builds empty gives DBIx error - [90]
K7IRNVRFhydra: fixed email notification bug, when build is performed for the first time (it always said succeeded in the body of the mail - [91]
ELABMHJI* hydra: layout changes - [92]
LA27PR4Uhydra: fix enable email notification bug - [93]
TJPIS3UPhydra: minor improvements in hydra ui - [94]
3BKF6P72* Use Nix's negative caching. - [95]
DSM3TTSOHydra/31: "Duration" field broken in cached builds that are not in DB anymore - [96]
KOTB7BKV - [97]
K4C6DNSMchanged queries for compatibility with postgresql - [98]
HZ2U4QEVno branch info available yet in scmdiff, so disable for now - [99]
7UJ5YV4V* Provide a channel for each project containing all the latest - [100]
OW6XV2YS* Allow a view result to be saved as a release. - [101]
KN3VYE5P* Cleaned up the foreign key constraints. - [102]
S5PV6IIM* Represent jobs explicitly in the DB. - [103]
B72GLND4 - [104]
AKAXJDMW* Disable the statistics on the project, jobset and job pages for now - [105]
AVOPQAF7* Make the "all" page faster by not doing four identical `select - [106]
6BLUKEQ2* Caching of "path" inputs, and fake a revision number for those. - [107]
6QRHXIM3* Speed up the jobset index page. Especially the query to get the - [108]
GAIBDEZZ* Store the name of the machine that performed a build step in the - [109]
6KJXJB7Nqualify ordery_by clauses when necessary, remove unnecessary order_by's, reported by Ludo, resulted in errors in sqlite - [110]
LOMVF2KHdo not send email for builds with status 'aborted' - [111]
2QA4Y4G3* hydra: added index, actual build time (buildstep with same outpath, so without deps) of the build - [112]
IN272KZW* Automatically keep all builds in the latest successful release in - [113]
EFWN7JBV* Added a status page that shows all the currently executing build steps. - [114]
OOQ2D3KC* Refactoring: move fetchInput out of hydra_scheduler into a separate - [115]
3SQCOHZN* minor performance tweaks - [116]
C5XKS77Nhydra: added missing fields to query - [117]
FM4O2L4Mhydra: if evaluator sees cached build, also add the buildproducts - [118]
777XFGVYHydra/22: on job page, 'finished builds' shows nothing for old (non-current) jobs - [119]
LZO3C2KI* Hack around those SQLite timeouts: just retry the transaction. - [120]
UXHP37RFset threshold to show status on jobset page to a more usable size - [121]
KA45EBF5* Send email if a build fails. - [122]
PY4WQF5Gremove ascii escapes from log in tail page and emails - [123]
TH674WKJadd log diff to compare logs to previous builds - [124]
IW2LHCLLfixed email bug - [125]
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. - [126]
S6OISBQ3* Mark the "current" builds in a jobset, i.e. those corresponding to - [127]
JM3DPYOMgenerated schema with new dbix class schema loader, grrrrrr - [128]
BTUDUY6F* Provide some redirects to the latest successful build for a job (or - [129]
ZD5AEKWM* Job status / error pages: show only active jobs. - [130]
CMU3YKOU* Store the release name. - [131]
6F4UNDTC* Provide access to the raw, non-pretty-printed logfiles. - [132]
M552HLIA* Support variant builds. - [133]
IK53RV4V - [134]
QWB5ON4Dremove old line - [135]
NEWDDAOF* Allow users to change the value of a build's "keep" flag, which - [136]
3HCBU2FA - [137]
JFZNAYJX* Showing releases. - [138]
HUH62VDLshow current builds on job page - [139]
YAPITGB3* Boolean inputs. - [140]
Z4KRJX4Q* In the last succeeded / job status queries, use the Builds.isCurrent - [141]
75XUS62Y* Added a page to quickly see all failed builds and failed evaluations - [142]
VVOAXWH4fix wrong dbix:class:loader generation - [143]
3HEMN2Q2* Speed up the jobstatus query a little bit. - [144]
JUZVPV6Squalify id column in queries - [145]
3E6IP3R3* Add the name of the jobset to ReleaseSetJobs, otherwise we can't - [146]
VZYX66Q3* hydra: only show current jobs in status overview of jobset page - [147]
NABL63FI* hydra: project members can do stuff that the owner can do - [148]
E5DMQRPORemove unnecessary whitespace in the HTML output - [149]
ZEEZRG2Eclean up build page for build that failed with result - [150]
4BXTDMSA* I should test before committing. - [151]
YZUQKPNJ* hydra: remove excess layout - [152]
OG7BEM57 - [153]
E6IC7YIK* Release sets: need to include the jobset name to disambiguate - [154]
R5D7DZPE - [155]
ECBA3GQO* Make the schema class names match the case of the SQL table names. - [156]
GPRYAAFPhydra: change icon for positive failures - [157]
FHAVPTZ6Hydra/23: added some X-headers with meta info in email notifications, added more descriptive status - [158]
RU7AQO7U* Role-based access control. Only admins can create projects. Only - [159]
YTZOC7C5* Editing of jobset inputs. - [160]
FPK5LF53* Put the project-related actions in a separate controller. Put the - [161]
PHX2HIVG* Store info about the build inputs in the build record. - [162]
3ZCEPLNO - [163]
ZTQEU5QSHydra: Add support for maxSilent meta attribute (also already added timeout, but not implemented the actual timeout for the build yet) - [164]
FHF6IZJQ* Basic release management: releases are now dynamically computed as - [165]
N22GPKYT* Put info about logs / build products in the DB. - [166]
A22P7HCOhydra: at evaluation, check if path is already built, and mark as built in stead of adding to the queue. - [167]
SHBLLAVH* More global substitution. - [168]
SB2V735VKeep track of the database schema version - [169]
CLJQCY2X* Store info about all the build actions and allow them to be - [170]
EJFVQ33S* In the job status page and the channels, pick the build with the - [171]
5SHCWE7X* Prevent repeated evaluation of a jobset with the same inputs. This - [172]
BKOIYITRadded some json responses - [173]
MRVTLC76 - [174]
5DSF5KWY* Perl sucks. "getBuildLog $drvPath" doesn't mean the same as - [175]
OZ5UBJEK - [176]
CEARA7OH* hydra: show running buildsteps on build page - [177]
DHMTPGST* Ran update-dbix. - [178]
TLZ2SPBR - [179]
3HZY24CX* Make jobsets viewable under - [180]
SHYRGAWZhydra: when no external url is given for diff's of git/hg input, revert to a diff done on a local available clone - [181]
BHZXGT2H* Channels: provide an index page that lists all the packages in the - [182]
TWVSALRL* Allow the maximum number of concurrent builds per platform to be - [183]
OSVLMLCQhydra: factored out build restart and - [184]
FLXJYCRB - [185]
H7CNGK4O* Log evaluation errors etc. in the DB. - [186]
A63IHCMX* Register GC roots properly. - [187]
J7EE2XZAFix a huge performance regression in the jobstatus page - [188]
SMM4HQTP* Put actions related to builds under /build (e.g. /log/<buildid> - [189]
ZI535LI6* hydra: 'new' UI for project/jobset/job/build - [190]
5NO7NCKT* Refactoring. - [191]
TCXFZZFN* hydra: make chart zoomable and clickable - [192]
WWZWUPFIif no previous successful build, do not show changes section - [193]
WZ3AEJ67* hydra_update_gc_roots.pl registers build outputs that should be kept - [194]
ZDNXMJ3J* Typo. - [195]
KQS7DSKJ* Clean up indentation. - [196]
PKPWUHUX* Idem. - [197]
JJT5QG3Kremove revision from cached cvs inputs, and added missing files - [198]
FD76WVTQmissing file - [199]
7PYQLDQLAdded sequences for auto increment primary key columns (for PostgreSQL) - [200]
UCLYDK2A* Disambiguate. - [201]
P5X4P6VK* Renaming "release sets" to "views" (not finished yet). Having - [202]
FYO6NECEhydra - [203]
S66BOMVU* Added authentication. - [204]
XBU2ODSP* More renaming. - [205]
WYN733ST* Store build duration, handle cached builds. - [206]
NP6QUCL7* Fix indentation. - [207]
4X6NS66Q* Keep the most recent builds for each job. - [208]
V62IBGJV* Cannot call isValidPath on a logfile. This happened to work because - [209]
2R7GHSA4* hydra: added initial version of build graph - [210]
LUPEGYR7Hydra: In case of failure, also show changes between last succesful build and the first failed build after this - [211]
3XTHEUMP* Implemented the clone feature. - [212]
EDRUQ4UKDie TABs die - [213]
X27GNHDV* Basic job info in the database. - [214]
RI4S7SYT* Job status: show the active jobs. - [215]
2WRTOU2ZCleanup - [216]
2BUX775I* More release -> view. - [217]
BOFOHCPKremoved debug print, added last 50 lines in failure emails - [218]
KAZWI5G4* hydra: buildpage, show changes since last build/successful build - [219]
2T42QGZD* Register builds as GC roots so they don't get deleted. - [220]
KXGOUX7P* Creating releases. - [221]
XHK7IGYI* hdyra: show last succeeded build and changes since on build status summary if build has failed - [222]
J5UVLXOK* Start of a basic Catalyst web interface. - [*]
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);