[AD] Distributing and maintaining a Linux Allegro application

[ Thread Index | Date Index | More lists.liballeg.org/allegro-developers Archives ]


Hello,

I'm developing a multiple platform product that runs
on Windows, Linux and Mac OS X.  The success of this
goal is largely due to Allegro and its multi-purpose
ability to work reliably and predictably on each of
these platforms.  It is critical that once I release a
distribution to the public that I have complete
ability to update every piece of my application
including changing Allegro versions and even changing
the client patcher itself.  My application has its own
cross-platform patcher connecting to my personal patch
servers

Windows distribution is relatively straight forward. 
Using a single build from my VC7 WinXP machine I'm
able to run my application on XP, Win98 and eventually
on Vista without a single code change or recompile or
anything.  This is extremely efficient from a customer
support and developer maintenance point of view.  As I
release new releases of my application, I simply need
to create a single update patch for a single Windows
target platform, upload the patch on my patch servers
and viola I'm done.  A lot of this ease is the fact
that my application automatically looks for its DLLs
in the local directory before searching the rest of
Windows.

The Mac distribution is a little less straightforward
but I'm pretty sure I can handle it over the
long-haul.  First, I only support Mac OS X (since
that's what Allegro supports) which already reduces
the variations to 10.1, 10.2, 10.3 and 10.4 which
hopefully I can get a single build of the application
to run on each of those variations from a single
distribution.  The introduction of the Intel-Mac
tosses in another platform I have to support but
that's manageable.  Mac as well makes it easy for me
since it will run shared objects out of the local
directory.

Linux is the sore spot.  I'm less confident it will be
so easy with the Linux distribution.  I'm currently
building and running my Allegro on Fedora Core 4.  I
have no idea (yet) whether it will run on Fedora Core
3, 2 or 1, Red Hat 9.0 or Red Hat Enterprise Linux for
that matter.  I also have no idea (yet) whether the
same build from my FC4 machine will produce an
application that can also run on Debian, Gentoo,
Mandriva, Slackware, SuSE or other popular Linux
distributions.  And that's just the 32bit x86
versions.  There's also the 64bit versions and the ppc
versions.  A worst case scenario is that I have to
rebuild my application and generate a unique
distribution for each flavor and CPU platform of Linux
which quickly becomes a logistical nightmare.  Or of
course I simply state I only support one or two of the
most common platforms.

Additionally, I also don't want to have to require my
customers to install Allegro as a separate library as
it seems Linux doesn't allow my application to use its
own shared objects out of its local directory.  That
makes it harder to patch future changes as well as
leaves me open to fielding compatibility problems
arising from different versions of Allegro.

My first thought is that statically linking should
help alleviate much of the problem. I can then ensure
my customers are using the exact same version of
Allegro as what I built my application with and
tested.  That leaves compatibility with whatever X11
support each customer has configured on their machine.
 The only thing I have to verify is whether a
statically built version of my application from my
machine running FC4 will run on other flavors of Linux
and properly find their X11 and sound drivers (and
whatever other lower level libraries are loaded from
the OS).

I'm hoping there's a way I can fairly easily manage to
support a wide range of Linux distributions.  So I
pose this to you all to hear what your thoughts might
be, especially for those who have had experience
supporting software distributions.

Kirk Black




Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/