From 735435306dbe2175bd2ccb8cb8cdc32e2b0ae974 Mon Sep 17 00:00:00 2001 From: Valerii Koval Date: Wed, 20 May 2020 21:32:55 +0300 Subject: [PATCH] Copy and remove cloned package instead of moving // Resolve #2844, Resolve #3328 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On Windows, it’s not possible to move a file which is used by another process (e.g. Git extension in VSCode) --- platformio/managers/package.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/platformio/managers/package.py b/platformio/managers/package.py index fd227073..92ba4515 100644 --- a/platformio/managers/package.py +++ b/platformio/managers/package.py @@ -582,7 +582,11 @@ class PkgInstallerMixin(object): # remove previous/not-satisfied package if isdir(pkg_dir): fs.rmtree(pkg_dir) - shutil.move(tmp_dir, pkg_dir) + shutil.copytree(tmp_dir, pkg_dir, symlinks=True) + try: + shutil.rmtree(tmp_dir) + except: # pylint: disable=bare-except + pass assert isdir(pkg_dir) self.cache_reset() return pkg_dir