X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=daklib%2Fqueue.py;h=88cc1f916049558ed63df36d2c86716613851d81;hb=3d2e771c6a2e63c41e25eed4c67909109eb9678a;hp=8ab693a86e89bbe72c30916ace7916687c01ca75;hpb=6794769445e4dab2f87a87137190b17af739e0c7;p=dak.git diff --git a/daklib/queue.py b/daklib/queue.py index 8ab693a8..88cc1f91 100755 --- a/daklib/queue.py +++ b/daklib/queue.py @@ -1196,27 +1196,19 @@ class Upload(object): self.ensure_hashes() ########################################################################### - def check_lintian(self): - cnf = Config() - # Only check some distributions - valid_dist = False - for dist in ('unstable', 'experimental'): - if dist in self.pkg.changes['distribution']: - valid_dist = True - break - - if not valid_dist: - return + def ensure_orig(self, target_dir='.', session=None): + """ + Ensures that all orig files mentioned in the changes file are present + in target_dir. If they do not exist, they are symlinked into place. - tagfile = cnf.get("Dinstall::LintianTags") - if tagfile is None: - # We don't have a tagfile, so just don't do anything. - return + An list containing the symlinks that were created are returned (so they + can be removed). + """ - # Try and find all orig mentioned in the .dsc - target_dir = '.' symlinked = [] + cnf = Config() + for filename, entry in self.pkg.dsc_files.iteritems(): if not re_is_orig_source.match(filename): # File is not an orig; ignore @@ -1244,11 +1236,14 @@ class Upload(object): return True - session = DBConn().session() + session_ = session + if session is None: + session_ = DBConn().session() + found = False # Look in the pool - for poolfile in get_poolfile_like_name('/%s' % filename, session): + for poolfile in get_poolfile_like_name('/%s' % filename, session_): poolfile_path = os.path.join( poolfile.location.path, poolfile.filename ) @@ -1257,7 +1252,8 @@ class Upload(object): found = True break - session.close() + if session is None: + session_.close() if found: continue @@ -1267,11 +1263,11 @@ class Upload(object): 'OldProposedUpdates', 'Embargoed', 'Unembargoed') for queue in queues: - if 'Dir::Queue::%s' % directory not in cnf: + if not cnf.get('Dir::Queue::%s' % queue): continue queuefile_path = os.path.join( - cnf['Dir::Queue::%s' % directory], filename + cnf['Dir::Queue::%s' % queue], filename ) if not os.path.exists(queuefile_path): @@ -1281,6 +1277,28 @@ class Upload(object): if symlink_if_valid(queuefile_path): break + return symlinked + + ########################################################################### + + def check_lintian(self): + cnf = Config() + + # Only check some distributions + valid_dist = False + for dist in ('unstable', 'experimental'): + if dist in self.pkg.changes['distribution']: + valid_dist = True + break + + 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() @@ -1291,6 +1309,9 @@ class Upload(object): 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 + symlinked = self.ensure_orig() + # 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.