the derivations that the jobset currently contains. This is necessary to allow the "latest" channel to contain the correct builds when the sources of a jobset are reverted.
S6OISBQ3HPFHAAQ5ENG7N3MNGOPNEJPIFKSSA5N4G6KJQTQBSSLQC BTUDUY6FY6UTRZOGLSPFNA4MVTSP7JXBD44VYF6BPKNFF6Y3CY2QC LZO3C2KIACZ3HN72RBGWWIT5ED4RJMYKI3SAHXT6RIUPHDFL3STQC IWHFLFVVP2W5E6P5R2ATDSZ66OYE3KZZY26KTFPZUPXI7SYPMMWAC AHTEIK7GGPHUC3AXIJ2NX4TI3RLX65XYKGAIIC6MC2S6I6QPWTAAC X5UVREJYKD4FGXILS6ONEGL2LQ43FY3GATXGPXIROFHS3Y6SB4AAC SLWFKMU5SGUC5NXQAAULJ5J6XDRYS4PLLTQJNPFDZIXFGRGYTPZQC DEMSSSB22UI2ZN26C56UYO4NZWMDCRYKLAQARGOTSORSDXX3ZNNQC SJLEZFC472OWVCR7WEUUYNS6BJDDR77SHWADKDCPIS2INMTPTIVAC PHX2HIVGHHKCAX6VNN2WXD4LRGSA74KQMJCCTMHK7HS6JPELVECAC J5UVLXOK6EDIL5I7VKWH4V2QDS4DPD7FHRK6XBWSXFRQS4JKXFZQC L2E6EVE2RVFVDCUNRJ4CZYSQNS2DZUA5DTBETHBDUQUV2KQQRAOQC CLJQCY2XHIDNNMFBJ5PK3GQEN6RFALEFKXBJRWZPEIKR4PR5ZQ5AC ZVTSOVHNQNQCRF3N44RKDQSL3UM7HSLTAXICMWEE6EIA6SWJXZCQC S5PV6IIMKJ7PGWIFLLXERHYF3BCP2UEGFRZEZLD6UUBLVEZXJLUAC M552HLIAP52D42AVXVC5SGROAYN2TBCEUZOXESWEMBBUX7G3U6TAC X27GNHDV5KPZ5GSH6DCAJMNCEMZLCP7M43JWF2X3O5QWXMOX273AC FHF6IZJQPUQHY5QWQYRPZVDBRLHREWRHGNKVQDT7F3GQKKLZXJKQC TWVSALRLHGSY6SHLMLT53K2A5SUCPU3SNFPZ2KWYOLDQUJBSZ2OAC RU7AQO7U4HCWJNQTR2KRGDLLG24WYD47MWIHREV6SIAPCPDQHAWQC S66BOMVUACAUDSGSDWP7ZIXVMZSQHWXOZYVTB7ILUCWZ7DDFAKVAC POPU2ATH2HHBTGHKRAV3EY2K55P664IARI3YJGLDKVJ6PQPXBQ4AC BTOXLRG37PPI4MPXMVGZP2GJVUHV5LFMR3EMIWZMRZEJGV23M72QC N22GPKYTOLZLBGTGDATQDVZ4R5APZEAOIA7L32X4UXBH4XNI7MWAC FDE3BJAPDEP3BYT5A5GEGLNXPPZLA2KTGXB4ZNYRP4LJ7IFRKYXAC H7CNGK4OJNRYZQGPLBGR72DULLEPFQ5UISF5J24D7IMA7SYW5LGQC 7YBYT2LQML2PKEO6UO4444AGSASS664UCDXW2YO3ALB7THQHCEBQC NI5BVF2VLMDA7REXTV455SUCQAYMKPKNKQSRII2SJJGG2TCX4CTAC SHZLOM5M2NVH2J7CJJMS562EV5NPCTNWQ5P3K2SSL2YFYUI7PMIQC RAKTHYAIX757GPYWCHOE5H5RD3QYKQW3QKLWUIUKPHQ5QGWQXWQQC # 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
# 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
# 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
# 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
# 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
# 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
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");
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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";