[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

libraries, packaging and other stuff

I have a few problems with Quadra.

Where the currently released version is an Svgalib game, I added support
for X11 recently.

The problem we are trying to solve with this is the many support request
we have received regarding getting Svgalib to work correctly. Those were
of two kinds: unsupported or poorly detected video cards that required
twiddling in libvga.config to get SVGA to work (Quadra is not VGA like
many Svgalib games (Doom and Quake comes to mind), but is SVGA) and
library problems.

I'm rather confident that supporting X11 will cover the first problem
quite nicely, as most people have working X configuration (for the
moment it requires an 8-bits PseudoColor visual, but I'm working on

But for libraries, we're not there yet! Juggling between older libc5
systems and glibc systems, glibc2.0 and glibc2.1, libstdc++ 2.8 vs 2.9,
and so on, this is a lot of fun!

My X11 support is integrated in the same executable, but this has the
side-effect that we don't just link with libX11.so, we link with it in
*addition* to Svgalib. Those users that have perfectly good X11 setups
but that now can't play Quadra because their Svgalib is hosed. For
example, I have a report of one SuSE 6.1 user that can't start Quadra
because of a missing symbol, __bzero. Some investigation turned out that
libvga.so is the one that pulls in that __bzero symbol and that on my
system, it is in /lib/libc.so.6, but somehow, this SuSE user can't start
Quadra anyhow.

We could make two separate release, one Svgalib and one X11, but this
has brought out other problems.

I thought of distributing the library containing the video stuff into
another package (it is already a separate library, its just that we link
it statically for release), but this library is rather tightly bound to
the Quadra executable too, so you have to upgrade the whole thing

How should I work this out?

Dropping Svgalib support is starting to be more and more attractive
every day... We would lose fullscreen playing, but it could be added
back to the X11 version with clever playing of the XFree86-vmode and
XFree86-DGA extensions...

I'm almost thinking of doing the dynamic loading myself with a
dlopen("libvga.so.1") that I'd do only if required, but this would
require a lot of work and this could add fragility to the whole thing...

Pierre Phaneuf
Ludus Design, http://ludusdesign.com/
"First they ignore you. Then they laugh at you.
Then they fight you. Then you win." -- Gandhi