Skip to content
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

Soldier runtime: Proton 21-GE-1 wont work if installed globally #314

Closed
floriplum opened this issue Dec 7, 2020 · 11 comments
Closed

Soldier runtime: Proton 21-GE-1 wont work if installed globally #314

floriplum opened this issue Dec 7, 2020 · 11 comments

Comments

@floriplum
Copy link

Your system information

  • Steam Runtime Version: soldier_0.20201203.0
  • Distribution (e.g. Ubuntu 18.04): Arch Linux
  • Link to your full system information (Help -> System Information) in a Gist:
  • Have you checked for system updates?: [Yes]
  • Are you using the Steam Linux Runtime compatibility tool?: [Yes]

Please describe your issue in as much detail as possible:

When i install the Proton-5.21-GE-1 version system wide using this Aur package under /usr/share/steam and /var/games/pfx_proton-ge-custom/(Here is the full file list for the dlls i cant start any game using the new proton version. When it is installed local under .steam/root/compatibilitytools.d i have no problem at all.
The main difference i noticed between these two installs is the following error:
OSError: [Errno 30] Read-only file system: '/usr/share/steam/compatibilitytools.d/proton-ge-custom/dist.lock' Traceback (most recent call last): File "/usr/share/steam/compatibilitytools.d/proton-ge-custom/proton", line 922, in <module> g_proton.make_default_prefix() File "/usr/share/steam/compatibilitytools.d/proton-ge-custom/proton", line 170, in make_default_prefix with self.dist_lock: File "/run/host/usr/share/steam/compatibilitytools.d/proton-ge-custom/filelock.py", line 323, in __enter__ self.acquire() File "/run/host/usr/share/steam/compatibilitytools.d/proton-ge-custom/filelock.py", line 271, in acquire self._acquire() File "/run/host/usr/share/steam/compatibilitytools.d/proton-ge-custom/filelock.py", line 384, in _acquire fd = os.open(self._lock_file, open_mode) OSError: [Errno 30] Read-only file system: '/usr/share/steam/compatibilitytools.d/proton-ge-custom/dist.lock'

Log globally installed
Log locally installed

Steps for reproducing this issue:

  1. Install Proton-5.21-GE-1 globally (only tested via the Aur package mentioned earlier)
  2. Select it in steam
  3. Try to start any game
@floriplum floriplum changed the title Soldier runtime: Soldier runtime: Proton wont work if installed locally Dec 7, 2020
@floriplum floriplum changed the title Soldier runtime: Proton wont work if installed locally Soldier runtime: Proton 21-GE-1 wont work if installed globally Dec 7, 2020
@kisak-valve
Copy link
Member

kisak-valve commented Dec 7, 2020

Blind guess that /var/games/pfx_proton-ge-custom isn't getting mounted into the container environment, so Proton is trying to setup a new default wine prefix and falls over when it can't because /usr/share/steam/compatibilitytools.d/proton-ge-custom is read only.

Starting steam with STEAM_COMPAT_MOUNTS=/var/games/pfx_proton-ge-custom steam might workaround the snafu. Or maybe PRESSURE_VESSEL_FILESYSTEMS_RO=/var/games/pfx_proton-ge-custom steam would be more appropriate?

@floriplum
Copy link
Author

floriplum commented Dec 7, 2020

So far that looks better than before, but it looks like the aur package also has a problem with broken symlinks.
If i fix the symlinks i can test further.

@floriplum
Copy link
Author

floriplum commented Dec 7, 2020

Now i get an error that some dlls are not found.

  File "/usr/share/steam/compatibilitytools.d/proton-ge-custom/proton", line 926, in <module>
    g_session.init_session()
  File "/usr/share/steam/compatibilitytools.d/proton-ge-custom/proton", line 746, in init_session
    g_compatdata.setup_prefix()
  File "/usr/share/steam/compatibilitytools.d/proton-ge-custom/proton", line 472, in setup_prefix
    self.update_builtin_libs(builtin_dll_copy)
  File "/usr/share/steam/compatibilitytools.d/proton-ge-custom/proton", line 356, in update_builtin_libs
    self.pfx_copy(src_file, dst_file, dll_copy)
  File "/usr/share/steam/compatibilitytools.d/proton-ge-custom/proton", line 299, in pfx_copy
    try_copyfile(src, dst)
  File "/usr/share/steam/compatibilitytools.d/proton-ge-custom/proton", line 90, in try_copyfile
    shutil.copyfile(src, dst)
  File "/usr/lib/python3.7/shutil.py", line 120, in copyfile
    with open(src, 'rb') as fsrc:
FileNotFoundError: [Errno 2] No such file or directory: '/var/games/pfx_proton-ge-custom/drive_c/windows/system32/xapofx1_1.dll'

/var/games/pfx_proton-ge-custom/drive_c/windows/system32/xapofx1_1.dll is a symlink to /lib64/wine/fakedlls/xapofx1_1.dll
Maybe the path inside pressure vessel isnt the same as the symlink?

@floriplum
Copy link
Author

That error was caused because i accidentally linked against the wine dlls.
After i fixed it everything looks fine when i set the PRESSURE_VESSEL_FILESYSTEMS_RO=/var/games/pfx_proton-ge-custom environment variable.

@dearlygparted
Copy link

I have the same exact problem. Should I just wait for the AUR package to be updated?

@floriplum
Copy link
Author

floriplum commented Dec 8, 2020

For the time beeing you should be able to extract the tar under .steam/root/compatibilitytools.d/.
I also wrote to the AUR package about the "fixes" that i need to do to get it working. So if you are fine with modifying the PKGBUILD and the symlinks from the package you can fix it yourself.

Edit: the env variable is still needed. So for it to work out of the box both the AUR package and the steam-runtime would need to be updated.

@smcv
Copy link
Contributor

smcv commented Dec 8, 2020

Versions of Proton other than the official one distributed by Valve are not really something we can support, but if there is a finite number of paths used by packages like this one, we can teach pressure-vessel to mount them automatically.

How is this meant to work? Are the files under /var/games a read-only template that gets copied into a directory that you own?

If they're read-only, why are they in /var? Or if they get modified on end users' systems, who/what modifies them?

If they are just a read-only template, then this:

To fix the broken links we could also install the pfx directory under /usr/share in the same folder it would be when you extract the package. This way we wouldn't need to tinker with the links since they all would be in their normal place.

sounds like a good solution.

@floriplum
Copy link
Author

Im honestly not sure why they are in /var/games and i totally understand that you cant support all different paths that may be used by a third party proton version. The files are mostly read only from what i can tell.
It probably is a good idea to wait till i get a response about the topic from the package maintainer, maybe there is a good reason to use the directory that is currently used. If there is it would obviously be helpful if pressure-vessel could mount that directory automatically.

Anyway thank you for your awesome work to make Linux gaming better.

@smcv
Copy link
Contributor

smcv commented Dec 9, 2020

It probably is a good idea to wait till i get a response about the topic from the package maintainer

It would probably be best if the package maintainer can talk to us directly on this issue, so we can discuss how their package is intended to work, and what either pressure-vessel or their package can do to make this situation work better.

@smcv
Copy link
Contributor

smcv commented Dec 9, 2020

For the time beeing you should be able to extract the tar under .steam/root/compatibilitytools.d/.

Honestly, this is probably always going to be the most robust way to do third-party compatibility tools. pressure-vessel already has to share the Steam installation directory with the container to make various other things work, and this path is the way Proton developers try out their test-builds before they get to a releasable quality, so it's something that needs to work anyway.

@floriplum
Copy link
Author

We now changed the Install location and everything is working fine.
Still thanks for your help and keep up with the good work.

PedroHLC pushed a commit to chaotic-aur/pkgbuild-proton-ge-custom-bin that referenced this issue Jul 27, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants