From: Torsten Werner Date: Tue, 6 Jul 2010 20:38:48 +0000 (+0000) Subject: examine-package: lock access to printed_copyrights X-Git-Url: https://git.decadent.org.uk/gitweb/?a=commitdiff_plain;h=98dc0595b2db2abead9b6397223cf9f20f80fe02;p=dak.git examine-package: lock access to printed_copyrights FIXME: the global variable printed_copyrights is still broken... Signed-off-by: Torsten Werner --- 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):