import logging
import os
import pakfire
-import shutil
from . import arches
from . import bugtracker
WHERE (not_before IS NULL OR not_before <= NOW())")
for row in query:
+ if not row.path:
+ continue
+
path = row.path
if not path or not path.startswith("%s/" % PAKFIRE_DIR):
try:
logging.debug("Removing %s..." % path)
- shutil.rmtree(path)
- except shutil.Error as e:
+ os.unlink(path)
+ except OSError, e:
logging.error("Could not remove %s: %s" % (path, e))
- continue
+
+ while True:
+ path = os.path.dirname(path)
+
+ # Stop if we are running outside of the tree.
+ if not path.startswith(PAKFIRE_DIR):
+ break
+
+ # If the directory is not empty, we cannot remove it.
+ if os.path.exists(path) and os.listdir(path):
+ break
+
+ try:
+ logging.debug("Removing %s..." % path)
+ os.rmdir(path)
+ except OSError, e:
+ logging.error("Could not remove %s: %s" % (path, e))
+ break
self.db.execute("DELETE FROM queue_delete WHERE id = %s", row.id)