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:
74
sources/meta-arm/scripts/layer-overview.py
Executable file
74
sources/meta-arm/scripts/layer-overview.py
Executable file
@@ -0,0 +1,74 @@
|
||||
#! /usr/bin/env python3
|
||||
|
||||
"""
|
||||
Print an overview of the layer to help writing release notes.
|
||||
|
||||
Output includes sublayers, machines, recipes.
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import sys
|
||||
|
||||
# TODO:
|
||||
# - More human-readable output
|
||||
# - Diff mode, give two revisions and list the changes
|
||||
|
||||
def is_layer(path):
|
||||
"""
|
||||
Determine if this path looks like a layer (is a directory and contains conf/layer.conf).
|
||||
"""
|
||||
return path.is_dir() and (path / "conf" / "layer.conf").exists()
|
||||
|
||||
|
||||
def print_layer(layer):
|
||||
"""
|
||||
Print a summary of the layer.
|
||||
"""
|
||||
print(layer.name)
|
||||
|
||||
machines = sorted(p for p in layer.glob("conf/machine/*.conf"))
|
||||
if machines:
|
||||
print(" Machines")
|
||||
for m in machines:
|
||||
print(f" {m.stem}")
|
||||
print()
|
||||
|
||||
recipes = sorted((p for p in layer.glob("recipes-*/*/*.bb")), key=lambda p:p.name)
|
||||
if recipes:
|
||||
print(" Recipes")
|
||||
for r in recipes:
|
||||
if "_" in r.stem:
|
||||
pn, pv = r.stem.rsplit("_", 1)
|
||||
print(f" {pn} {pv}")
|
||||
else:
|
||||
print(f" {r.stem}")
|
||||
print()
|
||||
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("repository")
|
||||
parser.add_argument("revision", nargs="?")
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.revision:
|
||||
import gitpathlib
|
||||
base = gitpathlib.GitPath(args.repository, args.revision)
|
||||
else:
|
||||
import pathlib
|
||||
base = pathlib.Path(args.repository)
|
||||
|
||||
if is_layer(base):
|
||||
print_layer(base)
|
||||
else:
|
||||
sublayers = sorted(p for p in base.glob("meta-*") if is_layer(p))
|
||||
if sublayers:
|
||||
print("Sub-Layers")
|
||||
for l in sublayers:
|
||||
print(f" {l.name}")
|
||||
print()
|
||||
|
||||
for layer in sublayers:
|
||||
print_layer(layer)
|
||||
else:
|
||||
print(f"No layers found in {base}", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
Reference in New Issue
Block a user