sdl@lists.libsdl.org
[Top] [All Lists]

Re: [SDL] Linux binary distribution hard? YES

Subject: Re: [SDL] Linux binary distribution hard? YES
From: Albert Zeyer
Date: Wed, 23 Jan 2008 17:44:30 +0200
Am 23.01.2008 um 16:08 schrieb Gabriele Greco:

> Alvin wrote:
>>> Too hard to distribute binaries for linux, sorry.
>>>
>>
>> It can't really be that hard. Take a look at:
>>
>> * Tremulous (http://www.tremulous.net)
>> * TrueCombat:Elite (http://www.truecombatelite.net/)
>> * Wolfenstein: Enemy-Territory
>> (http://enemy-territory.4players.de:1041/news.php)
>> * Many more...
>>
>> I've been installing those binary-only, SDL-based, 3D games on many  
>> versions
>> of Linux.
>>
>
> The fact that there are games distributed as binary doesn't sadly  
> means
> that they work on every linux distribution...
>
> There are a few problem distributing linux binaries (expecially if you
> need to dynamic link and you'll probably do):
>

First of all, it's enough if it runs only on the recent distributions.  
Someone who like to play games would not install a very old Linux  
distribution (wouldn't make much sense as he will always have problems  
then to install recent software).

> - Different function calls avaliable in glibc 2.2, 2.3, 2.4:
>  You need something like autopackage apgcc to avoid 2.3 and 2.4
> specific symbols.
>
All the standard ones are the same. I use glibc-2.6.1 and I have no  
problems to run any binary shipped game (which were probably linked to  
a much older version of glibc).

> - Different C++ abi libstdc++.so.3, 5, 6:
>  You need to ship your version of libstdc++ or provide different
> binaries for your executable and all your dependencies.
>
Or just use a recent one like 5 or 6. Most distributions supports a  
mechanism to easily install the missing libstdc++. You don't have to  
take care about this. This is done automatically by the packager of  
the distribution as a dependency for the package of your game.

> - Different versions of libraries with different features:
> for instance in the binary distribution of Ankh-2 I didn't include
> libSDL (mainly because every distro package a version of SDL best  
> suited
> for the particular AUDIO daemon it uses by default), but the game was
> relying on the fact SDL_VideoInfo contains the desktop width/height  
> and
> the game failed to run on systems with SDL 1.2.8 or earlier.
>
That's an old version of SDL. Even if a user has an old version, it's  
easy to define in the package for the specific distribution that it  
needs >SDL-1.2.8. The distribution normally installes the needed  
dependencies automatically.

> - Different audio systems:
> You must target at least OSS and ALSA and be aware that Pulse, ARTs,
> ESD... may screw your audio code (this is true also if you ship your
> version of SDL and use it for audio), but bind your game to asound for
> instance may be a problem cause you'll find very different versions in
> different systems.
>
ALSA is enough and the preferred choice. Though, if you use SDL you  
don't really have to take care about as SDL will do.


> Then there are linux specific problem not related to the "binary"
> distribution:
>
> - 3d accelerated drivers difficult to install and often incomplete/ 
> buggy
> (ATI is the classic example...)
> - compiz/beryl/compiz-fusion effects incompatible with opengl apps.

This is not related to your game. And the installation of a driver  
depends on the distribution, it's not really difficult on most.

>
> - different ways to install desktop/menu shortcuts expecially on old
> distros (freedesktop stuff is solving this but only distro of the  
> last 2
> years support it).
>
You don't have to care about this, normally a maintainer of the  
distribution will take care about this and create a package for your  
game. You should also not try to force another more general way (like  
an installer) because the user wants to use the packager of the  
distribution and nothing else. If you want to distribute your game  
really fast, you can also create the package by yourself (create at  
least a DEB-package as Debian-based distributions are the most often  
used distributions).

You should perhaps create at least one package (or perhaps a very  
basic shell-script which does the most important steps) that a  
maintainer of a distribution can easily use this to create his own  
specific package.

Sample: (ebuild for Gentoo-based distributions)
http://openlierox.svn.sourceforge.net/viewvc/openlierox/distrib/ebuild/games-action/openlierox/openlierox-0.57_beta3.ebuild?view=markup

Sample: (basic shell-script; I recommend not to use it, it's more like  
a demonstration)
http://openlierox.svn.sourceforge.net/viewvc/openlierox/install.sh?view=markup

Regards,
Albert

_______________________________________________
SDL mailing list
SDL@xxxxxxxxxxxxxxxx
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org

<Prev in Thread] Current Thread [Next in Thread>