X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dak%2Fexamine_package.py;h=6a3c8046fdd6293a1dcf5c268ced4818df5116fe;hb=c9398d303256dfedc13975b79b6b691048cfcc05;hp=2b92ca7816593a87753ca97ee3cf4f11045cc385;hpb=7efeb186029866804f6737f49839998d4fa21cd6;p=dak.git diff --git a/dak/examine_package.py b/dak/examine_package.py index 2b92ca78..6a3c8046 100755 --- a/dak/examine_package.py +++ b/dak/examine_package.py @@ -51,6 +51,7 @@ import apt_pkg import apt_inst import shutil import commands +import threading from daklib import utils from daklib.dbconn import DBConn, get_binary_from_name_suite @@ -63,6 +64,7 @@ from daklib.regexes import html_escaping, re_html_escaping, re_version, re_space Cnf = None Cnf = utils.get_conf() +changes_lock = threading.Lock() printed_copyrights = {} package_relations = {} #: Store relations of packages for later output @@ -415,6 +417,8 @@ def do_lintian (filename): return do_command("lintian --show-overrides --color always", filename, 1) def get_copyright (deb_filename): + global changes_lock, printed_copyrights + package = re_package.sub(r'\1', deb_filename) o = os.popen("dpkg-deb -c %s | egrep 'usr(/share)?/doc/[^/]*/copyright' | awk '{print $6}' | head -n 1" % (deb_filename)) cright = o.read()[:-1] @@ -431,11 +435,13 @@ def get_copyright (deb_filename): copyrightmd5 = md5.md5(cright).hexdigest() res = "" + changes_lock.acquire() if printed_copyrights.has_key(copyrightmd5) and printed_copyrights[copyrightmd5] != "%s (%s)" % (package, deb_filename): res += formatted_text( "NOTE: Copyright is the same as %s.\n\n" % \ (printed_copyrights[copyrightmd5])) else: printed_copyrights[copyrightmd5] = "%s (%s)" % (package, deb_filename) + changes_lock.release() return res+formatted_text(cright) def get_readme_source (dsc_filename): @@ -539,7 +545,11 @@ def strip_pgp_signature (filename): return contents def display_changes(suite, changes_filename): + global changes_lock, printed_copyrights changes = read_changes_or_dsc(suite, changes_filename) + changes_lock.acquire() + printed_copyrights = {} + changes_lock.release() return foldable_output(changes_filename, "changes", changes, norow=True) def check_changes (changes_filename):