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: