Fixed a "PermissionError" on Windows when running "clean" or "cleanall" targets // Resolve #4331

This commit is contained in:
Ivan Kravets
2022-06-27 20:12:04 +03:00
parent 3c17b31d5e
commit 99b5204802
2 changed files with 4 additions and 10 deletions

View File

@ -41,6 +41,7 @@ PlatformIO Core 6
* Fixed an issue when the `build_unflags <https://docs.platformio.org/en/latest/projectconf/section_env_build.html#build-unflags>`__ option was not applied to the ``ASPPFLAGS`` scope * Fixed an issue when the `build_unflags <https://docs.platformio.org/en/latest/projectconf/section_env_build.html#build-unflags>`__ option was not applied to the ``ASPPFLAGS`` scope
* Fixed an issue on Windows OS when flags were wrapped to the temporary file while generating the `Compilation database "compile_commands.json" <https://docs.platformio.org/en/latest/integration/compile_commands.html>`__ * Fixed an issue on Windows OS when flags were wrapped to the temporary file while generating the `Compilation database "compile_commands.json" <https://docs.platformio.org/en/latest/integration/compile_commands.html>`__
* Fixed an issue with the `LDF <https://docs.platformio.org/en/latest/librarymanager/ldf.html>`__ when recursively scanning dependencies in the ``chain`` mode * Fixed an issue with the `LDF <https://docs.platformio.org/en/latest/librarymanager/ldf.html>`__ when recursively scanning dependencies in the ``chain`` mode
* Fixed a "PermissionError" on Windows when running "clean" or "cleanall" targets (`issue #4331 <https://github.com/platformio/platformio-core/issues/4331>`_)
6.0.2 (2022-06-01) 6.0.2 (2022-06-01)
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~

View File

@ -43,26 +43,19 @@ def PioClean(env, clean_all=False):
def _clean_dir(path): def _clean_dir(path):
clean_rel_path = _relpath(path) clean_rel_path = _relpath(path)
for root, _, files in os.walk(path): print(f"Removing `{clean_rel_path}` folder...", end="")
for f in files: fs.rmtree(path)
dst = os.path.join(root, f) print(" done!")
os.remove(dst)
print(
"Removed %s"
% (dst if not clean_rel_path.startswith(".") else _relpath(dst))
)
build_dir = env.subst("$BUILD_DIR") build_dir = env.subst("$BUILD_DIR")
libdeps_dir = env.subst("$PROJECT_LIBDEPS_DIR") libdeps_dir = env.subst("$PROJECT_LIBDEPS_DIR")
if os.path.isdir(build_dir): if os.path.isdir(build_dir):
_clean_dir(build_dir) _clean_dir(build_dir)
fs.rmtree(build_dir)
else: else:
print("Build environment is clean") print("Build environment is clean")
if clean_all and os.path.isdir(libdeps_dir): if clean_all and os.path.isdir(libdeps_dir):
_clean_dir(libdeps_dir) _clean_dir(libdeps_dir)
fs.rmtree(libdeps_dir)
print("Done cleaning") print("Done cleaning")