Merge lp:~wgrant/launchpad/bpb-arch_indep-2 into lp:launchpad

Proposed by William Grant
Status: Merged
Merged at revision: 17227
Proposed branch: lp:~wgrant/launchpad/bpb-arch_indep-2
Merge into: lp:launchpad
Diff against target: 169 lines (+23/-47)
6 files modified
database/schema/security.cfg (+0/-1)
lib/lp/scripts/garbo.py (+0/-35)
lib/lp/scripts/tests/test_garbo.py (+1/-4)
lib/lp/soyuz/model/binarypackagebuildbehaviour.py (+1/-5)
lib/lp/soyuz/tests/test_binarypackagebuildbehaviour.py (+16/-0)
lib/lp/testing/factory.py (+5/-2)
To merge this branch: bzr merge lp:~wgrant/launchpad/bpb-arch_indep-2
Reviewer Review Type Date Requested Status
William Grant code Approve
Review via email: mp+240802@code.launchpad.net

Commit message

Pass BinaryPackageBuild.arch_indep through to the slave, rather than using isNominatedArchIndep directly.

Description of the change

Now that BinaryPackageBuild.arch_indep is populated everywhere, we can use it to fill the launchpad-buildd's arch_indep argument. And drop the migration code.

To post a comment you must log in.
Revision history for this message
William Grant (wgrant) :
review: Approve (code)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'database/schema/security.cfg'
2--- database/schema/security.cfg 2014-11-03 06:39:07 +0000
3+++ database/schema/security.cfg 2014-11-06 02:23:37 +0000
4@@ -2237,7 +2237,6 @@
5 public.answercontact = SELECT, DELETE
6 public.branch = SELECT, UPDATE
7 public.branchjob = SELECT, DELETE
8-public.binarypackagebuild = SELECT, UPDATE
9 public.binarypackagename = SELECT
10 public.binarypackagerelease = SELECT
11 public.binarypackagepublishinghistory = SELECT, UPDATE
12
13=== modified file 'lib/lp/scripts/garbo.py'
14--- lib/lp/scripts/garbo.py 2014-11-03 14:08:35 +0000
15+++ lib/lp/scripts/garbo.py 2014-11-06 02:23:37 +0000
16@@ -117,7 +117,6 @@
17 from lp.services.session.model import SessionData
18 from lp.services.verification.model.logintoken import LoginToken
19 from lp.soyuz.model.archive import Archive
20-from lp.soyuz.model.binarypackagebuild import BinaryPackageBuild
21 from lp.soyuz.model.livefsbuild import LiveFSFile
22 from lp.soyuz.model.publishing import SourcePackagePublishingHistory
23 from lp.soyuz.model.reporting import LatestPersonSourcePackageReleaseCache
24@@ -1347,39 +1346,6 @@
25 transaction.commit()
26
27
28-class BinaryPackageBuildArchIndepPopulator(TunableLoop):
29- """Populate the status and build_farm_job columns of BuildQueue."""
30-
31- maximum_chunk_size = 5000
32-
33- def __init__(self, log, abort_time=None):
34- super(BinaryPackageBuildArchIndepPopulator, self).__init__(
35- log, abort_time)
36- state = load_garbo_job_state(self.__class__.__name__) or {}
37- self.start_at = state.get('next_bpb_id', 1)
38- self.store = IMasterStore(BinaryPackageBuild)
39-
40- def findBuilds(self):
41- return self.store.find(
42- BinaryPackageBuild,
43- BinaryPackageBuild.id >= self.start_at).order_by(
44- BinaryPackageBuild.id)
45-
46- def isDone(self):
47- return (
48- not getFeatureFlag('soyuz.bpb_arch_indep_populator.enabled')
49- or self.findBuilds().is_empty())
50-
51- def __call__(self, chunk_size):
52- bpbs = list(self.findBuilds()[:chunk_size])
53- for bpb in bpbs:
54- bpb.arch_indep = bpb.distro_arch_series.isNominatedArchIndep
55- self.start_at = bpbs[-1].id + 1
56- save_garbo_job_state(
57- self.__class__.__name__, {'next_bpb_id': self.start_at})
58- transaction.commit()
59-
60-
61 class LiveFSFilePruner(BulkPruner):
62 """A BulkPruner to remove old `LiveFSFile`s.
63
64@@ -1655,7 +1621,6 @@
65 UnusedSessionPruner,
66 DuplicateSessionPruner,
67 BugHeatUpdater,
68- BinaryPackageBuildArchIndepPopulator,
69 ]
70 experimental_tunable_loops = []
71
72
73=== modified file 'lib/lp/scripts/tests/test_garbo.py'
74--- lib/lp/scripts/tests/test_garbo.py 2014-11-05 10:54:10 +0000
75+++ lib/lp/scripts/tests/test_garbo.py 2014-11-06 02:23:37 +0000
76@@ -116,10 +116,7 @@
77 TestCase,
78 TestCaseWithFactory,
79 )
80-from lp.testing.dbuser import (
81- dbuser,
82- switch_dbuser,
83- )
84+from lp.testing.dbuser import switch_dbuser
85 from lp.testing.layers import (
86 DatabaseLayer,
87 LaunchpadScriptLayer,
88
89=== modified file 'lib/lp/soyuz/model/binarypackagebuildbehaviour.py'
90--- lib/lp/soyuz/model/binarypackagebuildbehaviour.py 2014-07-24 11:11:30 +0000
91+++ lib/lp/soyuz/model/binarypackagebuildbehaviour.py 2014-11-06 02:23:37 +0000
92@@ -139,11 +139,7 @@
93
94 # Build extra arguments.
95 args = {}
96- # turn 'arch_indep' ON only if build is archindep or if
97- # the specific architecture is the nominatedarchindep for
98- # this distroseries (in case it requires any archindep source)
99- args['arch_indep'] = das.isNominatedArchIndep
100-
101+ args['arch_indep'] = build.arch_indep
102 args['distribution'] = das.distroseries.distribution.name
103 args['suite'] = das.distroseries.getSuite(build.pocket)
104 args['arch_tag'] = das.architecturetag
105
106=== modified file 'lib/lp/soyuz/tests/test_binarypackagebuildbehaviour.py'
107--- lib/lp/soyuz/tests/test_binarypackagebuildbehaviour.py 2014-07-24 11:11:50 +0000
108+++ lib/lp/soyuz/tests/test_binarypackagebuildbehaviour.py 2014-11-06 02:23:37 +0000
109@@ -55,6 +55,9 @@
110 from lp.soyuz.adapters.archivedependencies import (
111 get_sources_list_for_building,
112 )
113+from lp.soyuz.model.binarypackagebuildbehaviour import (
114+ BinaryPackageBuildBehaviour,
115+ )
116 from lp.soyuz.enums import ArchivePurpose
117 from lp.testing import TestCaseWithFactory
118 from lp.testing.dbuser import switch_dbuser
119@@ -286,6 +289,19 @@
120 'Soyuz is not yet capable of building SECURITY uploads.',
121 str(e))
122
123+ def test_arch_indep(self):
124+ # BinaryPackageBuild.arch_indep is passed through to the slave.
125+ build = self.factory.makeBinaryPackageBuild(arch_indep=False)
126+ self.assertIs(
127+ False,
128+ BinaryPackageBuildBehaviour(build)._extraBuildArgs(build)[
129+ 'arch_indep'])
130+ build = self.factory.makeBinaryPackageBuild(arch_indep=True)
131+ self.assertIs(
132+ True,
133+ BinaryPackageBuildBehaviour(build)._extraBuildArgs(build)[
134+ 'arch_indep'])
135+
136 def test_verifyBuildRequest(self):
137 # Don't allow a virtual build on a non-virtual builder.
138 archive = self.factory.makeArchive(purpose=ArchivePurpose.PPA)
139
140=== modified file 'lib/lp/testing/factory.py'
141--- lib/lp/testing/factory.py 2014-10-31 07:07:49 +0000
142+++ lib/lp/testing/factory.py 2014-11-06 02:23:37 +0000
143@@ -3560,7 +3560,7 @@
144 def makeBinaryPackageBuild(self, source_package_release=None,
145 distroarchseries=None, archive=None, builder=None,
146 status=None, pocket=None, date_created=None, processor=None,
147- sourcepackagename=None):
148+ sourcepackagename=None, arch_indep=None):
149 """Create a BinaryPackageBuild.
150
151 If archive is not supplied, the source_package_release is used
152@@ -3594,6 +3594,8 @@
153 and processor != distroarchseries.processor):
154 raise AssertionError(
155 "DistroArchSeries and Processor must match.")
156+ if arch_indep is None:
157+ arch_indep = distroarchseries.isNominatedArchIndep
158 if archive is None:
159 if source_package_release is None:
160 archive = distroarchseries.main_archive
161@@ -3624,7 +3626,8 @@
162 status=status,
163 archive=archive,
164 pocket=pocket,
165- builder=builder)
166+ builder=builder,
167+ arch_indep=arch_indep)
168 IStore(binary_package_build).flush()
169 return binary_package_build
170