Feature Request: Convert steamdeps.txt to a distro-agnostic format #1200

Open
Tele42 opened this Issue Feb 2, 2013 · 13 comments

Comments

Projects
None yet
10 participants
@Tele42

Tele42 commented Feb 2, 2013

If Steam is to use steamdeps.txt and /usr/bin/steamdeps as the future solution to package manager integration, then the ubuntu-specific package list needs to be replaced by a distro-agnostic format. The adaptor script should be able to do a lookup and translate the list into individual packages, instead of being spoon fed the package names.
The simplest naming scheme would probably be libprimarylibraryname.so.1:32.
If an automated lookup method is not available, it will take the same amount of time to make a translation table from the distro-agnostic set to the distro-specific package list as it would from the ubuntu-specific set, and it is unreasonable to expect game makers to repeatedly revise their dependency list as distributions are officially supported.

To put it another way, a single unified set of dependencies for a package takes less man hours to maintain compared to a dozen distro-specific sets in the same file.

@ghost ghost assigned triage-valve Feb 2, 2013

@titegtnodI

This comment has been minimized.

Show comment
Hide comment
@titegtnodI

titegtnodI Feb 3, 2013

I think this is a good idea. I think it should have always been this way o.o.

I think this is a good idea. I think it should have always been this way o.o.

@PeaEyeEnnKay

This comment has been minimized.

Show comment
Hide comment
@PeaEyeEnnKay

PeaEyeEnnKay Feb 3, 2013

I'm using OpenSuse 12.2 x64 and I am aware it is unsupported. Due to the hope that Valve will try to be sympathetic to non supported distributions I wish to add my support to this feature request.

I updated my base steam package to 1.0.0.22-2, as my original install was complaining about being out of date. After updating I now get asked to enter my root password and then it tries to call out to a package management system that doesn't exist. This is also, as far as I can tell, for packages that are all already installed; under the names OpenSuse gives those packages.

As a half way house just being able to override this dependency behaviour and give it a different package manager command line to use and a different dependencies file would be handy. This puts it in the user's court to make sure their unsupported distribution has all the required dependencies and could be done with an environment variable or two to override the default behaviour.

I'm using OpenSuse 12.2 x64 and I am aware it is unsupported. Due to the hope that Valve will try to be sympathetic to non supported distributions I wish to add my support to this feature request.

I updated my base steam package to 1.0.0.22-2, as my original install was complaining about being out of date. After updating I now get asked to enter my root password and then it tries to call out to a package management system that doesn't exist. This is also, as far as I can tell, for packages that are all already installed; under the names OpenSuse gives those packages.

As a half way house just being able to override this dependency behaviour and give it a different package manager command line to use and a different dependencies file would be handy. This puts it in the user's court to make sure their unsupported distribution has all the required dependencies and could be done with an environment variable or two to override the default behaviour.

@PeaEyeEnnKay

This comment has been minimized.

Show comment
Hide comment
@PeaEyeEnnKay

PeaEyeEnnKay Feb 3, 2013

I have just found out that the OpenSuse package has returned on OBS and have installed that. This means I am now running 1.0.0.22-1.1, which does not exhibit either behaviour currently.

I have just found out that the OpenSuse package has returned on OBS and have installed that. This means I am now running 1.0.0.22-1.1, which does not exhibit either behaviour currently.

@pashazz

This comment has been minimized.

Show comment
Hide comment
@pashazz

pashazz Feb 17, 2013

This bug breaks the entire steamdeps script from porting to another distros

pashazz commented Feb 17, 2013

This bug breaks the entire steamdeps script from porting to another distros

@devurandom

This comment has been minimized.

Show comment
Hide comment
@devurandom

devurandom Feb 17, 2013

Contributor

If you do it this way, you can simply get rid of the file altogether. Just do a "scanelf -n $f" on the binary files (libraries and binaries) of steam (or the game you want to install), and you get a list of libraries that are needed (the ELF DT_NEEDED section). You can then drop all libraries that are bundled with the game. The remaining items will be what you have to ask the package manager for. Some package managers already support such lookup (yum for RedHat), while for other distros you need to jump some hoops (e.g. use PFL on Gentoo).

Since the distros should be concerned about adding support for their distro and not the other way around (you do not want to maintain support for a dozen or more distros yourself), I propose calling a hook instead. That would be a script that takes library names on standard input (e.g.), translates them to package names and then installs them. You could, by default ship one that works on Ubuntu, since you seem to have some kind of cooperatation, but other distros could simply replace it with their own version (beware that you do not try to checksum and "fix" the file!).

