1 \documentclass[letterpaper
]{article
}
3 \usepackage[latin1]{inputenc}
7 \usepackage{supertabular
}
9 \usepackage[dvips,colorlinks=false,
10 linkbordercolor=
1 1 1,urlbordercolor=
1 1 1]{hyperref
}
11 %\usepackage{draftcopy}
13 \title{Examination of gDesklets Dependencies
}
14 \author{\href{mailto:syfou@users.sourceforge.net
}{S.Fourmanoit
}\and \href{mailto:exilejedi@users.sourceforge.net
}{M.Pirnat
}}
15 \date{Montréal and Cleveland,
\today.
}
19 This
document tries to determine what is, at the time of writing, the minimal
20 set of dependencies required to compile and run gDesklets on an up-to-date
21 desktop system. The author spent several hours testing, as systematically as
22 time permitted, all possible avenues, following often-contradictory indications
23 provided by official documentation, emails, forums, automated build source,
24 how-tos and bug reports. It is not
\emph{by any means
} a canonical reference on
25 gDesklets installation, merely a
report of what seems the current state of this
26 software regarding its dependency tree.
29 Most of the gDesklets user base uses Linux, although the software is also
30 supported on numerous other platforms; it is even being actively ported to
31 Windows. For the sake of this
report, the author built a reference platform
32 using
\href{http://www.gentoo.org
}{Gentoo Linux
}. The base system was built
33 from the Gentoo
2004.3 x86 Stage
1 tarball, and all the default profile USE
34 flags were cautiously adjusted to be
\footnote{Flags in
{\color[rgb
]{1,
0,
0}red
}
35 were selected, while those in
{\color[rgb
]{0,
0,
1}blue
} were not.
}: \\
37 \begin{supertabular
}{lp
{.8\linewidth}}
38 \textbf{Use flag
} &
\textbf{Description
} \\
40 {\color[rgb
]{1,
0,
0}\textbf{+mmx
}} & Adds support for optimizations for Pentium MMX and Athlon class processors \\
41 {\color[rgb
]{1,
0,
0}\textbf{+
3dnow
}} & Adds support for
3dnow multimedia processor instructions \\
42 {\color[rgb
]{1,
0,
0}\textbf{+x86
}} & indicates that architecture is x86 \\
43 {\color[rgb
]{1,
0,
0}\textbf{+nptl
}} & Enable support for Native POSIX Threads Library \\
44 {\color[rgb
]{1,
0,
0}\textbf{+nptlonly
}} & Remove suport for previous pthread interface \\
45 {\color[rgb
]{0,
0,
1}\textbf{-oss
}} & Adds support for OSS (Open Sound System) \\
46 {\color[rgb
]{0,
0,
1}\textbf{-apm
}} & Adds APM (Advanced Power Management) support \\
47 {\color[rgb
]{0,
0,
1}\textbf{-arts
}} & Adds support for aRts: the KDE sound daemon \\
48 {\color[rgb
]{0,
0,
1}\textbf{-avi
}} & Adds Win32 AVI support and also adds avifile (Library for avi) support \\
49 {\color[rgb
]{0,
0,
1}\textbf{-berkdb
}} & Adds support for sys-libs/db (Berkeley DB for MySQL) \\
50 {\color[rgb
]{1,
0,
0}\textbf{+bitmap-fonts
}} & Adds support for Bitmapped fonts \\
51 {\color[rgb
]{0,
0,
1}\textbf{-crypt
}} & Add support for encryption -- using mcrypt or gpg where applicable \\
52 {\color[rgb
]{0,
0,
1}\textbf{-cups
}} & Add support for CUPS (Common Unix Printing System) \\
53 {\color[rgb
]{0,
0,
1}\textbf{-emboss
}} & Adds support for the European Molecular Biology Open Software Suite \\
54 {\color[rgb
]{0,
0,
1}\textbf{-encode
}} & Adds support for MEncoder or LaME encoder, wherever applicable \\
55 {\color[rgb
]{0,
0,
1}\textbf{-fortran
}} & Adds support for fortran (formally f77) \\
56 {\color[rgb
]{0,
0,
1}\textbf{-font-server
}} & N/A \\
57 {\color[rgb
]{0,
0,
1}\textbf{-foomaticdb
}} & Adds support for the foomatic printing driver database \\
58 {\color[rgb
]{0,
0,
1}\textbf{-gdbm
}} & Adds support for sys-libs/gdbm (GNU database libraries) \\
59 {\color[rgb
]{0,
0,
1}\textbf{-gif
}} & Adds GIF image support \\
60 {\color[rgb
]{0,
0,
1}\textbf{-gnome
}} & Adds GNOME support \\
61 {\color[rgb
]{0,
0,
1}\textbf{-gpm
}} & Adds support for sys-libs/gpm (Console-based mouse driver) \\
62 {\color[rgb
]{0,
0,
1}\textbf{-gtk
}} & Adds support for x11-libs/gtk+ (The GIMP Toolkit) \\
63 {\color[rgb
]{0,
0,
1}\textbf{-gtk2
}} & Use gtk+-
2.0.0 over gtk+-
1.2 in cases where a program supports both. \\
64 {\color[rgb
]{0,
0,
1}\textbf{-imlib
}} & Adds support for media-libs/imlib (Image loading and rendering library) \\
65 {\color[rgb
]{0,
0,
1}\textbf{-ipv6
}} & Adds support for IP version
6 \\
66 {\color[rgb
]{0,
0,
1}\textbf{-jpeg
}} & Adds JPEG image support \\
67 {\color[rgb
]{0,
0,
1}\textbf{-kde
}} & Adds support for kde-base/kde (K Desktop Enviroment) \\
68 {\color[rgb
]{0,
0,
1}\textbf{-libg++
}} & Adds C++ modules in dev-db/postgresql (libpq++) \\
69 {\color[rgb
]{0,
0,
1}\textbf{-libwww
}} & Adds libwww support (General purpose WEB API) \\
70 {\color[rgb
]{0,
0,
1}\textbf{-mad
}} & Adds support for mad (high-quality mp3 decoder library and cli frontend) \\
71 {\color[rgb
]{0,
0,
1}\textbf{-mikmod
}} & Adds libmikmod support to allow playing of SoundTracker-style music files \\
72 {\color[rgb
]{0,
0,
1}\textbf{-motif
}} & Adds motif support (x11-libs/openmotif x11-libs/lesstif) \\
73 {\color[rgb
]{0,
0,
1}\textbf{-mpeg
}} & Adds libmpeg3 support to various packages. \\
74 {\color[rgb
]{1,
0,
0}\textbf{+ncurses
}} & Adds ncurses support (console display library) \\
75 {\color[rgb
]{1,
0,
0}\textbf{+nls
}} & Adds Native Language Support (using gettext - GNU locale utilities) \\
76 {\color[rgb
]{0,
0,
1}\textbf{-oggvorbis
}} & Adds support for the OggVorbis audio encoding \\
77 {\color[rgb
]{1,
0,
0}\textbf{+opengl
}} & Adds support for OpenGL \\
78 {\color[rgb
]{0,
0,
1}\textbf{-pam
}} & Adds support PAM (Pluggable Authentication Modules) \\
79 {\color[rgb
]{0,
0,
1}\textbf{-pdflib
}} & Adds support for PDF (Portable Document Format) \\
80 {\color[rgb
]{1,
0,
0}\textbf{+perl
}} & Adds support/bindings for the Perl language. \\
81 {\color[rgb
]{0,
0,
1}\textbf{-png
}} & Adds support for libpng (PNG images) \\
82 {\color[rgb
]{1,
0,
0}\textbf{+python
}} & Adds support/bindings for the Python language \\
83 {\color[rgb
]{0,
0,
1}\textbf{-qt
}} & Adds support for the Qt library. \\
84 {\color[rgb
]{0,
0,
1}\textbf{-quicktime
}} & Adds support for OpenQuickTime \\
85 {\color[rgb
]{1,
0,
0}\textbf{+readline
}} & enables support for libreadline \\
86 {\color[rgb
]{0,
0,
1}\textbf{-sdl
}} & Adds support for Simple Direct Layer (media library) \\
87 {\color[rgb
]{0,
0,
1}\textbf{-spell
}} & Adds dictionary support \\
88 {\color[rgb
]{1,
0,
0}\textbf{+ssl
}} & Adds support for Secure Socket Layer connections \\
89 {\color[rgb
]{0,
0,
1}\textbf{-svga
}} & Adds support for SVGAlib (graphics library) \\
90 {\color[rgb
]{1,
0,
0}\textbf{+tcpd
}} & Adds support for TCP wrappers \\
91 {\color[rgb
]{1,
0,
0}\textbf{+truetype
}} & Adds support for FreeType and/or FreeType2 fonts \\
92 {\color[rgb
]{1,
0,
0}\textbf{+truetype-fonts
}} & Adds support for TrueType fonts \\
93 {\color[rgb
]{1,
0,
0}\textbf{+type1-fonts
}} & Adds support for Type1 fonts \\
94 {\color[rgb
]{1,
0,
0}\textbf{+X
}} & Adds support for X11 \\
95 {\color[rgb
]{0,
0,
1}\textbf{-xml2
}} & Check/Support flag for XML library (version
2) \\
96 {\color[rgb
]{0,
0,
1}\textbf{-xmms
}} & Check/Support for XMMS (X MultiMedia System) player. \\
97 {\color[rgb
]{1,
0,
0}\textbf{+xv
}} & Adds in optional support for the Xvideo extension \\
98 {\color[rgb
]{1,
0,
0}\textbf{+zlib
}} & Adds support for zlib (de)compression \\
103 \noindent As you can see, most of the flags present in default profile were
104 turned off to keep the system as spartan as possible. The glibc, binutils and
105 gcc packages were also upgraded to their latest stable
\footnote{To the author's evaluation, of course.
} versions, and the rest of the base system was recompiled
106 then pruned until it looked like this
\ref{base
}. About
251 MB of compressed
107 source files were used to build the test system (see
\ref{packages
}). When
108 complete, the base system filled
505 MB on disk, including all development
109 tools and headers, as well as a working X11 and window manager.
114 \begin{minipage
}[h
]{.5\linewidth}
115 \includegraphics[scale=
0.5]{eps/system_1.eps
}
117 \begin{minipage
}[t
]{.4\linewidth}
118 \includegraphics[scale=
0.5]{eps/system_2.eps
}
122 \caption{Base test system complete dependency tree
}
127 \fbox{\includegraphics[scale=
0.5]{eps/packages.eps
}}
130 \caption{Source tarballs used during base system compilation
}
136 The local portage tree was updated for the last time on Thursday, March
17, at
137 03:
33:
19 EST,
2005, and the dependency tree for the latest gdesklets-core
138 available at that time is shown in the
\ref{start
} image. The complete
139 installation required
78 MB of source, and
300 MB on disk when the installation was finished. Once installed, every display the author tried ran fine. \\
141 \noindent As you can see, a lot of dependencies come from gnome-python.
142 Following various email advice and recommendations found on forums, the author
143 managed to alter the build process by manually removing dependencies to:
146 \item gnome-base/nautilus
147 \item gnome-base/gnome-panel
148 \item gnome-base/libgnomeprint
149 \item nome-base/libgnomeprintui
152 \noindent Even with these dependencies removed, the author was still able to
153 get a mostly-working installation of gDesklets. Here, the author used a
154 snapshot from gDesklets' public CVS extracted on Wednesday, March
16 at
155 15:
38:
26 EST,
2005. The amount of source code needed was reduced to
51 MB, and
156 the final installed size on disk was
206 MB. It is good to note, though, that
157 not installing gnome-panel makes some displays (such as desklet-starterbar)
158 fail to start; unfortunately, the requirements for this component are
161 \noindent Numerous attempts to further reduce the dependency set were made,
162 without success. For instance, since gDesklets recently dropped gnome-vfs, it
163 would have been nice to avoid installing it, but the GNOME design is far from
164 orthogonal between components, and the use of one compoent often makes us fall
165 into various indirect and circular dependency problems. In this case, libbonobo
166 for one, could not be compiled without it.
171 \begin{minipage
}[h
]{.72\linewidth}
172 \includegraphics[scale=
0.5]{eps/gdesklets_start_1.eps
}
174 \begin{minipage
}[t
]{.6\linewidth}
175 \includegraphics[scale=
0.5]{eps/gdesklets_start_2.eps
}
179 \caption{Default dependency tree for gdesklets-core-
0.3.1}
184 \fbox{\includegraphics[scale=
0.5]{eps/gdesklets_end.eps
}}
186 \caption{Reduced dependency tree for gdesklets-code-
20050316}
194 gDesklets is constantly evolving and getting imporvements of all kinds, and
195 both Christian Meyer and Martin Grimme, the co-maintainers of the software, are
196 working on significantly reducing their dependency set:
199 \item gnomevfs is no longer essential to gDesklets, as urllib2 can be used
201 \item bonobo use is now deprecated and will be removed in version
0.40.
202 \item gconf will also be removed soon.
205 \noindent This is great news, as gDesklets evolves more and more toward a more
206 neutral (i.e. non GNOME-centric) world view
\footnote{Not that there is anything
207 wrong with that, of course, but GNOME is not the everyone's preferred
208 environment.
}, and has been runing well on numerous other window managers for
209 some time. That said, this
report also shows that:
212 \item gDesklets is not yet "GNOME free," and GNOME is a rather invasive desktop
213 environment--once you depend on a GNOME library, you often find yourself having
214 to install a lot of others, as they are frequently interconnected and
215 interdependent. The earlier tree graphs shown in the
\ref{start
} and
\ref{end
}
216 figures should be enough to convince anyone of that fact.
217 \item The author was lucky enough to have a sophisticated package management
218 system at his disposal. This kind of investigation would be possible manually,
219 but few users would have the patience to try this by hand. Most people who
220 want to use gDesklets will probably just install a complete GNOME desktop
221 anyway, as other methods are time-consuming and far from straightforward for
222 non-developers. This means that the improvements to the gDesklets codebase
223 will go largely unnoticed unless package maintainers from the various platforms
224 do a more precise job, which is very difficult (if not impossible) in a GNOME
225 context because gDesklets is not the only application that a generic desktop
227 \item At
206 MB out of a total of
711 MB on disk ($
\approx 29\%$),
228 gDesklets is far from a light addition to the base system, even though that is
229 already a huge improvement from the author's initial experience.