* Mark the "current" builds in a jobset, i.e. those corresponding to
[?]
Oct 2, 2009, 4:06 PM
S6OISBQ3HPFHAAQ5ENG7N3MNGOPNEJPIFKSSA5N4G6KJQTQBSSLQCDependencies
- [2]
BTUDUY6F* Provide some redirects to the latest successful build for a job (or - [3]
LZO3C2KI* Hack around those SQLite timeouts: just retry the transaction. - [4]
IWHFLFVV* Randomly permute the order in which builds are added. This is - [5]
AHTEIK7G* Added a maintainers field to the Builds table. - [6]
X5UVREJY* PostgreSQL compatibility. - [7]
SLWFKMU5extra indexes - [8]
EYNG4EL4* Regenerate the bindings from a clean sqlite database. - [9]
B72GLND4 - [10]
FHF6IZJQ* Basic release management: releases are now dynamically computed as - [11]
SJLEZFC4check getHydraPath in stead of Envvar HYDRA_DBI directly - [12]
37R34XJO* Negative caching: don't perform a build if a dependency already - [13]
BTOXLRG3* Record the input containing the Nix expression (release.nix) in the - [14]
SHBLLAVH* More global substitution. - [15]
3E6IP3R3* Add the name of the jobset to ReleaseSetJobs, otherwise we can't - [16]
L2E6EVE2* Merged the Build and Job tables. - [17]
ZEHSSVFG - [18]
V4RNHJNR* Add a link to each project's homepage. Suggested by karltk. - [19]
ODNCGFQ5* Improved the navigation bar: don't include all projects (since that - [20]
VCOSLZRP - [21]
FDE3BJAP* Refactoring. - [22]
BHZXGT2H* Channels: provide an index page that lists all the packages in the - [23]
XNCWZ7OT* Get the job priority from the meta.schedulingPriority attribute. - [24]
D3DIBMOK* For products that are directories (like manuals), allow a default - [25]
ECBA3GQO* Make the schema class names match the case of the SQL table names. - [26]
RU7AQO7U* Role-based access control. Only admins can create projects. Only - [27]
NI5BVF2V* In job inputs of type "build", allow the project and jobset names of - [28]
7ZSVXUGFsequence fix for postgresql - [29]
GWCV3TQV* BuildInputs table: link to dependencies, include store paths. - [30]
67P45PY4 - [31]
YTZOC7C5* Editing of jobset inputs. - [32]
POPU2ATH* hydra_scheduler: use eval-jobs. - [33]
YAPITGB3* Boolean inputs. - [34]
CLJQCY2X* Store info about all the build actions and allow them to be - [35]
X27GNHDV* Basic job info in the database. - [36]
BD3GRK4B* Get rid of "positive failures" and separate log phases. - [37]
6BLUKEQ2* Caching of "path" inputs, and fake a revision number for those. - [38]
CMU3YKOU* Store the release name. - [39]
S5PV6IIM* Represent jobs explicitly in the DB. - [40]
VJHIHMEH* Store the meta.longDescription and meta.license attributes in the - [41]
J5UVLXOK* Start of a basic Catalyst web interface. - [42]
PHX2HIVG* Store info about the build inputs in the build record. - [43]
S66BOMVU* Added authentication. - [44]
M552HLIA* Support variant builds. - [45]
GNIEG2GC* Disambiguate jobs by jobset name. I.e. jobs with the same name in - [46]
BVOPAMLS - [47]
TQKGQ5R3 - [48]
DVNWJXWW* Generic declaration of build products. - [49]
KOTB7BKV - [50]
7YBYT2LQ - [51]
RAKTHYAI* In the job status and error pages, show when the status of a job - [52]
R5D7DZPE - [53]
ZVTSOVHN* Support Subversion checkouts. - [54]
TLZ2SPBR - [55]
SJN2QPWH* Big speed-up of the job status page and the channel generation (such - [56]
IK53RV4V - [57]
TWVSALRL* Allow the maximum number of concurrent builds per platform to be - [58]
SHZLOM5M* eval-jobs -> hydra_eval_jobs. - [59]
H7CNGK4O* Log evaluation errors etc. in the DB. - [60]
3ZCEPLNO - [61]
DEMSSSB2* Controller for jobs which inherits all actions in ListBuilds. So - [62]
WYN733ST* Store build duration, handle cached builds. - [63]
LCKWLQW3* In Sqlite "release" is now a keyword, so use "release_" instead. - [*]
N22GPKYT* Put info about logs / build products in the DB.
Change contents
- replacement in src/lib/Hydra/Controller/Job.pm at line 29
$c->stash->{systems} = [$c->stash->{job}->builds->search({}, {select => ["system"], distinct => 1})];$c->stash->{systems} = [$c->stash->{job}->builds->search({iscurrent => 1}, {select => ["system"], distinct => 1})]; - replacement in src/lib/Hydra/Schema/BuildInputs.pm at line 106
# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-07-07 14:36:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:02BDWXRn4LMcb0LFjHXqjg# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-10-02 15:59:19# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:3l2Qu/wpPEb/xsXoyeRviQ - replacement in src/lib/Hydra/Schema/BuildProducts.pm at line 94
# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-07-07 14:36:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:Fqzw8pcHMrUjdJZ/a43D3w# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-10-02 15:59:19# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:/AUVD2QjjkeQmFkKEim0Gw - replacement in src/lib/Hydra/Schema/BuildResultInfo.pm at line 89
# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-07-07 14:36:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:KjrreyjxFwFTGDzdA9J42w# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-10-02 15:59:19# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:L/qLimgzcHeLjsKom3t1XQ - replacement in src/lib/Hydra/Schema/BuildSchedulingInfo.pm at line 46
# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-07-07 14:36:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:jgOkt31QNifyPD8Y0rkVBA# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-10-02 15:59:19# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:I2cNoG9FOWDlICSy4Ndftw - replacement in src/lib/Hydra/Schema/BuildSteps.pm at line 94
# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-07-07 14:36:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:7z14GDq6a8ndBoj3Mx/3TQ# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-10-02 15:59:19# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:oCn8y9Nsffa6WOnm44lyqQ - edit in src/lib/Hydra/Schema/Builds.pm at line 119
"iscurrent",{ data_type => "integer", default_value => 0, is_nullable => 1, size => undef }, - replacement in src/lib/Hydra/Schema/Builds.pm at line 166
# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-07-07 14:36:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:mTc++yn7RST163jLNJkXaw# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-10-02 15:59:19# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:8r7Yv4O8WF2YU4sOjn0Q8w - replacement in src/lib/Hydra/Schema/Builds.pm at line 222
makeSource('JobStatus' . $name, "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, b.id as statusChangeId, b.timestamp as statusChangeTime from (select project, jobset, job, system, max(id) as id from Builds where finished = 1 $constraint group by project, jobset, job, system) as latest natural join Builds x $joinWithStatusChange");makeSource('JobStatus' . $name, "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, b.id as statusChangeId, b.timestamp as statusChangeTime from (select project, jobset, job, system, max(id) as id from Builds where finished = 1 $constraint group by project, jobset, job, system) as latest natural join Builds x $joinWithStatusChange"); - replacement in src/lib/Hydra/Schema/CachedPathInputs.pm at line 50
# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-07-07 14:36:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:sEZCtuR96OmFAZe4ykVTUA# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-10-02 15:59:19# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:eLemrXw7iydgI6zhFrghRg - replacement in src/lib/Hydra/Schema/CachedSubversionInputs.pm at line 43
# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-07-07 14:36:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:ImarwuHMkKrQ2GemxREDig# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-10-02 15:59:19# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:f2Xn8X5aO9Gud7LHrc/b2g - replacement in src/lib/Hydra/Schema/Jobs.pm at line 78
# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-07-07 14:36:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:OFEAwA4W5q0AF8uZ3JswFQ# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-10-02 15:59:19# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:w5CXchrT0/ueNgxnKv6TPg - replacement in src/lib/Hydra/Schema/JobsetInputAlts.pm at line 72
# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-07-07 14:36:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:kcIcgSux+SzIH7FQs2cnAw# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-10-02 15:59:19# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:CQg509K7bBReX30DeMC7ww - replacement in src/lib/Hydra/Schema/JobsetInputs.pm at line 68
# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-07-07 14:36:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:SkF1SaumgGAQvR9mUbPV+Q# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-10-02 15:59:19# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:FzkQQT8t8OET0a0teF3lHA - replacement in src/lib/Hydra/Schema/Jobsets.pm at line 104
# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-07-07 14:36:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:lMdNiE6x4qZLK14+jEM7YQ# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-10-02 15:59:19# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:eu0jlMKE2aMvQRv4LynlIA - replacement in src/lib/Hydra/Schema/Projects.pm at line 79
# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-07-07 14:36:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:lDNoBncP2KhnrfbQIg+Usw# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-10-02 15:59:19# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:aBN2ry0QEPIhQu6tlgk7RQ - replacement in src/lib/Hydra/Schema/ReleaseSetJobs.pm at line 69
# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-07-07 14:36:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:xaWTZqtzPyMq/xqi0ZFCDg# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-10-02 15:59:19# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:Mm9VR//LwfM88N54dtmuxg - replacement in src/lib/Hydra/Schema/ReleaseSets.pm at line 48
# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-07-07 14:36:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:sYojSdWhlGMAL7Vj/UynBw# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-10-02 15:59:19# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:c6FKyR68F1a8wLivK9ztog - replacement in src/lib/Hydra/Schema/SystemTypes.pm at line 24
# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-07-07 14:36:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:QYzvQmgXtV3NURhO5j5F4Q# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-10-02 15:59:19# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:SYnu+3J84FXFqkSu8jxkPg - replacement in src/lib/Hydra/Schema/UserRoles.pm at line 31
# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-07-07 14:36:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:syo00cqS/fp5mJt2jg+YJw# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-10-02 15:59:19# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:pRBijh3yc0x4knK6tU4iTw - replacement in src/lib/Hydra/Schema/Users.pm at line 53
# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-07-07 14:36:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:ZH7GmAkTPdZm7G5aCp746A# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-10-02 15:59:19# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:d4m+IH9KxIcgId+XF23txg - replacement in src/lib/Hydra/Schema.pm at line 11
# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-07-07 14:36:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:tt53dmgGYiV3yqHvnrSwkg# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-10-02 15:59:19# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:uBemU8brohK9UDFJ9KC1iA - replacement in src/script/hydra_scheduler.pl at line 255
my ($project, $jobset, $inputInfo, $nixExprInput, $job) = @_;my ($project, $jobset, $inputInfo, $nixExprInput, $job, $currentBuilds) = @_; - replacement in src/script/hydra_scheduler.pl at line 276[8.5467]→[8.5467:5599](∅→∅),[8.5599]→[8.2879:2925](∅→∅),[8.9604]→[8.2879:2925](∅→∅),[8.2925]→[8.9646:9666](∅→∅),[8.12182]→[8.9646:9666](∅→∅),[8.9646]→[8.9646:9666](∅→∅)
# Have we already done this build (in this job)?if (scalar($jobInDB->builds->search({outPath => $outPath})) > 0) {print "already scheduled/done\n";return;# Have we already done this build (in this job)? Don't do it# again unless it has been garbage-collected. The latest# builds for each platforms are GC roots, so they shouldn't be# GCed. However, if a job has reverted to a previous state,# it's possible that a GCed build becomes current again. In# that case we have to rebuild it to ensure that it appears in# channels etc.my @previousBuilds = $jobInDB->builds->search({outPath => $outPath}, {order_by => "id"});if (scalar(@previousBuilds) > 0) {foreach my $build (@previousBuilds) {if (!$build->finished) {print "already scheduled as build ", $build->id, "\n";$currentBuilds->{$build->id} = 1;return;}}if (isValidPath($outPath)) {print "already done as build ", $previousBuilds[0]->id, "\n";# Mark the previous build as "current" so that it will# appear in the "latest" channel for this# project/jobset/job.$previousBuilds[0]->update({iscurrent => 1});$currentBuilds->{$previousBuilds[0]->id} = 1;return;}print "already done as build ", $previousBuilds[0]->id,"; rebuilding because it was garbage-collected\n"; - edit in src/script/hydra_scheduler.pl at line 306[8.5627]→[8.2926:2961](∅→∅),[8.9677]→[8.2926:2961](∅→∅),[8.2961]→[8.9950:9959](∅→∅),[8.12224]→[8.9950:9959](∅→∅),[8.9950]→[8.9950:9959](∅→∅)
print "adding to queue\n"; - edit in src/script/hydra_scheduler.pl at line 318
, iscurrent => 1 - edit in src/script/hydra_scheduler.pl at line 321
print "added to queue as build ", $build->id, "\n";$currentBuilds->{$build->id} = 1; - edit in src/script/hydra_scheduler.pl at line 432
my %currentBuilds; - replacement in src/script/hydra_scheduler.pl at line 436
checkJob($project, $jobset, $inputInfo, $nixExprInput, $job);checkJob($project, $jobset, $inputInfo, $nixExprInput, $job, \%currentBuilds); - edit in src/script/hydra_scheduler.pl at line 439
# Mark all existing jobs that we haven't seen as inactive.my %jobNames;$jobNames{$_->{jobName}}++ foreach @{$jobs->{job}};my %failedJobNames;push @{$failedJobNames{$_->{location}}}, $_->{msg} foreach @{$jobs->{error}}; - edit in src/script/hydra_scheduler.pl at line 440
# Mark all existing jobs that we haven't seen as inactive.my %jobNames;$jobNames{$_->{jobName}}++ foreach @{$jobs->{job}};my %failedJobNames;push @{$failedJobNames{$_->{location}}}, $_->{msg} foreach @{$jobs->{error}}; - replacement in src/script/hydra_scheduler.pl at line 459
});# Clear the "current" flag on all builds that are no longer# current.foreach my $build ($jobset->builds->search({iscurrent => 1})) {print "current is ", $build->id, "\n";$build->update({iscurrent => 0}) unless $currentBuilds{$build->id};} - edit in src/script/hydra_scheduler.pl at line 467
}); - edit in src/sql/hydra.sql at line 29
isCurrent integer default 0, - replacement in src/sql/hydra.sql at line 414
create index indexbuild on buildproducts(build)create index indexbuildtype on buildproducts(build, type)[8.3104]create index IndexBuild on BuildProducts(build);create index IndexBuildType on BuildProducts(build, type);