+2008-09-07 Philipp Kern <pkern@debian.org>
+
+ * daklib/utils.py (check_hash): change the comment and warn
+ if a file is not found when checking the hashes (i.e. when
+ it is probably in the pool)
+
+ * daklib/utils.py (check_size): do not bail out if the file
+ is not found, because it may be in the pool
+
+ * dak/process_accepted.py (install): bail out and skip the
+ upload when ensure_hashes fails, print the rejection messages
+ as warnings
+
2008-08-28 Philipp Kern <pkern@debian.org>
* daklib/utils.py (check_hashes): adapt to different API, check
# Begin a transaction; if we bomb out anywhere between here and the COMMIT WORK below, the DB will not be changed.
projectB.query("BEGIN WORK")
- # Check the hashes are all present: HACK: Can go away once all dak files
- # are known to be newer than the shasum changes
- utils.ensure_hashes(changes, dsc, files, dsc_files)
+ # Ensure that we have all the hashes we need below.
+ rejmsg = utils.ensure_hashes(changes, dsc, files, dsc_files)
+ if len(rejmsg) > 0:
+ # There were errors. Print them and SKIP the changes.
+ for msg in rejmsg:
+ utils.warn(msg)
+ return
# Add the .dsc file to the DB
for file in files.keys():
rejmsg = []
for f in files.keys():
+ file_handle = None
try:
file_handle = open_file(f)
rejmsg.append("%s: %s check failed in %s" % (f, hashname,
where))
except CantOpenError:
- # XXX: IS THIS THE BLOODY CASE WHEN THE FILE'S IN THE POOL!?
+ # TODO: This happens when the file is in the pool.
+ warn("Cannot open file %s" % f)
continue
finally:
- file_handle.close()
+ if file_handle:
+ file_handle.close()
return rejmsg
################################################################################
rejmsg = []
for f in files.keys():
- actual_size = os.stat(f)[stat.ST_SIZE]
+ try:
+ entry = os.stat(f)
+ except OSError, exc:
+ if exc.errno == 2:
+ # TODO: This happens when the file is in the pool.
+ continue
+ raise
+
+ actual_size = entry[stat.ST_SIZE]
size = int(files[f]["size"])
if size != actual_size:
rejmsg.append("%s: actual file size (%s) does not match size (%s) in %s"