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

Re: Unused libSM and libICE (was: Re: RFS: xiterm+thai)



On Tue, Apr 1, 2008 at 3:04 PM, Theppitak Karoonboonyanan
<thep@linux.thai.net> wrote:
>
>  On Mon, Mar 17, 2008 at 4:16 PM, Paul Wise <pabs@debian.org> wrote:
>
>  >  dpkg-shlibdeps: warning: debian/xiterm+thai/usr/bin/xiterm+thai
>  >  shouldn't be linked with libSM.so.6 (it uses none of its symbols).
>  >  dpkg-shlibdeps: warning: debian/xiterm+thai/usr/bin/xiterm+thai
>  >  shouldn't be linked with libICE.so.6 (it uses none of its symbols).
>
>  'ldd -u -r /usr/bin/x*' shows that xiterm+thai is not the only
>  one. Many other X apps have this problem as well.

Update: I've run this simple script to check all executables
and shared libraries installed in my machine which are linked
to libSM or libICE without using them:

---8<---
$ cat check-sm-ice
#!/bin/sh

check_sm_ice()
{
  f=$1

  unused=`ldd -u -r $f 2>/dev/null`
  if echo $unused | grep libSM.so >/dev/null 2>&1 ||
     echo $unused | grep libICE.so >/dev/null 2>&1
  then
    pkg=`dpkg -S $f | cut -d: -f1`
    echo "$pkg:$f"
  fi
}

for f in `find /usr/lib/ -name '*.so.*' -type f -print`; do
  check_sm_ice $f
done

for f in `find /usr/bin/ -type f -print`; do
  check_sm_ice $f
