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.