aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Gilbert <floppym@gentoo.org>2023-06-06 14:15:36 -0400
committerMike Gilbert <floppym@gentoo.org>2023-06-14 15:21:55 -0400
commitf5ae3c4b198f0d5543afbdd36d923422cd451272 (patch)
treeadd69c31fa797285350d2d3cf3753cab03d5e9e0
parentdoebuild: do not rely on os.access() for PORTAGE_TMPDIR write check (diff)
downloadportage-f5ae3c4b198f0d5543afbdd36d923422cd451272.tar.gz
portage-f5ae3c4b198f0d5543afbdd36d923422cd451272.tar.bz2
portage-f5ae3c4b198f0d5543afbdd36d923422cd451272.zip
fetch: do not rely on os.stat() for DISTDIR write test
If DISTDIR is an automount, os.stat() will not trigger it. Just try to create a file instead. Bug: https://bugs.gentoo.org/485100 Signed-off-by: Mike Gilbert <floppym@gentoo.org>
-rw-r--r--lib/portage/package/ebuild/fetch.py17
1 files changed, 6 insertions, 11 deletions
diff --git a/lib/portage/package/ebuild/fetch.py b/lib/portage/package/ebuild/fetch.py
index 0d30cb88e..0ecad162e 100644
--- a/lib/portage/package/ebuild/fetch.py
+++ b/lib/portage/package/ebuild/fetch.py
@@ -240,20 +240,15 @@ def _ensure_distdir(settings, distdir):
userpriv = portage.data.secpass >= 2 and "userpriv" in settings.features
write_test_file = os.path.join(distdir, ".__portage_test_write__")
- try:
- st = os.stat(distdir)
- except OSError:
- st = None
-
- if st is not None and stat.S_ISDIR(st.st_mode):
- if not (userfetch or userpriv):
- return
- if _userpriv_test_write_file(settings, write_test_file):
- return
+ if _userpriv_test_write_file(settings, write_test_file):
+ return
_userpriv_test_write_file_cache.pop(write_test_file, None)
+
+ already_exists = os.path.isdir(distdir)
+
if ensure_dirs(distdir, gid=dir_gid, mode=dirmode, mask=modemask):
- if st is None:
+ if not already_exists:
# The directory has just been created
# and therefore it must be empty.
return