X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=daklib%2Fqueue.py;h=61e2df05d5bef723b0b7b713b0f9a56d65599c95;hb=0bba8752f2d5aae54f10cf815398b57b046f35e8;hp=0b45b284a0c0296de59f43b918501efe9110c03e;hpb=dcb51800ee2347af8d35fb7a51811db1cef6b93b;p=dak.git diff --git a/daklib/queue.py b/daklib/queue.py index 0b45b284..61e2df05 100755 --- a/daklib/queue.py +++ b/daklib/queue.py @@ -1209,8 +1209,24 @@ class Upload(object): if not valid_dist: return + tagfile = cnf.get("Dinstall::LintianTags") + if tagfile is None: + # We don't have a tagfile, so just don't do anything. + return + + # Parse the yaml file + sourcefile = file(tagfile, 'r') + sourcecontent = sourcefile.read() + sourcefile.close() + try: + lintiantags = yaml.load(sourcecontent)['lintian'] + except yaml.YAMLError, msg: + utils.fubar("Can not read the lintian tags file %s, YAML error: %s." % (tagfile, msg)) + return + # Try and find all orig mentioned in the .dsc target_dir = '.' + symlinked = [] for filename, entry in self.pkg.dsc_files.iteritems(): if not re_is_orig_source.match(filename): # File is not an orig; ignore @@ -1231,13 +1247,18 @@ class Upload(object): if fingerprint != expected: return False - os.symlink(path, os.path.join(target_dir, filename)) + dest = os.path.join(target_dir, filename) + + os.symlink(path, dest) + symlinked.append(dest) + return True + session = DBConn().session() found = False # Look in the pool - for poolfile in get_poolfile_like_name('/%s' % filename): + for poolfile in get_poolfile_like_name('/%s' % filename, session): poolfile_path = os.path.join( poolfile.location.path, poolfile.filename ) @@ -1246,6 +1267,8 @@ class Upload(object): found = True break + session.close() + if found: continue @@ -1268,20 +1291,6 @@ class Upload(object): if symlink_if_valid(queuefile_path): break - tagfile = cnf.get("Dinstall::LintianTags") - if tagfile is None: - # We don't have a tagfile, so just don't do anything. - return - # Parse the yaml file - sourcefile = file(tagfile, 'r') - sourcecontent = sourcefile.read() - sourcefile.close() - try: - lintiantags = yaml.load(sourcecontent)['lintian'] - except yaml.YAMLError, msg: - utils.fubar("Can not read the lintian tags file %s, YAML error: %s." % (tagfile, msg)) - return - # Now setup the input file for lintian. lintian wants "one tag per line" only, # so put it together like it. We put all types of tags in one file and then sort # through lintians output later to see if its a fatal tag we detected, or not. @@ -1301,8 +1310,12 @@ class Upload(object): # to then parse it. command = "lintian --show-overrides --tags-from-file %s %s" % (temp_filename, self.pkg.changes_file) (result, output) = commands.getstatusoutput(command) - # We are done with lintian, remove our tempfile + + # We are done with lintian, remove our tempfile and any symlinks we created os.unlink(temp_filename) + for symlink in symlinked: + os.unlink(symlink) + if (result == 2): utils.warn("lintian failed for %s [return code: %s]." % (self.pkg.changes_file, result)) utils.warn(utils.prefix_multi_line_string(output, " [possible output:] "))