Explaining the current Steam Package build: Difference between revisions

imported>Nix
m add Software/Applications subcategory
m Outdated
 
(3 intermediate revisions by 2 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 I tried, as it is checked and rewritten by steam
* 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, it's also checked
* 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:
** it would allow us to have binaries in the expected paths without disrupting the system
** 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: performance?
* 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 ===