import io
import logging
import warnings
+import stat
import sys
import re
REPO_NAME_LOC, USER_CONFIG_PATH)
from portage.eapi import eapi_allows_directories_on_profile_level_and_repository_level
from portage.env.loaders import KeyValuePairFileLoader
+from portage.exception import PermissionDenied
from portage.util import (normalize_path, read_corresponding_eapi_file, shlex_split,
stack_lists, writemsg, writemsg_level)
from portage.localization import _
#overlay priority is negative because we want them to be looked before any other repo
base_priority = 0
for ov in overlays:
- if os.path.isdir(ov):
+ try:
+ st = os.stat(ov)
+ except OSError as e:
+ st = None
+ if e.errno == PermissionDenied.errno:
+ raise PermissionDenied("stat('%s')" % ov)
+
+ if st is not None and stat.S_ISDIR(st.st_mode):
repo_opts = default_repo_opts.copy()
repo_opts['location'] = ov
repo = RepoConfig(None, repo_opts)