diff --git a/src/nixglhost.py b/src/nixglhost.py index b3c97bc..2b27ad5 100755 --- a/src/nixglhost.py +++ b/src/nixglhost.py @@ -11,7 +11,7 @@ import stat import sys import time from glob import glob -from typing import List, Literal, Dict, Tuple, TypedDict, TextIO, Optional +from typing import List, Literal, Dict, Tuple, TypedDict, TextIO, Optional, Pattern IN_NIX_STORE = False CACHE_VERSION = 3 @@ -172,64 +172,72 @@ class CacheDirContent: # requiring to build/fetch the nvidia driver at runtime*. # TODO: compile the regexes NVIDIA_DSO_PATTERNS = [ - "libEGL_nvidia\.so.*$", - "libGLESv1_CM_nvidia\.so.*$", - "libGLESv2_nvidia\.so.*$", - "libglxserver_nvidia\.so.*$", - "libnvcuvid\.so.*$", - "libnvidia-allocator\.so.*$", - "libnvidia-cfg\.so.*$", - "libnvidia-compiler\.so.*$", - "libnvidia-eglcore\.so.*$", - "libnvidia-egl-gbm\.so.*$", - "libnvidia-egl-wayland\.so.*$", - "libnvidia-encode\.so.*$", - "libnvidia-fbc\.so.*$", - "libnvidia-glcore\.so.*$", - "libnvidia-glsi\.so.*$", - "libnvidia-glvkspirv\.so.*$", - "libnvidia-ml\.so.*$", - "libnvidia-ngx\.so.*$", - "libnvidia-nvvm\.so.*$", - "libnvidia-opencl\.so.*$", - "libnvidia-opticalflow\.so.*$", - "libnvidia-ptxjitcompiler\.so.*$", - "libnvidia-rtcore\.so.*$", - "libnvidia-tls\.so.*$", - "libnvidia-vulkan-producer\.so.*$", - "libnvidia-wayland-client\.so.*$", - "libnvoptix\.so.*$", - # Cannot find that one :( - "libnvtegrahv\.so.*$", - # Host dependencies required by the nvidia DSOs to properly - # operate - # libdrm - "libdrm\.so.*$", - # libffi - "libffi\.so.*$", - # libgbm - "libgbm\.so.*$", - # libexpat - "libexpat\.so.*$", - # libxcb - "libxcb-glx\.so.*$", - # Coming from libx11 - "libX11-xcb\.so.*$", - "libX11\.so.*$", - "libXext\.so.*$", - # libwayland - "libwayland-server\.so.*$", - "libwayland-client\.so.*$", + re.compile(pattern) + for pattern in [ + "libEGL_nvidia\.so.*$", + "libGLESv1_CM_nvidia\.so.*$", + "libGLESv2_nvidia\.so.*$", + "libglxserver_nvidia\.so.*$", + "libnvcuvid\.so.*$", + "libnvidia-allocator\.so.*$", + "libnvidia-cfg\.so.*$", + "libnvidia-compiler\.so.*$", + "libnvidia-eglcore\.so.*$", + "libnvidia-egl-gbm\.so.*$", + "libnvidia-egl-wayland\.so.*$", + "libnvidia-encode\.so.*$", + "libnvidia-fbc\.so.*$", + "libnvidia-glcore\.so.*$", + "libnvidia-glsi\.so.*$", + "libnvidia-glvkspirv\.so.*$", + "libnvidia-ml\.so.*$", + "libnvidia-ngx\.so.*$", + "libnvidia-nvvm\.so.*$", + "libnvidia-opencl\.so.*$", + "libnvidia-opticalflow\.so.*$", + "libnvidia-ptxjitcompiler\.so.*$", + "libnvidia-rtcore\.so.*$", + "libnvidia-tls\.so.*$", + "libnvidia-vulkan-producer\.so.*$", + "libnvidia-wayland-client\.so.*$", + "libnvoptix\.so.*$", + # Cannot find that one :( + "libnvtegrahv\.so.*$", + # Host dependencies required by the nvidia DSOs to properly + # operate + # libdrm + "libdrm\.so.*$", + # libffi + "libffi\.so.*$", + # libgbm + "libgbm\.so.*$", + # libexpat + "libexpat\.so.*$", + # libxcb + "libxcb-glx\.so.*$", + # Coming from libx11 + "libX11-xcb\.so.*$", + "libX11\.so.*$", + "libXext\.so.*$", + # libwayland + "libwayland-server\.so.*$", + "libwayland-client\.so.*$", + ] ] -CUDA_DSO_PATTERNS = ["libcudadebugger\.so.*$", "libcuda\.so.*$"] +CUDA_DSO_PATTERNS = [ + re.compile(pattern) for pattern in ["libcudadebugger\.so.*$", "libcuda\.so.*$"] +] -GLX_DSO_PATTERNS = ["libGLX_nvidia\.so.*$"] +GLX_DSO_PATTERNS = [re.compile(pattern) for pattern in ["libGLX_nvidia\.so.*$"]] EGL_DSO_PATTERNS = [ - "libEGL_nvidia\.so.*$", - "libnvidia-egl-wayland\.so.*$", - "libnvidia-egl-gbm\.so.*$", + re.compile(pattern) + for pattern in [ + "libEGL_nvidia\.so.*$", + "libnvidia-egl-wayland\.so.*$", + "libnvidia-egl-gbm\.so.*$", + ] ] @@ -283,7 +291,9 @@ def get_ld_paths() -> List[str]: return [path for path in paths if os.path.isdir(path)] -def resolve_libraries(path: str, files_patterns: List[str]) -> List[ResolvedLib]: +def resolve_libraries( + path: str, files_patterns: List[Pattern[str]] +) -> List[ResolvedLib]: """Scans the PATH directory looking for the files complying with the FILES_PATTERNS regexes list.