GNOME Goal: Remove deprecated GLib symbols
Summary
The goal is to remove the deprecated GLib symbols (functions, structs, macros, etc.) and replace them with something that fits better (usually a newer symbol). This has to be done for each GNOME module (application or library).
Guidelines for modules written in C/C++
For help on these symbols, just give a look at the list of the deprecated GLib symbols. This list is always up-to-date, as it's generated for each version of GLib.
Step 1: Detect if the module uses deprecated symbols
You don't need to compile the module for that. Just get its source code, a file that contains the deprecated symbols to look for, and use the egrep command to look for deprecated symbols in the module source code. For example, the following command uses a file that contains the name of the deprecated symbols, and looks for them in each source file:
egrep -n -R -f ~/glib-deprecated-symbols.txt path/to/the/module
Step 2: Compile the module
Compile the module without doing any modifications, just to make sure you're able to compile it without errors. You should be able to compile it alone.
Step 3: Compile the module with the deprecated symbols disabled
Compile the module again, but this time, define the G_DISABLE_DEPRECATED symbol, which will disable deprecated GLib symbols. There's more than one way to do it. You can for example use :
make CFLAGS+="-DG_DISABLE_DEPRECATED"
If you're using Jhbuild, you can make him use this setting by adding the following line to your .jhbuildrc (and putting the right module name)
module_makeargs['name-of-the-module'] = makeargs + 'CFLAGS+="-DG_DISABLE_DEPRECATED"'
Step 4: Replace the obsolete symbols by something that works and that is not deprecated
This is where most of the work takes place. There are several different deprecated symbols, so there's no single answer on how to do it. Sometimes the GLib documentation will give you the answer, sometimes you'll have to think by yourself.
Most of the work will consist in replacing g_strncasecmp and g_strcasecmp with the right string comparison function.
Comments before approval
Add your comments to this goal proposal here |
Status of this goal
Note: Updated automatical stats can be found at http://people.gnome.org/~fpeters/299.html
Tip: If you choose to work on a module, create the bug report on the GNOME bugzilla. This way people will know someone already works on it, and won't duplicate the work you're doing. Please make the bug report depend on the tracker bug for this goal. |
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 |
|
bug-buddy |
not needed |
|
not needed |
||
dasher |
not needed |
|
not needed |
||
eel |
not needed |
|
not needed |
||
not needed |
||
not needed |
||
not needed |
||
evolution-data-server |
Some deprecated symbols still used in dead code and comments |
|
not needed |
||
evolution-exchange |
not needed |
|
evolution-webcal |
not needed |
|
file-roller |
||
gcalctool |
not needed |
|
gconf-editor |
not needed |
|
not needed |
||
gnome-backgrounds |
not needed |
|
gnome-desktop |
not needed |
|
gnome-disk-utility |
||
not needed |
||
not needed |
||
gnome-icon-theme |
not needed |
|
gnome-keyring |
done |
|
gnome-netstatus |
||
gnome-nettool |
||
gnome-mag |
not needed |
|
NB: Deprecated symbols still exist in unmaintained gnome-cd and cddb-slave2 that are not built by default |
||
gnome-menus |
not needed |
|
not needed |
||
gnome-power-manager |
not needed |
|
gnome-python-desktop |
not needed |
|
not needed |
||
gnome-session |
not needed |
|
gnome-settings-daemon |
not needed |
|
gnome-system-monitor |
not needed |
|
not needed |
||
gnome-terminal |
not needed |
|
gnome-themes |
not needed |
|
gnome-user-docs |
not needed |
|
gnome-volume-manager |
not needed |
|
gst-plugins |
||
gtkhtml |
not needed |
|
done |
||
not needed |
||
gvfs |
not needed |
|
hamster |
not needed |
|
libgail-gnome |
not needed |
|
libgnomekbd |
not needed |
|
libgtop |
not needed |
|
libgweather |
not needed |
|
liboobs |
not needed |
|
librsvg |
||
done |
||
libwnck |
not needed |
|
metacity |
||
mousetweaks |
not needed |
|
not needed |
||
nautilus-cd-burner |
not needed |
|
orca |
not needed |
|
pygtksourceview |
not needed |
|
done |
||
not needed |
||
swfdec-gnome |
not needed |
|
tomboy |
not needed |
|
totem-pl-parser |
||
vinagre |
not needed |
|
vino |
||
vte |
done |
|
deprecated symbol used in dead files that have been deleted |
||
Desktop (to be deprecated) |
||
libgnomeprint |
not needed |
Will be deprecated, so it isn't worth the trouble |
libgnomeprintui |
not needed |
Will be deprecated, so it isn't worth the trouble |
Platform |
||
GConf |
||
at-spi |
||
atk |
not needed |
|
glib |
not needed |
|
gnome-mime-data |
not needed |
|
gnome-vfs |
not needed |
|
done |
||
gtk-doc |
not needed |
|
intltool |
not needed |
|
libglade |
||
libxml2 |
not needed |
|
libxslt |
not needed |
|
pango |
||
pkgconfig |
not needed |
|
Platform (to be deprecated) |
||
ORBit2 |
not needed |
|
audiofile |
not needed |
|
esound |
not needed |
|
libIDL |
not needed |
|
libart_lgpl |
not needed |
|
libbonobo |
not needed |
|
libbonoboui |
not needed |
|
libgnome |
not needed |
|
libgnomecanvas |
||
libgnomeui |
not needed |
|
Admin |
||
not needed |
||
sabayon |
not needed |
|
Development Tools |
||
accerciser |
not needed |
|
anjuta |
||
devhelp |
not needed |
|
gdl |
not needed |
|
glade3 |
||
gnome-build |
not needed |
|
gnome-devel-docs |
not needed |
|
Mobile |
||
gconf-dbus |
||
Bindings (C++) |
||
glibmm |
not needed |
|
gtkmm |
not needed |
|
libglademm |
not needed |
|
gconfmm |
not needed |
|
libgnomecanvasmm |
not needed |
|
libgnome-vfsmm |
to do |
|
libgnomemm |
not needed |
|
libgnomeuimm |
not needed |
|
libxml++ |
not needed |
|
Bindings (java) |
||
glib-java (jg-common) |
not needed |
|
libgtk-java |
not needed |
|
libgnome-java |
not needed |
|
libgconf-java |
not needed |
|
libglade-java |
not needed |
|
Bindings (perl) |
||
Glib |
to do |
|
Gtk2 |
to do |
|
Gtk2-GladeXML |
to do |
|
Gnome2-GConf |
to do |
|
Gnome2-Canvas |
to do |
|
Gnome2-VFS |
to do |
|
Gnome2 |
to do |
|
Bindings (python) |
||
pygobject |
not needed |
|
not needed |
||
GnomePython |
not needed |
|
External dependencies |
||
dbus-glib |
||
farsight2 |
||
hal |
||
libnice |
||
libnotify |
||
mono |
||
poppler |
||
Other |
||
abiword |
||
atomix |
not needed |
|
balsa |
||
banshee |
not needed |
|
not needed |
||
not needed |
||
not needed |
||
contact-lookup-applet |
not needed |
|
eggcups |
not needed |
|
f-spot |
not needed |
|
gegl |
||
gimp |
todo |
|
gnome-blog |
not needed |
|
not needed |
||
gnome-cups-manager |
not needed |
|
gnome-main-menu |
not needed |
|
not needed |
||
GParted |
not needed |
|
GNOME Phone Manager |
not needed |
|
gnome-pilot |
||
gnumeric |
||
gtetrinet |
not needed |
|
gthumb |
||
not needed |
||
inkscape |
||
libbtctl |
not needed |
|
libgda |
not needed |
|
libgnomekbd |
not needed |
|
modest |
||
nautilus-sendto |
not needed |
|
nautilus-vcs |
to do |
|
nemiver |
not needed |
|
not needed |
||
not needed |
||
swfdec |
||
tinymail |
||
tracker |
||
vala |
fixed in 0.7.10 |
|