done
$ ./check-sm-ice | sort > unused-sm-ice
$ cat unused-sm-ice
abiword-gnome:/usr/bin/AbiWord-2.4
brasero:/usr/bin/brasero
dasher:/usr/bin/dasher
dia-gnome:/usr/bin/dia-gnome
ekiga:/usr/bin/ekiga
epiphany-gecko:/usr/bin/epiphany-gecko
epiphany-webkit:/usr/bin/epiphany-webkit
evince:/usr/bin/evince
evolution:/usr/bin/evolution
evolution:/usr/lib/evolution/2.12/libeabutil.so.0.0.0
evolution:/usr/lib/evolution/2.12/libeconduit.so.0.0.0
evolution:/usr/lib/evolution/2.12/libecontacteditor.so.0.0.0
evolution:/usr/lib/evolution/2.12/libecontactlisteditor.so.0.0.0
evolution:/usr/lib/evolution/2.12/libefilterbar.so.0.0.0
evolution:/usr/lib/evolution/2.12/libemiscwidgets.so.0.0.0
evolution:/usr/lib/evolution/2.12/libeshell.so.0.0.0
evolution:/usr/lib/evolution/2.12/libetable.so.0.0.0
evolution:/usr/lib/evolution/2.12/libetext.so.0.0.0
evolution:/usr/lib/evolution/2.12/libetimezonedialog.so.0.0.0
evolution:/usr/lib/evolution/2.12/libeutil.so.0.0.0
evolution:/usr/lib/evolution/2.12/libevolution-a11y.so.0.0.0
evolution:/usr/lib/evolution/2.12/libevolution-addressbook-a11y.so.0.0.0
evolution:/usr/lib/evolution/2.12/libevolution-addressbook-importers.so.0.0.0
evolution:/usr/lib/evolution/2.12/libevolution-calendar-a11y.so.0.0.0
evolution:/usr/lib/evolution/2.12/libevolution-calendar-importers.so.0.0.0
evolution:/usr/lib/evolution/2.12/libevolution-mail-importers.so.0.0.0
evolution:/usr/lib/evolution/2.12/libevolution-widgets-a11y.so.0.0.0
evolution:/usr/lib/evolution/2.12/libfilter.so.0.0.0
evolution:/usr/lib/evolution/2.12/libmenus.so.0.0.0
fontforge:/usr/bin/fontforge
fontforge:/usr/bin/mensis
fontforge:/usr/lib/fontforge/libgdraw.so.3.0.1
fontforge:/usr/lib/fontforge/libgutils.so.1.0.0
gnomebaker:/usr/bin/gnomebaker
gnome-cups-manager:/usr/bin/gnome-cups-add
gnome-cups-manager:/usr/bin/gnome-cups-icon
gnome-cups-manager:/usr/bin/gnome-cups-manager
gnome-mag:/usr/bin/magnifier
gnome-pilot:/usr/bin/gnome-pilot-make-password
gnome-pilot:/usr/bin/gpilot-applet
gnome-pilot:/usr/bin/gpilotd
gnome-pilot:/usr/bin/gpilotd-control-applet
gnome-pilot:/usr/bin/gpilotd-session-wrapper
gnome-pilot:/usr/bin/gpilot-install-file
gnome-power-manager:/usr/bin/gnome-power-manager
gnome-power-manager:/usr/bin/gnome-power-preferences
gnome-power-manager:/usr/bin/gnome-power-statistics
gnome-screensaver:/usr/bin/gnome-screensaver
gnome-utils:/usr/bin/baobab
gnome-utils:/usr/bin/gfloppy
gnome-utils:/usr/bin/gnome-dictionary
gnome-utils:/usr/bin/gnome-screenshot
gnome-utils:/usr/bin/gnome-search-tool
gnome-utils:/usr/bin/gnome-system-log
gnome-volume-manager:/usr/bin/gnome-volume-properties
groff:/usr/bin/gxditview
gthumb:/usr/bin/gthumb
gtranslator:/usr/bin/gtranslator
imagemagick:/usr/bin/animate
imagemagick:/usr/bin/compare
imagemagick:/usr/bin/composite
imagemagick:/usr/bin/conjure
imagemagick:/usr/bin/convert
imagemagick:/usr/bin/display
imagemagick:/usr/bin/identify
imagemagick:/usr/bin/import
imagemagick:/usr/bin/mogrify
imagemagick:/usr/bin/montage
imagemagick:/usr/bin/stream
libatspi1.0-0:/usr/lib/libcspi.so.0.10.11
libatspi1.0-0:/usr/lib/libloginhelper.so.0.0.0
libatspi1.0-0:/usr/lib/libspi.so.0.10.11
libbonoboui2-0:/usr/lib/libbonoboui-2.so.0.0.0
libbonoboui2-dev:/usr/bin/bonobo-browser
libbonoboui2-dev:/usr/bin/test-moniker
libgnomecupsui1.0-1c2a:/usr/lib/libgnomecupsui-1.0.so.1.0.0
libgnome-media0:/usr/lib/libcddb-slave2.so.0.0.0
libgnome-media0:/usr/lib/libgnome-media-profiles.so.0.0.0
libgnomesu0:/usr/bin/gnomesu
libgnome-window-settings1:/usr/lib/libgnome-window-settings.so.1.0.0
libgtkglext1:/usr/lib/libgdkglext-x11-1.0.so.0.0.0
libgtkglext1:/usr/lib/libgtkglext-x11-1.0.so.0.0.0
libgtkhtml3.14-19:/usr/lib/libgtkhtml-3.14.so.19.1.0
libmagick10:/usr/lib/libMagick.so.10.0.9
libmagick++10:/usr/lib/libMagick++.so.10.0.9
libmagick10:/usr/lib/libWand.so.10.0.9
libplot2c2:/usr/lib/libplot.so.2.2.2
libplot2c2:/usr/lib/libplotter.so.2.2.2
libqt3-mt:/usr/lib/libqui.so.1.0.0
libslab0:/usr/lib/libslab.so.0.0.0
libstartup-notification0:/usr/lib/libstartup-notification-1.so.0.0.0
libvte9:/usr/lib/libvte.so.9.2.17
libxaw7:/usr/lib/libXaw7.so.7.0.0
libxmu6:/usr/lib/libXmu.so.6.2.0
libxtrap6:/usr/lib/libXTrap.so.6.4.0
nvclock:/usr/bin/nvclock
seahorse:/usr/lib/libseahorse.so.0.0.0
sound-juicer:/usr/bin/sound-juicer
stellarium:/usr/bin/stellarium
totem-gstreamer:/usr/bin/totem-gstreamer
totem-gstreamer:/usr/bin/totem-gstreamer-audio-preview
totem-gstreamer:/usr/bin/totem-gstreamer-video-indexer
totem-gstreamer:/usr/bin/totem-gstreamer-video-thumbnailer
totem-gstreamer:/usr/lib/nautilus/extensions-1.0/libtotem-properties-page.so.gstreamer
x11-apps:/usr/bin/oclock
x11-apps:/usr/bin/xbiff
x11-apps:/usr/bin/xcalc
x11-apps:/usr/bin/xclipboard
x11-apps:/usr/bin/xclock
x11-apps:/usr/bin/xconsole
x11-apps:/usr/bin/xcutsel
x11-apps:/usr/bin/xditview
x11-apps:/usr/bin/xedit
x11-apps:/usr/bin/xeyes
x11-apps:/usr/bin/xload
x11-apps:/usr/bin/xlogo
x11-apps:/usr/bin/xmag
x11-apps:/usr/bin/xman
x11-apps:/usr/bin/xmore
x11-utils:/usr/bin/appres
x11-utils:/usr/bin/editres
x11-utils:/usr/bin/listres
x11-utils:/usr/bin/viewres
x11-utils:/usr/bin/xfd
x11-utils:/usr/bin/xfontsel
x11-utils:/usr/bin/xmessage
x11-xkb-utils:/usr/bin/xkbvleds
x11-xkb-utils:/usr/bin/xkbwatch
x11-xserver-utils:/usr/bin/xstdcmap
x11-xserver-utils:/usr/bin/xtrapchar
x11-xserver-utils:/usr/bin/xtrapin
x11-xserver-utils:/usr/bin/xtrapinfo
x11-xserver-utils:/usr/bin/xtrapout
x11-xserver-utils:/usr/bin/xtrapproto
x11-xserver-utils:/usr/bin/xtrapreset
x11-xserver-utils:/usr/bin/xtrapstats
x11-xserver-utils:/usr/bin/xvidtune
xdmx-tools:/usr/bin/dmxwininfo
xdmx-tools:/usr/bin/xdmxconfig
xiterm+thai:/usr/bin/xiterm+thai
xterm:/usr/bin/xterm
---8<---

>  After working with Neutron, I find this is caused by the
>  AC_PATH_XTRA macro in configure.in, which, in addition to
>  setting the usual CFLAGS and LIBS for X11 build, detects
>  libSM and libICE and add them to the link flags, regardless of
>  whether the are actually used or not. And there seems to be
>  no other autoconf macro for this purpose to use.
>
>  One possible fix is to switch to pkg-config and take
>  advantage of the modularity of xorg 7. But its price is the
>  loss of X11R6 support, which may still be in use in other
>  Unix systems. But I don't think it's too expensive.

I've fixed this. The result is less memory usage, from 1.7M
to 388 KB.

>  Another question is, how about other affected X apps? How
>  would they do with these 2 unused linked libraries?

I find the cause varies from package to package.

For example, x11-utils and x11-apps use libXaw* and libXt
via pkg-config, which in turn depend on libSM and libICE
without using them.

Meanwhile, gnome-utils uses AC_PATH_XTRA, which always
forces libSM and libICE linkage.

I haven't checked others yet, though.

Regards,
-- 
Theppitak Karoonboonyanan
http://linux.thai.net/~thep/


Reply to: