From: Michael Tremer Date: Tue, 31 Oct 2017 17:53:50 +0000 (+0000) Subject: Revert "Refactor deleting files" X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4b835030be0ffb2d730970cf77c3e64a142e13f5;p=pbs.git Revert "Refactor deleting files" This reverts commit 0742a8f2e48b59808743308632070324018ce848. Signed-off-by: Michael Tremer Conflicts: src/buildservice/__init__.py --- diff --git a/src/buildservice/__init__.py b/src/buildservice/__init__.py index 63c50d6f..a340aa32 100644 --- a/src/buildservice/__init__.py +++ b/src/buildservice/__init__.py @@ -6,7 +6,6 @@ import ConfigParser import logging import os import pakfire -import shutil from . import arches from . import bugtracker @@ -138,6 +137,9 @@ class Backend(object): 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): @@ -146,9 +148,26 @@ class Backend(object): 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)