Merge pull request #36 from tomaarsen/hotfix/os_error_name_too_long

Fixes `OSError: File name too long` when environment variable is too long
This commit is contained in:
Tim Dettmers 2022-10-09 16:47:11 -07:00 committed by GitHub
commit ed2e3b9db4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,3 +1,4 @@
import errno
from pathlib import Path from pathlib import Path
from typing import Set, Union from typing import Set, Union
from warnings import warn from warnings import warn
@ -12,17 +13,23 @@ def extract_candidate_paths(paths_list_candidate: str) -> Set[Path]:
def remove_non_existent_dirs(candidate_paths: Set[Path]) -> Set[Path]: def remove_non_existent_dirs(candidate_paths: Set[Path]) -> Set[Path]:
non_existent_directories: Set[Path] = { existent_directories: Set[Path] = set()
path for path in candidate_paths if not path.exists() for path in candidate_paths:
} try:
if path.exists():
existent_directories.add(path)
except OSError as exc:
if exc.errno != errno.ENAMETOOLONG:
raise exc
non_existent_directories: Set[Path] = candidate_paths - existent_directories
if non_existent_directories: if non_existent_directories:
warn( warn(
"WARNING: The following directories listed in your path were found to " "WARNING: The following directories listed in your path were found to "
f"be non-existent: {non_existent_directories}" f"be non-existent: {non_existent_directories}"
) )
return candidate_paths - non_existent_directories return existent_directories
def get_cuda_runtime_lib_paths(candidate_paths: Set[Path]) -> Set[Path]: def get_cuda_runtime_lib_paths(candidate_paths: Set[Path]) -> Set[Path]: