#!/usr/bin/python # Find missing ports # # Johannes Winkelmann, jw at smts dot ch import os import sys def usage(): print "Usage: missdep [ ...]" if len(sys.argv) < 2: usage() sys.exit(-1) # build a map with all ports dep_map = dict() list_cmd = 'prt-get list --no-std-config ' for arg in sys.argv[1:]: list_cmd += '--config-append="prtdir %s" ' % arg for port in os.popen(list_cmd).readlines(): dep_map[port.strip()] = 1 # find missing dependencies missing_map = dict() dep_cmd = 'prt-get printf --no-std-config ' \ '--config-append="prtdir %s" "%%n:%%e:%%M\\n" ' % sys.argv[1] missing_template = "Missing dependency %s, needed by %s" for line in os.popen(dep_cmd).readlines(): p, d, m = line.strip().split(':') d = d.replace(",", " ") if not d: continue if not m: m = "Unknown maintainer" for dep in d.split(' '): if not dep_map.has_key(dep): if not missing_map.has_key(m): missing_map[m] = list() missing_map[m].append(missing_template % (dep, p)) for k in missing_map.keys(): print k for m in missing_map[k]: print " %s" % m