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
=== modified file 'database/schema/security.cfg'
--- database/schema/security.cfg 2014-11-03 06:39:07 +0000
+++ database/schema/security.cfg 2014-11-06 02:23:37 +0000
@@ -2237,7 +2237,6 @@
2237public.answercontact = SELECT, DELETE2237public.answercontact = SELECT, DELETE
2238public.branch = SELECT, UPDATE2238public.branch = SELECT, UPDATE
2239public.branchjob = SELECT, DELETE2239public.branchjob = SELECT, DELETE
2240public.binarypackagebuild = SELECT, UPDATE
2241public.binarypackagename = SELECT2240public.binarypackagename = SELECT
2242public.binarypackagerelease = SELECT2241public.binarypackagerelease = SELECT
2243public.binarypackagepublishinghistory = SELECT, UPDATE2242public.binarypackagepublishinghistory = SELECT, UPDATE
22442243
=== modified file 'lib/lp/scripts/garbo.py'
--- lib/lp/scripts/garbo.py 2014-11-03 14:08:35 +0000
+++ lib/lp/scripts/garbo.py 2014-11-06 02:23:37 +0000
@@ -117,7 +117,6 @@
117from lp.services.session.model import SessionData117from lp.services.session.model import SessionData
118from lp.services.verification.model.logintoken import LoginToken118from lp.services.verification.model.logintoken import LoginToken
119from lp.soyuz.model.archive import Archive119from lp.soyuz.model.archive import Archive
120from lp.soyuz.model.binarypackagebuild import BinaryPackageBuild
121from lp.soyuz.model.livefsbuild import LiveFSFile120from lp.soyuz.model.livefsbuild import LiveFSFile
122from lp.soyuz.model.publishing import SourcePackagePublishingHistory121from lp.soyuz.model.publishing import SourcePackagePublishingHistory
123from lp.soyuz.model.reporting import LatestPersonSourcePackageReleaseCache122from lp.soyuz.model.reporting import LatestPersonSourcePackageReleaseCache
@@ -1347,39 +1346,6 @@
1347 transaction.commit()1346 transaction.commit()
13481347
13491348
1350class BinaryPackageBuildArchIndepPopulator(TunableLoop):
1351 """Populate the status and build_farm_job columns of BuildQueue."""
1352
1353 maximum_chunk_size = 5000
1354
1355 def __init__(self, log, abort_time=None):
1356 super(BinaryPackageBuildArchIndepPopulator, self).__init__(
1357 log, abort_time)
1358 state = load_garbo_job_state(self.__class__.__name__) or {}
1359 self.start_at = state.get('next_bpb_id', 1)
1360 self.store = IMasterStore(BinaryPackageBuild)
1361
1362 def findBuilds(self):
1363 return self.store.find(
1364 BinaryPackageBuild,
1365 BinaryPackageBuild.id >= self.start_at).order_by(
1366 BinaryPackageBuild.id)
1367
1368 def isDone(self):
1369 return (
1370 not getFeatureFlag('soyuz.bpb_arch_indep_populator.enabled')
1371 or self.findBuilds().is_empty())
1372
1373 def __call__(self, chunk_size):
1374 bpbs = list(self.findBuilds()[:chunk_size])
1375 for bpb in bpbs:
1376 bpb.arch_indep = bpb.distro_arch_series.isNominatedArchIndep
1377 self.start_at = bpbs[-1].id + 1
1378 save_garbo_job_state(
1379 self.__class__.__name__, {'next_bpb_id': self.start_at})
1380 transaction.commit()
1381
1382
1383class LiveFSFilePruner(BulkPruner):1349class LiveFSFilePruner(BulkPruner):
1384 """A BulkPruner to remove old `LiveFSFile`s.1350 """A BulkPruner to remove old `LiveFSFile`s.
13851351
@@ -1655,7 +1621,6 @@
1655 UnusedSessionPruner,1621 UnusedSessionPruner,
1656 DuplicateSessionPruner,1622 DuplicateSessionPruner,
1657 BugHeatUpdater,1623 BugHeatUpdater,
1658 BinaryPackageBuildArchIndepPopulator,
1659 ]1624 ]
1660 experimental_tunable_loops = []1625 experimental_tunable_loops = []
16611626
16621627
=== modified file 'lib/lp/scripts/tests/test_garbo.py'
--- lib/lp/scripts/tests/test_garbo.py 2014-11-05 10:54:10 +0000
+++ lib/lp/scripts/tests/test_garbo.py 2014-11-06 02:23:37 +0000
@@ -116,10 +116,7 @@
116 TestCase,116 TestCase,
117 TestCaseWithFactory,117 TestCaseWithFactory,
118 )118 )
119from lp.testing.dbuser import (119from lp.testing.dbuser import switch_dbuser
120 dbuser,
121 switch_dbuser,
122 )
123from lp.testing.layers import (120from lp.testing.layers import (
124 DatabaseLayer,121 DatabaseLayer,
125 LaunchpadScriptLayer,122 LaunchpadScriptLayer,
126123
=== modified file 'lib/lp/soyuz/model/binarypackagebuildbehaviour.py'
--- lib/lp/soyuz/model/binarypackagebuildbehaviour.py 2014-07-24 11:11:30 +0000
+++ lib/lp/soyuz/model/binarypackagebuildbehaviour.py 2014-11-06 02:23:37 +0000
@@ -139,11 +139,7 @@
139139
140 # Build extra arguments.140 # Build extra arguments.
141 args = {}141 args = {}
142 # turn 'arch_indep' ON only if build is archindep or if142 args['arch_indep'] = build.arch_indep
143 # the specific architecture is the nominatedarchindep for
144 # this distroseries (in case it requires any archindep source)
145 args['arch_indep'] = das.isNominatedArchIndep
146
147 args['distribution'] = das.distroseries.distribution.name143 args['distribution'] = das.distroseries.distribution.name
148 args['suite'] = das.distroseries.getSuite(build.pocket)144 args['suite'] = das.distroseries.getSuite(build.pocket)
149 args['arch_tag'] = das.architecturetag145 args['arch_tag'] = das.architecturetag
150146
=== modified file 'lib/lp/soyuz/tests/test_binarypackagebuildbehaviour.py'
--- lib/lp/soyuz/tests/test_binarypackagebuildbehaviour.py 2014-07-24 11:11:50 +0000
+++ lib/lp/soyuz/tests/test_binarypackagebuildbehaviour.py 2014-11-06 02:23:37 +0000
@@ -55,6 +55,9 @@
55from lp.soyuz.adapters.archivedependencies import (55from lp.soyuz.adapters.archivedependencies import (
56 get_sources_list_for_building,56 get_sources_list_for_building,
57 )57 )
58from lp.soyuz.model.binarypackagebuildbehaviour import (
59 BinaryPackageBuildBehaviour,
60 )
58from lp.soyuz.enums import ArchivePurpose61from lp.soyuz.enums import ArchivePurpose
59from lp.testing import TestCaseWithFactory62from lp.testing import TestCaseWithFactory
60from lp.testing.dbuser import switch_dbuser63from lp.testing.dbuser import switch_dbuser
@@ -286,6 +289,19 @@
286 'Soyuz is not yet capable of building SECURITY uploads.',289 'Soyuz is not yet capable of building SECURITY uploads.',
287 str(e))290 str(e))
288291
292 def test_arch_indep(self):
293 # BinaryPackageBuild.arch_indep is passed through to the slave.
294 build = self.factory.makeBinaryPackageBuild(arch_indep=False)
295 self.assertIs(
296 False,
297 BinaryPackageBuildBehaviour(build)._extraBuildArgs(build)[
298 'arch_indep'])
299 build = self.factory.makeBinaryPackageBuild(arch_indep=True)
300 self.assertIs(
301 True,
302 BinaryPackageBuildBehaviour(build)._extraBuildArgs(build)[
303 'arch_indep'])
304
289 def test_verifyBuildRequest(self):305 def test_verifyBuildRequest(self):
290 # Don't allow a virtual build on a non-virtual builder.306 # Don't allow a virtual build on a non-virtual builder.
291 archive = self.factory.makeArchive(purpose=ArchivePurpose.PPA)307 archive = self.factory.makeArchive(purpose=ArchivePurpose.PPA)
292308
=== modified file 'lib/lp/testing/factory.py'
--- lib/lp/testing/factory.py 2014-10-31 07:07:49 +0000
+++ lib/lp/testing/factory.py 2014-11-06 02:23:37 +0000
@@ -3560,7 +3560,7 @@
3560 def makeBinaryPackageBuild(self, source_package_release=None,3560 def makeBinaryPackageBuild(self, source_package_release=None,
3561 distroarchseries=None, archive=None, builder=None,3561 distroarchseries=None, archive=None, builder=None,
3562 status=None, pocket=None, date_created=None, processor=None,3562 status=None, pocket=None, date_created=None, processor=None,
3563 sourcepackagename=None):3563 sourcepackagename=None, arch_indep=None):
3564 """Create a BinaryPackageBuild.3564 """Create a BinaryPackageBuild.
35653565
3566 If archive is not supplied, the source_package_release is used3566 If archive is not supplied, the source_package_release is used
@@ -3594,6 +3594,8 @@
3594 and processor != distroarchseries.processor):3594 and processor != distroarchseries.processor):
3595 raise AssertionError(3595 raise AssertionError(
3596 "DistroArchSeries and Processor must match.")3596 "DistroArchSeries and Processor must match.")
3597 if arch_indep is None:
3598 arch_indep = distroarchseries.isNominatedArchIndep
3597 if archive is None:3599 if archive is None:
3598 if source_package_release is None:3600 if source_package_release is None:
3599 archive = distroarchseries.main_archive3601 archive = distroarchseries.main_archive
@@ -3624,7 +3626,8 @@
3624 status=status,3626 status=status,
3625 archive=archive,3627 archive=archive,
3626 pocket=pocket,3628 pocket=pocket,
3627 builder=builder)3629 builder=builder,
3630 arch_indep=arch_indep)
3628 IStore(binary_package_build).flush()3631 IStore(binary_package_build).flush()
3629 return binary_package_build3632 return binary_package_build
36303633