Currently our shlibdeps code doesn't know about virtuals.
E.g. an SDL app will depend on either libsdl-x11 or libsdl-qpe depending on
which PREFERRED_PROVIDER was set at built time.
Instead it should have a dependency on virtual/libsdl or similar.
------- Additional Comment #1 From pb@reciva.com 2005-06-21 13:41 [reply] -------
The shlibdeps code operates on binary packages, not source packages. Binary
package names are derived from the soname of the library within the package. If
libsdl-x11 and libsdl-qpe are binary compatible then their sonames should be
identical, and so the resulting binary packages will both be called "libsdl0" or
some such.
So, I don't think there is any bug in the shlibdeps code here. If there is a
bug at all, it sounds like it is in the SDL packages.
------- Additional Comment #2 From pb@reciva.com 2005-06-27 01:35 [reply] -------
shlibdeps code seems to be operating correctly
------- Additional Comment #3 From Rene Wagner 2005-06-27 01:44 [reply] -------
My interpretation of it may have been wrong, but this is a long-standing bug
which should be fixed before the next Familiar or OpenZaurus releases.
Please don't mark stuff like this as resolved when it isn't. I adjusted the bug
description instead.
------- Additional Comment #4 From Frederic Devernay 2005-09-07 02:16 [reply] -------
Please note that these two libraries are NOT binary compatible.
libsdl-qte contains a main() function and the result of "sdl-config --cflags"
contains "-Dmain=SDL_main", whereas libsdl-x11 does NOT contain a main and does
not redefine main at compilation.
Consequently, every SDL-dependent package will work either with libsdl-x11 or
with libsdl-qpe, but NOT with both.
IMHO, SDL-based packages should either depend on the proper SDL version (qpe or
x11), and should be named accordingly. An SDL-only package, such as xmame for
example, should build xmame-qpe and xmame-x11, which are two different packages.
The same goes for the library names: using ./usr/lib/libSDL-1.2.so.0.7.0 for
both versions is dangerous, especially because the staging area will conatin
either version, whereas bitbake thinks both are installed.
------- Additional Comment #5 From Koen Kooi 2005-09-07 02:33 [reply] -------
Didn't Holger fix the qpe version to not redefine main?
------- Additional Comment #6 From Frederic Devernay 2005-09-14 05:38 [reply] -------
AFAIK, libSDL-1.2.7's configure.in still contains the following bit:
# Set up files for the main() stub
if test "x$video_qtopia" = "xyes"; then
SDL_CFLAGS="$SDL_CFLAGS -Dmain=SDL_main"
SDL_LIBS="-lSDLmain $SDL_LIBS"
fi
And there is some QtE init stuff in main(). Since libSDL_main.a, which contains
main() is, of course, statically linked with any SDL program, a program linked
against libSDL is dependent on the libsdl version (though it doesn't appear in
the ipkg dependencies).
If you take a look at
SDL-1.2.7/src/main/qtopia/SDL_qtopia_main.cc
You'll notice the only reason there's a main() in the qte version is for Qt
command-line arguments parsing (see
http://doc.trolltech.com/2.3/qapplication.html#b8d5f2 ). Do we really need
these? If no, then we can remove the SDL_main stuff from the qpe version.