diff options
author | Zac Medico <zmedico@gentoo.org> | 2021-10-03 10:48:48 -0700 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2021-10-03 12:30:33 -0700 |
commit | f371f1804c5d2d263ca78aa79c3feed1bc5831ae (patch) | |
tree | ae52c021b2d8ca007f6152b45401e8da82748c3b | |
parent | Prepare for 3.0.26 release (diff) | |
download | portage-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.py | 10 |
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, |