Merge lp:~rockstar/launchpad/no-arm-recipe-build into lp:launchpad

Proposed by Paul Hummer
Status: Merged
Approved by: Edwin Grubbs
Approved revision: no longer in the source branch.
Merged at revision: 10872
Proposed branch: lp:~rockstar/launchpad/no-arm-recipe-build
Merge into: lp:launchpad
Diff against target: 169 lines (+44/-8)
6 files modified
lib/lp/code/browser/tests/test_sourcepackagerecipe.py (+8/-0)
lib/lp/code/interfaces/sourcepackagerecipe.py (+0/-2)
lib/lp/code/model/sourcepackagerecipebuild.py (+4/-1)
lib/lp/code/model/tests/test_sourcepackagerecipe.py (+6/-0)
lib/lp/code/model/tests/test_sourcepackagerecipebuild.py (+21/-4)
lib/lp/testing/factory.py (+5/-1)
To merge this branch: bzr merge lp:~rockstar/launchpad/no-arm-recipe-build
Reviewer Review Type Date Requested Status
Edwin Grubbs (community) Approve
Review via email: mp+25364@code.launchpad.net

Description of the change

There's a new ARM builder! Yay! At UDS though, we realized that we didn't
have constraints to make sure that SourcePackageRecipeBuilds didn't try to use
that ARM builder. Bad things happen when it does try to use the ARM builder.
There's a deeper problem that Soyuz has to figure out, but this branch fixes
the current problem. Translations has already landed a fix to production with
a similar fix.

I also removed some lint I noticed...

To post a comment you must log in.
Revision history for this message
Edwin Grubbs (edwin-grubbs) wrote :

