diff --git a/CHANGES b/CHANGES index bdabdc16a..7c09119b1 100644 --- a/CHANGES +++ b/CHANGES @@ -5,7 +5,7 @@ Bugs fixed ---------- * applehelp: Sphinx crashes if ``hiutil`` or ``codesign`` commands not found - +* Fix ``make clean`` abort issue when build dir contains regular files like ``DS_Store``. Release 1.4.5 (released Jul 13, 2016) ===================================== diff --git a/sphinx/make_mode.py b/sphinx/make_mode.py index 67ba9e1e1..75c5ab8b2 100644 --- a/sphinx/make_mode.py +++ b/sphinx/make_mode.py @@ -18,13 +18,12 @@ from __future__ import print_function import os import sys -import shutil from os import path from subprocess import call import sphinx from sphinx.util.console import bold, blue -from sphinx.util.osutil import cd +from sphinx.util.osutil import cd, rmtree proj_name = os.getenv('SPHINXPROJ', '') @@ -75,7 +74,7 @@ class Make(object): return 1 print("Removing everything under %r..." % self.builddir) for item in os.listdir(self.builddir): - shutil.rmtree(self.builddir_join(item)) + rmtree(self.builddir_join(item)) def build_help(self): print(bold("Sphinx v%s" % sphinx.__display_version__)) diff --git a/sphinx/util/osutil.py b/sphinx/util/osutil.py index 585dc6104..b416a8c1f 100644 --- a/sphinx/util/osutil.py +++ b/sphinx/util/osutil.py @@ -213,3 +213,10 @@ def cd(target_dir): yield finally: os.chdir(cwd) + + +def rmtree(path): + if os.path.isdir(path): + shutil.rmtree(path) + else: + os.remove(path)