+ return formatted_text("can't parse .dsc control info")
+ dsc_file.close()
+
+ filecontents = strip_pgp_signature(filename)
+ keysinorder = []
+ for l in filecontents.split('\n'):
+ m = re.match(r'([-a-zA-Z0-9]*):', l)
+ if m:
+ keysinorder.append(m.group(1))
+
+ for k in dsc.keys():
+ if k in ("build-depends","build-depends-indep"):
+ dsc[k] = create_depends_string(suite, split_depends(dsc[k]), session)
+ elif k == "architecture":
+ if (dsc["architecture"] != "any"):
+ dsc['architecture'] = colour_output(dsc["architecture"], 'arch')
+ elif k == "distribution":
+ if dsc["distribution"] not in ('unstable', 'experimental'):
+ dsc['distribution'] = colour_output(dsc["distribution"], 'distro')
+ elif k in ("files","changes","description"):
+ if use_html:
+ dsc[k] = formatted_text(dsc[k], strip=True)
+ else:
+ dsc[k] = ('\n'+'\n'.join(map(lambda x: ' '+x, dsc[k].split('\n')))).rstrip()
+ else:
+ dsc[k] = escape_if_needed(dsc[k])
+
+ keysinorder = filter(lambda x: not x.lower().startswith('checksums-'), keysinorder)
+
+ filecontents = '\n'.join(map(lambda x: format_field(x,dsc[x.lower()]), keysinorder))+'\n'
+ return filecontents
+
+def get_provides(suite):
+ provides = set()
+ session = DBConn().session()
+ query = '''SELECT DISTINCT value
+ FROM binaries_metadata m
+ JOIN bin_associations b
+ ON b.bin = m.bin_id
+ WHERE key_id = (
+ SELECT key_id
+ FROM metadata_keys
+ WHERE key = 'Provides' )
+ AND b.suite = (
+ SELECT id
+ FROM suite
+ WHERE suite_name = '%(suite)s'
+ OR codename = '%(suite)s')''' % \
+ {'suite': suite}
+ for p in session.execute(query):
+ for e in p:
+ for i in e.split(','):
+ provides.add(i.strip())
+ session.close()
+ return provides
+
+def create_depends_string (suite, depends_tree, session = None):
+ result = ""
+ if suite == 'experimental':
+ suite_list = ['experimental','unstable']
+ else:
+ suite_list = [suite]