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

Force libcurl.so.[34] to be taken from the Steam Runtime #166

Merged
merged 1 commit into from
Apr 23, 2019

Conversation

smcv
Copy link
Contributor

@smcv smcv commented Apr 18, 2019

UNTESTED: I don't have Risk of Rain, so I don't know whether this fixes it. (It at least doesn't seem to break the Steam client...)


libcurl in the Steam Runtime has a Debian-specific oddity (inherited by
Ubuntu and SteamRT) in which libcurl.so.3 is a symlink to libcurl.so.4,
as a result of some unfortunate ABI weirdness back in 2007 (upstream
bumped the SONAME in a situation where it might not in fact have been
necessary).

It also has Debian-specific symbol versioning, as a result of the
versioned symbols introduced as a Debian-specific change in 2005-2006
being preserved across the rename from libcurl.so.3 to libcurl.so.4
in 2007, and not matching the versioned symbols that upstream
subsequently added (in 2011). Versions of Debian and Ubuntu between
2011 and 2018 (including Ubuntu 12.04, the basis for the Steam Runtime)
had a patched libcurl to remain compatible with their 2007 version.

In 2018, Debian and Ubuntu switched to a SONAME and versioning that match
upstream, but the Steam Runtime is based on a version that is older than
that, so anything built against the Steam Runtime will expect the
2007-Debian-compatible versioned symbols. Make sure we use the Steam
Runtime version, which will satisfy those games' expectations.

In particular, this is known to affect Risk of Rain, and perhaps other
GameMaker-based games.

@TTimo
Copy link
Collaborator

TTimo commented Apr 22, 2019

Related: ValveSoftware/steam-for-linux#6224

@smcv
Copy link
Contributor Author

smcv commented Apr 23, 2019

ValveSoftware/steam-for-linux#6224 is somewhat related, but not closely. I'll comment there.

@smcv
Copy link
Contributor Author

smcv commented Apr 23, 2019

The "official" SONAME of the 2012-era libcurl in Debian/Ubuntu is libcurl.so.4, so it would be enough to say (libcurl.so.4) instead of (libcurl.so.[34]).

To be fully compatible with 2012-era Debian/Ubuntu, we should also be creating a separate symlink libcurl.so.3 -> libcurl.so.4 in pinned_libs_* so that if there is an obsolete system copy of libcurl.so.3 (which would not have versioned symbols, because upstream didn't add those until later), we use the Steam Runtime's libcurl.so.4 (which has Debian-specific versioned symbols).

libcurl in the Steam Runtime has a Debian-specific oddity (inherited by
Ubuntu and SteamRT) in which libcurl.so.3 is a symlink to libcurl.so.4,
as a result of some unfortunate ABI weirdness back in 2007 (upstream
bumped the SONAME in a situation where it might not in fact have been
necessary).

It also has Debian-specific symbol versioning, as a result of the
versioned symbols introduced as a Debian-specific change in 2005-2006
being preserved across the rename from libcurl.so.3 to libcurl.so.4
in 2007, and not matching the versioned symbols that upstream
subsequently added (in 2011). Versions of Debian and Ubuntu between
2011 and 2018 (including Ubuntu 12.04, the basis for the Steam Runtime)
had a patched libcurl to remain compatible with their 2007 version.

In 2018, Debian and Ubuntu switched to a SONAME and versioning that match
upstream, but the Steam Runtime is based on a version that is older than
that, so anything built against the Steam Runtime will expect the
2007-Debian-compatible versioned symbols. Make sure we use the Steam
Runtime version, which will satisfy those games' expectations.

In particular, this is known to affect Risk of Rain, and perhaps other
GameMaker-based games.

Signed-off-by: Simon McVittie <smcv@collabora.com>
@TTimo TTimo marked this pull request as ready for review April 23, 2019 23:00
@TTimo TTimo merged commit 1fe1e76 into ValveSoftware:master Apr 23, 2019
@smcv smcv deleted the libcurl branch April 24, 2019 12:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants