11 if not len(sys.argv) == 5:
12 sys.exit(
"Usage: " + sys.argv[0] +
" <filename> <package> <version> <colon-delimited qualifiers>")
15 def standardize_quals(qualstring):
16 tokens = qualstring.split(
":")
17 return ":".join( sorted([ tok
for tok
in tokens \
18 if tok !=
"prof" and tok !=
"debug"]) )
20 filename = sys.argv[1]
21 target_package = sys.argv[2]
22 target_version = sys.argv[3]
23 target_quals = standardize_quals(sys.argv[4])
26 package_version_dict = {}
27 package_column_dict = {}
31 in_dependent_list =
False
32 in_qualifier_list =
False
36 for line
in inf.readlines():
38 res = re.search(
r"^product[ \t]+version[ \t]+optional", line)
41 in_dependent_list =
True
44 res = re.search(
r"end_product_list", line)
47 in_dependent_list =
False
50 res = re.search(
r"^qualifier[ \t]+", line)
53 in_qualifier_list =
True
54 for i, label
in enumerate(line.split()):
55 if label !=
"qualifier" and label !=
"notes":
56 package_column_dict[label] = i
59 res = re.search(
r"end_qualifier_list", line)
62 in_qualifier_list =
False
80 quals = tokens[2].split(
":")
83 if qual !=
"-" and qual
not in target_quals :
89 package, version = tokens[0:2]
93 if package
not in package_version_dict:
94 package_version_dict[ package ] = [version,
"-"]
100 quals = standardize_quals(tokens[0])
105 if quals == target_quals:
109 for package, column
in package_column_dict.items():
110 if package_version_dict[ package ][1] ==
"-":
118 possible_quals = standardize_quals( tokens[ package_column_dict[ package ] ] )
120 if possible_quals ==
"-":
121 del package_version_dict[ package ]
122 elif possible_quals !=
"-nq-":
123 package_version_dict[ package ][1] = possible_quals
127 sys.stderr.write(
"Error in parse_product_deps.py: unable to find qualifiers %s in product_deps file %s\n" % (target_quals, filename))
130 for package, info
in package_version_dict.items():
131 version, qualifier = info
132 print "%s: %s %s" % (package, version, qualifier)