X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dak%2Fexamine_package.py;h=edb9384b6c5be92b0e20ff23544ba1a031922ef4;hb=dd80b169287a128cd9e3b833852fbf68106385b5;hp=482eceec72a72c00ac83873690135bc6558b7fcd;hpb=5751d50d131a78e48a321f02d5fd68aeb2436ff8;p=dak.git diff --git a/dak/examine_package.py b/dak/examine_package.py index 482eceec..edb9384b 100755 --- a/dak/examine_package.py +++ b/dak/examine_package.py @@ -65,6 +65,7 @@ from daklib.gpg import SignedFile from daklib.regexes import html_escaping, re_html_escaping, re_version, re_spacestrip, \ re_contrib, re_nonfree, re_localhost, re_newlinespace, \ re_package, re_doc_directory +from daklib.dak_exceptions import ChangesUnicodeError ################################################################################ @@ -118,6 +119,7 @@ ansi_colours = { 'main': "\033[36m", 'contrib': "\033[33m", 'nonfree': "\033[31m", + 'provides': "\033[35m", 'arch': "\033[32m", 'end': "\033[0m", 'bold': "\033[1m", @@ -128,6 +130,7 @@ html_colours = { 'main': ('',""), 'contrib': ('',""), 'nonfree': ('',""), + 'provides': ('',""), 'arch': ('',""), 'bold': ('',""), 'maintainer': ('',""), @@ -323,6 +326,30 @@ def read_changes_or_dsc (suite, filename, session = None): 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': @@ -330,6 +357,7 @@ def create_depends_string (suite, depends_tree, session = None): else: suite_list = [suite] + provides = set() comma_count = 1 for l in depends_tree: if (comma_count >= 2): @@ -357,7 +385,12 @@ def create_depends_string (suite, depends_tree, session = None): adepends = d['name'] if d['version'] != '' : adepends += " (%s)" % (d['version']) - result += colour_output(adepends, "bold") + if not provides: + provides = get_provides(suite) + if d['name'] in provides: + result += colour_output(adepends, "provides") + else: + result += colour_output(adepends, "bold") or_count += 1 comma_count += 1 return result @@ -474,7 +507,7 @@ def get_readme_source (dsc_filename): try: shutil.rmtree(tempdir) - except OSError, e: + except OSError as e: if errno.errorcode[e.errno] != 'EACCES': res += "%s: couldn't remove tmp dir %s for source tree." % (dsc_filename, tempdir) @@ -601,7 +634,7 @@ def main (): # Reset stdout here so future less invocations aren't FUBAR less_fd.close() sys.stdout = stdout_fd - except IOError, e: + except IOError as e: if errno.errorcode[e.errno] == 'EPIPE': utils.warn("[examine-package] Caught EPIPE; skipping.") pass