def summarize_broken_packages(broken):
    """
    Create human-readable summary regarding missing packages.

    :param broken: tuples with information about the broken packages.

    :returns: the human-readable summary.
    """
    # Group and sort by os, version, arch, key
    grouped = {}

    for os_name, os_ver, os_arch, key, package, _ in broken:
        platform = '%s %s on %s' % (os_name, os_ver, os_arch)
        if platform not in grouped:
            grouped[platform] = set()
        grouped[platform].add('- Package %s for rosdep key %s' % (package, key))

    return '\n\n'.join(
        '* The following %d packages were not found for %s:\n%s' % (
            len(pkg_msgs), platform, '\n'.join(sorted(pkg_msgs)))
        for platform, pkg_msgs in sorted(grouped.items()))