commit: f371f1804c5d2d263ca78aa79c3feed1bc5831ae Author: Zac Medico <zmedico <AT> gentoo <DOT> org> AuthorDate: Sun Oct 3 17:48:48 2021 +0000 Commit: Zac Medico <zmedico <AT> gentoo <DOT> org> CommitDate: Sun Oct 3 19:30:33 2021 +0000 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=f371f180
prepare_build_dirs: handle copytree FileExistsError Bug: https://bugs.gentoo.org/815871 Reviewed-by: Michał Górny <mgorny <AT> gentoo.org> Signed-off-by: Zac Medico <zmedico <AT> gentoo.org> lib/portage/package/ebuild/prepare_build_dirs.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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,
