licensing: split deprecated check out for reuse
This just adds unittest coverage for now.
BUG=chromium:401332, chromium:1019728
TEST=CQ passes
Change-Id: Ib2a2775146519cae8eec6b2d5f62460410038bc9
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/2303809
Reviewed-by: Alex Klein <saklein@chromium.org>
Commit-Queue: Mike Frysinger <vapier@chromium.org>
Tested-by: Mike Frysinger <vapier@chromium.org>
diff --git a/licensing/licenses_lib.py b/licensing/licenses_lib.py
index 31e81c4..a9b01a1 100644
--- a/licensing/licenses_lib.py
+++ b/licensing/licenses_lib.py
@@ -794,6 +794,179 @@
return stock + custom
+def _CheckForDeprecatedLicense(cpf, licenses):
+ """See if |cpf| is a known package using a deprecated license.
+
+ We have a bunch of licenses we don't want people to use, but some packages
+ were using them by the time we noticed. Still allow those existing ones,
+ but prevent new users from showing up.
+ """
+ # TODO(crbug.com/401332): Remove this entirely.
+ # We allow a few packages for now so new packages will stop showing up.
+ if 'Proprietary-Binary' in licenses:
+ # Note: DO NOT ADD ANY MORE PACKAGES HERE.
+ LEGACY_PKGS = (
+ 'chromeos-base/infineon-firmware',
+ 'chromeos-base/pepper-flash',
+ 'sys-boot/coreboot-private-files-',
+ 'sys-boot/exynos-pre-boot',
+ 'sys-boot/nhlt-blobs',
+ 'sys-boot/mma-blobs',
+ )
+ if not any(cpf.startswith(x) for x in LEGACY_PKGS):
+ raise PackageLicenseError('Proprietary-Binary is not a valid license.')
+
+ # TODO(crbug.com/1019728): Remove this entirely.
+ # We allow a few packages for now so new packages will stop showing up.
+ if 'Google-TOS' in licenses:
+ # Note: DO NOT ADD ANY MORE PACKAGES HERE.
+ LEGACY_PKGS = {
+ 'chromeos-base/android-flashstation-app',
+ 'chromeos-base/app-shell-apps-rialto',
+ 'chromeos-base/chromeos-board-default-apps-atlas',
+ 'chromeos-base/chromeos-board-default-apps-blaze',
+ 'chromeos-base/chromeos-board-default-apps-butterfly',
+ 'chromeos-base/chromeos-board-default-apps-candy',
+ 'chromeos-base/chromeos-board-default-apps-cave',
+ 'chromeos-base/chromeos-board-default-apps-chell',
+ 'chromeos-base/chromeos-board-default-apps-falco',
+ 'chromeos-base/chromeos-board-default-apps-kip',
+ 'chromeos-base/chromeos-board-default-apps-link',
+ 'chromeos-base/chromeos-board-default-apps-mickey',
+ 'chromeos-base/chromeos-board-default-apps-minnie',
+ 'chromeos-base/chromeos-board-default-apps-nocturne',
+ 'chromeos-base/chromeos-board-default-apps-paine',
+ 'chromeos-base/chromeos-board-default-apps-pi',
+ 'chromeos-base/chromeos-board-default-apps-pit',
+ 'chromeos-base/chromeos-board-default-apps-quawks',
+ 'chromeos-base/chromeos-board-default-apps-setzer',
+ 'chromeos-base/chromeos-board-default-apps-skate',
+ 'chromeos-base/chromeos-board-default-apps-snappy',
+ 'chromeos-base/chromeos-board-default-apps-soraka',
+ 'chromeos-base/chromeos-board-default-apps-speedy',
+ 'chromeos-base/chromeos-board-default-apps-squawks',
+ 'chromeos-base/chromeos-board-default-apps-terra',
+ 'chromeos-base/chromeos-board-default-apps-winky',
+ 'chromeos-base/chromeos-board-default-apps-yuna',
+ 'chromeos-base/chromeos-board-default-apps-zako',
+ 'chromeos-base/chromeos-chrome',
+ 'chromeos-base/chromeos-default-apps',
+ 'chromeos-base/chromeos-disk-firmware-enguarde',
+ 'chromeos-base/chromeos-disk-firmware-falco',
+ 'chromeos-base/chromeos-disk-firmware-gnawty',
+ 'chromeos-base/chromeos-disk-firmware-samus',
+ 'chromeos-base/chromeos-disk-firmware-squawks',
+ 'chromeos-base/chromeos-disk-firmware-test-enguarde',
+ 'chromeos-base/chromeos-disk-firmware-test-gnawty',
+ 'chromeos-base/chromeos-disk-firmware-test-samus',
+ 'chromeos-base/chromeos-disk-firmware-test-squawks',
+ 'chromeos-base/chromeos-firmware-anx7688',
+ 'chromeos-base/fibocom-firmware',
+ 'chromeos-base/google-sans-fonts',
+ 'chromeos-base/houdini',
+ 'chromeos-base/houdini-pi',
+ 'chromeos-base/houdini-qt',
+ 'chromeos-base/intel-hdcp',
+ 'chromeos-base/monotype-fonts',
+ 'chromeos-base/rialto-cellular-autoconnect',
+ 'chromeos-base/rialto-modem-watchdog',
+ 'chromeos-base/rialto-override-apn',
+ 'chromeos-base/rialto-override-scanresponse',
+ 'chromeos-base/rialto-services',
+ 'chromeos-base/widevine-cdm',
+ 'dev-embedded/meta-embedded-toolkit',
+ 'dev-util/PVRPerfServer',
+ 'dev-util/PVRTrace',
+ 'media-libs/a630-fw',
+ 'media-libs/adreno-drivers',
+ 'media-libs/apl-hotword-support',
+ 'media-libs/arc-img-ddk',
+ 'media-libs/arc-mali-drivers',
+ 'media-libs/arc-mali-drivers-bifrost',
+ 'media-libs/dlm',
+ 'media-libs/glk-hotword-support',
+ 'media-libs/go2001-fw',
+ 'media-libs/img-ddk',
+ 'media-libs/img-ddk-bin',
+ 'media-libs/kbl-hotword-support',
+ 'media-libs/kbl-rt5514-hotword-support',
+ 'media-libs/mali-drivers',
+ 'media-libs/mali-drivers-bifrost',
+ 'media-libs/mali-drivers-bifrost-bin',
+ 'media-libs/mali-drivers-bin',
+ 'media-libs/mfc-fw',
+ 'media-libs/mfc-fw-v7',
+ 'media-libs/mfc-fw-v8',
+ 'media-libs/rk3399-hotword-support',
+ 'media-libs/skl-hotword-support',
+ 'sys-apps/accelerator-bootstrap',
+ 'sys-apps/eid',
+ 'sys-apps/loonix-hydrogen',
+ 'sys-boot/chromeos-firmware-ps8751',
+ 'sys-boot/chromeos-vendor-strings-wilco',
+ 'sys-boot/coreboot-private-files-amenia',
+ 'sys-boot/coreboot-private-files-aplrvp',
+ 'sys-boot/coreboot-private-files-atlas',
+ 'sys-boot/coreboot-private-files-baseboard-auron',
+ 'sys-boot/coreboot-private-files-baseboard-coral',
+ 'sys-boot/coreboot-private-files-baseboard-fizz',
+ 'sys-boot/coreboot-private-files-baseboard-glados',
+ 'sys-boot/coreboot-private-files-baseboard-jecht',
+ 'sys-boot/coreboot-private-files-baseboard-kalista',
+ 'sys-boot/coreboot-private-files-baseboard-kblrvp',
+ 'sys-boot/coreboot-private-files-baseboard-kunimitsu',
+ 'sys-boot/coreboot-private-files-baseboard-nami',
+ 'sys-boot/coreboot-private-files-baseboard-octopus',
+ 'sys-boot/coreboot-private-files-baseboard-poppy',
+ 'sys-boot/coreboot-private-files-baseboard-rammus',
+ 'sys-boot/coreboot-private-files-baseboard-reef',
+ 'sys-boot/coreboot-private-files-baseboard-strago',
+ 'sys-boot/coreboot-private-files-bolt',
+ 'sys-boot/coreboot-private-files-chipset-picasso',
+ 'sys-boot/coreboot-private-files-chipset-stnyridge',
+ 'sys-boot/coreboot-private-files-cnlrvp',
+ 'sys-boot/coreboot-private-files-drallion',
+ 'sys-boot/coreboot-private-files-eve',
+ 'sys-boot/coreboot-private-files-falco',
+ 'sys-boot/coreboot-private-files-fizz',
+ 'sys-boot/coreboot-private-files-glkrvp',
+ 'sys-boot/coreboot-private-files-grunt',
+ 'sys-boot/coreboot-private-files-hatch',
+ 'sys-boot/coreboot-private-files-kalista',
+ 'sys-boot/coreboot-private-files-mistral',
+ 'sys-boot/coreboot-private-files-nami',
+ 'sys-boot/coreboot-private-files-nautilus',
+ 'sys-boot/coreboot-private-files-nocturne',
+ 'sys-boot/coreboot-private-files-panther',
+ 'sys-boot/coreboot-private-files-peppy',
+ 'sys-boot/coreboot-private-files-poppy',
+ 'sys-boot/coreboot-private-files-pyro',
+ 'sys-boot/coreboot-private-files-rambi',
+ 'sys-boot/coreboot-private-files-rammus',
+ 'sys-boot/coreboot-private-files-reef',
+ 'sys-boot/coreboot-private-files-samus',
+ 'sys-boot/coreboot-private-files-sand',
+ 'sys-boot/coreboot-private-files-sarien',
+ 'sys-boot/coreboot-private-files-sklrvp',
+ 'sys-boot/coreboot-private-files-snappy',
+ 'sys-boot/coreboot-private-files-soraka',
+ 'sys-boot/exynos-pre-boot',
+ 'sys-boot/intel-cflfsp',
+ 'sys-boot/intel-glkfsp',
+ 'sys-boot/intel-iclfsp',
+ 'sys-boot/mma-blobs',
+ 'sys-boot/nhlt-blobs',
+ 'sys-boot/rk3399-hdcp-fw',
+ 'sys-firmware/displaylink-firmware',
+ 'sys-firmware/huddly-firmware',
+ 'sys-firmware/iq-firmware',
+ 'sys-firmware/sis-firmware',
+ 'www-servers/spacecast',
+ }
+ if not any(cpf.startswith(x) for x in LEGACY_PKGS):
+ raise PackageLicenseError('Google-TOS is not a valid license.')
+
+
class Licensing(object):
"""Do the actual work of extracting licensing info and outputting html."""
@@ -885,177 +1058,14 @@
license_names: list of license name strings.
license_texts: custom license text to use, mostly for attribution.
"""
- # TODO(crbug.com/401332): Remove this entirely.
- # We allow a few packages for now so new packages will stop showing up.
- if 'Proprietary-Binary' in license_names:
- # Note: DO NOT ADD ANY MORE PACKAGES HERE.
- LEGACY_PKGS = (
- 'chromeos-base/infineon-firmware',
- 'chromeos-base/pepper-flash',
- 'sys-boot/coreboot-private-files-',
- 'sys-boot/exynos-pre-boot',
- 'sys-boot/nhlt-blobs',
- 'sys-boot/mma-blobs',
- )
- if not any(fullnamerev.startswith(x) for x in LEGACY_PKGS):
- raise AssertionError('Proprietary-Binary is not a valid license.')
-
- # TODO(crbug.com/1019728): Remove this entirely.
- # We allow a few packages for now so new packages will stop showing up.
- if 'Google-TOS' in license_names:
- # Note: DO NOT ADD ANY MORE PACKAGES HERE.
- LEGACY_PKGS = {
- 'chromeos-base/android-flashstation-app',
- 'chromeos-base/app-shell-apps-rialto',
- 'chromeos-base/chromeos-board-default-apps-atlas',
- 'chromeos-base/chromeos-board-default-apps-blaze',
- 'chromeos-base/chromeos-board-default-apps-butterfly',
- 'chromeos-base/chromeos-board-default-apps-candy',
- 'chromeos-base/chromeos-board-default-apps-cave',
- 'chromeos-base/chromeos-board-default-apps-chell',
- 'chromeos-base/chromeos-board-default-apps-falco',
- 'chromeos-base/chromeos-board-default-apps-kip',
- 'chromeos-base/chromeos-board-default-apps-link',
- 'chromeos-base/chromeos-board-default-apps-mickey',
- 'chromeos-base/chromeos-board-default-apps-minnie',
- 'chromeos-base/chromeos-board-default-apps-nocturne',
- 'chromeos-base/chromeos-board-default-apps-paine',
- 'chromeos-base/chromeos-board-default-apps-pi',
- 'chromeos-base/chromeos-board-default-apps-pit',
- 'chromeos-base/chromeos-board-default-apps-quawks',
- 'chromeos-base/chromeos-board-default-apps-setzer',
- 'chromeos-base/chromeos-board-default-apps-skate',
- 'chromeos-base/chromeos-board-default-apps-snappy',
- 'chromeos-base/chromeos-board-default-apps-soraka',
- 'chromeos-base/chromeos-board-default-apps-speedy',
- 'chromeos-base/chromeos-board-default-apps-squawks',
- 'chromeos-base/chromeos-board-default-apps-terra',
- 'chromeos-base/chromeos-board-default-apps-winky',
- 'chromeos-base/chromeos-board-default-apps-yuna',
- 'chromeos-base/chromeos-board-default-apps-zako',
- 'chromeos-base/chromeos-chrome',
- 'chromeos-base/chromeos-default-apps',
- 'chromeos-base/chromeos-disk-firmware-enguarde',
- 'chromeos-base/chromeos-disk-firmware-falco',
- 'chromeos-base/chromeos-disk-firmware-gnawty',
- 'chromeos-base/chromeos-disk-firmware-samus',
- 'chromeos-base/chromeos-disk-firmware-squawks',
- 'chromeos-base/chromeos-disk-firmware-test-enguarde',
- 'chromeos-base/chromeos-disk-firmware-test-gnawty',
- 'chromeos-base/chromeos-disk-firmware-test-samus',
- 'chromeos-base/chromeos-disk-firmware-test-squawks',
- 'chromeos-base/chromeos-firmware-anx7688',
- 'chromeos-base/fibocom-firmware',
- 'chromeos-base/google-sans-fonts',
- 'chromeos-base/houdini',
- 'chromeos-base/houdini-pi',
- 'chromeos-base/houdini-qt',
- 'chromeos-base/intel-hdcp',
- 'chromeos-base/monotype-fonts',
- 'chromeos-base/rialto-cellular-autoconnect',
- 'chromeos-base/rialto-modem-watchdog',
- 'chromeos-base/rialto-override-apn',
- 'chromeos-base/rialto-override-scanresponse',
- 'chromeos-base/rialto-services',
- 'chromeos-base/widevine-cdm',
- 'dev-embedded/meta-embedded-toolkit',
- 'dev-util/PVRPerfServer',
- 'dev-util/PVRTrace',
- 'media-libs/a630-fw',
- 'media-libs/adreno-drivers',
- 'media-libs/apl-hotword-support',
- 'media-libs/arc-img-ddk',
- 'media-libs/arc-mali-drivers',
- 'media-libs/arc-mali-drivers-bifrost',
- 'media-libs/dlm',
- 'media-libs/glk-hotword-support',
- 'media-libs/go2001-fw',
- 'media-libs/img-ddk',
- 'media-libs/img-ddk-bin',
- 'media-libs/kbl-hotword-support',
- 'media-libs/kbl-rt5514-hotword-support',
- 'media-libs/mali-drivers',
- 'media-libs/mali-drivers-bifrost',
- 'media-libs/mali-drivers-bifrost-bin',
- 'media-libs/mali-drivers-bin',
- 'media-libs/mfc-fw',
- 'media-libs/mfc-fw-v7',
- 'media-libs/mfc-fw-v8',
- 'media-libs/rk3399-hotword-support',
- 'media-libs/skl-hotword-support',
- 'sys-apps/accelerator-bootstrap',
- 'sys-apps/eid',
- 'sys-apps/loonix-hydrogen',
- 'sys-boot/chromeos-firmware-ps8751',
- 'sys-boot/chromeos-vendor-strings-wilco',
- 'sys-boot/coreboot-private-files-amenia',
- 'sys-boot/coreboot-private-files-aplrvp',
- 'sys-boot/coreboot-private-files-atlas',
- 'sys-boot/coreboot-private-files-baseboard-auron',
- 'sys-boot/coreboot-private-files-baseboard-coral',
- 'sys-boot/coreboot-private-files-baseboard-fizz',
- 'sys-boot/coreboot-private-files-baseboard-glados',
- 'sys-boot/coreboot-private-files-baseboard-jecht',
- 'sys-boot/coreboot-private-files-baseboard-kalista',
- 'sys-boot/coreboot-private-files-baseboard-kblrvp',
- 'sys-boot/coreboot-private-files-baseboard-kunimitsu',
- 'sys-boot/coreboot-private-files-baseboard-nami',
- 'sys-boot/coreboot-private-files-baseboard-octopus',
- 'sys-boot/coreboot-private-files-baseboard-poppy',
- 'sys-boot/coreboot-private-files-baseboard-rammus',
- 'sys-boot/coreboot-private-files-baseboard-reef',
- 'sys-boot/coreboot-private-files-baseboard-strago',
- 'sys-boot/coreboot-private-files-bolt',
- 'sys-boot/coreboot-private-files-chipset-picasso',
- 'sys-boot/coreboot-private-files-chipset-stnyridge',
- 'sys-boot/coreboot-private-files-cnlrvp',
- 'sys-boot/coreboot-private-files-drallion',
- 'sys-boot/coreboot-private-files-eve',
- 'sys-boot/coreboot-private-files-falco',
- 'sys-boot/coreboot-private-files-fizz',
- 'sys-boot/coreboot-private-files-glkrvp',
- 'sys-boot/coreboot-private-files-grunt',
- 'sys-boot/coreboot-private-files-hatch',
- 'sys-boot/coreboot-private-files-kalista',
- 'sys-boot/coreboot-private-files-mistral',
- 'sys-boot/coreboot-private-files-nami',
- 'sys-boot/coreboot-private-files-nautilus',
- 'sys-boot/coreboot-private-files-nocturne',
- 'sys-boot/coreboot-private-files-panther',
- 'sys-boot/coreboot-private-files-peppy',
- 'sys-boot/coreboot-private-files-poppy',
- 'sys-boot/coreboot-private-files-pyro',
- 'sys-boot/coreboot-private-files-rambi',
- 'sys-boot/coreboot-private-files-rammus',
- 'sys-boot/coreboot-private-files-reef',
- 'sys-boot/coreboot-private-files-samus',
- 'sys-boot/coreboot-private-files-sand',
- 'sys-boot/coreboot-private-files-sarien',
- 'sys-boot/coreboot-private-files-sklrvp',
- 'sys-boot/coreboot-private-files-snappy',
- 'sys-boot/coreboot-private-files-soraka',
- 'sys-boot/exynos-pre-boot',
- 'sys-boot/intel-cflfsp',
- 'sys-boot/intel-glkfsp',
- 'sys-boot/intel-iclfsp',
- 'sys-boot/mma-blobs',
- 'sys-boot/nhlt-blobs',
- 'sys-boot/rk3399-hdcp-fw',
- 'sys-firmware/displaylink-firmware',
- 'sys-firmware/huddly-firmware',
- 'sys-firmware/iq-firmware',
- 'sys-firmware/sis-firmware',
- 'www-servers/spacecast',
- }
- if not any(fullnamerev.startswith(x) for x in LEGACY_PKGS):
- raise AssertionError('Google-TOS is not a valid license.')
-
pkg = PackageInfo(self.board, fullnamerev)
pkg.homepages = homepages
pkg.license_names = license_names
pkg.license_text_scanned = license_texts
self.packages[fullnamerev] = pkg
+ _CheckForDeprecatedLicense(fullnamerev, pkg.license_names)
+
# Called directly by src/repohooks/pre-upload.py
@staticmethod
def FindLicenseType(license_name, board=None, overlay_path=None,
diff --git a/licensing/licenses_lib_unittest.py b/licensing/licenses_lib_unittest.py
index b2752dc..4885873 100644
--- a/licensing/licenses_lib_unittest.py
+++ b/licensing/licenses_lib_unittest.py
@@ -14,6 +14,9 @@
from chromite.licensing import licenses_lib
+# pylint: disable=protected-access
+
+
class LicenseLibTest(cros_test_lib.TempDirTestCase):
"""Limited tests for license_lib."""
@@ -288,3 +291,19 @@
osutils.WriteFile(bad_license, u'Foo\x00Bar')
result = licenses_lib.ReadUnknownEncodedFile(bad_license)
self.assertEqual(result, 'FooBar')
+
+ def testDeprecatedLicenses(self):
+ """Verify deprecated license checks."""
+ # These are known bad packages.
+ licenses_lib._CheckForDeprecatedLicense(
+ 'chromeos-base/pepper-flash-0.0.1', {'Proprietary-Binary'})
+ licenses_lib._CheckForDeprecatedLicense(
+ 'chromeos-base/google-sans-fonts-1-r13', {'Google-TOS'})
+
+ # These packages should not be allowed.
+ with self.assertRaises(licenses_lib.PackageLicenseError):
+ licenses_lib._CheckForDeprecatedLicense(
+ 'sys-apps/portage-123', {'Proprietary-Binary'})
+ with self.assertRaises(licenses_lib.PackageLicenseError):
+ licenses_lib._CheckForDeprecatedLicense(
+ 'sys-apps/portage-123', {'GPL-2', 'Google-TOS'})