blob: 297f668067f61cc3077004812c8bcbed46ab3616 [file] [log] [blame]
"""Functions related to build summary processing
See proto definitions for descriptions of arguments.
"""
# Add @unused to silence lint.
load("@stdlib//internal/re.star", "re")
# Needed to load from @proto. Add @unused to silence lint.
load("//config/util/bindings/proto.star", "protos")
load(
"@proto//chromiumos/build/api/system_image.proto",
system_pb = "chromiumos.build.api",
)
def _overlay(build_summary):
return build_summary.build_target.portage_build_target.overlay_name
def _remove_invalid_entries(bs_list):
invalid = [
"galaxy", # Test overlay
# TODO: Filter non-cros devices.
# Warning ... they may not be public and this is a public repo.
]
return [bs for bs in bs_list if _overlay(bs) not in invalid]
def _read(file_path):
build_summary_list = proto.from_jsonpb(
system_pb.SystemImage.BuildSummaryList,
io.read_file(file_path),
)
return _remove_invalid_entries(build_summary_list.values)
def _get_kernel_versions(build_summaries):
"""Returns dict of {kernel-version: [overlay-name, ...]}"""
kernel_versions = {}
for build_summary in build_summaries:
overlay = _overlay(build_summary)
version = build_summary.kernel.version
if not float(version):
continue
overlays = kernel_versions.get(version, [])
overlays.append(overlay)
kernel_versions[version] = overlays
unique_kernel_overlays = {}
for version in kernel_versions:
unique_kernel_overlays[version] = set(kernel_versions[version])
return unique_kernel_overlays
def _get_soc_families(build_summaries):
"""Returns dict of {overlay-name: soc-family} if the SOC value is set"""
soc_families = {}
for build_summary in build_summaries:
overlay = build_summary.build_target.portage_build_target.overlay_name
soc_family = build_summary.chipset.overlay
if soc_family:
soc_families[overlay] = soc_family
return soc_families
def _get_overlays(build_summaries):
"""Returns list of all overlays"""
overlays = []
for build_summary in build_summaries:
overlays.append(
build_summary.build_target.portage_build_target.overlay_name,
)
return set(overlays)
build_summary = struct(
read = _read,
get_kernel_versions = _get_kernel_versions,
get_soc_families = _get_soc_families,
get_overlays = _get_overlays,
)