Complete Yocto mirror with license table for TQMa6UL (2038-compliance)
- 264 license table entries with exact download URLs (224/264 resolved) - Complete sources/ directory with all BitBake recipes - Build configuration: tqma6ul-multi-mba6ulx, spaetzle (musl) - Full traceability for Softwarefreigabeantrag - GCC 13.4.0, Linux 6.6.102, U-Boot 2023.04, musl 1.2.4 - License distribution: GPL-2.0 (24), MIT (23), GPL-2.0+ (18), BSD-3 (16)
This commit is contained in:
49
sources/poky/meta/lib/oe/classutils.py
Normal file
49
sources/poky/meta/lib/oe/classutils.py
Normal file
@@ -0,0 +1,49 @@
|
||||
#
|
||||
# Copyright OpenEmbedded Contributors
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
#
|
||||
|
||||
class ClassRegistryMeta(type):
|
||||
"""Give each ClassRegistry their own registry"""
|
||||
def __init__(cls, name, bases, attrs):
|
||||
cls.registry = {}
|
||||
type.__init__(cls, name, bases, attrs)
|
||||
|
||||
class ClassRegistry(type, metaclass=ClassRegistryMeta):
|
||||
"""Maintain a registry of classes, indexed by name.
|
||||
|
||||
Note that this implementation requires that the names be unique, as it uses
|
||||
a dictionary to hold the classes by name.
|
||||
|
||||
The name in the registry can be overridden via the 'name' attribute of the
|
||||
class, and the 'priority' attribute controls priority. The prioritized()
|
||||
method returns the registered classes in priority order.
|
||||
|
||||
Subclasses of ClassRegistry may define an 'implemented' property to exert
|
||||
control over whether the class will be added to the registry (e.g. to keep
|
||||
abstract base classes out of the registry)."""
|
||||
priority = 0
|
||||
def __init__(cls, name, bases, attrs):
|
||||
super(ClassRegistry, cls).__init__(name, bases, attrs)
|
||||
try:
|
||||
if not cls.implemented:
|
||||
return
|
||||
except AttributeError:
|
||||
pass
|
||||
|
||||
try:
|
||||
cls.name
|
||||
except AttributeError:
|
||||
cls.name = name
|
||||
cls.registry[cls.name] = cls
|
||||
|
||||
@classmethod
|
||||
def prioritized(tcls):
|
||||
return sorted(list(tcls.registry.values()),
|
||||
key=lambda v: (v.priority, v.name), reverse=True)
|
||||
|
||||
def unregister(cls):
|
||||
for key in cls.registry.keys():
|
||||
if cls.registry[key] is cls:
|
||||
del cls.registry[key]
|
||||
Reference in New Issue
Block a user