def print_grand_summary()

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.")