1 # vi: encoding=utf-8 ts=8 sts=4 sw=4 et
12 def get_poldek_requires():
14 name_rx = re.compile(r"\d+\. ([^\s]+)-[^-]+-[^-]+\n")
15 req_rx = re.compile(r" req .* --> (.*)\n")
16 pkg_name_rx = re.compile(r"([^\s]+)-[^-]+-[^-]+")
18 # todo: if a and b are sets, then use sets module
19 # and intersection method on set object
23 if x in b: r.append(x)
26 # add given req-list to cur_pkg_reqs
29 if reqs[0] not in cur_pkg_reqs:
30 cur_pkg_reqs.append(reqs[0])
33 for x in cur_pkg_reqs:
34 if type(x) is types.ListType:
35 i = intersect(x, reqs)
39 idx = cur_pkg_reqs.index(x)
41 if i[0] in cur_pkg_reqs:
44 cur_pkg_reqs[idx] = i[0]
51 cur_pkg_reqs.append(reqs)
57 f = chr_popen("poldek -v -v --verify --unique-pkg-names")
58 for l in xreadlines.xreadlines(f):
62 pkg_reqs[cur_pkg] = cur_pkg_reqs
64 if pkg_reqs.has_key(cur_pkg):
73 for x in string.split(m.group(1)):
74 if x in ["RPMLIB_CAP", "NOT", "FOUND", "UNMATCHED"]: continue
75 m = pkg_name_rx.match(x)
77 reqs.append(m.group(1))
79 msg("poldek_reqs: bad pkg name: %s\n" % x)
80 if len(reqs) != 0: add_req(reqs)
85 pkg_reqs[cur_pkg] = cur_pkg_reqs