-
Notifications
You must be signed in to change notification settings - Fork 37
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Use steam runtime to execute proton-wine (copied from old repo) #3
Comments
I've created a steam_runtime branch with a new option to run the script under Steam Runtime using the You can install it with
and then try running the command
to see if it works properly. On another note, I tried testing a few Proton prefixes using the Steam Runtime, but each of them causes winetricks to fail with the following error message:
This happens even if no wine-related binaries are running on the system and even if the game is recently installed and hasn't been touched with winetricks prior to this. Interestingly enough,
whereas running this without Steam Runtime returns the Wine version corresponding to Proton Wine (3.16):
PATH environment variable is set the same way in both situations, so the LD_LIBRARY_PATH variable that is set by Steam Runtime's It could be related to how Arch Linux has packaged Steam, but I haven't researched this issue further for now. |
Just pre-pending to the string for However, the original code you have (pending fixes/hacks for #4) works fine for me. I am able to run winetricks successfully now that I add --runtime. (Previously, since I lack most of wine's dependancies since I don't have a system installed version, winetricks would fail/error all over the place depending on which library was missing) PS: maybe protontricks should use the same environment variables to auto-inject steam-runtime? From reading steam.sh: STEAM_RUNTIME=1 force enabled, STEAM_RUNTIME=0, force disabled, STEAM_RUNTIME=, custom runtime root path, STEAM_RUNTIME=, enabled automatically |
The string is used in this case because we want the
Regardless, the fix here is a bit hacky; it's probably better to add a parameter to
Sounds like a good idea if I can get the Steam Runtime working in protontricks. |
I ran strace with both Steam Runtime on and off and it seems like Steam Runtime's With Without The LD_LIBRARY_PATH that |
Hrm, sounds like something we could maybe tweak/detect via the Mine with default/unset:
and with
I actually have no proper recommendation here: by default we should just let run.sh do its thing per the users ENV they already setup. However it seems that having a system-wide wine installed breaks its assumptions for proton' paths. Buggar. |
I noticed the Please give it a try. |
I notice that PATH is being modified. (unless I'm misreading the code). Is there anyway to accomplish this without doing so? |
Is that a problem in certain scenarios? The point is that |
This is a gaming platform. Making that the first place checked for execution of code seems quite risky - given the higher likelihood of malicious third party code (than say OS binaries). People write scripts and code that can make some bad decisions. This covers anything like mods and unknown package dependencies. |
The PATH environment variable is only changed for the duration of the call, and only in the context of the executed command. I find the malware angle unlikely: if the attacker had access to the user's home directory, it would be far easier to dump something malicious in The directory in question also doesn't contain any binaries except those related to Wine ( There's also the option of creating temporary aliases in the context of the call (eg. |
That is a reasonable response in my layman's understanding. I at least wanted to raise my concern on it. Thanks for your thoughtful response! |
Note: if STEAM_RUNTIME is fully unset it doesn't exist in the os.environ dictionary at all, like on my system. Thus an error of:
Probably change those to os.environ.get()? and some tweaks to steam.py:find_steam_runtime_path() since the .get() will return None and os.path.isdir() does not like that. Hacky diff once again, probably find a better way:
Otherwise, seems to be working? Although I have no steam apps needing complex winetricks at the moment so I can only check that basics work like dotnet45 into an empty prefix. |
Thanks, I tested the script with that value set to a path, |
I'm unable to fully test (my original issue was unable to uninstall an app - which I'm not going to try to repeat), but it appears to load fine (no errors in console) and I can access the Uninstaller and regedit without issue. Thanks @Matoking @admalledd for your help on this issue! |
The 'run.sh' script included with Steam Runtime causes the wrong libwine.so.1 file to be discovered if system Wine is installed due to the script creating LD_LIBRARY_PATH env var that disregards the Proton installation. To prevent this, use the script's `--print-steam-runtime-library-paths` command to print the library paths for use with LD_LIBRARY_PATH and then prepend them with the Proton installation's own library directories. This ensures the Proton installation's libwine.so.1 is used instead. protontricks also now supports STEAM_RUNTIME env var used with Steam. Steam Runtime is enabled by default.
I tested this fix out on a Kubuntu 18.04 VM and everything seems to check out. Everything checks out, so I've merged this to master. |
Source:
Sirmentio/protontricks#39
Impacting my copy of protontricks from here as of a few days ago.
OS: Ubuntu 18.04.1 LTS
Steam Proton version: 3.16.7 Beta
GPU: AMD RX550
Proton wine is built against the steam runtime and a number of issues with winetricks/wineserver/winebus etc arise if they are ran on a system with incomplete, or mismatching library versions. For example, steam-runtime and thus proton-wine-3.16 is built against libpng-12 while ubuntu 18.04 has libpng-16.
My execution looked like this to get the whole of protontricks into the runtime:
$HOME/.steam/ubuntu12_32/steam-runtime/run.sh protontricks 359320
Here is my actual command for Snow:
$HOME/.steam/steam/ubuntu12_32/steam-runtime/run.sh protontricks 244930
The text was updated successfully, but these errors were encountered: