proton: Don't exit early if NVIDIA Wine DLLs cannot be found

Reviewed-by: Adam Moss <amoss@nvidia.com>
This commit is contained in:
Liam Middlebrook 2021-06-09 09:41:09 -07:00 committed by Andrew Eikum
parent 8b92fe08ba
commit f7b8a814cb

11
proton
View File

@ -77,7 +77,7 @@ def makedirs(path):
#already exists
pass
def try_copy(src, dst, add_write_perm=True):
def try_copy(src, dst, add_write_perm=True, optional=False):
try:
if os.path.isdir(dst):
dstfile = dst + "/" + os.path.basename(src)
@ -94,6 +94,12 @@ def try_copy(src, dst, add_write_perm=True):
new_mode = os.lstat(dstfile).st_mode | stat.S_IWUSR | stat.S_IWGRP
os.chmod(dstfile, new_mode)
except FileNotFoundError as e:
if optional:
log('Error while copying to \"' + dst + '\": ' + e.strerror)
else:
raise
except PermissionError as e:
if e.errno == errno.EPERM:
#be forgiving about permissions errors; if it's a real problem, things will explode later anyway
@ -708,7 +714,8 @@ class CompatData:
if nvidia_wine_dll_dir:
for dll in ["_nvngx.dll", "nvngx.dll"]:
try_copy(nvidia_wine_dll_dir + "/" + dll,
self.prefix_dir + "drive_c/windows/system32/" + dll)
self.prefix_dir + "drive_c/windows/system32/" + dll,
optional=True)
try_copy(g_proton.lib64_dir + "wine/vkd3d-proton/d3d12.dll",
self.prefix_dir + "drive_c/windows/system32/d3d12.dll")