Example #1
0
def render_csv(outfile, rosdistro):
    arches = bin_arches + ['SRPMS']
    da_strs = []
    ros_repo_names = get_ros_repo_names(ros_repos)
    wet_names_versions = get_wet_names_versions(rosdistro)
    dry_names_versions = get_dry_names_versions(rosdistro)
    ros_pkgs_table = get_ros_pkgs_table(wet_names_versions, dry_names_versions)

    # Get the version of each RPM package in each ROS RPM repository.
    repo_name_da_to_pkgs = dict()
    for da in get_distro_arches(arches, rosdistro):
        da_str = get_dist_arch_str(da[0], da[1])
        da_strs += [da_str]
        for repo_name in ros_repo_names:
            repo_name_da_to_pkgs[(repo_name, da_str)] = [p for p in load_Packages(ros_repos[repo_name], da[0], da[1]) if p[0].startswith('ros-%s-'%rosdistro)]
        

    # Make an in-memory table showing the latest RPM version for each package.
    t = make_versions_table(ros_pkgs_table, repo_name_da_to_pkgs, da_strs,
                            ros_repos.keys(), rosdistro)

    with open(outfile , 'w') as fh:
        # Output CSV from the in-memory table
        w = csv.writer(fh)
        w.writerow(t.dtype.names) 
        for row in t:
            w.writerow(row)
def parse_options():
    parser = argparse.ArgumentParser(description="Return 0 if all packages are found in the repository, else print missing packages and return 1.")
    parser.add_argument(dest="repo_url",
                        help='repository to query for package(s)')
    parser.add_argument(dest="distro",
                        help='Fedora distribution of target repository (eg \'spherical\' or \'beefy\')')
    parser.add_argument(dest="packages", nargs='+',
                        help="what packages to test for.")
    return parser.parse_args()

if __name__ == "__main__":
    args = parse_options()

    pkgs = {
        'SRPMS':load_Packages(args.repo_url, args.distro, 'SRPMS'),
        'i386':load_Packages(args.repo_url, args.distro, 'i386'),
        'x86_64':load_Packages(args.repo_url, args.distro, 'x86_64')
    }
    missing = []
    for p in args.packages:
        try:
            srpm = [r for r in pkgs['SRPMS'] if r[0] == p]
            if not srpm:
                missing.append(p)
                print "No SRPM file found for package %s"%p
            else:
                for dep in srpm[0][2]:
                    dep_name_only = dep.split()[0]
                    dep_srpm = [r for r in pkgs['SRPMS'] if r[0] == dep_name_only]
                    if not dep_srpm: