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

Make all libraries Multi-Arch: same #78

Closed
smcv opened this issue Sep 1, 2017 · 5 comments
Closed

Make all libraries Multi-Arch: same #78

smcv opened this issue Sep 1, 2017 · 5 comments

Comments

@smcv
Copy link
Contributor

smcv commented Sep 1, 2017

I've recently been experimenting with building a Flatpak runtime from the Steam Runtime packages (#54) so that it can be used to run the Steam client as a Flatpak app. Because the Steam client and some games are 32-bit-only, but some other games are 64-bit-only, the 64-bit version will need to be run in a runtime with multilib (lib, lib64) or multiarch (lib/i386-linux-gnu, lib/x86_64-linux-gnu) so that all game-related libraries can be parallel-installed in both 32- and 64-bit versions.

At the moment, the Steam Runtime uses separate amd64/ and i386/ pseudo-chroots and enables them with LD_LIBRARY_PATH, but that's a bit of a hack: they both contain identical etc/ and include/, and nearly-identical usr/share/, differing only in non-functional files in usr/share/doc/.

No libraries in the Steam Runtime write directly to lib (which would collide between architectures), only to lib/*-linux-gnu. There are only a few libraries that write to usr/lib and not usr/lib/*-linux-gnu, namely:

  • libappindicator
  • libindicator
  • libvpx
  • network-manager
  • tbb

So patching those 5 libraries is sufficient to make everything multi-arch-friendly, such that all the relevant libraries for both amd64 and i386 can be installed in a single chroot.

All of those libraries were subsequently made multi-arch-friendly in Debian and Ubuntu, so all that's needed here is to backport the relevant changes.

This change would also make it possible for the Steam client itself to merge amd64/ and i386/ into a single pseudo-chroot, but I have not tested this. nvidia-cg-toolkit would have to be excluded (#77) or installed for only one of the two architectures. Similarly, zenity would have to be installed for only one of the two architectures, presumably i386 for widest applicability - or just omitted, because the Steam client depends on the host system to provide zenity anyway?

@smcv
Copy link
Contributor Author

smcv commented Sep 1, 2017

There's one more to do: libvulkan1 also needs multiarchifying.

@fledermaus
Copy link

These seem reasonable - the gir files are not coinstallable but as discussed offline we don't need them to be, so that should be fine.

@smcv
Copy link
Contributor Author

smcv commented Oct 19, 2017

All these packages have been fixed in OBS, and should be in the next push to the public apt repositories.

@smcv smcv closed this as completed Oct 19, 2017
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

No branches or pull requests

2 participants