aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2021-10-03 10:48:48 -0700
committerZac Medico <zmedico@gentoo.org>2021-10-03 12:30:33 -0700
commitf371f1804c5d2d263ca78aa79c3feed1bc5831ae (patch)
treeae52c021b2d8ca007f6152b45401e8da82748c3b
parentPrepare for 3.0.26 release (diff)
downloadportage-f371f180.tar.gz
portage-f371f180.tar.bz2
portage-f371f180.zip
prepare_build_dirs: handle copytree FileExistsError
Bug: https://bugs.gentoo.org/815871 Reviewed-by: Michał Górny <mgorny@gentoo.org> Signed-off-by: Zac Medico <zmedico@gentoo.org>
-rw-r--r--lib/portage/package/ebuild/prepare_build_dirs.py10
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/portage/package/ebuild/prepare_build_dirs.py b/lib/portage/package/ebuild/prepare_build_dirs.py
index 41de1a3a9..410c7e4ae 100644
--- a/lib/portage/package/ebuild/prepare_build_dirs.py
+++ b/lib/portage/package/ebuild/prepare_build_dirs.py
@@ -477,13 +477,21 @@ def _ensure_log_subdirs(logdir, subdir):
ensure_dirs(current, uid=uid, gid=gid, mode=grp_mode, mask=0)
+def _copytree(src, dst, **kwargs):
+ try:
+ shutil.copytree(src, dst, **kwargs)
+ except FileExistsError:
+ shutil.rmtree(dst)
+ shutil.copytree(src, dst, **kwargs)
+
+
def _prepare_fake_filesdir(settings):
real_filesdir = settings["O"] + "/files"
filesdir = settings["FILESDIR"]
# Copy files from real directory to ebuild directory (without metadata).
if os.path.isdir(real_filesdir):
- shutil.copytree(real_filesdir, filesdir, copy_function=copyfile)
+ _copytree(real_filesdir, filesdir, copy_function=copyfile)
apply_recursive_permissions(
filesdir,
uid=portage_uid,