Andrey Fedoseev has proposed merging ~andrey-fedoseev/launchpad:debian-non-free-firmware into launchpad:master.
Commit message: Add `non-free-firmware` component for Debian imports Requested reviews: Launchpad code reviewers (launchpad-reviewers) For more details, see: https://code.launchpad.net/~andrey-fedoseev/launchpad/+git/launchpad/+merge/433188 -- Your team Launchpad code reviewers is requested to review the proposed merge of ~andrey-fedoseev/launchpad:debian-non-free-firmware into launchpad:master.
diff --git a/lib/lp/archiveuploader/tests/data/suite/README b/lib/lp/archiveuploader/tests/data/suite/README new file mode 100644 index 0000000..307827e --- /dev/null +++ b/lib/lp/archiveuploader/tests/data/suite/README @@ -0,0 +1,18 @@ +Some files in this directory are PGP-signed + +See `lp/testing/gpgkeys/data/README` for more information about the keys being used. + +To sign a file you should + +1. Import the key: + +``` +gpg --import lib/lp/testing/gpgkeys/data/[email protected] +gpg --import lib/lp/testing/gpgkeys/data/[email protected] +``` + +2. Add a signature like so: + +``` +gpg --clearsign -u [email protected] PATH_TO_THE_FILE +``` diff --git a/lib/lp/archiveuploader/tests/data/suite/bar_1.0-1_nonfreefirmware_component/bar_1.0-1.diff.gz b/lib/lp/archiveuploader/tests/data/suite/bar_1.0-1_nonfreefirmware_component/bar_1.0-1.diff.gz new file mode 100644 index 0000000..5f9eeb9 Binary files /dev/null and b/lib/lp/archiveuploader/tests/data/suite/bar_1.0-1_nonfreefirmware_component/bar_1.0-1.diff.gz differ diff --git a/lib/lp/archiveuploader/tests/data/suite/bar_1.0-1_nonfreefirmware_component/bar_1.0-1.dsc b/lib/lp/archiveuploader/tests/data/suite/bar_1.0-1_nonfreefirmware_component/bar_1.0-1.dsc new file mode 100644 index 0000000..63c210a --- /dev/null +++ b/lib/lp/archiveuploader/tests/data/suite/bar_1.0-1_nonfreefirmware_component/bar_1.0-1.dsc @@ -0,0 +1,21 @@ +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA1 + +Format: 1.0 +Source: bar +Version: 1.0-1 +Binary: bar +Maintainer: Launchpad team <[email protected]> +Architecture: any +Standards-Version: 3.6.2 +Files: + fc1464e5985b962a042d5354452f361d 164 bar_1.0.orig.tar.gz + 1e35b810764f140af9616de8274e6e73 537 bar_1.0-1.diff.gz + +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1.4.3 (GNU/Linux) + +iD8DBQFFt7Cojn63CGxkqMURAo6FAJ9ZUagUNtYpmZrqFwL6LXDKOUSOPwCdFqPa +BdrMeT+0Hg+yMS69uO+qJRI= +=mjFU +-----END PGP SIGNATURE----- diff --git a/lib/lp/archiveuploader/tests/data/suite/bar_1.0-1_nonfreefirmware_component/bar_1.0-1_source.changes b/lib/lp/archiveuploader/tests/data/suite/bar_1.0-1_nonfreefirmware_component/bar_1.0-1_source.changes new file mode 100644 index 0000000..8fff1d9 --- /dev/null +++ b/lib/lp/archiveuploader/tests/data/suite/bar_1.0-1_nonfreefirmware_component/bar_1.0-1_source.changes @@ -0,0 +1,31 @@ +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA1 + +Format: 1.7 +Date: Thu, 16 Feb 2006 15:34:09 +0000 +Source: bar +Binary: bar +Architecture: source +Version: 1.0-1 +Distribution: breezy +Urgency: low +Maintainer: Launchpad team <[email protected]> +Changed-By: Daniel Silverstone <[email protected]> +Description: + bar - Stuff for testing +Changes: + bar (1.0-1) breezy; urgency=low + . + * Initial version +Files: + 5d533778b698edc1a122098a98c8490e 512 non-free-firmware/devel optional bar_1.0-1.dsc + fc1464e5985b962a042d5354452f361d 164 non-free-firmware/devel optional bar_1.0.orig.tar.gz + 1e35b810764f140af9616de8274e6e73 537 non-free-firmware/devel optional bar_1.0-1.diff.gz +-----BEGIN PGP SIGNATURE----- +Comment: GPGTools - http://gpgtools.org + +iHQEARECADQWIQQ0DKO7Jw4nFsnuC3aOfrcIbGSoxQUCY3YW7xYcZm9vLmJhckBj +YW5vbmljYWwuY29tAAoJEI5+twhsZKjF2dAAnihUwKujXW1eHT4QspWTSzW6PSRs +AJ9lJOiYUiKXJXfEcfaG/Pi7G1cLZA== +=R1Ut +-----END PGP SIGNATURE----- diff --git a/lib/lp/archiveuploader/tests/data/suite/bar_1.0-1_nonfreefirmware_component/bar_1.0.orig.tar.gz b/lib/lp/archiveuploader/tests/data/suite/bar_1.0-1_nonfreefirmware_component/bar_1.0.orig.tar.gz new file mode 100644 index 0000000..c5a58e8 Binary files /dev/null and b/lib/lp/archiveuploader/tests/data/suite/bar_1.0-1_nonfreefirmware_component/bar_1.0.orig.tar.gz differ diff --git a/lib/lp/archiveuploader/tests/test_uploadprocessor.py b/lib/lp/archiveuploader/tests/test_uploadprocessor.py index 29d3024..1c4c37f 100644 --- a/lib/lp/archiveuploader/tests/test_uploadprocessor.py +++ b/lib/lp/archiveuploader/tests/test_uploadprocessor.py @@ -1417,6 +1417,7 @@ class TestUploadProcessor(StatsMixin, TestUploadProcessorBase): # such that: # 'contrib' -> 'multiverse' # 'non-free' -> 'multiverse' + # 'non-free-firmware' -> 'multiverse' # everything else -> 'universe' # # This is to relieve the archive admins of some work where this is @@ -1467,11 +1468,22 @@ class TestUploadProcessor(StatsMixin, TestUploadProcessorBase): "bar_1.0-1_nonfree_component", "multiverse" ) + def testUploadNonfreeFirmwareComponentOverride(self): + """ + Test the overriding of the non-free-firmware component on uploads. + """ + # The component non-free-firmware does not exist in the sample data, so + # add it here. + getUtility(IComponentSet).new("non-free-firmware") + self.checkComponentOverride( + "bar_1.0-1_nonfreefirmware_component", "multiverse" + ) + def testUploadDefaultComponentOverride(self): """Test the overriding of the component on uploads. - Components other than non-free and contrib should override to - universe. + Components other than non-free, non-free-firmware, and contrib should + override to universe. """ self.checkComponentOverride("bar_1.0-1", "universe") diff --git a/lib/lp/registry/model/distribution.py b/lib/lp/registry/model/distribution.py index c990027..5e0a7ff 100644 --- a/lib/lp/registry/model/distribution.py +++ b/lib/lp/registry/model/distribution.py @@ -2011,6 +2011,7 @@ class Distribution( "partner": ArchivePurpose.PARTNER, "contrib": ArchivePurpose.PRIMARY, "non-free": ArchivePurpose.PRIMARY, + "non-free-firmware": ArchivePurpose.PRIMARY, } try: diff --git a/lib/lp/services/config/schema-lazr.conf b/lib/lp/services/config/schema-lazr.conf index 640865d..dfa4f12 100644 --- a/lib/lp/services/config/schema-lazr.conf +++ b/lib/lp/services/config/schema-lazr.conf @@ -817,19 +817,19 @@ distroseries: bullseye pocketrelease: bullseye [gina_target.bookworm.optional] -components: main,contrib,non-free +components: main,contrib,non-free,non-free-firmware distro: debian distroseries: bookworm pocketrelease: bookworm [gina_target.sid.optional] -components: main,contrib,non-free +components: main,contrib,non-free,non-free-firmware distro: debian distroseries: sid pocketrelease: sid [gina_target.experimental.optional] -components: main,contrib,non-free +components: main,contrib,non-free,non-free-firmware distro: debian distroseries: experimental pocketrelease: experimental diff --git a/lib/lp/soyuz/adapters/overrides.py b/lib/lp/soyuz/adapters/overrides.py index 1a008c0..1ce3fdb 100644 --- a/lib/lp/soyuz/adapters/overrides.py +++ b/lib/lp/soyuz/adapters/overrides.py @@ -459,6 +459,7 @@ class UnknownOverridePolicy(BaseOverridePolicy): values. The rules for overriding are: (See bug #120052) 'contrib' -> 'multiverse' 'non-free' -> 'multiverse' + 'non-free-firmware' -> 'multiverse' everything else -> 'universe' This mainly relates to Debian syncs, where the default component is 'main' but should not be in main for Ubuntu. @@ -467,6 +468,7 @@ class UnknownOverridePolicy(BaseOverridePolicy): DEBIAN_COMPONENT_OVERRIDE_MAP = { "contrib": "multiverse", "non-free": "multiverse", + "non-free-firmware": "multiverse", } DEFAULT_OVERRIDE_COMPONENT = "universe" diff --git a/lib/lp/soyuz/adapters/tests/test_overrides.py b/lib/lp/soyuz/adapters/tests/test_overrides.py index 63247ad..85deb99 100644 --- a/lib/lp/soyuz/adapters/tests/test_overrides.py +++ b/lib/lp/soyuz/adapters/tests/test_overrides.py @@ -563,7 +563,7 @@ class TestUnknownOverridePolicy(TestCaseWithFactory): def test_unknown_sources(self): # The unknown policy uses a default component based on the # pre-override component. - for component in ("contrib", "non-free"): + for component in ("contrib", "non-free", "non-free-firmware"): self.factory.makeComponent(component) distroseries = self.factory.makeDistroSeries() spns = [self.factory.makeSourcePackageName() for i in range(3)] @@ -578,7 +578,7 @@ class TestUnknownOverridePolicy(TestCaseWithFactory): component=getUtility(IComponentSet)[component] ) for spn, component in zip( - spns, ("main", "contrib", "non-free") + spns, ("main", "contrib", "non-free", "non-free-firmware") ) } ) @@ -587,7 +587,7 @@ class TestUnknownOverridePolicy(TestCaseWithFactory): component=getUtility(IComponentSet)[component], new=True ) for spn, component in zip( - spns, ("universe", "multiverse", "multiverse") + spns, ("universe", "multiverse", "multiverse", "multiverse") ) } self.assertEqual(expected, overrides) diff --git a/lib/lp/soyuz/doc/distribution.rst b/lib/lp/soyuz/doc/distribution.rst index 1997d7b..a0e13e2 100644 --- a/lib/lp/soyuz/doc/distribution.rst +++ b/lib/lp/soyuz/doc/distribution.rst @@ -364,6 +364,12 @@ their packages in the correct archive. >>> print(non_free_archive.displayname) Primary Archive for Ubuntu Test + >>> non_free_firmware_archive = ubuntutest.getArchiveByComponent( + ... "non-free-firmware" + ... ) + >>> print(non_free_firmware_archive.displayname) + Primary Archive for Ubuntu Test + >>> contrib_archive = ubuntutest.getArchiveByComponent("contrib") >>> print(contrib_archive.displayname) Primary Archive for Ubuntu Test diff --git a/lib/lp/soyuz/doc/soyuz-upload.rst b/lib/lp/soyuz/doc/soyuz-upload.rst index 9a38d32..f32f5f7 100644 --- a/lib/lp/soyuz/doc/soyuz-upload.rst +++ b/lib/lp/soyuz/doc/soyuz-upload.rst @@ -251,6 +251,7 @@ NascentUpload in the 'sync' policy in the future. >>> from lp.soyuz.interfaces.component import IComponentSet >>> component_set = getUtility(IComponentSet) >>> non_free = component_set.new("non-free") + >>> non_free_firmware = component_set.new("non-free-firmware") >>> contrib = component_set.new("contrib") >>> import transaction >>> transaction.commit() diff --git a/lib/lp/soyuz/tests/test_packagecopyjob.py b/lib/lp/soyuz/tests/test_packagecopyjob.py index 451fd87..f28ec27 100644 --- a/lib/lp/soyuz/tests/test_packagecopyjob.py +++ b/lib/lp/soyuz/tests/test_packagecopyjob.py @@ -1205,6 +1205,20 @@ class PlainPackageCopyJobTests(TestCaseWithFactory, LocalTestHelper): self.assertEqual("multiverse", pcj.metadata["component_override"]) + def test_copying_to_main_archive_debian_override_nonfree_firmware(self): + # The job uses the overrides to map debian components to + # the right components. + # 'nonfreefirmware' gets mapped to 'multiverse'. + + # Create debian component. + self.factory.makeComponent("non-free-firmware") + # Create a copy job for a package in 'non-free-firmware'. + pcj = self.createCopyJob( + "package", "non-free-firmware", "web", "2.8.1" + ) + + self.assertEqual("multiverse", pcj.metadata["component_override"]) + def test_double_copy(self): # Copying a package already in the target successfully does nothing. job = create_proper_job(self.factory)
_______________________________________________ Mailing list: https://launchpad.net/~launchpad-reviewers Post to : [email protected] Unsubscribe : https://launchpad.net/~launchpad-reviewers More help : https://help.launchpad.net/ListHelp

