launchpad-reviewers team mailing list archive
-
launchpad-reviewers team
-
Mailing list archive
-
Message #33069
[Merge] ~mwhudson/launchpad:variants-vs-linux-any into launchpad:master
Michael Hudson-Doyle has proposed merging ~mwhudson/launchpad:variants-vs-linux-any into launchpad:master.
Commit message:
use underlying archtag when checking if a package wants to build on an arch
should enable variant builds of packages that build for Architecure: linux-any
Requested reviews:
Launchpad code reviewers (launchpad-reviewers)
For more details, see:
https://code.launchpad.net/~mwhudson/launchpad/+git/launchpad/+merge/493572
Had to resort to asking wgrant what was going on here!
--
Your team Launchpad code reviewers is requested to review the proposed merge of ~mwhudson/launchpad:variants-vs-linux-any into launchpad:master.
diff --git a/lib/lp/soyuz/model/binarypackagebuild.py b/lib/lp/soyuz/model/binarypackagebuild.py
index 30e60c2..881b068 100644
--- a/lib/lp/soyuz/model/binarypackagebuild.py
+++ b/lib/lp/soyuz/model/binarypackagebuild.py
@@ -1586,14 +1586,22 @@ class BinaryPackageBuildSet(SpecificBuildFarmJobSourceMixin):
# Create builds for the remaining architectures.
new_builds = []
for das in sorted(need_archs, key=attrgetter("architecturetag")):
- if das.architecturetag not in create_tag_map:
+ if das.underlying_architecturetag is not None:
+ archtag = das.underlying_architecturetag
+ else:
+ archtag = das.architecturetag
+ if archtag not in create_tag_map:
continue
+ if das.underlying_architecturetag is not None:
+ indep = False
+ else:
+ indep = create_tag_map[das.architecturetag]
build = self.new(
source_package_release=sourcepackagerelease,
distro_arch_series=das,
archive=archive,
pocket=pocket,
- arch_indep=create_tag_map[das.architecturetag],
+ arch_indep=indep,
)
new_builds.append(build)
# Create the builds in suspended mode for disabled archives.
diff --git a/lib/lp/soyuz/tests/test_build_set.py b/lib/lp/soyuz/tests/test_build_set.py
index 7f14271..a17930f 100644
--- a/lib/lp/soyuz/tests/test_build_set.py
+++ b/lib/lp/soyuz/tests/test_build_set.py
@@ -649,6 +649,32 @@ class BuildRecordCreationTests(TestNativePublishingBase):
new_builds = self.createBuilds(spr, self.distroseries)
self.assertBuildsMatch({}, new_builds)
+ def test_createForSource_linux_any(self):
+ # createForSource with a hintlist of linux-any builds for all
+ # linux architectures.
+ spr = self.factory.makeSourcePackageRelease(
+ architecturehintlist="linux-any",
+ )
+ builds = self.createBuilds(spr, self.distroseries2)
+ self.assertBuildsMatch({"sparc": False, "x32": True}, builds)
+
+ def test_createForSource_linux_any_variant(self):
+ # createForSource with a hintlist of linux-any builds for
+ # variants as well.
+ spr = self.factory.makeSourcePackageRelease(
+ architecturehintlist="linux-any",
+ )
+ self.factory.makeBuildableDistroArchSeries(
+ distroseries=self.distroseries2,
+ architecturetag="x32v2",
+ underlying_architecturetag="x32",
+ add_proc_to_archive_processors=True,
+ )
+ builds = self.createBuilds(spr, self.distroseries2)
+ self.assertBuildsMatch(
+ {"sparc": False, "x32": True, "x32v2": False}, builds
+ )
+
def test_createForSource_honours_filters(self):
# If there are DistroArchSeriesFilters for some architectures,
# createForSource honours them.