Explaining the current Steam Package build: Difference between revisions
imported>HLandau |
m Outdated |
||
(5 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
{{outdated|Steam's packaging has considerably changed since this article was written.}} | |||
This article should give insight about how steam is currently packaged and how and why it works like this. It also discusses what the problems are in packaging it and how we can approach solving them. | This article should give insight about how steam is currently packaged and how and why it works like this. It also discusses what the problems are in packaging it and how we can approach solving them. | ||
Line 5: | Line 6: | ||
== Nix problems and constraints == | == Nix problems and constraints == | ||
* We don't have /bin/bash and many scripts point there. Similarly for /usr/bin/python, for some functionality. | * We don't have <code>/bin/bash</code> and many scripts point there. Similarly for <code>/usr/bin/python</code>, for some functionality. | ||
* We don't have the dynamic loader in /lib | * We don't have the dynamic loader in <code>/lib</code> | ||
* The steam.sh script in $HOME could not be patched last | * The <code>steam.sh</code> script in <code>$HOME</code> could not be patched the last time an attempt was made, as it is always checked and rewritten by the Steam client. | ||
* The steam binary cannot be patched, | * The <code>steam</code> binary cannot be patched, as this is also checked by the Steam client. | ||
== Approaches == | == Approaches == | ||
Line 14: | Line 15: | ||
This is the current approach, documented here: http://sandervanderburg.blogspot.nl/2013/09/composing-fhs-compatible-chroot.html | This is the current approach, documented here: http://sandervanderburg.blogspot.nl/2013/09/composing-fhs-compatible-chroot.html | ||
* Pros: | * Pros: | ||
** | ** this method would allow us to have binaries in the expected paths without disrupting the system. | ||
** Steam itself, as well as Valve games and perhaps others like to checksum their executables, so patching does not work | ** Steam itself, as well as Valve games and perhaps others like to checksum their executables, so patching does not work. | ||
* Cons: | * Cons: | ||
** Performance might suffer from this, but we are not sure. | |||
** Kernel patch is required for SteamVR asynchronous reprojection.<ref>https://lvra.gitlab.io/docs/distros/nixos/#steamvr</ref><ref>https://github.com/NixOS/nixpkgs/issues/217119</ref> | |||
=== Link bash to /bin and glibc/lib to /lib and be happy === | === Link bash to /bin and glibc/lib to /lib and be happy === | ||
Line 26: | Line 29: | ||
* Cons: this only solves the part concerned with running steam. What about the games? We can patch some of them, but at least Team Fortress is checked and rewritten if modified | * Cons: this only solves the part concerned with running steam. What about the games? We can patch some of them, but at least Team Fortress is checked and rewritten if modified | ||
This is the approach that I (page) took in my | This is the approach that I (page) took in my GitHub branch: https://github.com/cpages/nixpkgs/tree/steam | ||
=== Intercept Steam's calls with LD_PRELOAD or the like === | === Intercept Steam's calls with LD_PRELOAD or the like === | ||
Line 40: | Line 43: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
You might also need patching some scripts. That all depends on each one. You can then press play from steam and if you're lucky that'll be it! | You might also need patching some scripts. That all depends on each one. You can then press play from steam and if you're lucky that'll be it! | ||
[[Category:Applications]] |