launchpad-reviewers team mailing list archive
-
launchpad-reviewers team
-
Mailing list archive
-
Message #32862
[Merge] ~mwhudson/launchpad:publish-variant-build into launchpad:master
Michael Hudson-Doyle has proposed merging ~mwhudson/launchpad:publish-variant-build into launchpad:master with ~mwhudson/launchpad:add-distroseries-underlying-arch-model as a prerequisite.
Commit message:
support publishing variants in PPA publishing
Requested reviews:
Launchpad code reviewers (launchpad-reviewers)
For more details, see:
https://code.launchpad.net/~mwhudson/launchpad/+git/launchpad/+merge/490643
--
Your team Launchpad code reviewers is requested to review the proposed merge of ~mwhudson/launchpad:publish-variant-build into launchpad:master.
diff --git a/lib/lp/archivepublisher/indices.py b/lib/lp/archivepublisher/indices.py
index 05fa6ec..9bfdb26 100644
--- a/lib/lp/archivepublisher/indices.py
+++ b/lib/lp/archivepublisher/indices.py
@@ -185,10 +185,17 @@ def build_binary_stanza_fields(
# Present 'all' in every archive index for architecture
# independent binaries.
if bpr.architecturespecific:
- architecture = bpr.build.distro_arch_series.architecturetag
+ if bpr.build.distro_arch_series.underlying_architecturetag:
+ architecture = (
+ bpr.build.distro_arch_series.underlying_architecturetag
+ )
+ else:
+ architecture = bpr.build.distro_arch_series.architecturetag
else:
architecture = "all"
+ architecture_variant = bpr.getUserDefinedField("Architecture-Variant")
+
essential = None
if bpr.essential:
essential = "yes"
@@ -207,6 +214,8 @@ def build_binary_stanza_fields(
fields.append("Installed-Size", bpr.installedsize)
fields.append("Maintainer", spr.dsc_maintainer_rfc822)
fields.append("Architecture", architecture)
+ if architecture_variant is not None:
+ fields.append("Architecture-Variant", architecture_variant)
fields.append("Version", bpr.version)
fields.append("Recommends", bpr.recommends)
fields.append("Replaces", bpr.replaces)
diff --git a/lib/lp/archivepublisher/tests/test_indices.py b/lib/lp/archivepublisher/tests/test_indices.py
index 1397ffd..9430066 100644
--- a/lib/lp/archivepublisher/tests/test_indices.py
+++ b/lib/lp/archivepublisher/tests/test_indices.py
@@ -9,6 +9,8 @@ import unittest
import apt_pkg
+from zope.security.proxy import removeSecurityProxy
+
from lp.archivepublisher.indices import (
IndexStanzaFields,
build_binary_stanza_fields,
@@ -205,6 +207,72 @@ class TestNativeArchiveIndexes(TestNativePublishingBase):
build_bpph_stanza(pub_binary).makeOutput().splitlines(),
)
+ def testBinaryStanzaArchSpecific(self):
+ das = self.factory.makeBuildableDistroArchSeries(
+ distroseries=self.distroseries, architecturetag="mips"
+ )
+ procs = list(self.distroseries.main_archive.processors)
+ procs.append(das.processor)
+ removeSecurityProxy(self.distroseries.main_archive).processors = procs
+ pub_binaries = self.getPubBinaries(
+ architecturespecific=True,
+ )
+ index_architectures = {
+ get_field(build_bpph_stanza(pub_binary), "Architecture")
+ for pub_binary in pub_binaries
+ }
+ self.assertIn("mips", index_architectures)
+
+ def testBinaryStanzaVariant(self):
+ for das in self.distroseries.architectures:
+ das.enabled = False
+ das_amd64 = self.factory.makeBuildableDistroArchSeries(
+ distroseries=self.distroseries, architecturetag="amd64"
+ )
+ procs = list(self.distroseries.main_archive.processors)
+ procs.append(das_amd64.processor)
+ self.distroseries.main_archive.setProcessors(procs)
+
+ pub_source = self.getPubSource(architecturehintlist="any")
+
+ [amd64_binary] = self.getPubBinaries(
+ pub_source=pub_source,
+ )
+
+ das_amd64v3 = self.factory.makeBuildableDistroArchSeries(
+ distroseries=self.distroseries,
+ architecturetag="amd64v3",
+ underlying_architecturetag="amd64",
+ )
+ procs.append(das_amd64v3.processor)
+ self.distroseries.main_archive.setProcessors(procs)
+
+ [amd64v3_binary] = self.getPubBinaries(
+ pub_source=pub_source,
+ user_defined_fields=[("Architecture-Variant", "amd64v3")],
+ )
+
+ architecture_fields = {
+ pub_binary.distroarchseries.architecturetag: get_field(
+ build_bpph_stanza(pub_binary), "Architecture"
+ )
+ for pub_binary in [amd64_binary, amd64v3_binary]
+ }
+ architecture_variant_fields = {
+ pub_binary.distroarchseries.architecturetag: get_field(
+ build_bpph_stanza(pub_binary), "Architecture-Variant"
+ )
+ for pub_binary in [amd64_binary, amd64v3_binary]
+ }
+ self.assertEqual(
+ {"amd64": "amd64", "amd64v3": "amd64"},
+ architecture_fields,
+ )
+ self.assertEqual(
+ {"amd64": None, "amd64v3": "amd64v3"},
+ architecture_variant_fields,
+ )
+
def testBinaryStanzaWithCustomFields(self):
"""Check just-created binary publication Index stanza with
custom fields (Python-Version).