in scripts/elf_rockylinux_dependency_analyzer.py [0:0]
def print_grand_summary(grand_summary, grand_special_cases, grand_missing_libraries, HIGH_LEVEL_PACKAGES, PACKAGE_TO_HIGH_LEVEL):
if grand_summary or grand_special_cases or grand_missing_libraries:
print("\nGrand Summary of high-level runtime packages required across all binaries:")
high_level_summary = defaultdict(set)
for package_name, full_package_names in grand_summary.items():
high_level_package = PACKAGE_TO_HIGH_LEVEL.get(package_name.split('-')[0], package_name.split('-')[0])
high_level_summary[high_level_package].update(full_package_names)
table = PrettyTable(['High-Level Package', 'Included Packages'])
table.align['High-Level Package'] = 'l'
table.align['Included Packages'] = 'l'
for high_level_package, full_package_names in sorted(high_level_summary.items()):
included_packages = '\n'.join(sorted(full_package_names))
table.add_row([high_level_package, included_packages])
print(table)
if grand_missing_libraries:
print("\nGrand Summary of MISSING LIBRARIES across all binaries:")
missing_table = PrettyTable(['Missing Library', 'Referenced By'])
missing_table.align['Missing Library'] = 'l'
missing_table.align['Referenced By'] = 'l'
for lib, binaries in sorted(grand_missing_libraries.items()):
missing_table.add_row([lib, '\n'.join(sorted(binaries))])
print(missing_table)
print("\nGrand Summary of special cases across all binaries:")
if grand_special_cases:
special_table = PrettyTable(['Library/Case', 'Referenced By', 'Category'])
special_table.align['Library/Case'] = 'l'
special_table.align['Referenced By'] = 'l'
special_table.align['Category'] = 'l'
for case, binary in sorted(set(grand_special_cases)):
category = "Custom/Non-RPM" if "custom or non-RPM library" in case else "Other"
library = case.split(" is ")[0] if " is " in case else case
special_table.add_row([library, binary, category])
print(special_table)
else:
print("No special cases found.")