GNOME Goal: Clean up GLib and GTK+ includes
Summary
GTK+ is moving toward a model where it is only allowed to include the 'toplevel' headers. The goal is to make all GNOME modules comply with this. Only these header can be directly included:
<glib.h>, <gio.h>, <glib-object.h>, <gmodule.h>, <glib/gi18n-lib.h> or <glib/gi18n.h>, <glib/gprintf.h>, <glib/gstdio.h>
<gdk/gdk.h>, <gdk-pixbuf/gdk-pixbuf.h>, <gdk/gdkkeysyms.h>, <gdk/gdkx.h>
<gtk/gtk.h>, <gtk/gtkunixprint.h>
See the Glib documentation and GTK+ documentation for more info.
Guidelines
Compile your application with:
make CFLAGS+="-DG_DISABLE_SINGLE_INCLUDES -DGDK_PIXBUF_DISABLE_SINGLE_INCLUDES -DGTK_DISABLE_SINGLE_INCLUDES"
Recognizing a module affected by this goal
- If the module doesn't contain any compiled C code, or is not using GLib or GTK+, it is not affected.
- Compile the module with its default options, until it builds successfully.
Once it builds, build it with the G_DISABLE_SINGLE_INCLUDES, GDK_PIXBUF_DISABLE_SINGLE_INCLUDES and GTK_DISABLE_SINGLE_INCLUDES flags.
- If the compiler gives you an error about an include, the module is affected by this goal and must be corrected.
It is also easy to spot affected modules just by reviewing the include statements that you find by running grep "^#include" over the sources and scanning the results.
Comments
Add your comments about this goal here |
What are the rules for what files may be included and where are the rules documented? "See if it compiles" is awful documentation! For example, <glib.h> does not include <glib/gi18n-lib.h> so there is little choice but to include it directly. -- MortenWelinder
What about <glib-object.h> ? -- YuFeng
Can you please come up with more than two words? --AndreKlapper
Status of this goal
Tip: If you choose to work on a module, create the bug report on the GNOME bugzilla and mark it as blocking this tracker bug. |
State |
Markup |
todo |
<: #ff8080> todo |
patch |
<: #ffc849> [[GnomeBug:xxxxx|patch] |
done |
<: #80ff80> [[GnomeBug:xxxxx|done] |
not needed |
<: #80ff80> not needed |
Above are the states and corresponding markup to update the modules state table below.
Tarball |
Status |
|
Desktop |
||
alacarte |
not needed |
|
brasero |
not needed |
|
bug-buddy |
not needed |
|
dasher |
not needed |
|
dconf |
not needed |
|
done |
||
done |
||
done |
||
not needed |
||
evolution-data-server |
not needed |
|
evolution-exchange |
not needed |
|
evolution-mapi |
not needed |
|
evolution-webcal |
||
file-roller |
||
gcalctool |
done |
|
gconf-editor |
done |
|
gnome-backgrounds |
not needed |
|
gnome-desktop |
not needed |
|
gnome-desktop-sharp |
not needed |
|
gnome-disk-utility |
||
not needed |
||
done |
||
gnome-icon-theme |
done |
|
gnome-keyring |
not needed |
|
gnome-netstatus |
||
gnome-nettool |
||
gnome-mag |
||
gnome-menus |
done |
|
gnome-power-manager |
||
gnome-python-desktop |
not needed |
|
gnome-session |
||
gnome-settings-daemon |
||
gnome-system-monitor |
||
gnome-terminal |
done |
|
done |
||
gnome-user-docs |
not needed |
|
gnome-user-share |
not needed |
|
gnome-volume-manager |
not needed |
|
not needed |
||
not needed |
||
gst-plugins |
||
gtkhtml |
not needed |
|
done |
||
gvfs |
||
hamster-applet |
||
libgail-gnome |
||
libgnomekbd |
||
libgnome-keyring |
not needed |
|
libgtop |
||
libgweather |
||
liboobs |
not needed |
|
librsvg |
||
done |
||
libwnck |
||
metacity |
||
mousetweaks |
not needed |
|
nautilus-sendto |
||
orca |
not needed |
|
pygtksourceview |
not needed |
|
done |
||
seahorse-plugins |
done |
|
swfdec-gnome |
||
tomboy |
||
totem-pl-parser |
not needed |
|
vinagre |
not needed |
|
vino |
||
vte |
||
Desktop (to be deprecated) |
||
libgnomeprint |
not needed |
|
libgnomeprintui |
||
Platform |
||
GConf |
not needed |
|
at-spi |
not needed |
|
atk |
done |
|
gail |
||
glib |
not needed |
|
not needed |
||
gtk-doc |
||
pango |
not needed |
|
pkgconfig |
not needed |
|
Platform (to be deprecated) |
||
ORBit2 |
||
audiofile |
not needed |
|
esound |
not needed |
|
gnome-mime-data |
not needed |
|
gnome-vfs |
||
libIDL |
not needed |
|
libart_lgpl |
not needed |
|
libbonobo |
||
libbonoboui |
||
libglade |
||
libgnome |
||
libgnomecanvas |
||
libgnomeui |
||
Admin |
||
not needed |
||
sabayon |
not needed |
|
Development Tools |
||
accerciser |
not needed |
|
anjuta |
||
devhelp |
done |
|
gdl |
||
glade3 |
||
gnome-devel-docs |
not needed |
|
Bindings (C++) |
||
glibmm |
||
pangomm |
not needed |
|
gtkmm |
||
libglademm |
not needed |
|
gconfmm |
||
libgnomecanvasmm |
not needed |
|
libgnome-vfsmm |
not needed |
|
libgnomemm |
not needed |
|
libgnomeuimm |
||
libxml++ |
not needed |
|
Bindings (java) |
||
glib-java (jg-common) |
||
libgtk-java |
not needed |
|
libgnome-java |
not needed |
|
libgconf-java |
not needed |
|
libglade-java |
not needed |
|
Bindings (mono) |
||
gtk-sharp |
to do |
|
Bindings (perl) |
||
Glib |
not needed |
|
Gtk2 |
not needed |
|
Gtk2-GladeXML |
not needed |
|
Gnome2-GConf |
not needed |
|
Gnome2-Canvas |
not needed |
|
Gnome2-VFS |
not needed |
|
Gnome2 |
not needed |
|
Bindings (python) |
||
pygobject |
||
pyorbit |
not needed |
|
GnomePython |
not needed |
|
Mobile |
||
GConf (dbus-based) |
not needed |
|
clutter-gst |
not needed |
|
External Dependencies |
||
avahi |
to do |
|
cairo |
to do |
|
cairomm |
to do |
|
clutter |
to do |
|
clutter-gtk |
done |
fixed in git master |
conduit |
to do |
|
dbus |
to do |
|
dbus-glib |
to do |
|
dbus-python |
to do |
|
desktop-file-utils |
to do |
|
DeviceKit-disks |
to do |
|
DeviceKit-power |
to do |
|
enchant |
to do |
|
expat |
to do |
|
farsight2 |
to do |
|
fontconfig |
to do |
|
gamin |
to do |
|
gmime |
to do |
|
gnutls |
to do |
|
gpgme |
to do |
|
gtk-vnc |
to do |
|
hal |
to do |
|
hicolor-icon-theme |
to do |
|
icon-naming-utils |
to do |
|
intltool |
to do |
|
iso-codes |
to do |
|
libatasmart |
to do |
|
libcanberra |
to do |
|
libchamplain |
to do |
|
libcolorblind |
to do |
|
libcroco |
to do |
|
libgda |
||
libgdata |
not needed |
|
libggz, ggz-client-libs |
to do |
|
libgpg-error |
to do |
|
libgcrypt |
to do |
|
libgsf |
to do |
|
libical |
to do |
|
libmapi |
to do |
|
libmusicbrainz |
to do |
|
libnotify |
||
liboil |
to do |
|
libproxy |
to do |
|
libtasn1 |
to do |
|
libunique |
||
libxklavier |
to do |
|
libxml2 |
not needed |
|
libxslt |
to do |
|
Mono.Addins |
to do |
|
mozilla (firefox) |
to do |
|
ndesk-dbus |
to do |
|
ndesk-dbus-glib |
to do |
|
nspr |
to do |
|
nss |
to do |
|
opal |
to do |
|
to do |
||
pkg-config |
to do |
|
polkit-gtk |
||
pulseaudio |
to do |
|
poppler |
||
pycairo |
to do |
|
ptlib |
to do |
|
Python |
to do |
|
rarian |
to do |
|
shared-mime-info |
to do |
|
sqlite |
to do |
|
startup-notification |
to do |
|
swfdec |
to do |
|
system-tools-backends |
to do |
|
telepathy-glib |
||
telepathy-mission-control |
||
tracker |
||
vala |
not needed |
|
Other |
||
atomix |
not needed |
|
balsa |
||
banshee |
||
not needed |
||
contact-lookup-applet |
||
eggcups |
eggcups has been replaced by system-config-printer |
|
fast-user-switch-applet |
||
f-spot |
done |
|
gnome-blog |
not needed |
|
gnome-build |
||
gnome-cups-manager |
||
gnome-main-menu |
||
GParted |
not needed |
|
GNOME Phone Manager |
||
gthumb |
||
leafpad |
||
libbtctl |
||
libgoffice |
||
libgsf |
||
modest |
||
nautilus-cd-burner |
||
nautilus-vcs |
to do |
|
nemiver |
||
not needed |
||
tinymail |
||