Merge the BuildResultInfo table into the Builds table

[?]
Mar 5, 2012, 8:52 PM
HPEG2RHVNHOPB5T4ZRXANIRBMVOVY3B5GFETJRYOTDJFVAYH2TQAC

Dependencies

  • [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] JAUTUNGI bug fix
  • [6] ALXRI3Y5 hydra: removed need for HYDRA_BUILD_BASEURL env variable
  • [7] LTG2CO3V hydra: make size columns bigger (integer -> bigint)
  • [8] LL36GPHA added help, removed nix closure from 'failed build with output' productlist
  • [9] UVNQPK3T Hydra/56: handle failed builds with result only at build level, not buildsteps
  • [10] NW3ZYPCM added store path size graph
  • [11] FU3ZFU2Q * me.id -> build.id.
  • [12] WAZFSDSL using backquote as argument resulted in only first line as first argument to removeAsciiEscapes
  • [13] FFMOQLJQ fix nrbuilds query
  • [14] BAOVFU73 fix mercurial diffs, should change to cloned repo first
  • [15] 3466DZDE logdiff now support bzipped logs for logdiff
  • [16] ZCQOOAGY Remove redundant dot in status emails
  • [17] FCBQMIF3 hydra-build: Do not send email following an abortion.
  • [18] MOX7XJ2E Merge 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] UMFB2767 Hydra/64: Leaving number of builds empty gives DBIx error
  • [22] TM6XBAG2 git branches can share local clones
  • [23] C5XKS77N hydra: 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] DSM3TTSO Hydra/31: "Duration" field broken in cached builds that are not in DB anymore
  • [29] CMU3YKOU * Store the release name.
  • [30] ID5DHUFU * Cleanup.
  • [31] 6KJXJB7N qualify 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] JXPHAZMV Minor style changes
  • [35] J5UVLXOK * Start of a basic Catalyst web interface.
  • [36] BOFOHCPK removed debug print, added last 50 lines in failure emails
  • [37] 777XFGVY Hydra/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] 5O6E5SU5 hydra: store logfile/output path/closure size
  • [44] T6KISLR6 Fix indentation
  • [45] VVOAXWH4 fix 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] R3ON2RJ3 hydra: missing argument
  • [50] 3ZCEPLNO
  • [51] HZ2U4QEV no 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] TH674WKJ add 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] 6FRLEP4P first try for timeline of last 24 hours in hydra
  • [66] N22GPKYT * Put info about logs / build products in the DB.
  • [67] ZNKPGZHF hydra: 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] UXHP37RF set threshold to show status on jobset page to a more usable size
  • [73] BVOPAMLS
  • [74] LOMVF2KH do not send email for builds with status 'aborted'
  • [75] ELABMHJI * hydra: layout changes
  • [76] ODWGRX32 check for revisions
  • [77] WWZWUPFI if 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] K4C6DNSM changed 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] QWB5ON4D remove old line
  • [98] T2232OBS * Add some DB indices to make the /releases page much faster.
  • [99] SMCOU72F hydra: add some admin for adding/enabling/etc build machines
  • [100] JLDUSNUO * Unify rendering of finished and scheduled builds.
  • [101] JTRG7RDQ add 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] ZEEZRG2E clean up build page for build that failed with result
  • [107] SMM4HQTP * Put actions related to builds under /build (e.g. /log/<buildid>
  • [108] FYO6NECE hydra
  • [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] F5RYSE7T qualify order by column
  • [112] SHYRGAWZ hydra: 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] HB3OHPJL hydra: 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] SJLEZFC4 check 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] FD76WVTQ missing file
  • [130] GPRYAAFP hydra: 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] CVWQXYKM use 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] JM3DPYOM generated schema with new dbix class schema loader, grrrrrr
  • [139] PHX2HIVG * Store info about the build inputs in the build record.
  • [140] BKOIYITR added some json responses
  • [141] HSVVEKTY * Start of a JSON API to get information about a specific build.
  • [142] JUZVPV6S qualify id column in queries
  • [143] KQS7DSKJ * Clean up indentation.
  • [144] L2E6EVE2 * Merged the Build and Job tables.
  • [145] 7PYQLDQL Added 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] HUH62VDL show 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] LA27PR4U hydra: fix enable email notification bug
  • [155] OSVLMLCQ hydra: factored out build restart and
  • [156] LCKWLQW3 * In Sqlite "release" is now a keyword, so use "release_" instead.
  • [157] E5DMQRPO Remove 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] J7EE2XZA Fix 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] FM4O2L4M hydra: if evaluator sees cached build, also add the buildproducts
  • [167] CEARA7OH * hydra: show running buildsteps on build page
  • [168] K7IRNVRF hydra: fixed email notification bug, when build is performed for the first time (it always said succeeded in the body of the mail
  • [169] ZTQEU5QS Hydra: 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] H27UAGSX project with 0 build resulted in error
  • [173] SB2V735V Keep track of the database schema version
  • [174] PKPWUHUX * Idem.
  • [175] IW2LHCLL fixed email bug
  • [176] TJPIS3UP hydra: minor improvements in hydra ui
  • [177] PY4WQF5G remove 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] AWZPRK2O first try for timeline of last 24 hours in hydra
  • [182] OG7BEM57
  • [183] ZWCTAZGL added 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] QQ4STW3S missing 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] KSD75RNJ Hydra/18: fixed uninitialized value error when logfile is null
  • [194] 3EGKZC3C hydra: in jobstatus pages, allow maintainer query argument to show only the packages you are maintaining
  • [195] MRVTLC76
  • [196] EDRUQ4UK Die 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] 36V375MD change 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] A22P7HCO hydra: 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] JJT5QG3K remove 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] LUPEGYR7 Hydra: 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] FHAVPTZ6 Hydra/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] 2WRTOU2Z Cleanup
  • [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.
  • [*] T7Z63K6T hydra: moves jobsetOverview sub
  • [*] AFTXA575 * $HYDRA_DATA environment variable.

Change contents

  • edit in src/lib/Hydra/Base/Controller/ListBuilds.pm at line 13
    [19.5][19.124:189](),[19.124][19.124:189](),[19.189][19.6:7]()
    my $latest = joinWithResultInfo($c, $c->stash->{jobStatus});
  • replacement in src/lib/Hydra/Base/Controller/ListBuilds.pm at line 15
    [19.166][19.572:603]()
    $latest = $latest->search(
    [19.166]
    [19.66]
    my $latest = $c->stash->{jobStatus}->search(
  • replacement in src/lib/Hydra/Base/Controller/ListBuilds.pm at line 17
    [19.149][19.0:167]()
    { '+select' => ["me.statusChangeId", "me.statusChangeTime", "resultInfo.buildStatus"]
    , '+as' => ["statusChangeId", "statusChangeTime", "buildStatus"]
    [19.149]
    [19.0]
    { '+select' => ["me.statusChangeId", "me.statusChangeTime"]
    , '+as' => ["statusChangeId", "statusChangeTime"]
  • replacement in src/lib/Hydra/Base/Controller/ListBuilds.pm at line 44
    [19.534][19.0:86]()
    [getJobStatus($self, $c)->search({'resultInfo.buildstatus' => {'!=' => 0}})];
    [19.534]
    [19.330]
    [getJobStatus($self, $c)->search({buildStatus => {'!=' => 0}})];
  • replacement in src/lib/Hydra/Base/Controller/ListBuilds.pm at line 65
    [19.823][19.168:252]()
    $c->stash->{builds} = [ joinWithResultInfo($c, $c->stash->{allBuilds})->search(
    [19.823]
    [19.114]
    $c->stash->{builds} = [ $c->stash->{allBuilds}->search(
  • replacement in src/lib/Hydra/Base/Controller/ListBuilds.pm at line 67
    [19.141][19.253:377]()
    { '+select' => ["resultInfo.buildStatus"]
    , '+as' => ["buildStatus"]
    , order_by => "timestamp DESC"
    [19.141]
    [19.337]
    { order_by => "timestamp DESC"
  • replacement in src/lib/Hydra/Base/Controller/ListBuilds.pm at line 96
    [19.129][19.129:195](),[19.195][2.0:105]()
    my ($latest) = joinWithResultInfo($c, $c->stash->{allBuilds})
    ->search({finished => 1, buildstatus => 0}, {order_by => ["isCurrent DESC", "timestamp DESC"]});
    [19.129]
    [19.282]
    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
    [19.746][19.746:812](),[19.812][2.106:230]()
    my ($latest) = joinWithResultInfo($c, $c->stash->{allBuilds})
    ->search({finished => 1, buildstatus => 0, system => $system}, {order_by => ["isCurrent DESC", "timestamp DESC"]});
    [19.746]
    [19.918]
    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
    [19.72]
    [19.236]
  • edit in src/lib/Hydra/Controller/API.pm at line 23
    [19.372]
    [19.372]
  • edit in src/lib/Hydra/Controller/API.pm at line 32
    [19.517]
    [19.517]
  • replacement in src/lib/Hydra/Controller/API.pm at line 37
    [19.609][19.609:701]()
    my @projects = $c->model('DB::Projects')->search({hidden => 0}, {order_by => 'name'}) ;
    [19.609]
    [19.701]
    my @projects = $c->model('DB::Projects')->search({hidden => 0}, {order_by => 'name'});
  • replacement in src/lib/Hydra/Controller/API.pm at line 39
    [19.702][19.702:717]()
    my @list ;
    [19.702]
    [19.717]
    my @list;
  • replacement in src/lib/Hydra/Controller/API.pm at line 41
    [19.749][19.749:787]()
    push @list, projectToHash($p) ;
    [19.749]
    [19.787]
    push @list, projectToHash($p);
  • edit in src/lib/Hydra/Controller/API.pm at line 49
    [19.931]
    [19.931]
  • replacement in src/lib/Hydra/Controller/API.pm at line 65
    [19.1343][19.1343:1414]()
    $result->{'buildstatus'} = $build->get_column("buildstatus") ;
    [19.1343]
    [19.1414]
    $result->{'buildstatus'} = $build->get_column("buildstatus");
  • edit in src/lib/Hydra/Controller/API.pm at line 74
    [19.1582]
    [19.1582]
  • replacement in src/lib/Hydra/Controller/API.pm at line 77
    [19.1676][19.1676:1717]()
    my $nr = $c->request->params->{nr} ;
    [19.1676]
    [19.1717]
    my $nr = $c->request->params->{nr};
  • replacement in src/lib/Hydra/Controller/API.pm at line 80
    [19.1775][19.1775:1967]()
    my $project = $c->request->params->{project} ;
    my $jobset = $c->request->params->{jobset} ;
    my $job = $c->request->params->{job} ;
    my $system = $c->request->params->{system} ;
    [19.1775]
    [19.1967]
    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
    [19.1972][19.1972:2007]()
    my $filter = {finished => 1} ;
    [19.1972]
    [19.2007]
    my $filter = {finished => 1};
  • replacement in src/lib/Hydra/Controller/API.pm at line 91
    [19.2216][19.2216:2347]()
    my @latest = joinWithResultInfo($c, $c->model('DB::Builds'))->search($filter, {rows => $nr, order_by => ["timestamp DESC"] });
    [19.2216]
    [19.2347]
    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
    [19.2352][19.2352:2439]()
    my @list ;
    foreach my $b (@latest) {
    push @list, buildToHash($b) ;
    }
    [19.2352]
    [19.2439]
    my @list;
    push @list, buildToHash($_) foreach @latest;
  • edit in src/lib/Hydra/Controller/API.pm at line 102
    [19.2578]
    [19.2578]
  • edit in src/lib/Hydra/Controller/API.pm at line 115
    [19.2933]
    [19.2933]
  • replacement in src/lib/Hydra/Controller/API.pm at line 119
    [19.3018][19.3018:3073]()
    my $projectName = $c->request->params->{project} ;
    [19.3018]
    [19.3073]
    my $projectName = $c->request->params->{project};
  • replacement in src/lib/Hydra/Controller/API.pm at line 127
    [19.3332][19.3332:3421]()
    my @list ;
    foreach my $j (@jobsets) {
    push @list, jobsetToHash($j) ;
    }
    [19.3332]
    [19.3421]
    my @list;
    push @list, jobsetToHash($_) foreach @jobsets;
  • edit in src/lib/Hydra/Controller/API.pm at line 136
    [19.3560]
    [19.3560]
  • replacement in src/lib/Hydra/Controller/API.pm at line 140
    [19.3641][19.3641:3682]()
    my $nr = $c->request->params->{nr} ;
    [19.3641]
    [19.3682]
    my $nr = $c->request->params->{nr};
  • edit in src/lib/Hydra/Controller/API.pm at line 154
    [19.4240]
    [19.4240]
  • edit in src/lib/Hydra/Controller/API.pm at line 164
    [19.4508]
    [19.4508]
  • edit in src/lib/Hydra/Controller/API.pm at line 174
    [19.4881]
    [19.4881]
  • replacement in src/lib/Hydra/Controller/API.pm at line 177
    [19.4967][19.4967:5057]()
    my $nr = $c->request->params->{nr} ;
    my $period = $c->request->params->{period} ;
    [19.4967]
    [19.5057]
    my $nr = $c->request->params->{nr};
    my $period = $c->request->params->{period};
  • replacement in src/lib/Hydra/Controller/API.pm at line 183
    [19.5154][19.5154:5346]()
    my $project = $c->request->params->{project} ;
    my $jobset = $c->request->params->{jobset} ;
    my $job = $c->request->params->{job} ;
    my $system = $c->request->params->{system} ;
    [19.5154]
    [19.5346]
    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
    [19.5347][19.5347:5382]()
    my $filter = {finished => 1} ;
    [19.5347]
    [19.5382]
    my $filter = {finished => 1};
  • replacement in src/lib/Hydra/Controller/API.pm at line 197
    [19.5676][13.0:215](),[13.215][19.5885:5975](),[19.5885][19.5885:5975]()
    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"));
    }
    [19.5676]
    [19.5975]
    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
    [19.106]
    [19.106]
  • replacement in src/lib/Hydra/Controller/API.pm at line 212
    [19.191][19.191:279](),[19.328][19.328:418]()
    my $uri = $c->request->params->{uri} ;
    my $type = $c->request->params->{type} ;
    my $rev1 = $c->request->params->{rev1} ;
    my $rev2 = $c->request->params->{rev2} ;
    [19.191]
    [19.0]
    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
    [19.17][19.17:129]()
    die("invalid revisions: [$rev1] [$rev2]") if $rev1 !~ m/^[a-zA-Z0-9_.]+$/ || $rev2 !~ m/^[a-zA-Z0-9_.]+$/ ;
    [19.17]
    [19.418]
    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
    [19.438][19.438:462]()
    if($type eq "hg") {
    [19.438]
    [19.462]
    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)`;
    [19.552]
    [19.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)`;
  • replacement in src/lib/Hydra/Controller/API.pm at line 230
    [19.788][19.788:893]()
    $diff .= `(cd $clonePath ; git log $rev1..$rev2)`;
    $diff .= `(cd $clonePath ; git diff $rev1..$rev2)`;
    [19.788]
    [19.893]
    $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
    [19.6138]
    [19.152]
  • replacement in src/lib/Hydra/Controller/API.pm at line 241
    [15.73][15.73:150]()
    my $pipe = (-f "$file.bz2" ? "cat $file.bz2 | bzip2 -d" : "cat $file") ;
    [19.198]
    [15.150]
    my $pipe = (-f "$file.bz2" ? "cat $file.bz2 | bzip2 -d" : "cat $file");
  • edit in src/lib/Hydra/Controller/API.pm at line 250
    [19.418]
    [19.418]
  • replacement in src/lib/Hydra/Controller/API.pm at line 263
    [19.806][19.806:1028]()
    if (-f $build1->resultInfo->logfile && -f $build2->resultInfo->logfile) {
    my $logtext1 = readNormalizedLog($build1->resultInfo->logfile);
    my $logtext2 = readNormalizedLog($build2->resultInfo->logfile);
    [19.806]
    [19.1028]
    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
    [19.1231]
    [19.6139]
  • replacement in src/lib/Hydra/Controller/Build.pm at line 51
    [19.7][19.7:82]()
    if (defined $build->resultInfo && $build->resultInfo->iscachedbuild) {
    [19.7]
    [19.82]
    if ($build->finished && $build->iscachedbuild) {
  • replacement in src/lib/Hydra/Controller/Build.pm at line 58
    [19.71][19.0:168]()
    if (defined $build->resultInfo && ($build->resultInfo->buildstatus == 1 || $build->resultInfo->buildstatus == 6) && !($path eq "") && -f $lastBuildStep->logfile) {
    [19.71]
    [12.0]
    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
    [19.229][19.229:348]()
    if($build->finished) {
    $c->stash->{prevBuilds} = [joinWithResultInfo($c, $c->model('DB::Builds'))->search(
    [19.229]
    [19.348]
    if ($build->finished) {
    $c->stash->{prevBuilds} = [$c->model('DB::Builds')->search(
  • replacement in src/lib/Hydra/Controller/Build.pm at line 108
    [19.1642][19.994:1092]()
    error($c, "Build didn't produce a log.") if !defined $c->stash->{build}->resultInfo->logfile;
    [19.1642]
    [19.1786]
    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
    [19.1787][19.222:287]()
    showLog($c, $c->stash->{build}->resultInfo->logfile, $mode);
    [19.1787]
    [19.1923]
    showLog($c, $c->stash->{build}->logfile, $mode);
  • replacement in src/lib/Hydra/Controller/Build.pm at line 441
    [19.128][19.421:483](),[19.421][19.421:483]()
    $build->resultInfo->update({keep => int $newStatus});
    [19.128]
    [19.483]
    $build->update({keep => int $newStatus});
  • replacement in src/lib/Hydra/Controller/Job.pm at line 28
    [19.1145][19.409:738]()
    $c->stash->{currentBuilds} = [$c->stash->{job}->builds->search({iscurrent => 1}, { join => 'resultInfo', '+select' => ["resultInfo.releasename", "resultInfo.buildStatus"]
    , '+as' => ["releasename", "buildStatus"], order_by => 'system' })];
    [19.1145]
    [19.0]
    $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
    [19.826][19.826:1036]()
    { join => 'resultInfo',
    , '+select' => ["resultInfo.releasename", "resultInfo.buildStatus"]
    , '+as' => ["releasename", "buildStatus"]
    , order_by => 'timestamp DESC', rows => 10
    }) ];
    [19.826]
    [19.328]
    { order_by => 'timestamp DESC', rows => 10 }) ];
  • replacement in src/lib/Hydra/Controller/Jobset.pm at line 68
    [19.978][18.1905:2169]()
    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 ))");
    [19.978]
    [19.1218]
    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
    [19.1250][18.2170:2427]()
    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 ))");
    [19.1250]
    [18.2427]
    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
    [19.344][19.1344:1387](),[19.1344][19.1344:1387]()
    my $tmp = $c->stash->{jobset}->builds;
  • replacement in src/lib/Hydra/Controller/Jobset.pm at line 85
    [19.376][19.1037:1262]()
    [ joinWithResultInfo($c, $tmp)->search({ finished => 1 },
    { order_by => "timestamp DESC", rows => 5
    , '+select' => ["resultInfo.buildStatus"]
    , '+as' => ["buildStatus"]
    }) ];
    [19.376]
    [19.819]
    [ $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' ]
    })];
    [19.164]
    [19.555]
    $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
    [19.4930][19.4930:5154]()
    my $primaryBuild = $c->stash->{project}->builds->find($id,
    { join => 'resultInfo',
    , '+select' => ["resultInfo.releasename", "resultInfo.buildstatus"]
    , '+as' => ["releasename", "buildstatus"] })
    [19.4930]
    [19.5154]
    my $primaryBuild = $c->stash->{project}->builds->find($id)
  • replacement in src/lib/Hydra/Helper/AddBuilds.pm at line 247
    [19.4121][19.4121:4189]()
    { join => 'resultInfo', order_by => "me.id DESC", rows => 1
    [19.4121]
    [19.4189]
    { order_by => "me.id DESC", rows => 1
  • replacement in src/lib/Hydra/Helper/AddBuilds.pm at line 260
    [19.9667][19.4594:4674]()
    my $relName = ($prevBuild->resultInfo->releasename or $prevBuild->nixname);
    [19.9667]
    [19.4674]
    my $relName = ($prevBuild->releasename or $prevBuild->nixname);
  • replacement in src/lib/Hydra/Helper/AddBuilds.pm at line 297
    [19.714][19.5655:5739]()
    my $relName = ($prevBuild->resultInfo->releasename or $prevBuild->nixname);
    [19.714]
    [19.5739]
    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
    [19.580]
    [19.715]
    $build->update(
    { finished => 1
    , iscachedbuild => 1
  • edit in src/lib/Hydra/Helper/AddBuilds.pm at line 924
    [18.3193][18.3193:3230]()
    $build->resultInfo->delete;
  • replacement in src/lib/Hydra/Helper/CatalystUtils.pm at line 11
    [19.125][19.89:207]()
    getBuild getPreviousBuild getNextBuild getPreviousSuccessfulBuild getBuildStats joinWithResultInfo getChannelData
    [19.125]
    [19.9702]
    getBuild getPreviousBuild getNextBuild getPreviousSuccessfulBuild getBuildStats getChannelData
  • replacement in src/lib/Hydra/Helper/CatalystUtils.pm at line 61
    [5.116][19.721:800](),[19.721][19.721:800]()
    (my $prevBuild) = joinWithResultInfo($c, $c->model('DB::Builds'))->search(
    [5.116]
    [19.800]
    (my $prevBuild) = $c->model('DB::Builds')->search(
  • replacement in src/lib/Hydra/Helper/CatalystUtils.pm at line 79
    [19.9915][19.9915:10048]()
    $c->stash->{succeededBuilds} = $builds->search(
    {finished => 1, buildStatus => 0},
    {join => 'resultInfo'}) || 0;
    [19.9915]
    [19.10048]
    $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 ;
    [19.14]
    [19.72]
    $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
    [19.1999][19.1999:2049](),[19.2049][19.0:117]()
    my @builds2 = joinWithResultInfo($c, $builds)
    ->search_literal("exists (select 1 from buildproducts where build = resultInfo.id and type = 'nix-build')");
    [19.1999]
    [19.673]
    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
    [19.660][19.660:847]()
    { join => 'resultInfo', order_by => "timestamp DESC"
    , '+select' => ["resultInfo.releasename", "resultInfo.buildstatus"]
    , '+as' => ["releasename", "buildstatus"]
    [19.660]
    [19.847]
    { order_by => "timestamp DESC"
  • replacement in src/lib/Hydra/Helper/Nix.pm at line 166
    [19.599][19.599:645]()
    { join => 'resultInfo', rows => 1
    [19.599]
    [11.0]
    { rows => 1
  • edit in src/lib/Hydra/Helper/Nix.pm at line 169
    [19.739][19.739:819]()
    , '+select' => ["resultInfo.buildstatus"], '+as' => ["buildstatus"]
  • replacement in src/lib/Hydra/Helper/Nix.pm at line 180
    [19.155][19.155:197]()
    { join => 'resultInfo', rows => 1
    [19.155]
    [19.197]
    { rows => 1
  • edit in src/lib/Hydra/Helper/Nix.pm at line 183
    [19.305][19.305:381]()
    , '+select' => ["resultInfo.buildstatus"], '+as' => ["buildstatus"]
  • edit in src/lib/Hydra/Helper/Nix.pm at line 189
    [19.2925]
    [226.101]
  • replacement in src/lib/Hydra/Helper/Nix.pm at line 196
    [18.3452][18.3452:3803]()
    , "(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)"
    [18.3452]
    [18.3803]
    , "(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
    [226.1006]
    [19.1051]
  • 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 NAME
    Hydra::Schema::BuildResultInfo
    =cut
    use strict;
    use warnings;
    =cut
    __PACKAGE__->table("BuildResultInfo");
    =head1 ACCESSORS
    =head2 id
    is_foreign_key: 1
    is_nullable: 0
    =head2 iscachedbuild
    is_nullable: 0
    =head2 buildstatus
    is_nullable: 1
    =head2 errormsg
    is_nullable: 1
    =head2 starttime
    is_nullable: 1
    =head2 stoptime
    is_nullable: 1
    =head2 logfile
    is_nullable: 1
    =head2 logsize
    default_value: 0
    is_nullable: 0
    =head2 size
    default_value: 0
    is_nullable: 0
    =head2 closuresize
    default_value: 0
    is_nullable: 0
    data_type: 'bigint'
    =head2 releasename
    is_nullable: 1
    =head2 keep
    default_value: 0
    is_nullable: 0
    =head2 faileddepbuild
    is_nullable: 1
    =head2 faileddepstepnr
    is_nullable: 1
    =cut
    data_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 id
    Type: belongs_to
    Related 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
    [18.4571]
    [18.4571]
    data_type: 'integer'
    is_nullable: 1
    =head2 stoptime
    data_type: 'integer'
    is_nullable: 1
    =head2 iscachedbuild
    data_type: 'integer'
    is_nullable: 1
    =head2 buildstatus
  • edit in src/lib/Hydra/Schema/Builds.pm at line 179
    [18.4595]
    [18.4595]
    is_nullable: 1
    =head2 errormsg
    data_type: 'text'
    is_nullable: 1
    =head2 logsize
    data_type: 'bigint'
    is_nullable: 1
    =head2 size
    data_type: 'bigint'
  • edit in src/lib/Hydra/Schema/Builds.pm at line 195
    [18.4612]
    [18.4612]
    =head2 closuresize
  • edit in src/lib/Hydra/Schema/Builds.pm at line 198
    [18.4613]
    [19.8800]
    data_type: 'bigint'
    is_nullable: 1
    =head2 releasename
    data_type: 'text'
    is_nullable: 1
    =head2 keep
    data_type: 'integer'
    default_value: 0
    is_nullable: 0
  • edit in src/lib/Hydra/Schema/Builds.pm at line 266
    [18.4987]
    [18.4987]
    { data_type => "integer", is_nullable => 1 },
    "stoptime",
  • edit in src/lib/Hydra/Schema/Builds.pm at line 269
    [18.5035]
    [19.5911]
    "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 buildresultinfo
    Type: might_have
    Related 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
    [19.1182][18.5036:5178]()
    # Created by DBIx::Class::Schema::Loader v0.07014 @ 2012-02-29 00:47:54
    # DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:VnnyFTwnLncGb2Dj2/giiA
    [19.1182]
    [19.1324]
    # 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 on
    b.id =
    (select max(c.id)
    from builds c join buildresultinfo r2 on c.id = r2.id
    where
    x.project = c.project and x.jobset = c.jobset and x.job = c.job and x.system = c.system and
    x.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]()
    select
    x.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 statusChangeTime
    [19.553]
    [19.862]
    select x.*, b.id as statusChangeId, b.timestamp as statusChangeTime
  • replacement in src/lib/Hydra/Schema/Builds.pm at line 487
    [19.323][18.5456:5503]()
    (select max(b.id) from builds b
    [19.323]
    [19.368]
    (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]()
    $joinWithStatusChange
    [19.663]
    [19.1122]
    left join Builds b on
    b.id =
    (select max(c.id) from Builds c
    where
    c.finished = 1 and
    x.project = c.project and x.jobset = c.jobset and x.job = c.job and x.system = c.system and
    x.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
    [19.1031][19.1031:1163]()
    and finished = 1
    and exists (select 1 from buildresultinfo where id = b.id and buildstatus = 0)
    [19.1031]
    [19.1163]
    and finished = 1 and buildstatus = 0
  • edit in src/root/build.tt at line 10
    [19.6589][19.382:418]()
    [% resultInfo = build.resultInfo %]
  • replacement in src/root/build.tt at line 37
    [19.2931][19.419:512]()
    [% INCLUDE renderDuration duration = resultInfo.stoptime - step.starttime %]
    [19.2931]
    [19.3030]
    [% INCLUDE renderDuration duration = build.stoptime - step.starttime %]
  • replacement in src/root/build.tt at line 108
    [19.4546][19.605:643]()
    [% IF resultInfo.releasename %]
    [19.4546]
    [19.4590]
    [% IF build.releasename %]
  • replacement in src/root/build.tt at line 111
    [19.4636][19.644:714]()
    <td><tt>[% HTML.escape(resultInfo.releasename) %]</tt></td>
    [19.4636]
    [19.4712]
    <td><tt>[% HTML.escape(build.releasename) %]</tt></td>
  • replacement in src/root/build.tt at line 133
    [19.5170][19.715:761]()
    [% IF resultInfo.iscachedbuild %]
    [19.5170]
    [19.0]
    [% IF build.iscachedbuild %]
  • replacement in src/root/build.tt at line 136
    [19.5325][19.762:942]()
    [% INCLUDE renderDuration duration = resultInfo.stoptime - resultInfo.starttime %] <tt>finished at [% INCLUDE renderDateTime timestamp = resultInfo.stoptime %]</tt>
    [19.5325]
    [19.5435]
    [% 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
    [19.5503][19.943:977]()
    [% IF resultInfo.logfile %]
    [19.5503]
    [19.5543]
    [% IF build.logfile %]
  • replacement in src/root/build.tt at line 184
    [19.6726][19.978:1069]()
    [% IF build.buildsteps && resultInfo.buildstatus != 0 && resultInfo.buildstatus != 6 %]
    [19.6726]
    [19.289]
    [% IF build.buildsteps && build.buildstatus != 0 && build.buildstatus != 6 %]
  • replacement in src/root/build.tt at line 216
    [19.57][19.1070:1133]()
    [% IF resultInfo.errormsg && resultInfo.buildstatus != 5 %]
    [19.57]
    [19.6967]
    [% IF build.errormsg && build.buildstatus != 5 %]
  • replacement in src/root/build.tt at line 220
    [19.7020][19.1134:1206]()
    <pre class="buildlog">[% HTML.escape(resultInfo.errormsg) -%]</pre>
    [19.7020]
    [19.7108]
    <pre class="buildlog">[% HTML.escape(build.errormsg) -%]</pre>
  • replacement in src/root/build.tt at line 266
    [19.8225][19.1207:1243]()
    [% IF resultInfo.releasename %]
    [19.8225]
    [19.8267]
    [% IF build.releasename %]
  • replacement in src/root/build.tt at line 269
    [19.8309][19.1244:1312]()
    <td><tt>[% HTML.escape(resultInfo.releasename) %]</tt></td>
    [19.8309]
    [19.8383]
    <td><tt>[% HTML.escape(build.releasename) %]</tt></td>
  • replacement in src/root/build.tt at line 330
    [19.10174][19.1313:1427]()
    [% IF build.finished && resultInfo.buildstatus != 4 %]
    [% IF resultInfo.iscachedbuild && cachedBuild %]
    [19.10174]
    [19.10300]
    [% IF build.finished && build.buildstatus != 4 %]
    [% IF build.iscachedbuild && cachedBuild %]
  • replacement in src/root/build.tt at line 340
    [19.10497][19.1428:1578]()
    <td>[% IF resultInfo.starttime %][% INCLUDE renderDateTime timestamp = resultInfo.starttime %][% ELSE %]<em>(cached build)</em>[% END %]</td>
    [19.10497]
    [19.10659]
    <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
    [19.10715][19.1579:1727]()
    <td>[% IF resultInfo.stoptime %][% INCLUDE renderDateTime timestamp = resultInfo.stoptime %][% ELSE %]<em>(cached build)</em>[% END %]</td>
    [19.10715]
    [19.10875]
    <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
    [19.10938][19.1728:1772]()
    [% IF resultInfo.iscachedbuild %]
    [19.10938]
    [19.10988]
    [% IF build.iscachedbuild %]
  • replacement in src/root/build.tt at line 352
    [19.11045][19.1773:1868]()
    [% INCLUDE renderDuration duration = resultInfo.stoptime - resultInfo.starttime %]
    [19.11045]
    [19.11152]
    [% INCLUDE renderDuration duration = build.stoptime - build.starttime %]
  • replacement in src/root/build.tt at line 356
    [19.11198][19.1869:1903]()
    [% IF resultInfo.logfile %]
    [19.11198]
    [19.11238]
    [% IF build.logfile %]
  • replacement in src/root/build.tt at line 379
    [19.11947][19.1904:1942]()
    [% ELSIF resultInfo.keep %]
    [19.11947]
    [19.11991]
    [% ELSIF build.keep %]
  • replacement in src/root/build.tt at line 489
    [19.399][19.399:485](),[19.485][19.2113:2330]()
    [% 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 %] ;
    [19.399]
    [19.693]
    [% 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
    [10.596][10.596:864]()
    [% 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 %] ;
    [10.596]
    [10.864]
    [% 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
    [19.1290][19.1180:1318]()
    [%- INCLUDE renderBuildStatusIcon size=16 busy=(showSchedulingInfo ? 1 : 0) buildstatus=build.get_column('buildStatus') -%]
    [19.1290]
    [19.0]
    [%- INCLUDE renderBuildStatusIcon size=16 busy=(showSchedulingInfo ? 1 : 0) buildstatus=build.buildstatus -%]
  • replacement in src/root/common.tt at line 207
    [18.6359][19.2000:2090](),[19.2000][19.2000:2090]()
    [%- buildstatus = buildstatus != undef ? buildstatus : build.resultInfo.buildstatus -%]
    [18.6359]
    [19.2090]
    [%- buildstatus = buildstatus != undef ? buildstatus : build.buildstatus -%]
  • replacement in src/root/common.tt at line 233
    [19.1197][19.2331:2384]()
    [% buildstatus = build.resultInfo.buildstatus %]
    [19.1197]
    [19.1582]
    [% buildstatus = build.buildstatus %]
  • edit in src/root/common.tt at line 245
    [19.2008][19.2008:2193]()
    [% 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
    [19.3296][19.0:51]()
    [% IF build.resultInfo.buildstatus == 6 %]
    [19.3296]
    [8.0]
    [% IF build.buildstatus == 6 %]
  • replacement in src/root/view-result.tt at line 27
    [19.8007][19.22919:22968]()
    [% IF j.build.resultInfo.buildstatus == 0 %]
    [19.8007]
    [4.0]
    [% IF j.build.buildstatus == 0 %]
  • replacement in src/script/hydra-build at line 37
    [19.345][19.345:427]()
    my $status = $build->resultInfo->buildstatus == 0 ? "SUCCEEDED" : "FAILED";
    [19.345]
    [19.427]
    my $status = $build->buildstatus == 0 ? "SUCCEEDED" : "FAILED";
  • replacement in src/script/hydra-build at line 39
    [19.462][19.462:559]()
    my $duration = ($build->resultInfo->stoptime - $build->resultInfo->starttime) . " seconds";
    [19.462]
    [6.47]
    my $duration = ($build->stoptime - $build->starttime) . " seconds";
  • replacement in src/script/hydra-build at line 77
    [19.27][19.27:70]()
    die unless defined $build->resultInfo;
    [19.27]
    [19.70]
    die unless $build->finished;
  • replacement in src/script/hydra-build at line 96
    [19.76][19.4125:4231](),[19.4125][19.4125:4231]()
    if (defined $prevBuild && ($build->resultInfo->buildstatus == $prevBuild->resultInfo->buildstatus)) {
    [19.76]
    [19.77]
    if (defined $prevBuild && ($build->buildstatus == $prevBuild->buildstatus)) {
  • replacement in src/script/hydra-build at line 102
    [17.91][17.91:209]()
    if ($build->resultInfo->buildstatus == 3 || (defined $prevBuild && ($prevBuild->resultInfo->buildstatus == 3))) {
    [17.91]
    [19.4231]
    if ($build->buildstatus == 3 || (defined $prevBuild && ($prevBuild->buildstatus == 3))) {
  • replacement in src/script/hydra-build at line 113
    [19.573][19.364:434]()
    my $status = statusDescription($build->resultInfo->buildstatus);
    [19.573]
    [19.661]
    my $status = statusDescription($build->buildstatus);
  • replacement in src/script/hydra-build at line 135
    [19.759][19.759:1032]()
    [ "Build started:", showTime $build->resultInfo->starttime ],
    [ "Build finished:", showTime $build->resultInfo->stoptime ],
    [ "Duration:", $build->resultInfo->stoptime - $build->resultInfo->starttime . "s" ],
    ) if $build->resultInfo->starttime;
    [19.759]
    [19.1032]
    [ "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
    [19.24][19.24:71]()
    my $logfile = $build->resultInfo->logfile;
    [19.24]
    [12.97]
    my $logfile = $build->logfile;
  • replacement in src/script/hydra-build at line 167
    [19.67][16.0:186]()
    . " of job " . $jobName . " " . (defined $prevBuild ? "has changed from '" . statusDescription($prevBuild->resultInfo->buildstatus) . "' to '$status'" : "is '$status'" ) .".\n"
    [19.67]
    [19.965]
    . " 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
    [19.1087][19.133:276]()
    . ($build->resultInfo->buildstatus != 0 ? "\nThe last $loglines lines of the build log are shown at the bottom of this email.\n" : "")
    [19.1087]
    [19.1087]
    . ($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
    [19.327][19.327:403]()
    . ($build->resultInfo->buildstatus != 0 ? "\n---\n$logtext" : "");
    [19.327]
    [19.403]
    . ($build->buildstatus != 0 ? "\n---\n$logtext" : "");
  • edit in src/script/hydra-build at line 401
    [19.1172][18.6454:6554](),[18.6554][19.1651:1652](),[19.4463][19.1651:1652]()
    $build->update({finished => 1, busy => 0, locker => '', logfile => '', timestamp => time});
  • replacement in src/script/hydra-build at line 403
    [19.4472][9.12:123]()
    if ($buildStatus == 0 && -f "$outPath/nix-support/failed") {
    $buildStatus = 6;
    }
    [19.4472]
    [9.123]
    $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
    [9.124]
    [19.4375]
    $build->update(
    { finished => 1
    , busy => 0
    , locker => ''
    , logfile => ''
    , timestamp => time # !!! Why change the timestamp?
  • replacement in src/script/hydra-build at line 453
    [19.8088][19.3660:3729]()
    die "build $buildId already done" if defined $build->resultInfo;
    [19.8088]
    [18.6555]
    die "build $buildId already done" if $build->finished;
  • replacement in src/script/hydra-update-gc-roots at line 72
    [19.2574][19.2574:2617](),[19.2617][19.924:971]()
    { join => 'resultInfo'
    , order_by => 'me.id DESC'
    [19.2574]
    [19.2661]
    { order_by => 'me.id DESC'
  • replacement in src/script/hydra-update-gc-roots at line 108
    [19.2314][19.1357:1462](),[19.1357][19.1357:1462]()
    my @buildsToKeep = $db->resultset('Builds')->search({finished => 1, keep => 1}, {join => 'resultInfo'});
    [19.2314]
    [19.1462]
    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
    );
    [19.2570]
    [19.9861]
    stopTime integer,
  • replacement in src/sql/hydra.sql at line 168
    [19.9862][19.9862:9976](),[19.9976][19.1863:1910](),[19.299][19.1863:1910]()
    -- Info for a finished build.
    create table BuildResultInfo (
    id integer primary key not null,
    isCachedBuild integer not null, -- boolean
    [19.9862]
    [19.4670]
    -- 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 result
    stopTime integer,
    logfile text, -- the path of the logfile
    logsize bigint not null default 0,
    size bigint not null default 0,
    closuresize bigint not null default 0,
    [19.9990]
    [19.2328]
    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, -- obsolete
    failedDepStepNr integer, -- obsolete
    foreign key (id) references Builds(id) on delete cascade
    [19.5211]
    [19.2526]
    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
  • replacement in src/sql/upgrade-2.sql at line 7
    [18.8374][18.8374:8540]()
    add column startTime integer;
    --alter table Builds
    -- add column isCachedBuild integer,
    -- add column buildStatus integer,
    -- add column errorMsg text;
    [18.8374]
    [18.8540]
    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
    [18.9187][18.9187:9434]()
    -- 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 set
    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),
    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);