All pastes #22906 Raw Edit

Anonymous

public text v1 · immutable
#22906 ·published 2005-09-14 14:57 UTC
rendered paste body
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.