anyc / steam-overlay

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

Tomb Raider needs librtmp.so.0 #168

Closed karolherbst closed 8 years ago

karolherbst commented 8 years ago

sadly the only available version of media-video/rtmpdump only provides a librtmp.so.1 file. I try to hack up an ebuild somwhat

anyc commented 8 years ago

According to PortageFileList, the portage version once provided .so.0. Unfortunately, the ebuild fetches the tarball from the Gentoo maintainer's home. Maybe it already helps if you add an symlink?

karolherbst commented 8 years ago

@anyc I forgot to mention this here. The cause of this is that they bundle a really old libcurl linking against librtmp.so.0 and libgssapi_krb.so (or something like that).

Providing librtmp.so.0 is no big deal, but the gssapi thing is the bigger concern because that might pull a lot other old stuff :/

anyc commented 8 years ago

Hm okay. In the worst case, we could pull the library from Ubuntu and put it into /opt/steam-runtime

karolherbst commented 8 years ago

@anyc: yeah, but maybe we can convince feral to drop the bundle libcurl, this would be the less painfull solution

calendulish commented 8 years ago

Here everything works fine with a symlink (librtmp.so.1 --> librtmp.so.0). We can not just add a symlink in the package?

karolherbst commented 8 years ago

@ShyPixie of course not.

The game doesn't actually need all that. I talked with one of the devs about it and maybe we will get a version without that dependency at some point.

Adding such a symlink will cause ABI breakage for other things and issues which are really hard and annoying to track down.

chewi commented 8 years ago

Alien Isolation needs this too.

anyc commented 8 years ago

Could 1b0ad03c580756 help here?

chewi commented 8 years ago

That commit won't but adding this game to esteam's UNBUNDLEABLES list might as long as it's libcurl.so.4 and not libcurl.so.3. I have this game so I'll download it now and give it a try.

chewi commented 8 years ago

That works. I'll commit the change later.

piedar commented 7 years ago

@chewi I'm not familiar with esteam; what does UNBUNDLEABLES do?

I faced the same issue of missing librtmp.so.0 for Mad Max caused by the old bundled libcurl. I discovered two independent workarounds. Each of them has caused no apparent issues after several hours. For now I am using Method 2 because it seems cleaner.

Method 1 - Install the dependencies

/etc/portage/sets/mad-max

# For bin/FeralLinuxMessage
media-libs/sdl2-ttf

# For bin/MadMax
=media-video/rtmpdump-2.4*
=net-nds/openldap-2.4*
virtual/krb5

A problem remains: the rtmpdump.so.0 no longer exists. I went to Mad\ Max/lib/x86_64 and added a nasty cross-version symlink to rtmpdump.so.1.

Method 2 - Use system libcurl

emerge -v1 net-misc/curl
mv "Mad Max/lib/x86_64/libcurl.so.4" ~/backup/

This does produce a warning with ldd:

bin/MadMax: /usr/lib64/libcurl.so.4: no version information available (required by bin/MadMax)
chewi commented 7 years ago

UNBUNDLEABLES more or less does Method 2 automatically if the game is in the list. Files are deleted but can be easily restored through Steam. See the esteam help text. That warning is harmless, by the way.

This is generally beneficial, even if it isn't strictly necessary like the librtmp.so.0 case. We just don't include games that don't have any libs we can delete, games that break as a result, or games that are VAC enabled. Mad Max doesn't appear to be VAC enabled.

My fear has recently come true though. I have encountered two games that need to be unbundled but are VAC enabled. These are Portal 2 and GRID Autosport. I don't know for sure that what we're doing would trigger VAC, in fact I think it most likely wouldn't, but it's a big risk. I intend to ask Valve but I'm not confident they'll give me a useful answer. I'll try my best.

piedar commented 7 years ago

@chewi Thanks for the info! I'm going to try out esteam soon; sounds like it automates some of the stuff I'm already doing manually.