From f7b8a814cb837b638cea970b2c416524c3cff64a Mon Sep 17 00:00:00 2001 From: Liam Middlebrook Date: Wed, 9 Jun 2021 09:41:09 -0700 Subject: [PATCH] proton: Don't exit early if NVIDIA Wine DLLs cannot be found Reviewed-by: Adam Moss --- proton | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/proton b/proton index a9cfa2ed..3caedaf7 100755 --- a/proton +++ b/proton @@ -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")