in scripts/elf_ubuntu_dependency_analyzer.py [0:0]
def print_grand_summary(grand_summary, grand_special_cases, grand_missing_libraries):
"""
Print a grand summary of all analyzed binaries.
Args:
grand_summary (dict): Dictionary of all packages and their details.
grand_special_cases (list): List of all special cases.
grand_missing_libraries (dict): Dictionary of all missing libraries.
"""
if grand_summary or grand_special_cases or grand_missing_libraries:
print("\nGrand Summary of runtime packages required across all binaries:")
table = PrettyTable(['Package', 'Included Packages'])
table.align['Package'] = 'l'
table.align['Included Packages'] = 'l'
for package_name, full_package_names in sorted(grand_summary.items()):
included_packages = '\n'.join(sorted(full_package_names))
table.add_row([package_name, 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 = "System Library" if "system 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.")