Merge lp:~wgrant/launchpad/flatten-bfj-3-query into lp:launchpad

Proposed by William Grant
Status: Superseded
Proposed branch: lp:~wgrant/launchpad/flatten-bfj-3-query
Merge into: lp:launchpad
Prerequisite: lp:~wgrant/launchpad/flatten-bfj-2-garbo
Diff against target: 1837 lines (+264/-721)
23 files modified
database/sampledata/current-dev.sql (+48/-48)
database/sampledata/current.sql (+48/-48)
database/schema/security.cfg (+0/-4)
lib/lp/buildmaster/interfaces/buildfarmjob.py (+2/-0)
lib/lp/buildmaster/interfaces/packagebuild.py (+0/-4)
lib/lp/buildmaster/model/buildfarmjob.py (+11/-17)
lib/lp/buildmaster/model/packagebuild.py (+4/-8)
lib/lp/code/model/sourcepackagerecipe.py (+44/-47)
lib/lp/code/model/sourcepackagerecipebuild.py (+5/-7)
lib/lp/registry/model/sourcepackage.py (+7/-7)
lib/lp/scripts/garbo.py (+0/-227)
lib/lp/scripts/tests/test_garbo.py (+1/-136)
lib/lp/soyuz/doc/sourcepackagerelease.txt (+1/-3)
lib/lp/soyuz/interfaces/binarypackagebuild.py (+0/-7)
lib/lp/soyuz/model/archive.py (+27/-47)
lib/lp/soyuz/model/binarypackagebuild.py (+41/-58)
lib/lp/soyuz/model/buildpackagejob.py (+7/-13)
lib/lp/soyuz/model/distributionsourcepackagerelease.py (+1/-5)
lib/lp/soyuz/model/publishing.py (+5/-10)
lib/lp/soyuz/model/sourcepackagerelease.py (+6/-14)
lib/lp/soyuz/tests/test_archive.py (+3/-6)
lib/lp/translations/interfaces/translationtemplatesbuild.py (+1/-5)
lib/lp/translations/model/translationtemplatesbuild.py (+2/-0)
To merge this branch: bzr merge lp:~wgrant/launchpad/flatten-bfj-3-query
Reviewer Review Type Date Requested Status
Steve Kowalik (community) code Approve
Review via email: mp+145543@code.launchpad.net

This proposal has been superseded by a proposal from 2013-02-01.

Description of the change

The build farm job schema is being reworked to improve performance. Columns from PackageBuild and BuildFarmJob are being merged into tables that previously delegated to them. The PackageBuild table will end up dying entirely, but BuildFarmJob will remain, a shadow of its former self, to answer questions about Archive:+builds and Builder:+history. Additionally, BinaryPackageBuild is growing new distribution, distroseries, sourcepackagename and is_distro_archive columns to make searches even faster.

This branch (which can only land once the garbo jobs have completed) changes the app to read values from the new denormed columns, while still writing to the old ones on PB/BFJ during the transition. Most queries involving BuildFarmJob or PackageBuild are now just over BPB/SPRB/TTB.

To post a comment you must log in.
Revision history for this message
Steve Kowalik (stevenk) wrote :

799 + ).group_by(
800 + BinaryPackageBuild._new_status
801 + ).order_by(BinaryPackageBuild._new_status)

Perhaps this could be re-flowed?

1011 + find_spec = (BinaryPackageBuild,)

Why? Surely this can just be inlined into the .find() call.