Go for it.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'lib/lp/code/browser/tests/test_sourcepackagerecipe.py'
2--- lib/lp/code/browser/tests/test_sourcepackagerecipe.py 2010-05-07 20:12:07 +0000
3+++ lib/lp/code/browser/tests/test_sourcepackagerecipe.py 2010-05-17 19:05:47 +0000
4@@ -23,6 +23,7 @@
5 SourcePackageRecipeView, SourcePackageRecipeBuildView
6 )
7 from lp.code.interfaces.sourcepackagerecipe import MINIMAL_RECIPE_TEXT
8+from lp.soyuz.model.processor import ProcessorFamily
9 from lp.testing import ANONYMOUS, BrowserTestCase, login
10
11
12@@ -40,6 +41,9 @@
13 self.squirrel = self.factory.makeDistroSeries(
14 displayname='Secret Squirrel', name='secret',
15 distribution=self.ppa.distribution)
16+ self.squirrel.nominatedarchindep = self.squirrel.newArch(
17+ 'i386', ProcessorFamily.get(1), False, self.chef,
18+ supports_virtualized=True)
19
20 def makeRecipe(self):
21 """Create and return a specific recipe."""
22@@ -310,6 +314,10 @@
23 woody = self.factory.makeDistroSeries(
24 name='woody', displayname='Woody',
25 distribution=self.ppa.distribution)
26+ woody.nominatedarchindep = woody.newArch(
27+ 'i386', ProcessorFamily.get(1), False, self.factory.makePerson(),
28+ supports_virtualized=True)
29+
30 recipe = self.makeRecipe()
31 browser = self.getViewBrowser(recipe, '+request-builds')
32 browser.getControl('Woody').click()
33
34=== modified file 'lib/lp/code/interfaces/sourcepackagerecipe.py'
35--- lib/lp/code/interfaces/sourcepackagerecipe.py 2010-04-30 12:33:16 +0000
36+++ lib/lp/code/interfaces/sourcepackagerecipe.py 2010-05-17 19:05:47 +0000
37@@ -36,12 +36,10 @@
38
39 from lp.code.interfaces.branch import IBranch
40 from lp.soyuz.interfaces.archive import IArchive
41-from lp.registry.interfaces.person import IPerson
42 from lp.registry.interfaces.pocket import PackagePublishingPocket
43 from lp.registry.interfaces.role import IHasOwner
44 from lp.registry.interfaces.distroseries import IDistroSeries
45 from lp.registry.interfaces.sourcepackagename import ISourcePackageName
46-from lp.soyuz.interfaces.archive import IArchive
47
48
49 MINIMAL_RECIPE_TEXT = dedent(u'''\
50
51=== modified file 'lib/lp/code/model/sourcepackagerecipebuild.py'
52--- lib/lp/code/model/sourcepackagerecipebuild.py 2010-05-05 20:01:56 +0000
53+++ lib/lp/code/model/sourcepackagerecipebuild.py 2010-05-17 19:05:47 +0000
54@@ -251,7 +251,10 @@
55 build = Reference(
56 build_id, 'SourcePackageRecipeBuild.id')
57
58- processor = None
59+ @property
60+ def processor(self):
61+ return self.build.distroseries.nominatedarchindep.default_processor
62+
63 virtualized = True
64
65 def __init__(self, build, job):
66
67=== modified file 'lib/lp/code/model/tests/test_sourcepackagerecipe.py'
68--- lib/lp/code/model/tests/test_sourcepackagerecipe.py 2010-05-11 14:09:44 +0000
69+++ lib/lp/code/model/tests/test_sourcepackagerecipe.py 2010-05-17 19:05:47 +0000
70@@ -40,6 +40,7 @@
71 from lp.registry.interfaces.pocket import PackagePublishingPocket
72 from lp.services.job.interfaces.job import (
73 IJob, JobStatus)
74+from lp.soyuz.model.processor import ProcessorFamily
75 from lp.testing import (
76 ANONYMOUS, launchpadlib_for, login, login_person, person_logged_in,
77 TestCaseWithFactory, ws_object)
78@@ -568,6 +569,11 @@
79 person = self.factory.makePerson()
80 archive = self.factory.makeArchive(owner=person)
81 distroseries = self.factory.makeDistroSeries()
82+ distroseries_i386 = distroseries.newArch(
83+ 'i386', ProcessorFamily.get(1), False, person,
84+ supports_virtualized=True)
85+ distroseries.nominatedarchindep = distroseries_i386
86+
87 recipe, user, launchpad = self.makeRecipe(person)
88 distroseries = ws_object(launchpad, distroseries)
89 archive = ws_object(launchpad, archive)
90
91=== modified file 'lib/lp/code/model/tests/test_sourcepackagerecipebuild.py'
92--- lib/lp/code/model/tests/test_sourcepackagerecipebuild.py 2010-05-06 18:16:09 +0000
93+++ lib/lp/code/model/tests/test_sourcepackagerecipebuild.py 2010-05-17 19:05:47 +0000
94@@ -25,6 +25,7 @@
95 from lp.code.interfaces.sourcepackagerecipebuild import (
96 ISourcePackageRecipeBuildJob, ISourcePackageRecipeBuild,
97 ISourcePackageRecipeBuildSource)
98+from lp.soyuz.model.processor import ProcessorFamily
99 from lp.testing import ANONYMOUS, login, person_logged_in, TestCaseWithFactory
100
101
102@@ -35,11 +36,20 @@
103
104 def makeSourcePackageRecipeBuild(self):
105 """Create a `SourcePackageRecipeBuild` for testing."""
106+ person = self.factory.makePerson()
107+ distroseries = self.factory.makeDistroSeries()
108+ distroseries_i386 = distroseries.newArch(
109+ 'i386', ProcessorFamily.get(1), False, person,
110+ supports_virtualized=True)
111+ distroseries.nominatedarchindep = distroseries_i386
112+
113 return getUtility(ISourcePackageRecipeBuildSource).new(
114- sourcepackage=self.factory.makeSourcePackage(),
115- recipe=self.factory.makeSourcePackageRecipe(),
116+ sourcepackage=self.factory.makeSourcePackage(
117+ distroseries=distroseries),
118+ recipe=self.factory.makeSourcePackageRecipe(
119+ distroseries=distroseries),
120 archive=self.factory.makeArchive(),
121- requester=self.factory.makePerson())
122+ requester=person)
123
124 def test_providesInterfaces(self):
125 # SourcePackageRecipeBuild provides IBuildBase and
126@@ -62,11 +72,18 @@
127
128 def test_queueBuild(self):
129 spb = self.makeSourcePackageRecipeBuild()
130+
131 bq = spb.queueBuild()
132 self.assertProvides(bq, IBuildQueue)
133 self.assertProvides(bq.specific_job, ISourcePackageRecipeBuildJob)
134 self.assertEqual(True, bq.virtualized)
135- self.assertIs(None, bq.processor)
136+
137+ # The processor for SourcePackageRecipeBuilds should not be None. They
138+ # do require specific environments.
139+ self.assertNotEqual(None, bq.processor)
140+ self.assertEqual(
141+ spb.distroseries.nominatedarchindep.default_processor,
142+ bq.processor)
143 self.assertEqual(bq, spb.buildqueue_record)
144
145 def test_title(self):
146
147=== modified file 'lib/lp/testing/factory.py'
148--- lib/lp/testing/factory.py 2010-05-11 13:11:43 +0000
149+++ lib/lp/testing/factory.py 2010-05-17 19:05:47 +0000
150@@ -131,7 +131,7 @@
151 from lp.soyuz.interfaces.processor import IProcessorFamilySet
152 from lp.soyuz.interfaces.publishing import PackagePublishingStatus
153 from lp.soyuz.interfaces.section import ISectionSet
154-from lp.soyuz.model.processor import ProcessorFamilySet
155+from lp.soyuz.model.processor import ProcessorFamily, ProcessorFamilySet
156 from lp.soyuz.model.binarypackagebuild import BinaryPackageBuild
157 from lp.soyuz.model.publishing import SourcePackagePublishingHistory
158
159@@ -1766,6 +1766,10 @@
160 owner = self.makePerson()
161 if distroseries is None:
162 distroseries = self.makeDistroSeries()
163+ distroseries.nominatedarchindep = distroseries.newArch(
164+ 'i386', ProcessorFamily.get(1), False, owner,
165+ supports_virtualized=True)
166+
167 # Make sure we have a real sourcepackagename object.
168 if (sourcepackagename is None or
169 isinstance(sourcepackagename, basestring)):