On 23 October 2013 19:58, Alec Leamas <leamas.alec@gmail.com> wrote:
On 2013-10-23 19:22, Simone Caronni wrote:
I wonder if the simple answer is just "No, you can't" . OTOH, isn't it perfectly viable to install a 32-bit package on a x86_64 host using e. g., yum install steam.i386?

It can be done, but installing it by calling "steam.i686" or just "steam" is the same if the i686 package is the only one in the repository. It's managed by yum, ff there's the native arch package, that is pulled in, otherwise the compatible others.

Actually, if you run my repository on x86_64 and issue a "yum install steam" the steam.i686 package is installed.
 
If that is seen as a little awkward, one could probably create subpackages with correct architecture which pulls in steam.i386 (?)

Creating a 64 bit steam package, with all libraries and programs written in as library(x86-32) in the requirements is a really ugly hack... I would rather not do it. On top of this, after installing the Steam client, there are "hints" (libraries, a stub Ubuntu runtime, etc.) that the client will sooner or later ported to 64 bit (maybe in the new SteamMachines?); so creating a package like that would create a lot of mess. Example:

[slaanesh@3zpc0560 Steam]$ ls -ald ubuntu12_*
drwx------. 2 slaanesh slaanesh 4096 Oct 20 19:57 ubuntu12_32
drwxrwxr-x. 2 slaanesh slaanesh 4096 Oct 10 23:37 ubuntu12_64
[slaanesh@3zpc0560 Steam]$ ls -al ubuntu12_64/
total 15460
drwxrwxr-x.  2 slaanesh slaanesh     4096 Oct 10 23:37 .
drwx------. 26 slaanesh slaanesh     4096 Oct 23 16:37 ..
-rwxrwxr-x.  1 slaanesh slaanesh   472576 Oct  4 02:47 crashhandler.so
-rwxrwxr-x.  1 slaanesh slaanesh   173323 Sep 27 19:57 gameoverlayrenderer.so
-rwxrwxr-x.  1 slaanesh slaanesh   191997 Sep 25 23:57 libtier0_s.so
-rwxrwxr-x.  1 slaanesh slaanesh   235937 Oct  4 02:47 libvstdlib_s.so
-rwxrwxr-x.  1 slaanesh slaanesh 14739300 Oct  9 04:25 steamclient.so
[slaanesh@3zpc0560 Steam]$ ldd ubuntu12_64/steamclient.so
    linux-vdso.so.1 =>  (0x00007fff6673c000)
[...]
    libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f1d8cbb3000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f1d8c997000)
    /lib64/ld-linux-x86-64.so.2 (0x00000034b0600000)
    libc.so.6 => /lib64/libc.so.6 (0x00007f1d8c5d5000)
[...]

Anyway, to pull in steam.i386, the steam.i386 package would need to be in the repository as well, so the problem is the same. I think the best and cleanest way is to create an i686 package and installing it as it should. Getting to something like ELRepo nvidia packages with a "nvidia-x11-drv-libs-32bit.x86_64" package containing i686 libraries is a really, really ugly thing and I would rather not do it...

Leaving it as is and simply adding x86_64 to ExclusiveArch would allow us to rebuild the package as normal.

Regards,
--Simone




--
You cannot discover new oceans unless you have the courage to lose sight of the shore (R. W. Emerson).

http://xkcd.com/229/
http://negativo17.org/