Contributor

devurandom commented Feb 17, 2013

If you do it this way, you can simply get rid of the file altogether. Just do a "scanelf -n $f" on the binary files (libraries and binaries) of steam (or the game you want to install), and you get a list of libraries that are needed (the ELF DT_NEEDED section). You can then drop all libraries that are bundled with the game. The remaining items will be what you have to ask the package manager for. Some package managers already support such lookup (yum for RedHat), while for other distros you need to jump some hoops (e.g. use PFL on Gentoo).

Since the distros should be concerned about adding support for their distro and not the other way around (you do not want to maintain support for a dozen or more distros yourself), I propose calling a hook instead. That would be a script that takes library names on standard input (e.g.), translates them to package names and then installs them. You could, by default ship one that works on Ubuntu, since you seem to have some kind of cooperatation, but other distros could simply replace it with their own version (beware that you do not try to checksum and "fix" the file!).

@Tele42

This comment has been minimized.

Show comment
Hide comment
@Tele42

Tele42 Feb 17, 2013

I agree, a proper infrastructure is preferable to this stop-gap measure.

Tele42 commented Feb 17, 2013

I agree, a proper infrastructure is preferable to this stop-gap measure.

@Mailaender

This comment has been minimized.

Show comment
Hide comment
@Mailaender

Mailaender Feb 17, 2013

As I said in #1167 the current measure for https://build.opensuse.org/package/show?project=games&package=steam was simply to remove /usr/bin/steamdeps script because it was pretty useless for the RPM world. I don't know which games on Steam actually rely on it. I only have Source engine games installed. Sorry for the "works for me" approach. Patches are welcome although even the official solution Valve prepared for Ubuntu looks extremely hacky.

As I said in #1167 the current measure for https://build.opensuse.org/package/show?project=games&package=steam was simply to remove /usr/bin/steamdeps script because it was pretty useless for the RPM world. I don't know which games on Steam actually rely on it. I only have Source engine games installed. Sorry for the "works for me" approach. Patches are welcome although even the official solution Valve prepared for Ubuntu looks extremely hacky.

@johndrinkwater

This comment has been minimized.

Show comment
Hide comment
@johndrinkwater

johndrinkwater Feb 17, 2013

Member

@Tele42 ‘a proper infrastructure is preferable’ ‐ probably time to get Debian, Fedora, Ubuntu et al to sit down and work it out then… ;)

Member

johndrinkwater commented Feb 17, 2013

@Tele42 ‘a proper infrastructure is preferable’ ‐ probably time to get Debian, Fedora, Ubuntu et al to sit down and work it out then… ;)

@Tele42

This comment has been minimized.

Show comment
Hide comment
@Tele42

Tele42 Feb 17, 2013

@johndrinkwater Getting major distros to cooperate is well beyond the scope of anything Valve is doing with steam. All that I am looking for is a solution that will allow individual distro maintainers to take care of themselves when it comes to dependency resolution.

Tele42 commented Feb 17, 2013

@johndrinkwater Getting major distros to cooperate is well beyond the scope of anything Valve is doing with steam. All that I am looking for is a solution that will allow individual distro maintainers to take care of themselves when it comes to dependency resolution.

@Mailaender

This comment has been minimized.

Show comment
Hide comment
@Mailaender

Mailaender Feb 17, 2013

http://www.packagekit.org/pk-users.html seems to be already in wide-spread use.

http://www.packagekit.org/pk-users.html seems to be already in wide-spread use.

@hasufell

This comment has been minimized.

Show comment
Hide comment
@hasufell

hasufell Feb 18, 2013

less magic, more documentation

less magic, more documentation

@Mailaender

This comment has been minimized.

Show comment
Hide comment
@Mailaender

Mailaender Mar 15, 2013

@johndrinkwater The easiest solution is to simply require the .so names of the libraries with version number. RPM does support translating this into the package it has to fetch, but I guess every other package manager knows about that, too for automatic dependency generation when building from source.

@johndrinkwater The easiest solution is to simply require the .so names of the libraries with version number. RPM does support translating this into the package it has to fetch, but I guess every other package manager knows about that, too for automatic dependency generation when building from source.

@cognitus

This comment has been minimized.

Show comment
Hide comment
@cognitus

cognitus Jan 30, 2015

what's state? I had update the client with the last beta and I had edit the script for open steam...

what's state? I had update the client with the last beta and I had edit the script for open steam...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment