[dak/master 1/2] Split out symlink creation into Upload.ensure_orig
Signed-off-by: Chris Lamb <lamby@debian.org>
---
daklib/queue.py | 81 ++++++++++++++++++++++++++++++++++--------------------
1 files changed, 51 insertions(+), 30 deletions(-)
diff --git a/daklib/queue.py b/daklib/queue.py
index 61e2df0..d73b479 100755
--- a/daklib/queue.py
+++ b/daklib/queue.py
@@ -1196,37 +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
- tagfile = cnf.get("Dinstall::LintianTags")
- if tagfile is None:
- # We don't have a tagfile, so just don't do anything.
- 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.
- # 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
+ 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
@@ -1254,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
)
@@ -1267,7 +1252,8 @@ class Upload(object):
found = True
break
- session.close()
+ if session is None:
+ session_.close()
if found:
continue
@@ -1291,6 +1277,41 @@ 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()
+ 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
+ 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.
--
1.6.3.3
Reply to: