anyc / steam-overlay

Gentoo overlay for Valve's Steam client and Steam-based games
GNU General Public License v2.0
202 stars 44 forks source link

Problems with USE=-steamruntime #354

Closed stefan11111 closed 7 months ago

stefan11111 commented 7 months ago

I tried playing around with disabling USE=steamruntime on the steam packages. I noticed some things that aren't quite right. For some games, like cs 1.6 and probably many others, the following dependencies must be installed: media-libs/libsdl2 with USE="also sound video opengl abi_x86_32" media-libs/libvorbis with USE="abi_x86_32"

Also, even with all that, cs 1.6 still fails to start with the following error: Error:libgcrypt.so.11: cannot open shared object file: No such file or directory

Emerging dev-libs/libgcrypt with USE="abi_x86_32" does not fix the issue. One way to fix that is to copy ~/.local/share/Steam/ubuntu12_32/steam-runtime/lib/i386-linux-gnu/libgcrypt.so.11 to /usr/lib But that is still not a system lib.

Also, I remember mentioning this here, but I don't use udev. Tell me if you are interested as to how I run steam without steam runtime and without udev.

chewi commented 7 months ago

You need dev-libs/libgcrypt-compat. All of this, except USE=alsa which is dependent on your setup, is handled by esteam, which is recommended if you disable the runtime.

stefan11111 commented 7 months ago

Thanks, emerging dev-libs/libgcrypt-compat fixed the issue. However, I already had esteam installed and those deps were not pulled.

chewi commented 7 months ago

esteam is a tool you need to run, ideally after you install a new Linux-based games. Sorry, I know this is not documented very well.

stefan11111 commented 7 months ago

Just ran esteam.

emerge: there are no ebuilds built with USE flags to satisfy "app-emulation/faudio[abi_x86_32]".
!!! One of the following packages is required to complete your request:
- app-emulation/faudio-23.02::gentoo (Missing IUSE: abi_x86_32)
(dependency required by "@esteam" [argument])
stefan11111 commented 7 months ago

Reporting back on the issues I encountered with esteam.

I dealt with faudio by putting it in my overlay: https://github.com/stefan11111/stefan_overlay/blob/main/app-emulation/faudio/faudio-23.02.ebuild

I don't know how to make a proper ebuild with abi stuff with cmake, but this does the job.

I also encountered an error with libstdc++-v3, also pulled in by esteam: https://bugs.gentoo.org/923112

I tried making a proper patch instead of what I posted there, but I couldn't get it to work.

chewi commented 7 months ago

Unfortunately, libstdc++-v3 is really ancient now. I wouldn't waste time with -flto, but hopefully we can resolve the other issue.

Multilib support for faudio was dropped by another developer a year ago. @ionenwks, mind if I restore this? I guess I can take ownership of the package.

stefan11111 commented 7 months ago

The problem with libstdc++-v3 is more that just -flto. It doesn't build with any CFLAGS, even CFLAGS="" and needs patching to build.

ionenwks commented 7 months ago

Multilib support for faudio was dropped by another developer a year ago. @ionenwks, mind if I restore this? I guess I can take ownership of the package.

Feel free to do as you please with it, albeit sounds surprising that it's needed (some native 32bit games maybe? not that I use steam so I wouldn't know). Afaik even proton doesn't use ELF faudio anymore, but rather build it as PE files. That's why wine @ g.o dropped maintaining it and removed multilib to make it easier to maintain (ebuild was a bit messy, and didn't sound like 32bit would be useful for anything but old wine). Would've considered last rites if 86box didn't use it.

chewi commented 7 months ago

Yeah, 3 native games I have installed use it, although admittedly they're all 64-bit and have it bundled.

@stefan11111, out of interest, which game needed this? /etc/portage/sets/esteam should tell you.

stefan11111 commented 7 months ago

libstdc++-v3 was needed by Half-Life faudio was needed by Proton 5.0

ionenwks commented 7 months ago

Oh old proton, figures (stopping being needed in wine-7+)

chewi commented 7 months ago

Ah, Proton doesn't count because it runs in a container anyway. It will have that library bundled. esteam normally skips Proton because 5.0 is so old that the mechanism it uses to decide this doesn't work.

stefan11111 commented 7 months ago

@chewi Reran esteam after editing it like so:

$ diff -Naru /usr/bin/esteam esteam
--- /usr/bin/esteam     2024-01-28 17:09:35.584128649 +0200
+++ esteam      2024-01-28 17:09:23.927634592 +0200
@@ -60,6 +60,8 @@
        # Games or tools depending on a containerised runtime should be ignored.
        grep -Exq '\s*"require_tool_appid"\s+"(1391110|1628350)"\s*' "$1"/toolmanifest.vdf 2>/dev/null && return 0

+       [[ ${1##*/} = Proton* ]] && return 0
+
        return 1
 }

It still prints some warnings:

$ doas !!
doas esteam
 * Scanning /home/stefan/.local/share/Steam ...
 * Unknown: libharfbuzz.so.0 needed by Counter-Strike Global Offensive/game/bin/linuxsteamrt64/libpangoft2-1.0.so
 * Scanning /home/stefan/.steam/steam ...
 * Unknown: libharfbuzz.so.0 needed by Counter-Strike Global Offensive/game/bin/linuxsteamrt64/libpangoft2-1.0.so

Before doing that, it printed a lot more warnings about proton libs. Any ideas as to how to fix these last warnings about libharfbuzz.so.0?

chewi commented 7 months ago

Hmm yes, that is a library I could add to esteam. Don't know why I haven't before.

minlexx commented 7 months ago

Just hit the problem

app-emulation/faudio-23.02::gentoo (Missing IUSE: abi_x86_32)

/etc/portage/sets/esteam says faudio is needed by Proton 6.3, but I don't think this version is even installed now in Steam. Steam library storage says only Experimental, 8.0 and 7.0 Proton versions are installed. Can I remove the whole Proton 6.3 section from /etc/portage/sets/esteam and live a happy life?

chewi commented 7 months ago

I have now addressed all this in esteam.

@minlexx, esteam doesn't care whether Steam thinks the games/tools are installed or not, it just traverses the directories. Incidentally, I also recently found that 6.3 had been left behind. Maybe there was some glitch with that version. I suggest you remove it manually.