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] ODWGRX32 check 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] JXPHAZMV Minor style changes
  • [26] 6FRLEP4P first 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] R3ON2RJ3 hydra: 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] ZWCTAZGL added newsitems, added some admin options to clear various caches.
  • [34] EYNG4EL4 * Regenerate the bindings from a clean sqlite database.
  • [35] QQ4STW3S missing file
  • [36] JLDUSNUO * Unify rendering of finished and scheduled builds.
  • [37] PPJN6SDP * paging for releases page
  • [38] ZNKPGZHF hydra: error on buildpage for queued build
  • [39] 36V375MD change 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] T6KISLR6 Fix indentation
  • [44] 3EGKZC3C hydra: 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] AWZPRK2O first try for timeline of last 24 hours in hydra
  • [53] H27UAGSX project 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] TM6XBAG2 git branches can share local clones
  • [57] 4D4U5IPY * Allow jobsets to be disabled.
  • [58] HB3OHPJL hydra: 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] JTRG7RDQ add 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] CVWQXYKM use newer icons consistently
  • [66] KPZNJ33U * In views, support selecting a job that doesn't depend on the
  • [67] US27ZTX5 * HydraFrontend -> Hydra.
  • [68] 5O6E5SU5 hydra: 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] KSD75RNJ Hydra/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] SMCOU72F hydra: 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] SJLEZFC4 check getHydraPath in stead of Envvar HYDRA_DBI directly
  • [86] ZVTSOVHN * Support Subversion checkouts.
  • [87] SZYY2EQQ * Make the queries more readable.
  • [88] F5RYSE7T qualify order by column
  • [89] UMFB2767 Hydra/64: Leaving number of builds empty gives DBIx error
  • [90] K7IRNVRF hydra: 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] LA27PR4U hydra: fix enable email notification bug
  • [93] TJPIS3UP hydra: minor improvements in hydra ui
  • [94] 3BKF6P72 * Use Nix's negative caching.
  • [95] DSM3TTSO Hydra/31: "Duration" field broken in cached builds that are not in DB anymore
  • [96] KOTB7BKV
  • [97] K4C6DNSM changed queries for compatibility with postgresql
  • [98] HZ2U4QEV no 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] 6KJXJB7N qualify ordery_by clauses when necessary, remove unnecessary order_by's, reported by Ludo, resulted in errors in sqlite
  • [110] LOMVF2KH do 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] C5XKS77N hydra: added missing fields to query
  • [117] FM4O2L4M hydra: if evaluator sees cached build, also add the buildproducts
  • [118] 777XFGVY Hydra/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] UXHP37RF set threshold to show status on jobset page to a more usable size
  • [121] KA45EBF5 * Send email if a build fails.
  • [122] PY4WQF5G remove ascii escapes from log in tail page and emails
  • [123] TH674WKJ add log diff to compare logs to previous builds
  • [124] IW2LHCLL fixed 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] JM3DPYOM generated 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] QWB5ON4D remove old line
  • [135] NEWDDAOF * Allow users to change the value of a build's "keep" flag, which
  • [136] 3HCBU2FA
  • [137] JFZNAYJX * Showing releases.
  • [138] HUH62VDL show 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] VVOAXWH4 fix wrong dbix:class:loader generation
  • [143] 3HEMN2Q2 * Speed up the jobstatus query a little bit.
  • [144] JUZVPV6S qualify 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] E5DMQRPO Remove unnecessary whitespace in the HTML output
  • [149] ZEEZRG2E clean 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] GPRYAAFP hydra: change icon for positive failures
  • [157] FHAVPTZ6 Hydra/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] ZTQEU5QS Hydra: 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] A22P7HCO hydra: 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] SB2V735V Keep 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] BKOIYITR added 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] 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
  • [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] OSVLMLCQ hydra: factored out build restart and
  • [184] FLXJYCRB
  • [185] H7CNGK4O * Log evaluation errors etc. in the DB.
  • [186] A63IHCMX * Register GC roots properly.
  • [187] J7EE2XZA Fix 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] WWZWUPFI if 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] JJT5QG3K remove revision from cached cvs inputs, and added missing files
  • [198] FD76WVTQ missing file
  • [199] 7PYQLDQL Added sequences for auto increment primary key columns (for PostgreSQL)
  • [200] UCLYDK2A * Disambiguate.
  • [201] P5X4P6VK * Renaming "release sets" to "views" (not finished yet). Having
  • [202] FYO6NECE hydra
  • [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] LUPEGYR7 Hydra: 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] EDRUQ4UK Die TABs die
  • [213] X27GNHDV * Basic job info in the database.
  • [214] RI4S7SYT * Job status: show the active jobs.
  • [215] 2WRTOU2Z Cleanup
  • [216] 2BUX775I * More release -> view.
  • [217] BOFOHCPK removed 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.
  • [*] 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);