Following the previous blog here also a list of projects that seem to like importing libraries, causing code duplication even for code that was designed to be shared.
- cdrkit, again, contains a stripped down version of libdvdread, added, of course, by our beloved Jörg Schilling; bug #206939; additionally it contains a copy of cdparanoia code; bug #207029
- ImageMagick comes with a copy of libltdl;
bug #206937
- not even KDE4 seems to have helped libkcal which even in its newest incarnation ships with an internal copy of libical, causing me to have three copies of it installed in my system;
- libvncserver comes with a copy of liblzo2; actually there are two, one in libvncserver and one in libvncclient; even the source files are duplicated!; bug #206941
- SDL_sound, Wine and LAME seem to share some mp3 decoding code, which seems to come originally from mpg123;
- cmake couldn’t stay out of this, it comes with a copy of libform (which is part of ncurses); follow bug #206920
- I’m not sure what it is, but DigiKam, Numeric (for Python) and numpy have a few functions in common; the latter seems to have even more than that in common; bug #206931 per Numeric and numpy, and bug #206934 for DigiKam.
- ghostscript comes with internal copies of zlib, libpng, jpeg and jasper; unfortunately jasper is also modified, for the other three there’s bug #206893; by the way, the copies are present in both the gs command and in the libgs library;
- OpenOffice comes with loads of duplicated libraries; in particular, it comes with its own copy of icu libraries; see on
bug #206889
- TiMidity++ comes with a copy of libmikmod; bug #206943
- Korundum for KDE3 has a copy of qtruby embedded, somehow; I wonder if it isn’t a fluke of our buildsystem; bug #206936
- gdb contains an internal copy of readline; –bug #206947
- tork contains a copy of some functions coming from readline; bug #206953
- KTorrent contains a copy of GeoIP (and to think I removed the one in TorK as soon as I’ve spotted it); bug 206957
- both ruby and php use an internal copy of – I think – oniguruma; I haven’t looked if it’s possible to add that as a system library and then use it; bug #206963
- MPlayer seems to carry a copy of libogg together with tremor support; bug #206965
- pkg-config ships with an internal copy of glib; bug #206966
- tor has an internal copy of libevent’s async dns support; funny, as it links to libevent; bug #206969
- gettext fails to find the system copy of libxml2, falling back to use the internal copy; at least it has the decency of using a proper commodity library; bug #207018
- both Perl and Ruby have a default extension based on SDBM, a NDBM workalike; there seems not to be a shared version of it, so they just build the single source file in their own extensions directly, without hiding the symbols; beside the code re-use not being available, if a process loads both libperl and libruby, and in turn they load their sdbm extension, stuff’s gonna hurt;
- enchant has an internal copy of Hunspell; probably due to the fact that old Hunspell built only static non-PIC libraries, and enchant uses plugins; bug #207025; upstream fixed this in their Subversion repository already;
- gnome-vfs contains an internal copy of neon; funny as it depends on neon already, in the ebuild; bug #207031
- gcc with gcj contains an internal copy of boehm-gc and of libltdl; bug #209563 and bug #209568;
- KOffice’s Karbon contains an internal copy of gdk-pixbuf; bug #209561;
- kdegraphics’s KViewShell contains an internal copy of djvulibre; bug #209565;
- doxygen contains internal copies of zlib and libpng; bug #210237 ; this time I used a different method to identify it as doxygen does not export the symbols;
- rsync contains an internal copy of zlib; bug #210244 ;
Unfortunately making sure that what I’m reading is true data and not false positive, looking at the output of my script, becomes more difficult now for the presence of multiple Sun JDK versions; I have to add support for alternatives, so that different libraries implementing the same interface don’t show up as colliding (they are that way by design).