review: Approve (code)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'database/sampledata/current-dev.sql'
--- database/sampledata/current-dev.sql 2013-01-17 11:57:53 +0000
+++ database/sampledata/current-dev.sql 2013-02-01 03:49:23 +0000
@@ -2464,30 +2464,30 @@
24642464
2465ALTER TABLE buildfarmjob DISABLE TRIGGER ALL;2465ALTER TABLE buildfarmjob DISABLE TRIGGER ALL;
24662466
2467INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (2, 1, false, '2004-09-27 11:57:13', '2004-09-27 11:55:13', '2004-09-27 11:57:14', NULL, 1, 1, 1, 1, 0);2467INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (2, 1, false, '2004-09-27 11:57:13', '2004-09-27 11:55:13', '2004-09-27 11:57:14', NULL, 1, 1, 1, 1, 0, 1);
2468INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (6, 1, false, '2006-12-01 00:00:00', '2006-12-01 00:00:00', '2006-12-01 00:00:01', NULL, 1, 2, 1, 1, 0);2468INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (6, 1, false, '2006-12-01 00:00:00', '2006-12-01 00:00:00', '2006-12-01 00:00:01', NULL, 1, 2, 1, 1, 0, 1);
2469INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (7, 1, false, '2005-03-24 00:00:00', '2005-03-24 23:58:43', '2005-03-25 00:00:03', NULL, 1, 1, 1, 1, 0);2469INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (7, 1, false, '2005-03-24 00:00:00', '2005-03-24 23:58:43', '2005-03-25 00:00:03', NULL, 1, 1, 1, 1, 0, 1);
2470INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (8, 1, false, '2005-09-30 00:00:00', NULL, NULL, NULL, NULL, 6, NULL, 1, 0);2470INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (8, 1, false, '2005-09-30 00:00:00', NULL, NULL, NULL, NULL, 6, NULL, 1, 0, 1);
2471INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (9, 1, false, '2005-10-01 00:00:00', '2005-10-01 23:56:41', '2005-10-02 00:00:01', NULL, 1, 2, 1, 1, 0);2471INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (9, 1, false, '2005-10-01 00:00:00', '2005-10-01 23:56:41', '2005-10-02 00:00:01', NULL, 1, 2, 1, 1, 0, 1);
2472INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (10, 1, false, '2006-01-27 00:00:00', NULL, NULL, NULL, NULL, 1, NULL, 1, 0);2472INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (10, 1, false, '2006-01-27 00:00:00', NULL, NULL, NULL, NULL, 1, NULL, 1, 0, 1);
2473INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (11, 1, false, '2006-02-14 00:00:00', NULL, NULL, NULL, NULL, 0, NULL, 1, 0);2473INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (11, 1, false, '2006-02-14 00:00:00', NULL, NULL, NULL, NULL, 0, NULL, 1, 0, 1);
2474INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (12, 1, false, '2006-02-28 00:00:00', '2006-02-27 23:53:59', '2006-02-28 00:00:01', NULL, 1, 3, 1, 1, 0);2474INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (12, 1, false, '2006-02-28 00:00:00', '2006-02-27 23:53:59', '2006-02-28 00:00:01', NULL, 1, 3, 1, 1, 0, 1);
2475INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (13, 1, false, '2006-03-21 00:00:00', '2006-03-21 00:58:33', '2006-03-21 01:00:03', NULL, 1, 5, 1, 1, 0);2475INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (13, 1, false, '2006-03-21 00:00:00', '2006-03-21 00:58:33', '2006-03-21 01:00:03', NULL, 1, 5, 1, 1, 0, 1);
2476INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (14, 1, false, '2006-03-22 00:00:00', '2006-03-21 00:58:32', '2006-03-21 01:00:02', NULL, 1, 5, 1, 1, 0);2476INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (14, 1, false, '2006-03-22 00:00:00', '2006-03-21 00:58:32', '2006-03-21 01:00:02', NULL, 1, 5, 1, 1, 0, 1);
2477INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (15, 1, false, '2006-03-22 00:00:01', '2006-03-21 00:58:30', '2006-03-21 01:00:00', NULL, 1, 5, 1, 1, 0);2477INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (15, 1, false, '2006-03-22 00:00:01', '2006-03-21 00:58:30', '2006-03-21 01:00:00', NULL, 1, 5, 1, 1, 0, 1);
2478INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (16, 1, false, '2005-03-24 00:00:01', '2005-03-24 23:58:42', '2005-03-25 00:00:02', NULL, 1, 1, 1, 1, 0);2478INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (16, 1, false, '2005-03-24 00:00:01', '2005-03-24 23:58:42', '2005-03-25 00:00:02', NULL, 1, 1, 1, 1, 0, 1);
2479INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (18, 1, false, '2004-09-27 11:57:14', '2004-09-27 11:55:12', '2004-09-27 11:57:13', NULL, 1, 1, 1, 1, 0);2479INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (18, 1, false, '2004-09-27 11:57:14', '2004-09-27 11:55:12', '2004-09-27 11:57:13', NULL, 1, 1, 1, 1, 0, 1);
2480INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (19, 1, false, '2005-03-24 00:00:02', '2005-03-24 23:58:41', '2005-03-25 00:00:01', NULL, 1, 1, 1, 1, 0);2480INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (19, 1, false, '2005-03-24 00:00:02', '2005-03-24 23:58:41', '2005-03-25 00:00:01', NULL, 1, 1, 1, 1, 0, 1);
2481INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (21, 1, false, '2006-12-01 00:00:01', NULL, NULL, NULL, NULL, 2, NULL, 1, 0);2481INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (21, 1, false, '2006-12-01 00:00:01', NULL, NULL, NULL, NULL, 2, NULL, 1, 0, 1);
2482INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (22, 1, false, '2007-04-20 00:00:00', '2007-04-19 23:58:41', '2007-04-20 00:00:01', NULL, 1, 7, 1, 1, 0);2482INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (22, 1, false, '2007-04-20 00:00:00', '2007-04-19 23:58:41', '2007-04-20 00:00:01', NULL, 1, 7, 1, 1, 0, 1);
2483INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (23, 1, false, '2006-04-11 12:00:00', NULL, NULL, NULL, NULL, 1, NULL, 1, 0);2483INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (23, 1, false, '2006-04-11 12:00:00', NULL, NULL, NULL, NULL, 1, NULL, 1, 0, 1);
2484INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (24, 1, true, '2007-05-30 00:00:00', '2007-05-29 23:58:41', '2007-05-30 00:00:01', NULL, 1, 2, 1, 1, 0);2484INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (24, 1, true, '2007-05-30 00:00:00', '2007-05-29 23:58:41', '2007-05-30 00:00:01', NULL, 1, 2, 1, 1, 0, 11);
2485INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (25, 1, true, '2007-07-08 12:00:00', NULL, NULL, NULL, NULL, 1, NULL, 1, 0);2485INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (25, 1, true, '2007-07-08 12:00:00', NULL, NULL, NULL, NULL, 1, NULL, 1, 0, 9);
2486INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (26, 1, true, '2007-07-08 00:00:00', '2007-07-07 23:58:41', '2007-07-08 00:00:01', NULL, 1, 2, 1, 1, 0);2486INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (26, 1, true, '2007-07-08 00:00:00', '2007-07-07 23:58:41', '2007-07-08 00:00:01', NULL, 1, 2, 1, 1, 0, 9);
2487INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (27, 1, true, '2007-07-24 00:00:00', '2007-07-23 23:58:41', '2007-07-24 00:00:01', NULL, 1, 1, 1, 1, 0);2487INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (27, 1, true, '2007-07-24 00:00:00', '2007-07-23 23:58:41', '2007-07-24 00:00:01', NULL, 1, 1, 1, 1, 0, 9);
2488INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (28, 3, true, '2007-08-10 00:00:00', '2007-08-10 00:00:00', '2007-08-10 00:00:13', NULL, 1, 1, 1, 1, 0);2488INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (28, 3, true, '2007-08-10 00:00:00', '2007-08-10 00:00:00', '2007-08-10 00:00:13', NULL, 1, 1, 1, 1, 0, 9);
2489INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (29, 1, false, '2007-08-09 21:54:18.553132', '2007-08-09 23:49:59', '2007-08-09 23:59:59', NULL, NULL, 1, NULL, 1, 0);2489INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (29, 1, false, '2007-08-09 21:54:18.553132', '2007-08-09 23:49:59', '2007-08-09 23:59:59', NULL, NULL, 1, NULL, 1, 0, 12);
2490INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (30, 3, false, '2007-08-10 00:00:01', '2007-08-10 00:00:01', '2007-08-10 00:00:14', NULL, 1, 1, 1, 1, 0);2490INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (30, 3, false, '2007-08-10 00:00:01', '2007-08-10 00:00:01', '2007-08-10 00:00:14', NULL, 1, 1, 1, 1, 0, 1);
24912491
24922492
2493ALTER TABLE buildfarmjob ENABLE TRIGGER ALL;2493ALTER TABLE buildfarmjob ENABLE TRIGGER ALL;
@@ -2719,30 +2719,30 @@
27192719
2720ALTER TABLE binarypackagebuild DISABLE TRIGGER ALL;2720ALTER TABLE binarypackagebuild DISABLE TRIGGER ALL;
27212721
2722INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (2, 1, 1, 14);2722INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (2, 1, 1, 14, 1, 0, 1, false, '2004-09-27 11:57:13', '2004-09-27 11:55:13', '2004-09-27 11:57:14', NULL, 1, 1, 1, NULL, NULL, 0, 2, 1, 1, true, 1);
2723INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (6, 2, 1, 32);2723INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (6, 2, 1, 32, 1, 0, 1, false, '2006-12-01 00:00:00', '2006-12-01 00:00:00', '2006-12-01 00:00:01', NULL, 1, 2, 1, NULL, NULL, 0, 6, 1, 1, true, 23);
2724INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (7, 3, 6, 20);2724INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (7, 3, 6, 20, 1, 0, 1, false, '2005-03-24 00:00:00', '2005-03-24 23:58:43', '2005-03-25 00:00:03', NULL, 1, 1, 1, NULL, NULL, 0, 7, 1, 3, true, 14);
2725INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (8, 4, 6, 14);2725INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (8, 4, 6, 14, 1, 0, 1, false, '2005-09-30 00:00:00', NULL, NULL, NULL, NULL, 6, NULL, NULL, NULL, 0, 8, 1, 3, true, 1);
2726INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (9, 5, 1, 20);2726INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (9, 5, 1, 20, 1, 0, 1, false, '2005-10-01 00:00:00', '2005-10-01 23:56:41', '2005-10-02 00:00:01', NULL, 1, 2, 1, NULL, NULL, 0, 9, 1, 1, true, 14);
2727INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (10, 6, 1, 26);2727INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (10, 6, 1, 26, 1, 0, 1, false, '2006-01-27 00:00:00', NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, 0, 10, 1, 1, true, 20);
2728INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (11, 7, 6, 25);2728INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (11, 7, 6, 25, 1, 0, 1, false, '2006-02-14 00:00:00', NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, 0, 11, 1, 3, true, 19);
2729INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (12, 8, 6, 27);2729INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (12, 8, 6, 27, 1, 0, 1, false, '2006-02-28 00:00:00', '2006-02-27 23:53:59', '2006-02-28 00:00:01', NULL, 1, 3, 1, NULL, 'cpp (>= 4:4.0.1-3), gcc-4.0 (>= 4.0.1-2)', 0, 12, 1, 3, true, 21);
2730INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (13, 9, 1, 17);2730INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (13, 9, 1, 17, 1, 0, 1, false, '2006-03-21 00:00:00', '2006-03-21 00:58:33', '2006-03-21 01:00:03', NULL, 1, 5, 1, NULL, NULL, 0, 13, 1, 1, true, 10);
2731INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (14, 10, 1, 28);2731INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (14, 10, 1, 28, 1, 0, 1, false, '2006-03-22 00:00:00', '2006-03-21 00:58:32', '2006-03-21 01:00:02', NULL, 1, 5, 1, NULL, NULL, 0, 14, 1, 1, true, 22);
2732INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (15, 11, 1, 29);2732INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (15, 11, 1, 29, 1, 0, 1, false, '2006-03-22 00:00:01', '2006-03-21 00:58:30', '2006-03-21 01:00:00', NULL, 1, 5, 1, NULL, NULL, 0, 15, 1, 1, true, 17);
2733INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (16, 12, 11, 20);2733INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (16, 12, 11, 20, 1, 0, 1, false, '2005-03-24 00:00:01', '2005-03-24 23:58:42', '2005-03-25 00:00:02', NULL, 1, 1, 1, NULL, NULL, 0, 16, 1, 3, true, 14);
2734INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (18, 13, 8, 14);2734INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (18, 13, 8, 14, 1, 0, 1, false, '2004-09-27 11:57:14', '2004-09-27 11:55:12', '2004-09-27 11:57:13', NULL, 1, 1, 1, NULL, NULL, 0, 18, 1, 10, true, 1);
2735INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (19, 14, 8, 20);2735INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (19, 14, 8, 20, 1, 0, 1, false, '2005-03-24 00:00:02', '2005-03-24 23:58:41', '2005-03-25 00:00:01', NULL, 1, 1, 1, NULL, NULL, 0, 19, 1, 10, true, 14);
2736INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (21, 15, 1, 33);2736INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (21, 15, 1, 33, 1, 0, 1, false, '2006-12-01 00:00:01', NULL, NULL, NULL, NULL, 2, NULL, NULL, NULL, 0, 21, 1, 1, true, 24);
2737INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (22, 16, 8, 33);2737INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (22, 16, 8, 33, 1, 0, 1, false, '2007-04-20 00:00:00', '2007-04-19 23:58:41', '2007-04-20 00:00:01', NULL, 1, 7, 1, 91, NULL, 0, 22, 1, 10, true, 24);
2738INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (23, 17, 1, 35);2738INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (23, 17, 1, 35, 1, 0, 1, false, '2006-04-11 12:00:00', NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, 0, 23, 1, 1, true, 26);
2739INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (24, 18, 1, 33);2739INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (24, 18, 1, 33, 11, 0, 1, true, '2007-05-30 00:00:00', '2007-05-29 23:58:41', '2007-05-30 00:00:01', NULL, 1, 2, 1, NULL, NULL, 0, 24, 1, 1, false, 24);
2740INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (25, 19, 1, 35);2740INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (25, 19, 1, 35, 9, 0, 1, true, '2007-07-08 12:00:00', NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, 0, 25, 1, 1, false, 26);
2741INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (26, 20, 8, 33);2741INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (26, 20, 8, 33, 9, 0, 1, true, '2007-07-08 00:00:00', '2007-07-07 23:58:41', '2007-07-08 00:00:01', NULL, 1, 2, 1, NULL, NULL, 0, 26, 1, 10, false, 24);
2742INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (27, 21, 1, 20);2742INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (27, 21, 1, 20, 9, 0, 1, true, '2007-07-24 00:00:00', '2007-07-23 23:58:41', '2007-07-24 00:00:01', NULL, 1, 1, 1, NULL, NULL, 0, 27, 1, 1, false, 14);
2743INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (28, 22, 12, 14);2743INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (28, 22, 12, 14, 9, 0, 3, true, '2007-08-10 00:00:00', '2007-08-10 00:00:00', '2007-08-10 00:00:13', NULL, 1, 1, 1, NULL, NULL, 0, 28, 1, 1, false, 1);
2744INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (29, 23, 8, 36);2744INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (29, 23, 8, 36, 12, 0, 1, false, '2007-08-09 21:54:18.553132', '2007-08-09 23:49:59', '2007-08-09 23:59:59', NULL, NULL, 1, NULL, NULL, NULL, 0, 29, 1, 10, true, 27);
2745INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (30, 24, 12, 14);2745INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (30, 24, 12, 14, 1, 0, 3, false, '2007-08-10 00:00:01', '2007-08-10 00:00:01', '2007-08-10 00:00:14', NULL, 1, 1, 1, NULL, NULL, 0, 30, 1, 1, true, 1);
27462746
27472747
2748ALTER TABLE binarypackagebuild ENABLE TRIGGER ALL;2748ALTER TABLE binarypackagebuild ENABLE TRIGGER ALL;
27492749
=== modified file 'database/sampledata/current.sql'
--- database/sampledata/current.sql 2013-01-17 11:57:53 +0000
+++ database/sampledata/current.sql 2013-02-01 03:49:23 +0000
@@ -2459,30 +2459,30 @@
24592459
2460ALTER TABLE buildfarmjob DISABLE TRIGGER ALL;2460ALTER TABLE buildfarmjob DISABLE TRIGGER ALL;
24612461
2462INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (2, 1, false, '2004-09-27 11:57:13', '2004-09-27 11:55:13', '2004-09-27 11:57:14', NULL, 1, 1, 1, 1, 0);2462INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (2, 1, false, '2004-09-27 11:57:13', '2004-09-27 11:55:13', '2004-09-27 11:57:14', NULL, 1, 1, 1, 1, 0, 1);
2463INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (6, 1, false, '2006-12-01 00:00:00', '2006-12-01 00:00:00', '2006-12-01 00:00:01', NULL, 1, 2, 1, 1, 0);2463INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (6, 1, false, '2006-12-01 00:00:00', '2006-12-01 00:00:00', '2006-12-01 00:00:01', NULL, 1, 2, 1, 1, 0, 1);
2464INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (7, 1, false, '2005-03-24 00:00:00', '2005-03-24 23:58:43', '2005-03-25 00:00:03', NULL, 1, 1, 1, 1, 0);2464INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (7, 1, false, '2005-03-24 00:00:00', '2005-03-24 23:58:43', '2005-03-25 00:00:03', NULL, 1, 1, 1, 1, 0, 1);
2465INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (8, 1, false, '2005-09-30 00:00:00', NULL, NULL, NULL, NULL, 6, NULL, 1, 0);2465INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (8, 1, false, '2005-09-30 00:00:00', NULL, NULL, NULL, NULL, 6, NULL, 1, 0, 1);
2466INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (9, 1, false, '2005-10-01 00:00:00', '2005-10-01 23:56:41', '2005-10-02 00:00:01', NULL, 1, 2, 1, 1, 0);2466INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (9, 1, false, '2005-10-01 00:00:00', '2005-10-01 23:56:41', '2005-10-02 00:00:01', NULL, 1, 2, 1, 1, 0, 1);
2467INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (10, 1, false, '2006-01-27 00:00:00', NULL, NULL, NULL, NULL, 1, NULL, 1, 0);2467INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (10, 1, false, '2006-01-27 00:00:00', NULL, NULL, NULL, NULL, 1, NULL, 1, 0, 1);
2468INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (11, 1, false, '2006-02-14 00:00:00', NULL, NULL, NULL, NULL, 0, NULL, 1, 0);2468INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (11, 1, false, '2006-02-14 00:00:00', NULL, NULL, NULL, NULL, 0, NULL, 1, 0, 1);
2469INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (12, 1, false, '2006-02-28 00:00:00', '2006-02-27 23:53:59', '2006-02-28 00:00:01', NULL, 1, 3, 1, 1, 0);2469INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (12, 1, false, '2006-02-28 00:00:00', '2006-02-27 23:53:59', '2006-02-28 00:00:01', NULL, 1, 3, 1, 1, 0, 1);
2470INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (13, 1, false, '2006-03-21 00:00:00', '2006-03-21 00:58:33', '2006-03-21 01:00:03', NULL, 1, 5, 1, 1, 0);2470INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (13, 1, false, '2006-03-21 00:00:00', '2006-03-21 00:58:33', '2006-03-21 01:00:03', NULL, 1, 5, 1, 1, 0, 1);
2471INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (14, 1, false, '2006-03-22 00:00:00', '2006-03-21 00:58:32', '2006-03-21 01:00:02', NULL, 1, 5, 1, 1, 0);2471INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (14, 1, false, '2006-03-22 00:00:00', '2006-03-21 00:58:32', '2006-03-21 01:00:02', NULL, 1, 5, 1, 1, 0, 1);
2472INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (15, 1, false, '2006-03-22 00:00:01', '2006-03-21 00:58:30', '2006-03-21 01:00:00', NULL, 1, 5, 1, 1, 0);2472INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (15, 1, false, '2006-03-22 00:00:01', '2006-03-21 00:58:30', '2006-03-21 01:00:00', NULL, 1, 5, 1, 1, 0, 1);
2473INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (16, 1, false, '2005-03-24 00:00:01', '2005-03-24 23:58:42', '2005-03-25 00:00:02', NULL, 1, 1, 1, 1, 0);2473INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (16, 1, false, '2005-03-24 00:00:01', '2005-03-24 23:58:42', '2005-03-25 00:00:02', NULL, 1, 1, 1, 1, 0, 1);
2474INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (18, 1, false, '2004-09-27 11:57:14', '2004-09-27 11:55:12', '2004-09-27 11:57:13', NULL, 1, 1, 1, 1, 0);2474INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (18, 1, false, '2004-09-27 11:57:14', '2004-09-27 11:55:12', '2004-09-27 11:57:13', NULL, 1, 1, 1, 1, 0, 1);
2475INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (19, 1, false, '2005-03-24 00:00:02', '2005-03-24 23:58:41', '2005-03-25 00:00:01', NULL, 1, 1, 1, 1, 0);2475INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (19, 1, false, '2005-03-24 00:00:02', '2005-03-24 23:58:41', '2005-03-25 00:00:01', NULL, 1, 1, 1, 1, 0, 1);
2476INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (21, 1, false, '2006-12-01 00:00:01', NULL, NULL, NULL, NULL, 2, NULL, 1, 0);2476INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (21, 1, false, '2006-12-01 00:00:01', NULL, NULL, NULL, NULL, 2, NULL, 1, 0, 1);
2477INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (22, 1, false, '2007-04-20 00:00:00', '2007-04-19 23:58:41', '2007-04-20 00:00:01', NULL, 1, 7, 1, 1, 0);2477INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (22, 1, false, '2007-04-20 00:00:00', '2007-04-19 23:58:41', '2007-04-20 00:00:01', NULL, 1, 7, 1, 1, 0, 1);
2478INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (23, 1, false, '2006-04-11 12:00:00', NULL, NULL, NULL, NULL, 1, NULL, 1, 0);2478INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (23, 1, false, '2006-04-11 12:00:00', NULL, NULL, NULL, NULL, 1, NULL, 1, 0, 1);
2479INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (24, 1, true, '2007-05-30 00:00:00', '2007-05-29 23:58:41', '2007-05-30 00:00:01', NULL, 1, 2, 1, 1, 0);2479INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (24, 1, true, '2007-05-30 00:00:00', '2007-05-29 23:58:41', '2007-05-30 00:00:01', NULL, 1, 2, 1, 1, 0, 11);
2480INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (25, 1, true, '2007-07-08 12:00:00', NULL, NULL, NULL, NULL, 1, NULL, 1, 0);2480INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (25, 1, true, '2007-07-08 12:00:00', NULL, NULL, NULL, NULL, 1, NULL, 1, 0, 9);
2481INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (26, 1, true, '2007-07-08 00:00:00', '2007-07-07 23:58:41', '2007-07-08 00:00:01', NULL, 1, 2, 1, 1, 0);2481INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (26, 1, true, '2007-07-08 00:00:00', '2007-07-07 23:58:41', '2007-07-08 00:00:01', NULL, 1, 2, 1, 1, 0, 9);
2482INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (27, 1, true, '2007-07-24 00:00:00', '2007-07-23 23:58:41', '2007-07-24 00:00:01', NULL, 1, 1, 1, 1, 0);2482INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (27, 1, true, '2007-07-24 00:00:00', '2007-07-23 23:58:41', '2007-07-24 00:00:01', NULL, 1, 1, 1, 1, 0, 9);
2483INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (28, 3, true, '2007-08-10 00:00:00', '2007-08-10 00:00:00', '2007-08-10 00:00:13', NULL, 1, 1, 1, 1, 0);2483INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (28, 3, true, '2007-08-10 00:00:00', '2007-08-10 00:00:00', '2007-08-10 00:00:13', NULL, 1, 1, 1, 1, 0, 9);
2484INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (29, 1, false, '2007-08-09 21:54:18.553132', '2007-08-09 23:49:59', '2007-08-09 23:59:59', NULL, NULL, 1, NULL, 1, 0);2484INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (29, 1, false, '2007-08-09 21:54:18.553132', '2007-08-09 23:49:59', '2007-08-09 23:59:59', NULL, NULL, 1, NULL, 1, 0, 12);
2485INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count) VALUES (30, 3, false, '2007-08-10 00:00:01', '2007-08-10 00:00:01', '2007-08-10 00:00:14', NULL, 1, 1, 1, 1, 0);2485INSERT INTO buildfarmjob (id, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, job_type, failure_count, archive) VALUES (30, 3, false, '2007-08-10 00:00:01', '2007-08-10 00:00:01', '2007-08-10 00:00:14', NULL, 1, 1, 1, 1, 0, 1);
24862486
24872487
2488ALTER TABLE buildfarmjob ENABLE TRIGGER ALL;2488ALTER TABLE buildfarmjob ENABLE TRIGGER ALL;
@@ -2656,30 +2656,30 @@
26562656
2657ALTER TABLE binarypackagebuild DISABLE TRIGGER ALL;2657ALTER TABLE binarypackagebuild DISABLE TRIGGER ALL;
26582658
2659INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (2, 1, 1, 14);2659INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (2, 1, 1, 14, 1, 0, 1, false, '2004-09-27 11:57:13', '2004-09-27 11:55:13', '2004-09-27 11:57:14', NULL, 1, 1, 1, NULL, NULL, 0, 2, 1, 1, true, 1);
2660INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (6, 2, 1, 32);2660INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (6, 2, 1, 32, 1, 0, 1, false, '2006-12-01 00:00:00', '2006-12-01 00:00:00', '2006-12-01 00:00:01', NULL, 1, 2, 1, NULL, NULL, 0, 6, 1, 1, true, 23);
2661INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (7, 3, 6, 20);2661INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (7, 3, 6, 20, 1, 0, 1, false, '2005-03-24 00:00:00', '2005-03-24 23:58:43', '2005-03-25 00:00:03', NULL, 1, 1, 1, NULL, NULL, 0, 7, 1, 3, true, 14);
2662INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (8, 4, 6, 14);2662INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (8, 4, 6, 14, 1, 0, 1, false, '2005-09-30 00:00:00', NULL, NULL, NULL, NULL, 6, NULL, NULL, NULL, 0, 8, 1, 3, true, 1);
2663INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (9, 5, 1, 20);2663INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (9, 5, 1, 20, 1, 0, 1, false, '2005-10-01 00:00:00', '2005-10-01 23:56:41', '2005-10-02 00:00:01', NULL, 1, 2, 1, NULL, NULL, 0, 9, 1, 1, true, 14);
2664INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (10, 6, 1, 26);2664INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (10, 6, 1, 26, 1, 0, 1, false, '2006-01-27 00:00:00', NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, 0, 10, 1, 1, true, 20);
2665INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (11, 7, 6, 25);2665INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (11, 7, 6, 25, 1, 0, 1, false, '2006-02-14 00:00:00', NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, 0, 11, 1, 3, true, 19);
2666INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (12, 8, 6, 27);2666INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (12, 8, 6, 27, 1, 0, 1, false, '2006-02-28 00:00:00', '2006-02-27 23:53:59', '2006-02-28 00:00:01', NULL, 1, 3, 1, NULL, 'cpp (>= 4:4.0.1-3), gcc-4.0 (>= 4.0.1-2)', 0, 12, 1, 3, true, 21);
2667INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (13, 9, 1, 17);2667INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (13, 9, 1, 17, 1, 0, 1, false, '2006-03-21 00:00:00', '2006-03-21 00:58:33', '2006-03-21 01:00:03', NULL, 1, 5, 1, NULL, NULL, 0, 13, 1, 1, true, 10);
2668INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (14, 10, 1, 28);2668INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (14, 10, 1, 28, 1, 0, 1, false, '2006-03-22 00:00:00', '2006-03-21 00:58:32', '2006-03-21 01:00:02', NULL, 1, 5, 1, NULL, NULL, 0, 14, 1, 1, true, 22);
2669INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (15, 11, 1, 29);2669INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (15, 11, 1, 29, 1, 0, 1, false, '2006-03-22 00:00:01', '2006-03-21 00:58:30', '2006-03-21 01:00:00', NULL, 1, 5, 1, NULL, NULL, 0, 15, 1, 1, true, 17);
2670INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (16, 12, 11, 20);2670INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (16, 12, 11, 20, 1, 0, 1, false, '2005-03-24 00:00:01', '2005-03-24 23:58:42', '2005-03-25 00:00:02', NULL, 1, 1, 1, NULL, NULL, 0, 16, 1, 3, true, 14);
2671INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (18, 13, 8, 14);2671INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (18, 13, 8, 14, 1, 0, 1, false, '2004-09-27 11:57:14', '2004-09-27 11:55:12', '2004-09-27 11:57:13', NULL, 1, 1, 1, NULL, NULL, 0, 18, 1, 10, true, 1);
2672INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (19, 14, 8, 20);2672INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (19, 14, 8, 20, 1, 0, 1, false, '2005-03-24 00:00:02', '2005-03-24 23:58:41', '2005-03-25 00:00:01', NULL, 1, 1, 1, NULL, NULL, 0, 19, 1, 10, true, 14);
2673INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (21, 15, 1, 33);2673INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (21, 15, 1, 33, 1, 0, 1, false, '2006-12-01 00:00:01', NULL, NULL, NULL, NULL, 2, NULL, NULL, NULL, 0, 21, 1, 1, true, 24);
2674INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (22, 16, 8, 33);2674INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (22, 16, 8, 33, 1, 0, 1, false, '2007-04-20 00:00:00', '2007-04-19 23:58:41', '2007-04-20 00:00:01', NULL, 1, 7, 1, 91, NULL, 0, 22, 1, 10, true, 24);
2675INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (23, 17, 1, 35);2675INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (23, 17, 1, 35, 1, 0, 1, false, '2006-04-11 12:00:00', NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, 0, 23, 1, 1, true, 26);
2676INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (24, 18, 1, 33);2676INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (24, 18, 1, 33, 11, 0, 1, true, '2007-05-30 00:00:00', '2007-05-29 23:58:41', '2007-05-30 00:00:01', NULL, 1, 2, 1, NULL, NULL, 0, 24, 1, 1, false, 24);
2677INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (25, 19, 1, 35);2677INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (25, 19, 1, 35, 9, 0, 1, true, '2007-07-08 12:00:00', NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, 0, 25, 1, 1, false, 26);
2678INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (26, 20, 8, 33);2678INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (26, 20, 8, 33, 9, 0, 1, true, '2007-07-08 00:00:00', '2007-07-07 23:58:41', '2007-07-08 00:00:01', NULL, 1, 2, 1, NULL, NULL, 0, 26, 1, 10, false, 24);
2679INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (27, 21, 1, 20);2679INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (27, 21, 1, 20, 9, 0, 1, true, '2007-07-24 00:00:00', '2007-07-23 23:58:41', '2007-07-24 00:00:01', NULL, 1, 1, 1, NULL, NULL, 0, 27, 1, 1, false, 14);
2680INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (28, 22, 12, 14);2680INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (28, 22, 12, 14, 9, 0, 3, true, '2007-08-10 00:00:00', '2007-08-10 00:00:00', '2007-08-10 00:00:13', NULL, 1, 1, 1, NULL, NULL, 0, 28, 1, 1, false, 1);
2681INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (29, 23, 8, 36);2681INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (29, 23, 8, 36, 12, 0, 1, false, '2007-08-09 21:54:18.553132', '2007-08-09 23:49:59', '2007-08-09 23:59:59', NULL, NULL, 1, NULL, NULL, NULL, 0, 29, 1, 10, true, 27);
2682INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release) VALUES (30, 24, 12, 14);2682INSERT INTO binarypackagebuild (id, package_build, distro_arch_series, source_package_release, archive, pocket, processor, virtualized, date_created, date_started, date_finished, date_first_dispatched, builder, status, log, upload_log, dependencies, failure_count, build_farm_job, distribution, distro_series, is_distro_archive, source_package_name) VALUES (30, 24, 12, 14, 1, 0, 3, false, '2007-08-10 00:00:01', '2007-08-10 00:00:01', '2007-08-10 00:00:14', NULL, 1, 1, 1, NULL, NULL, 0, 30, 1, 1, true, 1);
26832683
26842684
2685ALTER TABLE binarypackagebuild ENABLE TRIGGER ALL;2685ALTER TABLE binarypackagebuild ENABLE TRIGGER ALL;
26862686
=== modified file 'database/schema/security.cfg'
--- database/schema/security.cfg 2013-02-01 03:49:23 +0000
+++ database/schema/security.cfg 2013-02-01 03:49:23 +0000
@@ -2218,7 +2218,6 @@
2218public.answercontact = SELECT, DELETE2218public.answercontact = SELECT, DELETE
2219public.branch = SELECT, UPDATE2219public.branch = SELECT, UPDATE
2220public.branchjob = SELECT, DELETE2220public.branchjob = SELECT, DELETE
2221public.binarypackagebuild = SELECT, UPDATE
2222public.binarypackagename = SELECT2221public.binarypackagename = SELECT
2223public.binarypackagerelease = SELECT2222public.binarypackagerelease = SELECT
2224public.binarypackagepublishinghistory = SELECT, UPDATE2223public.binarypackagepublishinghistory = SELECT, UPDATE
@@ -2241,7 +2240,6 @@
2241public.bugtaskflat = SELECT2240public.bugtaskflat = SELECT
2242public.bugwatch = SELECT, UPDATE2241public.bugwatch = SELECT, UPDATE
2243public.bugwatchactivity = SELECT, DELETE2242public.bugwatchactivity = SELECT, DELETE
2244public.buildfarmjob = SELECT, UPDATE
2245public.codeimportevent = SELECT, DELETE2243public.codeimportevent = SELECT, DELETE
2246public.codeimporteventdata = SELECT, DELETE2244public.codeimporteventdata = SELECT, DELETE
2247public.codeimportresult = SELECT, DELETE2245public.codeimportresult = SELECT, DELETE
@@ -2265,7 +2263,6 @@
2265public.revisionauthor = SELECT, UPDATE2263public.revisionauthor = SELECT, UPDATE
2266public.revisioncache = SELECT, DELETE2264public.revisioncache = SELECT, DELETE
2267public.sourcepackagename = SELECT2265public.sourcepackagename = SELECT
2268public.sourcepackagerecipebuild = SELECT, UPDATE
2269public.sourcepackagerelease = SELECT2266public.sourcepackagerelease = SELECT
2270public.sourcepackagepublishinghistory = SELECT, UPDATE2267public.sourcepackagepublishinghistory = SELECT, UPDATE
2271public.suggestivepotemplate = INSERT, DELETE2268public.suggestivepotemplate = INSERT, DELETE
@@ -2273,7 +2270,6 @@
2273public.teamparticipation = SELECT, DELETE2270public.teamparticipation = SELECT, DELETE
2274public.translationmessage = SELECT, DELETE2271public.translationmessage = SELECT, DELETE
2275public.translationtemplateitem = SELECT, DELETE2272public.translationtemplateitem = SELECT, DELETE
2276public.translationtemplatesbuild = SELECT, UPDATE
2277type=user2273type=user
22782274
2279[garbo_daily]2275[garbo_daily]
22802276
=== modified file 'lib/lp/buildmaster/interfaces/buildfarmjob.py'
--- lib/lp/buildmaster/interfaces/buildfarmjob.py 2013-01-22 08:31:09 +0000
+++ lib/lp/buildmaster/interfaces/buildfarmjob.py 2013-02-01 03:49:23 +0000
@@ -179,6 +179,8 @@
179179
180 id = Attribute('The build farm job ID.')180 id = Attribute('The build farm job ID.')
181181
182 build_farm_job = Attribute('Generic build farm job record')
183
182 processor = Reference(184 processor = Reference(
183 IProcessor, title=_("Processor"), required=False, readonly=True,185 IProcessor, title=_("Processor"), required=False, readonly=True,
184 description=_(186 description=_(
185187
=== modified file 'lib/lp/buildmaster/interfaces/packagebuild.py'
--- lib/lp/buildmaster/interfaces/packagebuild.py 2013-02-01 03:49:23 +0000
+++ lib/lp/buildmaster/interfaces/packagebuild.py 2013-02-01 03:49:23 +0000
@@ -72,10 +72,6 @@
72 description=_("A URL for failed upload logs."72 description=_("A URL for failed upload logs."
73 "Will be None if there was no failure.")))73 "Will be None if there was no failure.")))
7474
75 build_farm_job = Reference(
76 title=_('Build farm job'), schema=IBuildFarmJob, required=True,
77 readonly=True, description=_('The base build farm job.'))
78
79 current_component = Attribute(75 current_component = Attribute(
80 'Component where the source related to this build was last '76 'Component where the source related to this build was last '
81 'published.')77 'published.')
8278
=== modified file 'lib/lp/buildmaster/model/buildfarmjob.py'
--- lib/lp/buildmaster/model/buildfarmjob.py 2013-02-01 03:49:23 +0000
+++ lib/lp/buildmaster/model/buildfarmjob.py 2013-02-01 03:49:23 +0000
@@ -199,8 +199,6 @@
199 archive_id = Int(name='archive')199 archive_id = Int(name='archive')
200 archive = Reference(archive_id, 'Archive.id')200 archive = Reference(archive_id, 'Archive.id')
201201
202 dependencies = None
203
204 def __init__(self, job_type, status=BuildStatus.NEEDSBUILD,202 def __init__(self, job_type, status=BuildStatus.NEEDSBUILD,
205 processor=None, virtualized=None, date_created=None,203 processor=None, virtualized=None, date_created=None,
206 builder=None, archive=None):204 builder=None, archive=None):
@@ -227,51 +225,47 @@
227225
228 @property226 @property
229 def processor(self):227 def processor(self):
230 return self.build_farm_job.processor228 return self._new_processor
231229
232 @property230 @property
233 def virtualized(self):231 def virtualized(self):
234 return self.build_farm_job.virtualized232 return self._new_virtualized
235233
236 @property234 @property
237 def date_created(self):235 def date_created(self):
238 return self.build_farm_job.date_created236 return self._new_date_created
239237
240 @property238 @property
241 def date_started(self):239 def date_started(self):
242 return self.build_farm_job.date_started240 return self._new_date_started
243241
244 @property242 @property
245 def date_finished(self):243 def date_finished(self):
246 return self.build_farm_job.date_finished244 return self._new_date_finished
247245
248 @property246 @property
249 def date_first_dispatched(self):247 def date_first_dispatched(self):
250 return self.build_farm_job.date_first_dispatched248 return self._new_date_first_dispatched
251249
252 @property250 @property
253 def builder(self):251 def builder(self):
254 return self.build_farm_job.builder252 return self._new_builder
255253
256 @property254 @property
257 def status(self):255 def status(self):
258 return self.build_farm_job.status256 return self._new_status
259257
260 @property258 @property
261 def log(self):259 def log(self):
262 return self.build_farm_job.log260 return self._new_log
263
264 @property
265 def job_type(self):
266 return self.build_farm_job.job_type
267261
268 @property262 @property
269 def failure_count(self):263 def failure_count(self):
270 return self.build_farm_job.failure_count264 return self._new_failure_count
271265
272 @property266 @property
273 def dependencies(self):267 def dependencies(self):
274 return self.build_farm_job.dependencies268 return None
275269
276 @property270 @property
277 def title(self):271 def title(self):
278272
=== modified file 'lib/lp/buildmaster/model/packagebuild.py'
--- lib/lp/buildmaster/model/packagebuild.py 2013-02-01 03:49:23 +0000
+++ lib/lp/buildmaster/model/packagebuild.py 2013-02-01 03:49:23 +0000
@@ -110,24 +110,20 @@
110class PackageBuildMixin(BuildFarmJobMixin):110class PackageBuildMixin(BuildFarmJobMixin):
111111
112 @property112 @property
113 def build_farm_job(self):
114 return self.package_build.build_farm_job
115
116 @property
117 def archive(self):113 def archive(self):
118 return self.package_build.archive114 return self._new_archive
119115
120 @property116 @property
121 def pocket(self):117 def pocket(self):
122 return self.package_build.pocket118 return self._new_pocket
123119
124 @property120 @property
125 def upload_log(self):121 def upload_log(self):
126 return self.package_build.upload_log122 return self._new_upload_log
127123
128 @property124 @property
129 def dependencies(self):125 def dependencies(self):
130 return self.package_build.dependencies126 return self._new_dependencies
131127
132 @property128 @property
133 def current_component(self):129 def current_component(self):
134130
=== modified file 'lib/lp/code/model/sourcepackagerecipe.py'
--- lib/lp/code/model/sourcepackagerecipe.py 2012-09-05 05:08:26 +0000
+++ lib/lp/code/model/sourcepackagerecipe.py 2013-02-01 03:49:23 +0000
@@ -17,8 +17,7 @@
17from pytz import utc17from pytz import utc
18from storm.expr import (18from storm.expr import (
19 And,19 And,
20 Join,20 LeftJoin,
21 RightJoin,
22 )21 )
23from storm.locals import (22from storm.locals import (
24 Bool,23 Bool,
@@ -37,8 +36,6 @@
37 )36 )
3837
39from lp.buildmaster.enums import BuildStatus38from lp.buildmaster.enums import BuildStatus
40from lp.buildmaster.model.buildfarmjob import BuildFarmJob
41from lp.buildmaster.model.packagebuild import PackageBuild
42from lp.code.errors import (39from lp.code.errors import (
43 BuildAlreadyPending,40 BuildAlreadyPending,
44 BuildNotAllowedForDistro,41 BuildNotAllowedForDistro,
@@ -215,24 +212,25 @@
215 store.add(sprecipe)212 store.add(sprecipe)
216 return sprecipe213 return sprecipe
217214
218 @classmethod215 @staticmethod
219 def findStaleDailyBuilds(cls):216 def findStaleDailyBuilds():
220 one_day_ago = datetime.now(utc) - timedelta(hours=23, minutes=50)217 one_day_ago = datetime.now(utc) - timedelta(hours=23, minutes=50)
221 joins = RightJoin(218 joins = (
222 Join(219 SourcePackageRecipe,
223 Join(SourcePackageRecipeBuild, PackageBuild,220 LeftJoin(
224 PackageBuild.id ==221 SourcePackageRecipeBuild,
225 SourcePackageRecipeBuild.package_build_id),222 And(SourcePackageRecipeBuild.recipe_id ==
226 BuildFarmJob,223 SourcePackageRecipe.id,
227 And(BuildFarmJob.id == PackageBuild.build_farm_job_id,224 SourcePackageRecipeBuild._new_archive_id ==
228 BuildFarmJob.date_created > one_day_ago)),225 SourcePackageRecipe.daily_build_archive_id,
229 SourcePackageRecipe,226 SourcePackageRecipeBuild._new_date_created > one_day_ago)),
230 And(SourcePackageRecipeBuild.recipe == SourcePackageRecipe.id,227 )
231 SourcePackageRecipe.daily_build_archive_id ==228 return IStore(SourcePackageRecipe).using(*joins).find(
232 PackageBuild.archive_id))229 SourcePackageRecipe,
233 return IStore(cls).using(joins).find(230 SourcePackageRecipe.is_stale == True,
234 cls, cls.is_stale == True, cls.build_daily == True,231 SourcePackageRecipe.build_daily == True,
235 BuildFarmJob.date_created == None).config(distinct=True)232 SourcePackageRecipeBuild._new_date_created == None,
233 ).config(distinct=True)
236234
237 @staticmethod235 @staticmethod
238 def exists(owner, name):236 def exists(owner, name):
@@ -288,10 +286,8 @@
288 pending = IStore(self).find(SourcePackageRecipeBuild,286 pending = IStore(self).find(SourcePackageRecipeBuild,
289 SourcePackageRecipeBuild.recipe_id == self.id,287 SourcePackageRecipeBuild.recipe_id == self.id,
290 SourcePackageRecipeBuild.distroseries_id == distroseries.id,288 SourcePackageRecipeBuild.distroseries_id == distroseries.id,
291 PackageBuild.archive_id == archive.id,289 SourcePackageRecipeBuild._new_archive_id == archive.id,
292 PackageBuild.id == SourcePackageRecipeBuild.package_build_id,290 SourcePackageRecipeBuild._new_status == BuildStatus.NEEDSBUILD)
293 BuildFarmJob.id == PackageBuild.build_farm_job_id,
294 BuildFarmJob.status == BuildStatus.NEEDSBUILD)
295 if pending.any() is not None:291 if pending.any() is not None:
296 raise BuildAlreadyPending(self, distroseries)292 raise BuildAlreadyPending(self, distroseries)
297293
@@ -323,39 +319,42 @@
323 @property319 @property
324 def builds(self):320 def builds(self):
325 """See `ISourcePackageRecipe`."""321 """See `ISourcePackageRecipe`."""
326 order_by = (Desc(Greatest(322 order_by = (
327 BuildFarmJob.date_started,323 Desc(Greatest(
328 BuildFarmJob.date_finished)),324 SourcePackageRecipeBuild._new_date_started,
329 Desc(BuildFarmJob.date_created), Desc(BuildFarmJob.id))325 SourcePackageRecipeBuild._new_date_finished)),
326 Desc(SourcePackageRecipeBuild._new_date_created),
327 Desc(SourcePackageRecipeBuild.id))
330 return self._getBuilds(None, order_by)328 return self._getBuilds(None, order_by)
331329
332 @property330 @property
333 def completed_builds(self):331 def completed_builds(self):
334 """See `ISourcePackageRecipe`."""332 """See `ISourcePackageRecipe`."""
335 filter_term = BuildFarmJob.status != BuildStatus.NEEDSBUILD333 filter_term = (
336 order_by = (Desc(Greatest(334 SourcePackageRecipeBuild._new_status != BuildStatus.NEEDSBUILD)
337 BuildFarmJob.date_started,335 order_by = (
338 BuildFarmJob.date_finished)),336 Desc(Greatest(
339 Desc(BuildFarmJob.id))337 SourcePackageRecipeBuild._new_date_started,
338 SourcePackageRecipeBuild._new_date_finished)),
339 Desc(SourcePackageRecipeBuild.id))
340 return self._getBuilds(filter_term, order_by)340 return self._getBuilds(filter_term, order_by)
341341
342 @property342 @property
343 def pending_builds(self):343 def pending_builds(self):
344 """See `ISourcePackageRecipe`."""344 """See `ISourcePackageRecipe`."""
345 filter_term = BuildFarmJob.status == BuildStatus.NEEDSBUILD345 filter_term = (
346 SourcePackageRecipeBuild._new_status == BuildStatus.NEEDSBUILD)
346 # We want to order by date_created but this is the same as ordering347 # We want to order by date_created but this is the same as ordering
347 # by id (since id increases monotonically) and is less expensive.348 # by id (since id increases monotonically) and is less expensive.
348 order_by = Desc(BuildFarmJob.id)349 order_by = Desc(SourcePackageRecipeBuild.id)
349 return self._getBuilds(filter_term, order_by)350 return self._getBuilds(filter_term, order_by)
350351
351 def _getBuilds(self, filter_term, order_by):352 def _getBuilds(self, filter_term, order_by):
352 """The actual query to get the builds."""353 """The actual query to get the builds."""
353 query_args = [354 query_args = [
354 SourcePackageRecipeBuild.recipe == self,355 SourcePackageRecipeBuild.recipe == self,
355 SourcePackageRecipeBuild.package_build_id == PackageBuild.id,356 SourcePackageRecipeBuild._new_archive_id == Archive.id,
356 PackageBuild.build_farm_job_id == BuildFarmJob.id,357 Archive._enabled == True,
357 And(PackageBuild.archive_id == Archive.id,
358 Archive._enabled == True),
359 ]358 ]
360 if filter_term is not None:359 if filter_term is not None:
361 query_args.append(filter_term)360 query_args.append(filter_term)
@@ -378,19 +377,17 @@
378 def last_build(self):377 def last_build(self):
379 """See `ISourcePackageRecipeBuild`."""378 """See `ISourcePackageRecipeBuild`."""
380 return self._getBuilds(379 return self._getBuilds(
381 True, Desc(BuildFarmJob.date_finished)).first()380 True, Desc(SourcePackageRecipeBuild._new_date_finished)).first()
382381
383 def getMedianBuildDuration(self):382 def getMedianBuildDuration(self):
384 """Return the median duration of builds of this recipe."""383 """Return the median duration of builds of this recipe."""
385 store = IStore(self)384 store = IStore(self)
386 result = store.find(385 result = store.find(
387 BuildFarmJob,386 SourcePackageRecipeBuild,
388 SourcePackageRecipeBuild.recipe == self.id,387 SourcePackageRecipeBuild.recipe == self.id,
389 BuildFarmJob.date_finished != None,388 SourcePackageRecipeBuild._new_date_finished != None)
390 BuildFarmJob.id == PackageBuild.build_farm_job_id,389 durations = [
391 SourcePackageRecipeBuild.package_build_id == PackageBuild.id)390 build.date_finished - build.date_started for build in result]
392 durations = [build.date_finished - build.date_started for build in
393 result]
394 if len(durations) == 0:391 if len(durations) == 0:
395 return None392 return None
396 durations.sort(reverse=True)393 durations.sort(reverse=True)
397394
=== modified file 'lib/lp/code/model/sourcepackagerecipebuild.py'
--- lib/lp/code/model/sourcepackagerecipebuild.py 2013-02-01 03:49:23 +0000
+++ lib/lp/code/model/sourcepackagerecipebuild.py 2013-02-01 03:49:23 +0000
@@ -93,6 +93,7 @@
93 package_build = Reference(package_build_id, 'PackageBuild.id')93 package_build = Reference(package_build_id, 'PackageBuild.id')
9494
95 build_farm_job_type = BuildFarmJobType.RECIPEBRANCHBUILD95 build_farm_job_type = BuildFarmJobType.RECIPEBRANCHBUILD
96 job_type = build_farm_job_type
9697
97 id = Int(primary=True)98 id = Int(primary=True)
9899
@@ -150,8 +151,8 @@
150 requester = Reference(requester_id, 'Person.id')151 requester = Reference(requester_id, 'Person.id')
151152
152 # Migrating from PackageBuild153 # Migrating from PackageBuild
153 _new_build_farm_job_id = Int(name='build_farm_job')154 build_farm_job_id = Int(name='build_farm_job')
154 _new_build_farm_job = Reference(_new_build_farm_job_id, BuildFarmJob.id)155 build_farm_job = Reference(build_farm_job_id, BuildFarmJob.id)
155156
156 _new_archive_id = Int(name='archive')157 _new_archive_id = Int(name='archive')
157 _new_archive = Reference(_new_archive_id, 'Archive.id')158 _new_archive = Reference(_new_archive_id, 'Archive.id')
@@ -216,7 +217,7 @@
216 requester, archive, pocket, date_created):217 requester, archive, pocket, date_created):
217 """Construct a SourcePackageRecipeBuild."""218 """Construct a SourcePackageRecipeBuild."""
218 super(SourcePackageRecipeBuild, self).__init__()219 super(SourcePackageRecipeBuild, self).__init__()
219 self._new_build_farm_job = build_farm_job220 self.build_farm_job = build_farm_job
220 self.package_build = package_build221 self.package_build = package_build
221 self.distroseries = distroseries222 self.distroseries = distroseries
222 self.recipe = recipe223 self.recipe = recipe
@@ -365,16 +366,13 @@
365366
366 @classmethod367 @classmethod
367 def getRecentBuilds(cls, requester, recipe, distroseries, _now=None):368 def getRecentBuilds(cls, requester, recipe, distroseries, _now=None):
368 from lp.buildmaster.model.buildfarmjob import BuildFarmJob
369 if _now is None:369 if _now is None:
370 _now = datetime.now(pytz.UTC)370 _now = datetime.now(pytz.UTC)
371 store = IMasterStore(SourcePackageRecipeBuild)371 store = IMasterStore(SourcePackageRecipeBuild)
372 old_threshold = _now - timedelta(days=1)372 old_threshold = _now - timedelta(days=1)
373 return store.find(cls, cls.distroseries_id == distroseries.id,373 return store.find(cls, cls.distroseries_id == distroseries.id,
374 cls.requester_id == requester.id, cls.recipe_id == recipe.id,374 cls.requester_id == requester.id, cls.recipe_id == recipe.id,
375 BuildFarmJob.date_created > old_threshold,375 cls._new_date_created > old_threshold)
376 BuildFarmJob.id == PackageBuild.build_farm_job_id,
377 PackageBuild.id == cls.package_build_id)
378376
379 def makeJob(self):377 def makeJob(self):
380 """See `ISourcePackageRecipeBuildJob`."""378 """See `ISourcePackageRecipeBuildJob`."""
381379
=== modified file 'lib/lp/registry/model/sourcepackage.py'
--- lib/lp/registry/model/sourcepackage.py 2012-11-26 08:33:03 +0000
+++ lib/lp/registry/model/sourcepackage.py 2013-02-01 03:49:23 +0000
@@ -601,8 +601,8 @@
601 # binary_only parameter as a source package can only have601 # binary_only parameter as a source package can only have
602 # binary builds.602 # binary builds.
603603
604 clauseTables = ['SourcePackageRelease', 'PackageBuild',604 clauseTables = [
605 'SourcePackagePublishingHistory']605 'SourcePackageRelease', 'SourcePackagePublishingHistory']
606606
607 condition_clauses = ["""607 condition_clauses = ["""
608 BinaryPackageBuild.source_package_release =608 BinaryPackageBuild.source_package_release =
@@ -612,7 +612,7 @@
612 SourcePackagePublishingHistory.archive IN %s AND612 SourcePackagePublishingHistory.archive IN %s AND
613 SourcePackagePublishingHistory.sourcepackagerelease =613 SourcePackagePublishingHistory.sourcepackagerelease =
614 SourcePackageRelease.id AND614 SourcePackageRelease.id AND
615 SourcePackagePublishingHistory.archive = PackageBuild.archive615 SourcePackagePublishingHistory.archive = BinaryPackageBuild.archive
616 """ % sqlvalues(self.sourcepackagename,616 """ % sqlvalues(self.sourcepackagename,
617 self.distroseries,617 self.distroseries,
618 list(self.distribution.all_distro_archive_ids))]618 list(self.distribution.all_distro_archive_ids))]
@@ -627,8 +627,8 @@
627 # exclude gina-generated and security (dak-made) builds627 # exclude gina-generated and security (dak-made) builds
628 # buildstate == FULLYBUILT && datebuilt == null628 # buildstate == FULLYBUILT && datebuilt == null
629 condition_clauses.append(629 condition_clauses.append(
630 "NOT (BuildFarmJob.status=%s AND "630 "NOT (BinaryPackageBuild.status=%s AND "
631 " BuildFarmJob.date_finished is NULL)"631 " BinaryPackageBuild.date_finished is NULL)"
632 % sqlvalues(BuildStatus.FULLYBUILT))632 % sqlvalues(BuildStatus.FULLYBUILT))
633633
634 # Ordering according status634 # Ordering according status
@@ -648,9 +648,9 @@
648 clauseTables.append('BuildQueue')648 clauseTables.append('BuildQueue')
649 condition_clauses.append('BuildQueue.job = BuildPackageJob.job')649 condition_clauses.append('BuildQueue.job = BuildPackageJob.job')
650 elif build_state == BuildStatus.SUPERSEDED or build_state is None:650 elif build_state == BuildStatus.SUPERSEDED or build_state is None:
651 orderBy = [Desc("BuildFarmJob.date_created")]651 orderBy = [Desc("BinaryPackageBuild.date_created")]
652 else:652 else:
653 orderBy = [Desc("BuildFarmJob.date_finished")]653 orderBy = [Desc("BinaryPackageBuild.date_finished")]
654654
655 # Fallback to ordering by -id as a tie-breaker.655 # Fallback to ordering by -id as a tie-breaker.
656 orderBy.append(Desc("id"))656 orderBy.append(Desc("id"))
657657
=== modified file 'lib/lp/scripts/garbo.py'
--- lib/lp/scripts/garbo.py 2013-02-01 03:49:23 +0000
+++ lib/lp/scripts/garbo.py 2013-01-17 00:25:48 +0000
@@ -57,8 +57,6 @@
57 BugWatchScheduler,57 BugWatchScheduler,
58 MAX_SAMPLE_SIZE,58 MAX_SAMPLE_SIZE,
59 )59 )
60from lp.buildmaster.model.buildfarmjob import BuildFarmJob
61from lp.buildmaster.model.packagebuild import PackageBuild
62from lp.code.interfaces.revision import IRevisionSet60from lp.code.interfaces.revision import IRevisionSet
63from lp.code.model.codeimportevent import CodeImportEvent61from lp.code.model.codeimportevent import CodeImportEvent
64from lp.code.model.codeimportresult import CodeImportResult62from lp.code.model.codeimportresult import CodeImportResult
@@ -66,10 +64,8 @@
66 RevisionAuthor,64 RevisionAuthor,
67 RevisionCache,65 RevisionCache,
68 )66 )
69from lp.code.model.sourcepackagerecipebuild import SourcePackageRecipeBuild
70from lp.hardwaredb.model.hwdb import HWSubmission67from lp.hardwaredb.model.hwdb import HWSubmission
71from lp.registry.model.commercialsubscription import CommercialSubscription68from lp.registry.model.commercialsubscription import CommercialSubscription
72from lp.registry.model.distroseries import DistroSeries
73from lp.registry.model.person import Person69from lp.registry.model.person import Person
74from lp.registry.model.product import Product70from lp.registry.model.product import Product
75from lp.registry.model.teammembership import TeamMembership71from lp.registry.model.teammembership import TeamMembership
@@ -108,7 +104,6 @@
108from lp.services.librarian.model import TimeLimitedToken104from lp.services.librarian.model import TimeLimitedToken
109from lp.services.log.logger import PrefixFilter105from lp.services.log.logger import PrefixFilter
110from lp.services.looptuner import TunableLoop106from lp.services.looptuner import TunableLoop
111from lp.services.memcache.interfaces import IMemcacheClient
112from lp.services.oauth.model import OAuthNonce107from lp.services.oauth.model import OAuthNonce
113from lp.services.openid.model.openidconsumer import OpenIDConsumerNonce108from lp.services.openid.model.openidconsumer import OpenIDConsumerNonce
114from lp.services.propertycache import cachedproperty109from lp.services.propertycache import cachedproperty
@@ -123,10 +118,7 @@
123 )118 )
124from lp.services.session.model import SessionData119from lp.services.session.model import SessionData
125from lp.services.verification.model.logintoken import LoginToken120from lp.services.verification.model.logintoken import LoginToken
126from lp.soyuz.interfaces.archive import MAIN_ARCHIVE_PURPOSES
127from lp.soyuz.model.archive import Archive121from lp.soyuz.model.archive import Archive
128from lp.soyuz.model.binarypackagebuild import BinaryPackageBuild
129from lp.soyuz.model.distroarchseries import DistroArchSeries
130from lp.soyuz.model.publishing import SourcePackagePublishingHistory122from lp.soyuz.model.publishing import SourcePackagePublishingHistory
131from lp.soyuz.model.reporting import LatestPersonSourcePackageReleaseCache123from lp.soyuz.model.reporting import LatestPersonSourcePackageReleaseCache
132from lp.soyuz.model.sourcepackagerelease import SourcePackageRelease124from lp.soyuz.model.sourcepackagerelease import SourcePackageRelease
@@ -137,9 +129,6 @@
137from lp.translations.model.translationtemplateitem import (129from lp.translations.model.translationtemplateitem import (
138 TranslationTemplateItem,130 TranslationTemplateItem,
139 )131 )
140from lp.translations.model.translationtemplatesbuild import (
141 TranslationTemplatesBuild,
142 )
143from lp.translations.scripts.scrub_pofiletranslator import (132from lp.translations.scripts.scrub_pofiletranslator import (
144 ScrubPOFileTranslator,133 ScrubPOFileTranslator,
145 )134 )
@@ -1346,219 +1335,6 @@
1346 transaction.commit()1335 transaction.commit()
13471336
13481337
1349class BinaryPackageBuildFlattener(TunableLoop):
1350 """Populates the new denormalised columns on BinaryPackageBuild."""
1351
1352 maximum_chunk_size = 5000
1353
1354 def __init__(self, log, abort_time=None):
1355 super(BinaryPackageBuildFlattener, self).__init__(log, abort_time)
1356
1357 self.memcache_key = '%s:bpb-flattener' % config.instance_name
1358 watermark = getUtility(IMemcacheClient).get(self.memcache_key)
1359 self.start_at = watermark or 0
1360 self.store = IMasterStore(BinaryPackageBuild)
1361
1362 def findIDs(self):
1363 return self.store.find(
1364 BinaryPackageBuild.id,
1365 BinaryPackageBuild.id >= self.start_at,
1366 ).order_by(BinaryPackageBuild.id)
1367
1368 def isDone(self):
1369 return (
1370 not getFeatureFlag('soyuz.flatten_bfj.garbo.enabled')
1371 or self.findIDs().is_empty())
1372
1373 def __call__(self, chunk_size):
1374 """See `ITunableLoop`."""
1375 ids = list(self.findIDs()[:chunk_size])
1376 updated_columns = {
1377 BinaryPackageBuild._new_archive_id: PackageBuild.archive_id,
1378 BinaryPackageBuild._new_pocket: PackageBuild.pocket,
1379 BinaryPackageBuild._new_processor_id: BuildFarmJob.processor_id,
1380 BinaryPackageBuild._new_virtualized: BuildFarmJob.virtualized,
1381 BinaryPackageBuild._new_date_created: BuildFarmJob.date_created,
1382 BinaryPackageBuild._new_date_started: BuildFarmJob.date_started,
1383 BinaryPackageBuild._new_date_finished: BuildFarmJob.date_finished,
1384 BinaryPackageBuild._new_date_first_dispatched:
1385 BuildFarmJob.date_first_dispatched,
1386 BinaryPackageBuild._new_builder_id: BuildFarmJob.builder_id,
1387 BinaryPackageBuild._new_status: BuildFarmJob.status,
1388 BinaryPackageBuild._new_log_id: BuildFarmJob.log_id,
1389 BinaryPackageBuild._new_upload_log_id: PackageBuild.upload_log_id,
1390 BinaryPackageBuild._new_dependencies: PackageBuild.dependencies,
1391 BinaryPackageBuild._new_failure_count: BuildFarmJob.failure_count,
1392 BinaryPackageBuild._new_build_farm_job_id: BuildFarmJob.id,
1393 BinaryPackageBuild._new_distribution_id:
1394 DistroSeries.distributionID,
1395 BinaryPackageBuild._new_distro_series_id: DistroSeries.id,
1396 BinaryPackageBuild._new_source_package_name_id:
1397 SourcePackageRelease.sourcepackagenameID,
1398 BinaryPackageBuild._new_is_distro_archive:
1399 Archive.purpose.is_in(MAIN_ARCHIVE_PURPOSES),
1400 }
1401 condition = And(
1402 BinaryPackageBuild.id.is_in(ids),
1403 PackageBuild.id == BinaryPackageBuild.package_build_id,
1404 BuildFarmJob.id == PackageBuild.build_farm_job_id)
1405 extra_condition = And(
1406 condition,
1407 SourcePackageRelease.id ==
1408 BinaryPackageBuild.source_package_release_id,
1409 Archive.id == PackageBuild.archive_id,
1410 DistroArchSeries.id == BinaryPackageBuild.distro_arch_series_id,
1411 DistroSeries.id == DistroArchSeries.distroseriesID)
1412 self.store.execute(
1413 BulkUpdate(
1414 updated_columns, table=BinaryPackageBuild,
1415 values=(
1416 PackageBuild, BuildFarmJob, Archive, DistroArchSeries,
1417 DistroSeries, SourcePackageRelease),
1418 where=And(condition, extra_condition)))
1419 self.store.execute(
1420 BulkUpdate(
1421 {BuildFarmJob.archive_id: PackageBuild.archive_id},
1422 table=BuildFarmJob, values=(PackageBuild, BinaryPackageBuild),
1423 where=condition))
1424 transaction.commit()
1425 self.start_at = ids[-1] + 1
1426 getUtility(IMemcacheClient).set(self.memcache_key, self.start_at)
1427
1428
1429class SourcePackageRecipeBuildFlattener(TunableLoop):
1430 """Populates the new denormalised columns on SourcePackageRecipeBuild."""
1431
1432 maximum_chunk_size = 5000
1433
1434 def __init__(self, log, abort_time=None):
1435 super(SourcePackageRecipeBuildFlattener, self).__init__(
1436 log, abort_time)
1437
1438 self.memcache_key = '%s:sprb-flattener' % config.instance_name
1439 watermark = getUtility(IMemcacheClient).get(self.memcache_key)
1440 self.start_at = watermark or 0
1441 self.store = IMasterStore(SourcePackageRecipeBuild)
1442
1443 def findIDs(self):
1444 return self.store.find(
1445 SourcePackageRecipeBuild.id,
1446 SourcePackageRecipeBuild.id >= self.start_at,
1447 ).order_by(SourcePackageRecipeBuild.id)
1448
1449 def isDone(self):
1450 return (
1451 not getFeatureFlag('soyuz.flatten_bfj.garbo.enabled')
1452 or self.findIDs().is_empty())
1453
1454 def __call__(self, chunk_size):
1455 """See `ITunableLoop`."""
1456 ids = list(self.findIDs()[:chunk_size])
1457 updated_columns = {
1458 SourcePackageRecipeBuild._new_archive_id: PackageBuild.archive_id,
1459 SourcePackageRecipeBuild._new_pocket: PackageBuild.pocket,
1460 SourcePackageRecipeBuild._new_processor_id:
1461 BuildFarmJob.processor_id,
1462 SourcePackageRecipeBuild._new_virtualized:
1463 BuildFarmJob.virtualized,
1464 SourcePackageRecipeBuild._new_date_created:
1465 BuildFarmJob.date_created,
1466 SourcePackageRecipeBuild._new_date_started:
1467 BuildFarmJob.date_started,
1468 SourcePackageRecipeBuild._new_date_finished:
1469 BuildFarmJob.date_finished,
1470 SourcePackageRecipeBuild._new_date_first_dispatched:
1471 BuildFarmJob.date_first_dispatched,
1472 SourcePackageRecipeBuild._new_builder_id: BuildFarmJob.builder_id,
1473 SourcePackageRecipeBuild._new_status: BuildFarmJob.status,
1474 SourcePackageRecipeBuild._new_log_id: BuildFarmJob.log_id,
1475 SourcePackageRecipeBuild._new_upload_log_id:
1476 PackageBuild.upload_log_id,
1477 SourcePackageRecipeBuild._new_dependencies:
1478 PackageBuild.dependencies,
1479 SourcePackageRecipeBuild._new_failure_count:
1480 BuildFarmJob.failure_count,
1481 SourcePackageRecipeBuild._new_build_farm_job_id: BuildFarmJob.id,
1482 }
1483 condition = And(
1484 SourcePackageRecipeBuild.id.is_in(ids),
1485 PackageBuild.id == SourcePackageRecipeBuild.package_build_id,
1486 BuildFarmJob.id == PackageBuild.build_farm_job_id)
1487 self.store.execute(
1488 BulkUpdate(
1489 updated_columns, table=SourcePackageRecipeBuild,
1490 values=(PackageBuild, BuildFarmJob), where=condition))
1491 self.store.execute(
1492 BulkUpdate(
1493 {BuildFarmJob.archive_id: PackageBuild.archive_id},
1494 table=BuildFarmJob,
1495 values=(PackageBuild, SourcePackageRecipeBuild),
1496 where=condition))
1497 transaction.commit()
1498 self.start_at = ids[-1] + 1
1499 getUtility(IMemcacheClient).set(self.memcache_key, self.start_at)
1500
1501
1502class TranslationTemplatesBuildFlattener(TunableLoop):
1503 """Populates the new denormalised columns on TranslationTemplatesBuild."""
1504
1505 maximum_chunk_size = 5000
1506
1507 def __init__(self, log, abort_time=None):
1508 super(TranslationTemplatesBuildFlattener, self).__init__(
1509 log, abort_time)
1510
1511 self.memcache_key = '%s:ttb-flattener' % config.instance_name
1512 watermark = getUtility(IMemcacheClient).get(self.memcache_key)
1513 self.start_at = watermark or 0
1514 self.store = IMasterStore(TranslationTemplatesBuild)
1515
1516 def findIDs(self):
1517 return self.store.find(
1518 TranslationTemplatesBuild.id,
1519 TranslationTemplatesBuild.id >= self.start_at,
1520 ).order_by(TranslationTemplatesBuild.id)
1521
1522 def isDone(self):
1523 return (
1524 not getFeatureFlag('soyuz.flatten_bfj.garbo.enabled')
1525 or self.findIDs().is_empty())
1526
1527 def __call__(self, chunk_size):
1528 """See `ITunableLoop`."""
1529 ids = list(self.findIDs()[:chunk_size])
1530 updated_columns = {
1531 TranslationTemplatesBuild._new_processor_id:
1532 BuildFarmJob.processor_id,
1533 TranslationTemplatesBuild._new_virtualized:
1534 BuildFarmJob.virtualized,
1535 TranslationTemplatesBuild._new_date_created:
1536 BuildFarmJob.date_created,
1537 TranslationTemplatesBuild._new_date_started:
1538 BuildFarmJob.date_started,
1539 TranslationTemplatesBuild._new_date_finished:
1540 BuildFarmJob.date_finished,
1541 TranslationTemplatesBuild._new_date_first_dispatched:
1542 BuildFarmJob.date_first_dispatched,
1543 TranslationTemplatesBuild._new_builder_id: BuildFarmJob.builder_id,
1544 TranslationTemplatesBuild._new_status: BuildFarmJob.status,
1545 TranslationTemplatesBuild._new_log_id: BuildFarmJob.log_id,
1546 TranslationTemplatesBuild._new_failure_count:
1547 BuildFarmJob.failure_count,
1548 }
1549 self.store.execute(
1550 BulkUpdate(
1551 updated_columns, table=TranslationTemplatesBuild,
1552 values=(PackageBuild, BuildFarmJob),
1553 where=And(
1554 TranslationTemplatesBuild.id.is_in(ids),
1555 BuildFarmJob.id ==
1556 TranslationTemplatesBuild.build_farm_job_id)))
1557 transaction.commit()
1558 self.start_at = ids[-1] + 1
1559 getUtility(IMemcacheClient).set(self.memcache_key, self.start_at)
1560
1561
1562class BaseDatabaseGarbageCollector(LaunchpadCronScript):1338class BaseDatabaseGarbageCollector(LaunchpadCronScript):
1563 """Abstract base class to run a collection of TunableLoops."""1339 """Abstract base class to run a collection of TunableLoops."""
1564 script_name = None # Script name for locking and database user. Override.1340 script_name = None # Script name for locking and database user. Override.
@@ -1814,9 +1590,6 @@
1814 UnusedSessionPruner,1590 UnusedSessionPruner,
1815 DuplicateSessionPruner,1591 DuplicateSessionPruner,
1816 BugHeatUpdater,1592 BugHeatUpdater,
1817 BinaryPackageBuildFlattener,
1818 SourcePackageRecipeBuildFlattener,
1819 TranslationTemplatesBuildFlattener,
1820 ]1593 ]
1821 experimental_tunable_loops = []1594 experimental_tunable_loops = []
18221595
18231596
=== modified file 'lib/lp/scripts/tests/test_garbo.py'
--- lib/lp/scripts/tests/test_garbo.py 2013-02-01 03:49:23 +0000
+++ lib/lp/scripts/tests/test_garbo.py 2013-01-17 00:25:48 +0000
@@ -31,7 +31,6 @@
31from testtools.matchers import (31from testtools.matchers import (
32 Equals,32 Equals,
33 GreaterThan,33 GreaterThan,
34 MatchesStructure,
35 )34 )
36import transaction35import transaction
37from zope.component import getUtility36from zope.component import getUtility
@@ -43,7 +42,6 @@
43 BugNotification,42 BugNotification,
44 BugNotificationRecipient,43 BugNotificationRecipient,
45 )44 )
46from lp.buildmaster.enums import BuildStatus
47from lp.code.bzr import (45from lp.code.bzr import (
48 BranchFormat,46 BranchFormat,
49 RepositoryFormat,47 RepositoryFormat,
@@ -60,7 +58,6 @@
60 BranchSharingPolicy,58 BranchSharingPolicy,
61 BugSharingPolicy,59 BugSharingPolicy,
62 )60 )
63from lp.code.model.sourcepackagerecipebuild import SourcePackageRecipeBuild
64from lp.registry.interfaces.accesspolicy import IAccessPolicySource61from lp.registry.interfaces.accesspolicy import IAccessPolicySource
65from lp.registry.interfaces.person import IPersonSet62from lp.registry.interfaces.person import IPersonSet
66from lp.registry.interfaces.teammembership import TeamMembershipStatus63from lp.registry.interfaces.teammembership import TeamMembershipStatus
@@ -117,7 +114,6 @@
117from lp.services.verification.model.logintoken import LoginToken114from lp.services.verification.model.logintoken import LoginToken
118from lp.services.worlddata.interfaces.language import ILanguageSet115from lp.services.worlddata.interfaces.language import ILanguageSet
119from lp.soyuz.enums import PackagePublishingStatus116from lp.soyuz.enums import PackagePublishingStatus
120from lp.soyuz.model.binarypackagebuild import BinaryPackageBuild
121from lp.soyuz.model.reporting import LatestPersonSourcePackageReleaseCache117from lp.soyuz.model.reporting import LatestPersonSourcePackageReleaseCache
122from lp.testing import (118from lp.testing import (
123 FakeAdapterMixin,119 FakeAdapterMixin,
@@ -125,10 +121,7 @@
125 TestCase,121 TestCase,
126 TestCaseWithFactory,122 TestCaseWithFactory,
127 )123 )
128from lp.testing.dbuser import (124from lp.testing.dbuser import switch_dbuser
129 dbuser,
130 switch_dbuser,
131 )
132from lp.testing.layers import (125from lp.testing.layers import (
133 DatabaseLayer,126 DatabaseLayer,
134 LaunchpadScriptLayer,127 LaunchpadScriptLayer,
@@ -140,9 +133,6 @@
140from lp.translations.model.translationtemplateitem import (133from lp.translations.model.translationtemplateitem import (
141 TranslationTemplateItem,134 TranslationTemplateItem,
142 )135 )
143from lp.translations.model.translationtemplatesbuild import (
144 TranslationTemplatesBuild,
145 )
146136
147137
148class TestGarboScript(TestCase):138class TestGarboScript(TestCase):
@@ -1283,131 +1273,6 @@
1283 'PopulateLatestPersonSourcePackageReleaseCache')1273 'PopulateLatestPersonSourcePackageReleaseCache')
1284 self.assertEqual(spph_2.id, job_data['last_spph_id'])1274 self.assertEqual(spph_2.id, job_data['last_spph_id'])
12851275
1286 def test_BinaryPackageBuildFlattener(self):
1287 store = IMasterStore(BinaryPackageBuild)
1288 # Sampledata builds start off with the new columns set to None,
1289 # and garbo won't run without a feature flag set.
1290 self.runHourly()
1291 self.assertNotEqual(
1292 0, store.find(BinaryPackageBuild, _new_archive=None).count())
1293
1294 # But after a garbo run they're all set properly.
1295 with dbuser('testadmin'):
1296 IMasterStore(FeatureFlag).add(FeatureFlag(
1297 u'default', 0, u'soyuz.flatten_bfj.garbo.enabled', u'true'))
1298 self.runHourly()
1299 self.assertEqual(
1300 0, store.find(BinaryPackageBuild, _new_archive=None).count())
1301
1302 with dbuser('testadmin'):
1303 # Create a build with lots of attributes set.
1304 build = self.factory.makeBinaryPackageBuild()
1305 build.gotFailure()
1306 build.updateStatus(
1307 BuildStatus.BUILDING, builder=self.factory.makeBuilder())
1308 build.updateStatus(BuildStatus.FULLYBUILT)
1309 build.setLog(self.factory.makeLibraryFileAlias())
1310 build.storeUploadLog('uploaded')
1311
1312 # Manually unset the build's denormed columns.
1313 attrs = (
1314 'archive', 'pocket', 'processor', 'virtualized',
1315 'date_created', 'date_started', 'date_finished',
1316 'date_first_dispatched', 'builder', 'status', 'log',
1317 'upload_log', 'dependencies', 'failure_count',
1318 'build_farm_job', 'distribution', 'distro_series',
1319 'source_package_name', 'is_distro_archive')
1320 for attr in attrs:
1321 setattr(removeSecurityProxy(build), '_new_' + attr, None)
1322 removeSecurityProxy(build.build_farm_job).archive = None
1323 self.assertEqual(
1324 1, store.find(BinaryPackageBuild, _new_archive=None).count())
1325 self.runHourly()
1326 self.assertEqual(
1327 0, store.find(BinaryPackageBuild, _new_archive=None).count())
1328
1329 self.assertThat(
1330 removeSecurityProxy(build),
1331 MatchesStructure.byEquality(
1332 **dict(
1333 ('_new_' + attr, getattr(build, attr)) for attr in attrs)))
1334 self.assertEqual(
1335 build.archive, removeSecurityProxy(build.build_farm_job).archive)
1336
1337 def test_SourcePackageRecipeBuildFlattener(self):
1338 store = IMasterStore(BinaryPackageBuild)
1339 with dbuser('testadmin'):
1340 IMasterStore(FeatureFlag).add(FeatureFlag(
1341 u'default', 0, u'soyuz.flatten_bfj.garbo.enabled', u'true'))
1342
1343 with dbuser('testadmin'):
1344 # Create a build with lots of attributes set.
1345 build = self.factory.makeSourcePackageRecipeBuild()
1346 build.gotFailure()
1347 build.updateStatus(
1348 BuildStatus.BUILDING, builder=self.factory.makeBuilder())
1349 build.updateStatus(BuildStatus.FULLYBUILT)
1350 build.setLog(self.factory.makeLibraryFileAlias())
1351 build.storeUploadLog('uploaded')
1352
1353 # Manually unset the build's denormed columns.
1354 attrs = (
1355 'archive', 'pocket', 'processor', 'virtualized',
1356 'date_created', 'date_started', 'date_finished',
1357 'date_first_dispatched', 'builder', 'status', 'log',
1358 'upload_log', 'dependencies', 'failure_count',
1359 'build_farm_job')
1360 for attr in attrs:
1361 setattr(removeSecurityProxy(build), '_new_' + attr, None)
1362 removeSecurityProxy(build).build_farm_job.archive = None
1363 self.assertEqual(
1364 1, store.find(SourcePackageRecipeBuild, _new_archive=None).count())
1365 self.runHourly()
1366 self.assertEqual(
1367 0, store.find(SourcePackageRecipeBuild, _new_archive=None).count())
1368
1369 self.assertThat(
1370 removeSecurityProxy(build),
1371 MatchesStructure.byEquality(
1372 **dict(
1373 ('_new_' + attr, getattr(build, attr)) for attr in attrs)))
1374 self.assertEqual(
1375 build.archive, removeSecurityProxy(build.build_farm_job).archive)
1376
1377 def test_TranslationTemplatesBuildFlattener(self):
1378 store = IMasterStore(BinaryPackageBuild)
1379 with dbuser('testadmin'):
1380 IMasterStore(FeatureFlag).add(FeatureFlag(
1381 u'default', 0, u'soyuz.flatten_bfj.garbo.enabled', u'true'))
1382
1383 with dbuser('testadmin'):
1384 # Create a build with lots of attributes set.
1385 build = self.factory.makeTranslationTemplatesBuildJob().build
1386 build.gotFailure()
1387 build.updateStatus(
1388 BuildStatus.BUILDING, builder=self.factory.makeBuilder())
1389 build.updateStatus(BuildStatus.FULLYBUILT)
1390 build.setLog(self.factory.makeLibraryFileAlias())
1391
1392 # Manually unset the build's denormed columns.
1393 attrs = (
1394 'processor', 'virtualized', 'date_created', 'date_started',
1395 'date_finished', 'date_first_dispatched', 'builder', 'status',
1396 'log', 'failure_count')
1397 for attr in attrs:
1398 setattr(removeSecurityProxy(build), '_new_' + attr, None)
1399 self.assertEqual(
1400 1, store.find(TranslationTemplatesBuild, _new_status=None).count())
1401 self.runHourly()
1402 self.assertEqual(
1403 0, store.find(TranslationTemplatesBuild, _new_status=None).count())
1404
1405 self.assertThat(
1406 removeSecurityProxy(build),
1407 MatchesStructure.byEquality(
1408 **dict(
1409 ('_new_' + attr, getattr(build, attr)) for attr in attrs)))
1410
14111276
1412class TestGarboTasks(TestCaseWithFactory):1277class TestGarboTasks(TestCaseWithFactory):
1413 layer = LaunchpadZopelessLayer1278 layer = LaunchpadZopelessLayer
14141279
=== modified file 'lib/lp/soyuz/doc/sourcepackagerelease.txt'
--- lib/lp/soyuz/doc/sourcepackagerelease.txt 2012-07-05 09:04:09 +0000
+++ lib/lp/soyuz/doc/sourcepackagerelease.txt 2013-02-01 03:49:23 +0000
@@ -60,7 +60,6 @@
60Mozilla-firefox 0.9 has got some builds. including a PPA build. The 'builds'60Mozilla-firefox 0.9 has got some builds. including a PPA build. The 'builds'
61property only returns the non-PPA builds.61property only returns the non-PPA builds.
6262
63 >>> from lp.buildmaster.model.packagebuild import PackageBuild
64 >>> from lp.registry.interfaces.person import IPersonSet63 >>> from lp.registry.interfaces.person import IPersonSet
65 >>> from lp.soyuz.model.binarypackagebuild import BinaryPackageBuild64 >>> from lp.soyuz.model.binarypackagebuild import BinaryPackageBuild
66 >>> from storm.store import Store65 >>> from storm.store import Store
@@ -68,8 +67,7 @@
68 >>> ff_ppa_build = Store.of(cprov_ppa).find(67 >>> ff_ppa_build = Store.of(cprov_ppa).find(
69 ... BinaryPackageBuild,68 ... BinaryPackageBuild,
70 ... BinaryPackageBuild.source_package_release == spr,69 ... BinaryPackageBuild.source_package_release == spr,
71 ... BinaryPackageBuild.package_build == PackageBuild.id,70 ... BinaryPackageBuild._new_archive == cprov_ppa)
72 ... PackageBuild.archive == cprov_ppa)
73 >>> ff_ppa_build.count()71 >>> ff_ppa_build.count()
74 172 1
75 >>> ff_ppa_build[0].archive.purpose.name73 >>> ff_ppa_build[0].archive.purpose.name
7674
=== modified file 'lib/lp/soyuz/interfaces/binarypackagebuild.py'
--- lib/lp/soyuz/interfaces/binarypackagebuild.py 2013-02-01 03:49:23 +0000
+++ lib/lp/soyuz/interfaces/binarypackagebuild.py 2013-02-01 03:49:23 +0000
@@ -63,10 +63,6 @@
63 """A Build interface for items requiring launchpad.View."""63 """A Build interface for items requiring launchpad.View."""
64 id = Int(title=_('ID'), required=True, readonly=True)64 id = Int(title=_('ID'), required=True, readonly=True)
6565
66 package_build = Reference(
67 title=_('Package build'), schema=IPackageBuild, required=True,
68 readonly=True, description=_('The base package build'))
69
70 # Overridden from IBuildFarmJob to ensure required is True.66 # Overridden from IBuildFarmJob to ensure required is True.
71 processor = Reference(67 processor = Reference(
72 title=_("Processor"), schema=IProcessor,68 title=_("Processor"), schema=IProcessor,
@@ -100,9 +96,6 @@
100 distro_series = Attribute("Direct parent needed by CanonicalURL")96 distro_series = Attribute("Direct parent needed by CanonicalURL")
101 arch_tag = exported(97 arch_tag = exported(
102 Text(title=_("Architecture tag"), required=False))98 Text(title=_("Architecture tag"), required=False))
103 source_package_name = Attribute("Source package name")
104 is_distro_archive = Attribute(
105 "Whether the target archive belongs to the distro")
106 distributionsourcepackagerelease = Attribute("The page showing the "99 distributionsourcepackagerelease = Attribute("The page showing the "
107 "details for this sourcepackagerelease in this distribution.")100 "details for this sourcepackagerelease in this distribution.")
108 binarypackages = Attribute(101 binarypackages = Attribute(
109102
=== modified file 'lib/lp/soyuz/model/archive.py'
--- lib/lp/soyuz/model/archive.py 2013-01-11 00:18:49 +0000
+++ lib/lp/soyuz/model/archive.py 2013-02-01 03:49:23 +0000
@@ -55,8 +55,6 @@
55 )55 )
56from lp.buildmaster.enums import BuildStatus56from lp.buildmaster.enums import BuildStatus
57from lp.buildmaster.interfaces.packagebuild import IPackageBuildSet57from lp.buildmaster.interfaces.packagebuild import IPackageBuildSet
58from lp.buildmaster.model.buildfarmjob import BuildFarmJob
59from lp.buildmaster.model.packagebuild import PackageBuild
60from lp.registry.enums import (58from lp.registry.enums import (
61 INCLUSIVE_TEAM_POLICY,59 INCLUSIVE_TEAM_POLICY,
62 PersonVisibility,60 PersonVisibility,
@@ -86,7 +84,10 @@
86 IStoreSelector,84 IStoreSelector,
87 MAIN_STORE,85 MAIN_STORE,
88 )86 )
89from lp.services.database.lpstorm import ISlaveStore87from lp.services.database.lpstorm import (
88 ISlaveStore,
89 IStore,
90 )
90from lp.services.database.sqlbase import (91from lp.services.database.sqlbase import (
91 cursor,92 cursor,
92 quote,93 quote,
@@ -1117,20 +1118,17 @@
1117 extra_exprs = []1118 extra_exprs = []
1118 if not include_needsbuild:1119 if not include_needsbuild:
1119 extra_exprs.append(1120 extra_exprs.append(
1120 BuildFarmJob.status != BuildStatus.NEEDSBUILD)1121 BinaryPackageBuild._new_status != BuildStatus.NEEDSBUILD)
11211122
1122 find_spec = (1123 find_spec = (
1123 BuildFarmJob.status,1124 BinaryPackageBuild._new_status,
1124 Count(BinaryPackageBuild.id),1125 Count(BinaryPackageBuild.id),
1125 )1126 )
1126 result = store.using(1127 result = store.find(
1127 BinaryPackageBuild, PackageBuild, BuildFarmJob).find(
1128 find_spec,1128 find_spec,
1129 BinaryPackageBuild.package_build == PackageBuild.id,1129 BinaryPackageBuild._new_archive == self,
1130 PackageBuild.archive == self,1130 *extra_exprs).group_by(BinaryPackageBuild._new_status).order_by(
1131 PackageBuild.build_farm_job == BuildFarmJob.id,1131 BinaryPackageBuild._new_status)
1132 *extra_exprs).group_by(BuildFarmJob.status).order_by(
1133 BuildFarmJob.status)
11341132
1135 # Create a map for each count summary to a number of buildstates:1133 # Create a map for each count summary to a number of buildstates:
1136 count_map = {1134 count_map = {
@@ -1898,18 +1896,14 @@
1898 """See `IArchive`."""1896 """See `IArchive`."""
1899 store = Store.of(self)1897 store = Store.of(self)
19001898
1901 base_query = (
1902 BinaryPackageBuild.package_build == PackageBuild.id,
1903 PackageBuild.archive == self,
1904 PackageBuild.build_farm_job == BuildFarmJob.id)
1905 sprs_building = store.find(1899 sprs_building = store.find(
1906 BinaryPackageBuild.source_package_release_id,1900 BinaryPackageBuild.source_package_release_id,
1907 BuildFarmJob.status == BuildStatus.BUILDING,1901 BinaryPackageBuild._new_archive == self,
1908 *base_query)1902 BinaryPackageBuild._new_status == BuildStatus.BUILDING)
1909 sprs_waiting = store.find(1903 sprs_waiting = store.find(
1910 BinaryPackageBuild.source_package_release_id,1904 BinaryPackageBuild.source_package_release_id,
1911 BuildFarmJob.status == BuildStatus.NEEDSBUILD,1905 BinaryPackageBuild._new_archive == self,
1912 *base_query)1906 BinaryPackageBuild._new_status == BuildStatus.NEEDSBUILD)
19131907
1914 # A package is not counted as waiting if it already has at least1908 # A package is not counted as waiting if it already has at least
1915 # one build building.1909 # one build building.
@@ -1924,17 +1918,13 @@
19241918
1925 extra_exprs = []1919 extra_exprs = []
1926 if build_status is not None:1920 if build_status is not None:
1927 extra_exprs = [1921 extra_exprs = [BinaryPackageBuild._new_status == build_status]
1928 PackageBuild.build_farm_job == BuildFarmJob.id,
1929 BuildFarmJob.status == build_status,
1930 ]
19311922
1932 result_set = store.find(1923 result_set = store.find(
1933 SourcePackageRelease,1924 SourcePackageRelease,
1934 (BinaryPackageBuild.source_package_release_id ==1925 (BinaryPackageBuild.source_package_release_id ==
1935 SourcePackageRelease.id),1926 SourcePackageRelease.id),
1936 BinaryPackageBuild.package_build == PackageBuild.id,1927 BinaryPackageBuild._new_archive == self,
1937 PackageBuild.archive == self,
1938 *extra_exprs)1928 *extra_exprs)
19391929
1940 result_set.config(distinct=True).order_by(SourcePackageRelease.id)1930 result_set.config(distinct=True).order_by(SourcePackageRelease.id)
@@ -1974,18 +1964,15 @@
19741964
1975 query = """1965 query = """
1976 UPDATE Job SET status = %s1966 UPDATE Job SET status = %s
1977 FROM BinaryPackageBuild, PackageBuild, BuildFarmJob,1967 FROM BinaryPackageBuild, BuildPackageJob, BuildQueue
1978 BuildPackageJob, BuildQueue
1979 WHERE1968 WHERE
1980 BinaryPackageBuild.package_build = PackageBuild.id
1981 -- insert self.id here1969 -- insert self.id here
1982 AND PackageBuild.archive = %s1970 BinaryPackageBuild.archive = %s
1983 AND BuildPackageJob.build = BinaryPackageBuild.id1971 AND BuildPackageJob.build = BinaryPackageBuild.id
1984 AND BuildPackageJob.job = BuildQueue.job1972 AND BuildPackageJob.job = BuildQueue.job
1985 AND Job.id = BuildQueue.job1973 AND Job.id = BuildQueue.job
1986 -- Build is in state BuildStatus.NEEDSBUILD (0)1974 -- Build is in state BuildStatus.NEEDSBUILD (0)
1987 AND PackageBuild.build_farm_job = BuildFarmJob.id1975 AND BinaryPackageBuild.status = %s;
1988 AND BuildFarmJob.status = %s;
1989 """ % sqlvalues(status, self, BuildStatus.NEEDSBUILD)1976 """ % sqlvalues(status, self, BuildStatus.NEEDSBUILD)
19901977
1991 store = Store.of(self)1978 store = Store.of(self)
@@ -2411,19 +2398,13 @@
24112398
2412 def getBuildCountersForArchitecture(self, archive, distroarchseries):2399 def getBuildCountersForArchitecture(self, archive, distroarchseries):
2413 """See `IArchiveSet`."""2400 """See `IArchiveSet`."""
2414 cur = cursor()2401 result = IStore(BinaryPackageBuild).find(
2415 query = """2402 (BinaryPackageBuild._new_status, Count(BinaryPackageBuild.id)),
2416 SELECT BuildFarmJob.status, count(BuildFarmJob.id) FROM2403 BinaryPackageBuild._new_archive == archive,
2417 BinaryPackageBuild, PackageBuild, BuildFarmJob2404 BinaryPackageBuild.distro_arch_series == distroarchseries,
2418 WHERE2405 ).group_by(
2419 BinaryPackageBuild.package_build = PackageBuild.id AND2406 BinaryPackageBuild._new_status
2420 PackageBuild.build_farm_job = BuildFarmJob.id AND2407 ).order_by(BinaryPackageBuild._new_status)
2421 PackageBuild.archive = %s AND
2422 BinaryPackageBuild.distro_arch_series = %s
2423 GROUP BY BuildFarmJob.status ORDER BY BuildFarmJob.status;
2424 """ % sqlvalues(archive, distroarchseries)
2425 cur.execute(query)
2426 result = cur.fetchall()
24272408
2428 status_map = {2409 status_map = {
2429 'failed': (2410 'failed': (
@@ -2452,8 +2433,7 @@
2452 for key, status in status_map.iteritems():2433 for key, status in status_map.iteritems():
2453 status_and_counters[key] = 02434 status_and_counters[key] = 0
2454 for status_value, status_counter in result:2435 for status_value, status_counter in result:
2455 status_values = [item.value for item in status]2436 if status_value in status:
2456 if status_value in status_values:
2457 status_and_counters[key] += status_counter2437 status_and_counters[key] += status_counter
24582438
2459 return status_and_counters2439 return status_and_counters
24602440
=== modified file 'lib/lp/soyuz/model/binarypackagebuild.py'
--- lib/lp/soyuz/model/binarypackagebuild.py 2013-02-01 03:49:23 +0000
+++ lib/lp/soyuz/model/binarypackagebuild.py 2013-02-01 03:49:23 +0000
@@ -105,6 +105,7 @@
105 _defaultOrder = 'id'105 _defaultOrder = 'id'
106106
107 build_farm_job_type = BuildFarmJobType.PACKAGEBUILD107 build_farm_job_type = BuildFarmJobType.PACKAGEBUILD
108 job_type = build_farm_job_type
108109
109 package_build_id = Int(name='package_build', allow_none=False)110 package_build_id = Int(name='package_build', allow_none=False)
110 package_build = Reference(package_build_id, 'PackageBuild.id')111 package_build = Reference(package_build_id, 'PackageBuild.id')
@@ -118,8 +119,8 @@
118 source_package_release_id, 'SourcePackageRelease.id')119 source_package_release_id, 'SourcePackageRelease.id')
119120
120 # Migrating from PackageBuild121 # Migrating from PackageBuild
121 _new_build_farm_job_id = Int(name='build_farm_job')122 build_farm_job_id = Int(name='build_farm_job')
122 _new_build_farm_job = Reference(_new_build_farm_job_id, BuildFarmJob.id)123 build_farm_job = Reference(build_farm_job_id, BuildFarmJob.id)
123124
124 _new_archive_id = Int(name='archive')125 _new_archive_id = Int(name='archive')
125 _new_archive = Reference(_new_archive_id, 'Archive.id')126 _new_archive = Reference(_new_archive_id, 'Archive.id')
@@ -265,16 +266,6 @@
265 return self.distro_series.distribution266 return self.distro_series.distribution
266267
267 @property268 @property
268 def source_package_name(self):
269 """See `IBinaryPackageBuild`."""
270 return self.source_package_release.sourcepackagename
271
272 @property
273 def is_distro_archive(self):
274 """See `IBinaryPackageBuild`."""
275 return self.archive.is_main
276
277 @property
278 def is_virtualized(self):269 def is_virtualized(self):
279 """See `IBuild`"""270 """See `IBuild`"""
280 return self.archive.require_virtualized271 return self.archive.require_virtualized
@@ -634,17 +625,14 @@
634 BinaryPackageBuild.distro_arch_series = %s AND625 BinaryPackageBuild.distro_arch_series = %s AND
635 SourcePackageRelease.sourcepackagename = SourcePackageName.id AND626 SourcePackageRelease.sourcepackagename = SourcePackageName.id AND
636 SourcePackageName.name = %s AND627 SourcePackageName.name = %s AND
637 BinaryPackageBuild.package_build = PackageBuild.id AND628 BinaryPackageBuild.archive IN %s AND
638 PackageBuild.archive IN %s AND629 BinaryPackageBuild.date_finished IS NOT NULL AND
639 PackageBuild.build_farm_job = BuildFarmJob.id AND630 BinaryPackageBuild.status = %s
640 BuildFarmJob.date_finished IS NOT NULL AND
641 BuildFarmJob.status = %s
642 """ % sqlvalues(self, self.distro_arch_series,631 """ % sqlvalues(self, self.distro_arch_series,
643 self.source_package_release.name, archives,632 self.source_package_release.name, archives,
644 BuildStatus.FULLYBUILT),633 BuildStatus.FULLYBUILT),
645 orderBy=['-BuildFarmJob.date_finished', '-id'],634 orderBy=['-date_finished', '-id'],
646 clauseTables=['PackageBuild', 'BuildFarmJob', 'SourcePackageName',635 clauseTables=['SourcePackageName', 'SourcePackageRelease'])
647 'SourcePackageRelease'])
648636
649 estimated_duration = None637 estimated_duration = None
650 if bool(completed_builds):638 if bool(completed_builds):
@@ -881,8 +869,8 @@
881 archive, pocket, status=BuildStatus.NEEDSBUILD,869 archive, pocket, status=BuildStatus.NEEDSBUILD,
882 date_created=None, builder=None):870 date_created=None, builder=None):
883 """See `IBinaryPackageBuildSet`."""871 """See `IBinaryPackageBuildSet`."""
884 # Create the PackageBuild to which the new BinaryPackageBuild872 # Create the BuildFarmJob and PackageBuild to which the new
885 # will delegate.873 # BinaryPackageBuild will delegate.
886 build_farm_job = getUtility(IBuildFarmJobSource).new(874 build_farm_job = getUtility(IBuildFarmJobSource).new(
887 BinaryPackageBuild.build_farm_job_type, status, processor,875 BinaryPackageBuild.build_farm_job_type, status, processor,
888 archive.require_virtualized, date_created, builder, archive)876 archive.require_virtualized, date_created, builder, archive)
@@ -890,7 +878,7 @@
890 build_farm_job, archive, pocket)878 build_farm_job, archive, pocket)
891879
892 binary_package_build = BinaryPackageBuild(880 binary_package_build = BinaryPackageBuild(
893 _new_build_farm_job=build_farm_job,881 build_farm_job=build_farm_job,
894 package_build=package_build,882 package_build=package_build,
895 distro_arch_series=distro_arch_series,883 distro_arch_series=distro_arch_series,
896 source_package_release=source_package_release,884 source_package_release=source_package_release,
@@ -995,23 +983,18 @@
995 from lp.soyuz.model.distroarchseries import DistroArchSeries983 from lp.soyuz.model.distroarchseries import DistroArchSeries
996 from lp.soyuz.model.sourcepackagerelease import SourcePackageRelease984 from lp.soyuz.model.sourcepackagerelease import SourcePackageRelease
997985
998 # Ensure the underlying buildfarmjob and package build tables986 origin.append(BinaryPackageBuild)
999 # are included.
1000 clauses.extend([
1001 BinaryPackageBuild.package_build == PackageBuild.id,
1002 PackageBuild.build_farm_job == BuildFarmJob.id])
1003 origin.extend([BinaryPackageBuild, BuildFarmJob])
1004987
1005 # Add query clause that filters on build state if the latter is988 # Add query clause that filters on build state if the latter is
1006 # provided.989 # provided.
1007 if status is not None:990 if status is not None:
1008 clauses.append(BuildFarmJob.status == status)991 clauses.append(BinaryPackageBuild._new_status == status)
1009992
1010 # Add query clause that filters on pocket if the latter is provided.993 # Add query clause that filters on pocket if the latter is provided.
1011 if pocket:994 if pocket:
1012 if not isinstance(pocket, (list, tuple)):995 if not isinstance(pocket, (list, tuple)):
1013 pocket = (pocket,)996 pocket = (pocket,)
1014 clauses.append(PackageBuild.pocket.is_in(pocket))997 clauses.append(BinaryPackageBuild._new_pocket.is_in(pocket))
1015998
1016 # Add query clause that filters on architecture tag if provided.999 # Add query clause that filters on architecture tag if provided.
1017 if arch_tag is not None:1000 if arch_tag is not None:
@@ -1044,23 +1027,24 @@
1044 Archive, get_archive_privacy_filter)1027 Archive, get_archive_privacy_filter)
10451028
1046 clauses = [1029 clauses = [
1047 PackageBuild.archive_id == Archive.id,1030 BinaryPackageBuild._new_archive_id == Archive.id,
1048 BuildFarmJob.builder_id == builder_id,1031 BinaryPackageBuild._new_builder_id == builder_id,
1049 get_archive_privacy_filter(user)]1032 get_archive_privacy_filter(user)]
1050 origin = [PackageBuild, Archive]1033 origin = [Archive]
10511034
1052 self.handleOptionalParamsForBuildQueries(1035 self.handleOptionalParamsForBuildQueries(
1053 clauses, origin, status, name, pocket=None, arch_tag=arch_tag)1036 clauses, origin, status, name, pocket=None, arch_tag=arch_tag)
10541037
1055 return IStore(BinaryPackageBuild).using(*origin).find(1038 return IStore(BinaryPackageBuild).using(*origin).find(
1056 BinaryPackageBuild, *clauses).order_by(1039 BinaryPackageBuild, *clauses).order_by(
1057 Desc(BuildFarmJob.date_finished), BinaryPackageBuild.id)1040 Desc(BinaryPackageBuild._new_date_finished),
1041 BinaryPackageBuild.id)
10581042
1059 def getBuildsForArchive(self, archive, status=None, name=None,1043 def getBuildsForArchive(self, archive, status=None, name=None,
1060 pocket=None, arch_tag=None):1044 pocket=None, arch_tag=None):
1061 """See `IBinaryPackageBuildSet`."""1045 """See `IBinaryPackageBuildSet`."""
1062 clauses = [PackageBuild.archive_id == archive.id]1046 clauses = [BinaryPackageBuild._new_archive_id == archive.id]
1063 origin = [PackageBuild]1047 origin = []
10641048
1065 self.handleOptionalParamsForBuildQueries(1049 self.handleOptionalParamsForBuildQueries(
1066 clauses, origin, status, name, pocket, arch_tag)1050 clauses, origin, status, name, pocket, arch_tag)
@@ -1070,9 +1054,9 @@
1070 # * FULLYBUILT & FAILURES by -datebuilt1054 # * FULLYBUILT & FAILURES by -datebuilt
1071 # It should present the builds in a more natural order.1055 # It should present the builds in a more natural order.
1072 if status == BuildStatus.SUPERSEDED or status is None:1056 if status == BuildStatus.SUPERSEDED or status is None:
1073 orderBy = [Desc(BuildFarmJob.date_created)]1057 orderBy = [Desc(BinaryPackageBuild._new_date_created)]
1074 else:1058 else:
1075 orderBy = [Desc(BuildFarmJob.date_finished)]1059 orderBy = [Desc(BinaryPackageBuild._new_date_finished)]
1076 # All orders fallback to id if the primary order doesn't succeed1060 # All orders fallback to id if the primary order doesn't succeed
1077 orderBy.append(BinaryPackageBuild.id)1061 orderBy.append(BinaryPackageBuild.id)
10781062
@@ -1087,8 +1071,6 @@
1087 if not arch_ids:1071 if not arch_ids:
1088 return EmptyResultSet()1072 return EmptyResultSet()
10891073
1090 clauseTables = [PackageBuild]
1091
1092 # format clause according single/multiple architecture(s) form1074 # format clause according single/multiple architecture(s) form
1093 if len(arch_ids) == 1:1075 if len(arch_ids) == 1:
1094 condition_clauses = [('distro_arch_series=%s'1076 condition_clauses = [('distro_arch_series=%s'
@@ -1097,10 +1079,6 @@
1097 condition_clauses = [('distro_arch_series IN %s'1079 condition_clauses = [('distro_arch_series IN %s'
1098 % sqlvalues(arch_ids))]1080 % sqlvalues(arch_ids))]
10991081
1100 condition_clauses.extend([
1101 "BinaryPackageBuild.package_build = PackageBuild.id",
1102 "PackageBuild.build_farm_job = BuildFarmJob.id"])
1103
1104 # XXX cprov 2006-09-25: It would be nice if we could encapsulate1082 # XXX cprov 2006-09-25: It would be nice if we could encapsulate
1105 # the chunk of code below (which deals with the optional paramenters)1083 # the chunk of code below (which deals with the optional paramenters)
1106 # and share it with ISourcePackage.getBuildRecords()1084 # and share it with ISourcePackage.getBuildRecords()
@@ -1108,20 +1086,23 @@
1108 # exclude gina-generated and security (dak-made) builds1086 # exclude gina-generated and security (dak-made) builds
1109 # status == FULLYBUILT && datebuilt == null1087 # status == FULLYBUILT && datebuilt == null
1110 if status == BuildStatus.FULLYBUILT:1088 if status == BuildStatus.FULLYBUILT:
1111 condition_clauses.append("BuildFarmJob.date_finished IS NOT NULL")1089 condition_clauses.append(
1090 "BinaryPackageBuild.date_finished IS NOT NULL")
1112 else:1091 else:
1113 condition_clauses.append(1092 condition_clauses.append(
1114 "(BuildFarmJob.status <> %s OR "1093 "(BinaryPackageBuild.status <> %s OR "
1115 " BuildFarmJob.date_finished IS NOT NULL)"1094 " BinaryPackageBuild.date_finished IS NOT NULL)"
1116 % sqlvalues(BuildStatus.FULLYBUILT))1095 % sqlvalues(BuildStatus.FULLYBUILT))
11171096
1118 # Ordering according status1097 # Ordering according status
1119 # * NEEDSBUILD, BUILDING & UPLOADING by -lastscore1098 # * NEEDSBUILD, BUILDING & UPLOADING by -lastscore
1120 # * SUPERSEDED & All by -PackageBuild.build_farm_job1099 # * SUPERSEDED & All by -BinaryPackageBuild.id
1121 # (nearly equivalent to -datecreated, but much more1100 # (nearly equivalent to -datecreated, but much more
1122 # efficient.)1101 # efficient.)
1123 # * FULLYBUILT & FAILURES by -datebuilt1102 # * FULLYBUILT & FAILURES by -datebuilt
1124 # It should present the builds in a more natural order.1103 # It should present the builds in a more natural order.
1104 clauseTables = []
1105 order_by_table = None
1125 if status in [1106 if status in [
1126 BuildStatus.NEEDSBUILD,1107 BuildStatus.NEEDSBUILD,
1127 BuildStatus.BUILDING,1108 BuildStatus.BUILDING,
@@ -1134,12 +1115,10 @@
1134 'BuildPackageJob.build = BinaryPackageBuild.id')1115 'BuildPackageJob.build = BinaryPackageBuild.id')
1135 condition_clauses.append('BuildPackageJob.job = BuildQueue.job')1116 condition_clauses.append('BuildPackageJob.job = BuildQueue.job')
1136 elif status == BuildStatus.SUPERSEDED or status is None:1117 elif status == BuildStatus.SUPERSEDED or status is None:
1137 order_by = [Desc(PackageBuild.build_farm_job_id)]1118 order_by = [Desc(BinaryPackageBuild.id)]
1138 order_by_table = PackageBuild
1139 else:1119 else:
1140 order_by = [Desc(BuildFarmJob.date_finished),1120 order_by = [Desc(BinaryPackageBuild._new_date_finished),
1141 BinaryPackageBuild.id]1121 BinaryPackageBuild.id]
1142 order_by_table = BuildFarmJob
11431122
1144 # End of duplication (see XXX cprov 2006-09-25 above).1123 # End of duplication (see XXX cprov 2006-09-25 above).
11451124
@@ -1149,11 +1128,14 @@
1149 # Only pick builds from the distribution's main archive to1128 # Only pick builds from the distribution's main archive to
1150 # exclude PPA builds1129 # exclude PPA builds
1151 condition_clauses.append(1130 condition_clauses.append(
1152 "PackageBuild.archive IN %s" %1131 "BinaryPackageBuild.archive IN %s" %
1153 sqlvalues(list(distribution.all_distro_archive_ids)))1132 sqlvalues(list(distribution.all_distro_archive_ids)))
11541133
1134 find_spec = (BinaryPackageBuild,)
1135 if order_by_table:
1136 find_spec = find_spec + (order_by_table,)
1155 result_set = Store.of(distribution).using(*clauseTables).find(1137 result_set = Store.of(distribution).using(*clauseTables).find(
1156 (BinaryPackageBuild, order_by_table), *condition_clauses)1138 find_spec, *condition_clauses)
1157 result_set.order_by(*order_by)1139 result_set.order_by(*order_by)
11581140
1159 def get_bpp(result_row):1141 def get_bpp(result_row):
@@ -1182,20 +1164,21 @@
1182 query = """1164 query = """
1183 source_package_release IN %s AND1165 source_package_release IN %s AND
1184 package_build = packagebuild.id AND1166 package_build = packagebuild.id AND
1185 archive.id = packagebuild.archive AND1167 archive.id = binarypackagebuild.archive AND
1186 archive.purpose != %s AND1168 archive.purpose != %s AND
1187 packagebuild.build_farm_job = buildfarmjob.id1169 packagebuild.build_farm_job = buildfarmjob.id
1188 """ % sqlvalues(sourcepackagerelease_ids, ArchivePurpose.PPA)1170 """ % sqlvalues(sourcepackagerelease_ids, ArchivePurpose.PPA)
11891171
1190 if buildstate is not None:1172 if buildstate is not None:
1191 query += "AND buildfarmjob.status = %s" % sqlvalues(buildstate)1173 query += (
1174 "AND binarypackagebuild.status = %s" % sqlvalues(buildstate))
11921175
1193 resultset = IStore(BinaryPackageBuild).using(1176 resultset = IStore(BinaryPackageBuild).using(
1194 BinaryPackageBuild, PackageBuild, BuildFarmJob, Archive).find(1177 BinaryPackageBuild, PackageBuild, BuildFarmJob, Archive).find(
1195 (BinaryPackageBuild, PackageBuild, BuildFarmJob),1178 (BinaryPackageBuild, PackageBuild, BuildFarmJob),
1196 SQL(query))1179 SQL(query))
1197 resultset.order_by(1180 resultset.order_by(
1198 Desc(BuildFarmJob.date_created), BinaryPackageBuild.id)1181 Desc(BinaryPackageBuild._new_date_created), BinaryPackageBuild.id)
1199 return DecoratedResultSet(resultset, operator.itemgetter(0))1182 return DecoratedResultSet(resultset, operator.itemgetter(0))
12001183
1201 def getStatusSummaryForBuilds(self, builds):1184 def getStatusSummaryForBuilds(self, builds):
12021185
=== modified file 'lib/lp/soyuz/model/buildpackagejob.py'
--- lib/lp/soyuz/model/buildpackagejob.py 2013-01-22 06:42:23 +0000
+++ lib/lp/soyuz/model/buildpackagejob.py 2013-02-01 03:49:23 +0000
@@ -157,14 +157,13 @@
157 )157 )
158 sub_query = """158 sub_query = """
159 SELECT TRUE FROM Archive, BinaryPackageBuild, BuildPackageJob,159 SELECT TRUE FROM Archive, BinaryPackageBuild, BuildPackageJob,
160 PackageBuild, BuildFarmJob, DistroArchSeries160 DistroArchSeries
161 WHERE161 WHERE
162 BuildPackageJob.job = Job.id AND162 BuildPackageJob.job = Job.id AND
163 BuildPackageJob.build = BinaryPackageBuild.id AND163 BuildPackageJob.build = BinaryPackageBuild.id AND
164 BinaryPackageBuild.distro_arch_series =164 BinaryPackageBuild.distro_arch_series =
165 DistroArchSeries.id AND165 DistroArchSeries.id AND
166 BinaryPackageBuild.package_build = PackageBuild.id AND166 BinaryPackageBuild.archive = Archive.id AND
167 PackageBuild.archive = Archive.id AND
168 ((Archive.private IS TRUE AND167 ((Archive.private IS TRUE AND
169 EXISTS (168 EXISTS (
170 SELECT SourcePackagePublishingHistory.id169 SELECT SourcePackagePublishingHistory.id
@@ -178,8 +177,7 @@
178 SourcePackagePublishingHistory.status IN %s))177 SourcePackagePublishingHistory.status IN %s))
179 OR178 OR
180 archive.private IS FALSE) AND179 archive.private IS FALSE) AND
181 PackageBuild.build_farm_job = BuildFarmJob.id AND180 BinaryPackageBuild.status = %s
182 BuildFarmJob.status = %s
183 """ % sqlvalues(private_statuses, BuildStatus.NEEDSBUILD)181 """ % sqlvalues(private_statuses, BuildStatus.NEEDSBUILD)
184182
185 # Ensure that if BUILDING builds exist for the same183 # Ensure that if BUILDING builds exist for the same
@@ -201,16 +199,12 @@
201 sub_query += """199 sub_query += """
202 AND Archive.id NOT IN (200 AND Archive.id NOT IN (
203 SELECT Archive.id201 SELECT Archive.id
204 FROM PackageBuild, BuildFarmJob, Archive,202 FROM Archive, BinaryPackageBuild, DistroArchSeries
205 BinaryPackageBuild, DistroArchSeries
206 WHERE203 WHERE
207 PackageBuild.build_farm_job = BuildFarmJob.id204 BinaryPackageBuild.distro_arch_series = DistroArchSeries.id
208 AND BinaryPackageBuild.package_build = PackageBuild.id
209 AND BinaryPackageBuild.distro_arch_series
210 = DistroArchSeries.id
211 AND DistroArchSeries.processorfamily = %s205 AND DistroArchSeries.processorfamily = %s
212 AND BuildFarmJob.status = %s206 AND BinaryPackageBuild.status = %s
213 AND PackageBuild.archive = Archive.id207 AND BinaryPackageBuild.archive = Archive.id
214 AND Archive.purpose = %s208 AND Archive.purpose = %s
215 AND Archive.private IS FALSE209 AND Archive.private IS FALSE
216 GROUP BY Archive.id210 GROUP BY Archive.id
217211
=== modified file 'lib/lp/soyuz/model/distributionsourcepackagerelease.py'
--- lib/lp/soyuz/model/distributionsourcepackagerelease.py 2013-01-07 02:40:55 +0000
+++ lib/lp/soyuz/model/distributionsourcepackagerelease.py 2013-02-01 03:49:23 +0000
@@ -20,8 +20,6 @@
20from storm.store import Store20from storm.store import Store
21from zope.interface import implements21from zope.interface import implements
2222
23from lp.buildmaster.model.buildfarmjob import BuildFarmJob
24from lp.buildmaster.model.packagebuild import PackageBuild
25from lp.services.database.decoratedresultset import DecoratedResultSet23from lp.services.database.decoratedresultset import DecoratedResultSet
26from lp.services.database.sqlbase import sqlvalues24from lp.services.database.sqlbase import sqlvalues
27from lp.soyuz.interfaces.archive import MAIN_ARCHIVE_PURPOSES25from lp.soyuz.interfaces.archive import MAIN_ARCHIVE_PURPOSES
@@ -105,8 +103,6 @@
105 BinaryPackageBuild.distro_arch_series == DistroArchSeries.id,103 BinaryPackageBuild.distro_arch_series == DistroArchSeries.id,
106 DistroArchSeries.distroseries == DistroSeries.id,104 DistroArchSeries.distroseries == DistroSeries.id,
107 DistroSeries.distribution == self.distribution,105 DistroSeries.distribution == self.distribution,
108 BinaryPackageBuild.package_build == PackageBuild.id,
109 PackageBuild.build_farm_job == BuildFarmJob.id
110 )106 )
111107
112 # First, get all the builds built in a main archive (this will108 # First, get all the builds built in a main archive (this will
@@ -114,7 +110,7 @@
114 builds_built_in_main_archives = Store.of(self.distribution).find(110 builds_built_in_main_archives = Store.of(self.distribution).find(
115 BinaryPackageBuild,111 BinaryPackageBuild,
116 builds_for_distro_exprs,112 builds_for_distro_exprs,
117 PackageBuild.archive == Archive.id,113 BinaryPackageBuild._new_archive == Archive.id,
118 Archive.purpose.is_in(MAIN_ARCHIVE_PURPOSES))114 Archive.purpose.is_in(MAIN_ARCHIVE_PURPOSES))
119115
120 # Next get all the builds that have a binary published in the116 # Next get all the builds that have a binary published in the
121117
=== modified file 'lib/lp/soyuz/model/publishing.py'
--- lib/lp/soyuz/model/publishing.py 2013-01-03 00:16:08 +0000
+++ lib/lp/soyuz/model/publishing.py 2013-02-01 03:49:23 +0000
@@ -1579,17 +1579,14 @@
1579 # If an optional list of build states was passed in as a parameter,1579 # If an optional list of build states was passed in as a parameter,
1580 # ensure that the result is limited to builds in those states.1580 # ensure that the result is limited to builds in those states.
1581 if build_states is not None:1581 if build_states is not None:
1582 extra_exprs.extend((1582 extra_exprs.append(
1583 BinaryPackageBuild.package_build == PackageBuild.id,1583 BinaryPackageBuild._new_status.is_in(build_states))
1584 PackageBuild.build_farm_job == BuildFarmJob.id,
1585 BuildFarmJob.status.is_in(build_states)))
15861584
1587 store = getUtility(IStoreSelector).get(MAIN_STORE, DEFAULT_FLAVOR)1585 store = getUtility(IStoreSelector).get(MAIN_STORE, DEFAULT_FLAVOR)
15881586
1589 # We'll be looking for builds in the same distroseries as the1587 # We'll be looking for builds in the same distroseries as the
1590 # SPPH for the same release.1588 # SPPH for the same release.
1591 builds_for_distroseries_expr = (1589 builds_for_distroseries_expr = (
1592 BinaryPackageBuild.package_build == PackageBuild.id,
1593 BinaryPackageBuild.distro_arch_series_id == DistroArchSeries.id,1590 BinaryPackageBuild.distro_arch_series_id == DistroArchSeries.id,
1594 SourcePackagePublishingHistory.distroseriesID ==1591 SourcePackagePublishingHistory.distroseriesID ==
1595 DistroArchSeries.distroseriesID,1592 DistroArchSeries.distroseriesID,
@@ -1603,7 +1600,7 @@
1603 BinaryPackageBuild,1600 BinaryPackageBuild,
1604 builds_for_distroseries_expr,1601 builds_for_distroseries_expr,
1605 (SourcePackagePublishingHistory.archiveID ==1602 (SourcePackagePublishingHistory.archiveID ==
1606 PackageBuild.archive_id),1603 BinaryPackageBuild._new_archive_id),
1607 *extra_exprs)1604 *extra_exprs)
16081605
1609 # Next get all the builds that have a binary published in the1606 # Next get all the builds that have a binary published in the
@@ -1613,7 +1610,7 @@
1613 BinaryPackageBuild,1610 BinaryPackageBuild,
1614 builds_for_distroseries_expr,1611 builds_for_distroseries_expr,
1615 (SourcePackagePublishingHistory.archiveID !=1612 (SourcePackagePublishingHistory.archiveID !=
1616 PackageBuild.archive_id),1613 BinaryPackageBuild._new_archive_id),
1617 BinaryPackagePublishingHistory.archive ==1614 BinaryPackagePublishingHistory.archive ==
1618 SourcePackagePublishingHistory.archiveID,1615 SourcePackagePublishingHistory.archiveID,
1619 BinaryPackagePublishingHistory.binarypackagerelease ==1616 BinaryPackagePublishingHistory.binarypackagerelease ==
@@ -1737,9 +1734,7 @@
1737 self._getSourceBinaryJoinForSources(1734 self._getSourceBinaryJoinForSources(
1738 source_publication_ids, active_binaries_only=False),1735 source_publication_ids, active_binaries_only=False),
1739 BinaryPackagePublishingHistory.datepublished != None,1736 BinaryPackagePublishingHistory.datepublished != None,
1740 BinaryPackageBuild.package_build == PackageBuild.id,1737 BinaryPackageBuild._new_status.is_in(build_states))
1741 PackageBuild.build_farm_job == BuildFarmJob.id,
1742 BuildFarmJob.status.is_in(build_states))
17431738
1744 published_builds.order_by(1739 published_builds.order_by(
1745 SourcePackagePublishingHistory.id,1740 SourcePackagePublishingHistory.id,
17461741
=== modified file 'lib/lp/soyuz/model/sourcepackagerelease.py'
--- lib/lp/soyuz/model/sourcepackagerelease.py 2013-01-07 04:53:37 +0000
+++ lib/lp/soyuz/model/sourcepackagerelease.py 2013-02-01 03:49:23 +0000
@@ -226,13 +226,11 @@
226 # sourcepackagerelease.226 # sourcepackagerelease.
227 return BinaryPackageBuild.select("""227 return BinaryPackageBuild.select("""
228 source_package_release = %s AND228 source_package_release = %s AND
229 package_build = packagebuild.id AND229 archive.id = binarypackagebuild.archive AND
230 archive.id = packagebuild.archive AND
231 packagebuild.build_farm_job = buildfarmjob.id AND
232 archive.purpose IN %s230 archive.purpose IN %s
233 """ % sqlvalues(self.id, MAIN_ARCHIVE_PURPOSES),231 """ % sqlvalues(self.id, MAIN_ARCHIVE_PURPOSES),
234 orderBy=['-buildfarmjob.date_created', 'id'],232 orderBy=['-date_created', 'id'],
235 clauseTables=['Archive', 'PackageBuild', 'BuildFarmJob'])233 clauseTables=['Archive'])
236234
237 @property235 @property
238 def age(self):236 def age(self):
@@ -447,16 +445,10 @@
447 # If there was no published binary we have to try to find a445 # If there was no published binary we have to try to find a
448 # suitable build in all possible location across the distroseries446 # suitable build in all possible location across the distroseries
449 # inheritance tree. See below.447 # inheritance tree. See below.
450 clause_tables = [448 clause_tables = ['DistroArchSeries']
451 'BuildFarmJob',
452 'PackageBuild',
453 'DistroArchSeries',
454 ]
455 queries = [449 queries = [
456 "BinaryPackageBuild.package_build = PackageBuild.id AND "
457 "PackageBuild.build_farm_job = BuildFarmJob.id AND "
458 "DistroArchSeries.id = BinaryPackageBuild.distro_arch_series AND "450 "DistroArchSeries.id = BinaryPackageBuild.distro_arch_series AND "
459 "PackageBuild.archive = %s AND "451 "BinaryPackageBuild.archive = %s AND "
460 "DistroArchSeries.architecturetag = %s AND "452 "DistroArchSeries.architecturetag = %s AND "
461 "BinaryPackageBuild.source_package_release = %s" % (453 "BinaryPackageBuild.source_package_release = %s" % (
462 sqlvalues(archive.id, distroarchseries.architecturetag, self))]454 sqlvalues(archive.id, distroarchseries.architecturetag, self))]
@@ -467,7 +459,7 @@
467459
468 return BinaryPackageBuild.selectFirst(460 return BinaryPackageBuild.selectFirst(
469 query, clauseTables=clause_tables,461 query, clauseTables=clause_tables,
470 orderBy=['-BuildFarmJob.date_created'])462 orderBy=['-date_created'])
471463
472 def override(self, component=None, section=None, urgency=None):464 def override(self, component=None, section=None, urgency=None):
473 """See ISourcePackageRelease."""465 """See ISourcePackageRelease."""
474466
=== modified file 'lib/lp/soyuz/tests/test_archive.py'
--- lib/lp/soyuz/tests/test_archive.py 2012-10-25 11:02:37 +0000
+++ lib/lp/soyuz/tests/test_archive.py 2013-02-01 03:49:23 +0000
@@ -359,16 +359,13 @@
359 # Return the count for archive build jobs with the given status.359 # Return the count for archive build jobs with the given status.
360 query = """360 query = """
361 SELECT COUNT(Job.id)361 SELECT COUNT(Job.id)
362 FROM BinaryPackageBuild, BuildPackageJob, BuildQueue, Job,362 FROM BinaryPackageBuild, BuildPackageJob, BuildQueue, Job
363 PackageBuild, BuildFarmJob
364 WHERE363 WHERE
365 BuildPackageJob.build = BinaryPackageBuild.id364 BuildPackageJob.build = BinaryPackageBuild.id
366 AND BuildPackageJob.job = BuildQueue.job365 AND BuildPackageJob.job = BuildQueue.job
367 AND Job.id = BuildQueue.job366 AND Job.id = BuildQueue.job
368 AND BinaryPackageBuild.package_build = PackageBuild.id367 AND BinaryPackageBuild.archive = %s
369 AND PackageBuild.archive = %s368 AND BinaryPackageBuild.status = %s
370 AND PackageBuild.build_farm_job = BuildFarmJob.id
371 AND BuildFarmJob.status = %s
372 AND Job.status = %s;369 AND Job.status = %s;
373 """ % sqlvalues(archive, BuildStatus.NEEDSBUILD, status)370 """ % sqlvalues(archive, BuildStatus.NEEDSBUILD, status)
374371
375372
=== modified file 'lib/lp/translations/interfaces/translationtemplatesbuild.py'
--- lib/lp/translations/interfaces/translationtemplatesbuild.py 2011-12-24 16:54:44 +0000
+++ lib/lp/translations/interfaces/translationtemplatesbuild.py 2013-02-01 03:49:23 +0000
@@ -22,10 +22,6 @@
22class ITranslationTemplatesBuild(IBuildFarmJob):22class ITranslationTemplatesBuild(IBuildFarmJob):
23 """The build information for translation templates builds."""23 """The build information for translation templates builds."""
2424
25 build_farm_job = Reference(
26 title=_("The build farm job that this extends."),
27 required=True, readonly=True, schema=IBuildFarmJob)
28
29 branch = Reference(25 branch = Reference(
30 title=_("The branch that this build operates on."),26 title=_("The branch that this build operates on."),
31 required=True, readonly=True, schema=IBranch)27 required=True, readonly=True, schema=IBranch)
@@ -34,7 +30,7 @@
34class ITranslationTemplatesBuildSource(ISpecificBuildFarmJobSource):30class ITranslationTemplatesBuildSource(ISpecificBuildFarmJobSource):
35 """Utility for `ITranslationTemplatesBuild`."""31 """Utility for `ITranslationTemplatesBuild`."""
3632
37 def create(build_farm_job, branch):33 def create(branch):
38 """Create a new `ITranslationTemplatesBuild`."""34 """Create a new `ITranslationTemplatesBuild`."""
3935
40 def findByBranch(branch, store=None):36 def findByBranch(branch, store=None):
4137
=== modified file 'lib/lp/translations/model/translationtemplatesbuild.py'
--- lib/lp/translations/model/translationtemplatesbuild.py 2013-02-01 03:49:23 +0000
+++ lib/lp/translations/model/translationtemplatesbuild.py 2013-02-01 03:49:23 +0000
@@ -57,6 +57,8 @@
5757
58 __storm_table__ = 'TranslationTemplatesBuild'58 __storm_table__ = 'TranslationTemplatesBuild'
5959
60 job_type = BuildFarmJobType.TRANSLATIONTEMPLATESBUILD
61
60 id = Int(name='id', primary=True)62 id = Int(name='id', primary=True)
61 build_farm_job_id = Int(name='build_farm_job', allow_none=False)63 build_farm_job_id = Int(name='build_farm_job', allow_none=False)
62 build_farm_job = Reference(build_farm_job_id, 'BuildFarmJob.id')64 build_farm_job = Reference(build_farm_job_id, 'BuildFarmJob.id')