Index: head/en_US.ISO8859-1/books/porters-handbook/special/chapter.xml
===================================================================
--- head/en_US.ISO8859-1/books/porters-handbook/special/chapter.xml
+++ head/en_US.ISO8859-1/books/porters-handbook/special/chapter.xml
@@ -1401,11 +1401,850 @@
Using GNOME
- The &os;/GNOME project uses its own set of variables to
- define which GNOME components a particular port uses. A comprehensive
- list of these variables exists within the
- &os;/GNOME project's homepage.
+
+ Introduction
+
+ This chapter explains the GNOME
+ framework as used by ports. The framework can be loosely
+ divided into the base components, GNOME
+ desktop components, and a few special macros that simplify the
+ work of port maintainers.
+
+ While developing a port or changing one, please set
+
+ DEVELOPER=yes
+
+
+ in the environment or in /etc/make.conf.
+ This causes the ports framework to enable additional
+ checks.
+
+
+
+ Using USE_GNOME
+
+ Adding this variable to the port allows the use of
+ the macros and components defined in
+ bsd.gnome.mk. The code in
+ bsd.gnome.mk adds the needed
+ build-time, run-time or library dependencies
+ or the handling of special files.
+ GNOME applications under &os; use the
+ USE_GNOME infrastructure. Include all the
+ needed components as a space-separated list. The
+ USE_GNOME components are divided into
+ these virtual lists: basic components, GNOME 3 components
+ and legacy components. If the port needs only GTK3 libraries,
+ this is the shortest way to define it:
+
+ USE_GNOME= gtk30
+
+ USE_GNOME components automatically
+ add the dependencies they need. Please see
+ for an exhaustive
+ list of all USE_GNOME components and which
+ other components they imply and their dependencies.
+
+ Here is an example Makefile for a
+ GNOME port that uses many of the techniques outlined in this
+ document. Please use it as a guide for creating new
+ ports.
+
+ # $FreeBSD$
+
+PORTNAME= regexxer
+PORTVERSION= 0.10
+CATEGORIES= devel textproc gnome
+MASTER_SITES= GNOME
+
+MAINTAINER= kwm@FreeBSD.org
+COMMENT= Interactive tool for performing search and replace operations
+
+USES= gettext gmake pathfix pkgconfig tar:xz
+GNU_CONFIGURE= yes
+USE_GNOME= gnomeprefix intlhack gtksourceviewmm3
+CPPFLAGS+= -I${LOCALBASE}/include
+LDFLAGS+= -L${LOCALBASE}/lib
+INSTALLS_ICONS= yes
+
+GLIB_SCHEMAS= org.regexxer.gschema.xml
+
+.include <bsd.port.mk>
+
+
+ The USE_GNOME macro without any
+ arguments does not add any dependencies to the port.
+ USE_GNOME cannot be set after
+ bsd.port.pre.mk.
+
+
+
+
+ Variables
+
+ This section explains which macros are available and how
+ they are used. Like they are used in the above example. The
+ has a more in-depth
+ explanation. USE_GNOME has to be set for
+ these macro's to be of use.
+
+
+
+ INSTALLS_ICONS
+
+
+ GTK+ ports which install
+ Freedesktop-style icons to
+ ${LOCALBASE}/share/icons should use
+ this macro to ensure that the icons are cached and will
+ display correctly. The cache file is named
+ icon-theme.cache. Do not include
+ that file in pkg-plist. This macro
+ handles that automatically. This macro is not needed
+ for Qt, which use a
+ internal method.
+
+
+
+
+ GLIB_SCHEMAS
+
+
+ List of all the glib schema files the port installs.
+ The macro will add the files to the port plist and
+ handle the registration of these files on install and
+ deinstall.
+
+ The glib schema files are written in
+ XML and end with the
+ gschema.xml extension. They are
+ installed in the
+ share/glib-2.0/schemas/ directory.
+ These schema files contain all application config values
+ with there default settings. The actual database used
+ by the applications is built by
+ glib-compile-schema, which is
+ run by the GLIB_SCHEMAS macro.
+
+ GLIB_SCHEMAS=foo.gschema.xml
+
+
+ Do not add glib schemas to the
+ pkg-plist. If they are listed in
+ pkg-plist, they will not be
+ registered and the applications might not work
+ properly.
+
+
+
+
+
+ GCONF_SCHEMAS
+
+
+ List all the gconf schema files. The macro will add
+ the schema files to the port plist and will handle their
+ registration on install and deinstall.
+
+ GConf is the XML-based database
+ that virtually all GNOME applications use for storing
+ their settings. These files are installed into the
+ etc/gconf/schemas directory. This
+ database is defined by installed schema files that are
+ used to generate %gconf.xml key
+ files. For each schema file installed by the port,
+ there be an entry in the
+ Makefile:
+
+ GCONF_SCHEMAS=my_app.schemas my_app2.schemas my_app3.schemas
+
+
+ Gconf schemas are listed in the
+ GCONF_SCHEMAS macro rather than
+ pkg-plist. If they are listed in
+ pkg-plist, they will not be
+ registered and the applications might not work
+ properly.
+
+
+
+
+
+ INSTALLS_OMF
+
+
+ Open Source Metadata Framework
+ (OMF) files are commonly used by
+ GNOME 2 applications. These files contain the
+ application help file information, and require special
+ processing by ScrollKeeper/rarian. To properly register
+ OMF files when installing GNOME
+ applications from packages, make sure that
+ omf files are listed in
+ pkg-plist and that the port
+ Makefile has
+ INSTALLS_OMF defined:
+
+ INSTALLS_OMF=yes
+
+ When set, bsd.gnome.mk
+ automatically scans pkg-plist and
+ adds appropriate @exec and
+ @unexec directives for each
+ .omf to track in the
+ OMF registration database.
+
+
+
+
+
+
+
+ GNOME Components
+
+ For further help with a GNOME port, look at some of the
+ existing
+ ports for examples. The
+ &os; GNOME
+ page has contact information if more help is
+ needed. The components are divided into GNOME components
+ that are currently in use and legacy components. If the
+ component supports argument, they are listed between
+ parenthesis in the description. The first is the default.
+ "Both" is shown if the component defaults to adding to both
+ build and run dependencies.
+
+
+ GNOME Components
+
+
+
+
+ Component
+ Associated program
+ Description
+
+
+
+
+
+ atk
+ accessibility/atk
+ Accessibility toolkit (ATK)
+
+
+
+ atkmm
+ accessibility/atkmm
+ c++ bindings for atk
+
+
+
+ cairo
+ graphics/cairo
+ Vector graphics library with cross-device output
+ support
+
+
+
+ cairomm
+ graphics/cairomm
+ c++ bindings for cairo
+
+
+
+ dconf
+ devel/dconf
+ Configuration database system
+ (both, build, run)
+
+
+
+ evolutiondataserver3
+ databases/evolution-data-server
+ Data backends for the Evolution integrated
+ mail/PIM suite
+
+
+
+ gdkpixbuf2
+ graphics/gdk-pixbuf2
+ Graphics library for GTK+
+
+
+
+ glib20
+ devel/glib20
+ GNOME core library
+ glib20
+
+
+
+ glibmm
+ devel/glibmm
+ c++ bindings for glib20
+
+
+
+ gnomecontrolcenter3
+ sysutils/gnome-control-center
+ GNOME 3 Control Center
+
+
+
+ gnomedesktop3
+ x11/gnome-desktop
+ GNOME 3 desktop UI library
+
+
+
+ gsound
+ audio/gsound
+ GObject library for playing system sounds
+ (both, build, run)
+
+
+
+ gtk-update-icon-cache
+ graphics/gtk-update-icon-cache
+ Gtk-update-icon-cache utility from the Gtk+
+ toolkit
+
+
+
+ gtk20
+ x11-toolkits/gtk20
+ Gtk+ 2 toolkit
+
+
+
+ gtk30
+ x11-toolkits/gtk30
+ Gtk+ 3 toolkit
+
+
+
+ gtkmm20
+ x11-toolkits/gtkmm20
+ c++ bindings 2.0 for the gtk20 toolkit
+
+
+
+ gtkmm24
+ x11-toolkits/gtkmm24
+ c++ bindings 2.4 for the gtk20 toolkit
+
+
+
+ gtkmm30
+ x11-toolkits/gtkmm30
+ c++ bindings 3.0 for the gtk30 toolkit
+
+
+
+ gtksourceview2
+ x11-toolkits/gtksourceview2
+ Widget that adds syntax highlighting to
+ GtkTextView
+
+
+
+ gtksourceview3
+ x11-toolkits/gtksourceview3
+ Text widget that adds syntax highlighting to
+ the GtkTextView widget
+
+
+
+ gtksourceviewmm3
+ x11-toolkits/gtksourceviewmm3
+ c++ bindings for the gtksourceview3 library
+
+
+
+ gvfs
+ devel/gvfs
+ GNOME virtual file system
+
+
+
+ intltool
+ textproc/intltool
+ Tool for internationalization (also see
+ intlhack)
+
+
+
+ introspection
+ devel/gobject-introspection
+ Basic introspection bindings and tools to
+ generate introspection bindings. Most of the time
+ :build is enough, :both/:run is only need for
+ applications that use introspection bindings.
+ (both, build, run)
+
+
+
+ libgda5
+ databases/libgda5
+ Provides uniform access to different kinds of
+ data sources
+
+
+
+ libgda5-ui
+ databases/libgda5-ui
+ UI library from the libgda5 library
+
+
+
+ libgdamm5
+ databases/libgdamm5
+ c++ bindings for the libgda5 library
+
+
+
+ libgsf
+ devel/libgsf
+ Extensible I/O abstraction for dealing with
+ structured file formats
+
+
+
+ librsvg2
+ graphics/librsvg2
+ Library for parsing and rendering SVG
+ vector-graphic files
+
+
+
+ libsigc++20
+ devel/libsigc++20
+ Callback Framework for C++
+
+
+
+ libxml++26
+ textproc/libxml++26
+ c++ bindings for the libxml2 library
+
+
+
+ libxml2
+ textproc/libxml2
+ XML parser library (both, build, run)
+
+
+
+ libxslt
+ textproc/libxslt
+ XSLT C library (both, build, run)
+
+
+
+ metacity
+ x11-wm/metacity
+ Window manager from GNOME
+
+
+
+ nautilus3
+ x11-fm/nautilus
+ GNOME file manager
+
+
+
+ pango
+ x11-toolkits/pango
+ Open-source framework for the layout and
+ rendering of i18n text
+
+
+
+ pangomm
+ x11-toolkits/pangomm
+ c++ bindings for the pango library
+
+
+
+ py3gobject3
+ devel/py3-gobject3
+ Python 3, GObject 3.0 bindings
+
+
+
+ pygobject3
+ devel/py-gobject3
+ Python 2, GObject 3.0 bindings
+
+
+
+ vte3
+ x11-toolkits/vte3
+ Terminal widget with improved accessibility and
+ I18N support
+
+
+
+
+
+
+ GNOME Macro Components
+
+
+
+
+ Component
+ Description
+
+
+
+
+
+ gnomeprefix
+ Supply configure with
+ some default locations.
+
+
+
+ intlhack
+ Same as intltool, but patches to make sure
+ share/locale/ is used. Please
+ only use when intltool alone is
+ not enough.
+
+
+
+ referencehack
+ This macro is there to help splitting of the API or
+ reference documentation into its own port.
+
+
+
+
+
+
+ GNOME Legacy Components
+
+
+
+
+ Component
+ Associated program
+ Description
+
+
+
+
+
+ atspi
+ accessibility/at-spi
+ Assistive Technology Service Provider
+ Interface
+
+
+
+ esound
+ audio/esound
+ Enlightenment sound package
+
+
+
+ gal2
+ x11-toolkits/gal2
+ Collection of widgets taken from GNOME 2
+ gnumeric
+
+
+
+ gconf2
+ devel/gconf2
+ Configuration database system for GNOME 2
+
+
+
+ gconfmm26
+ devel/gconfmm26
+ c++ bindings for gconf2
+
+
+
+ gdkpixbuf
+ graphics/gdk-pixbuf
+ Graphics library for GTK+
+
+
+
+ glib12
+ devel/glib12
+ glib 1.2 core library
+
+
+
+ gnomedocutils
+ textproc/gnome-doc-utils
+ GNOME doc utils
+
+
+
+ gnomemimedata
+ misc/gnome-mime-data
+ MIME and Application database for GNOME 2
+
+
+
+ gnomesharp20
+ x11-toolkits/gnome-sharp20
+ GNOME 2 interfaces for the .NET runtime
+
+
+
+ gnomespeech
+ accessibility/gnome-speech
+ GNOME 2 text-to-speech API
+
+
+
+ gnomevfs2
+ devel/gnome-vfs
+ GNOME 2 Virtual File System
+
+
+
+ gtk12
+ x11-toolkits/gtk12
+ Gtk+ 1.2 toolkit
+
+
+
+ gtkhtml3
+ www/gtkhtml3
+ Lightweight HTML rendering/printing/editing
+ engine
+
+
+
+ gtkhtml4
+ www/gtkhtml4
+ Lightweight HTML rendering/printing/editing
+ engine
+
+
+
+ gtksharp20
+ x11-toolkits/gtk-sharp20
+ GTK+ and GNOME 2 interfaces for the .NET
+ runtime
+
+
+
+ gtksourceview
+ x11-toolkits/gtksourceview
+ Widget that adds syntax highlighting to
+ GtkTextView
+
+
+
+ libartgpl2
+ graphics/libart_lgpl
+ Library for high-performance 2D graphics
+
+
+
+ libbonobo
+ devel/libbonobo
+ Component and compound document system for
+ GNOME 2
+
+
+
+ libbonoboui
+ x11-toolkits/libbonoboui
+ GUI frontend to the libbonobo component of
+ GNOME 2
+
+
+
+ libgda4
+ databases/libgda4
+ Provides uniform access to different kinds of
+ data sources
+
+
+
+ libglade2
+ devel/libglade2
+ GNOME 2 glade library
+
+
+
+ libgnome
+ x11/libgnome
+ Libraries for GNOME 2, a GNU desktop
+ environment
+
+
+
+ libgnomecanvas
+ graphics/libgnomecanvas
+ Graphics library for GNOME 2
+
+
+
+ libgnomekbd
+ x11/libgnomekbd
+ GNOME 2 keyboard shared library
+
+
+
+ libgnomeprint
+ print/libgnomeprint
+ Gnome 2 print support library
+
+
+
+ libgnomeprintui
+ x11-toolkits/libgnomeprintui
+ Gnome 2 print support library
+
+
+
+ libgnomeui
+ x11-toolkits/libgnomeui
+ Libraries for the GNOME 2 GUI, a GNU desktop
+ environment
+
+
+
+ libgtkhtml
+ www/libgtkhtml
+ Lightweight HTML rendering/printing/editing
+ engine
+
+
+
+ libgtksourceviewmm
+ x11-toolkits/libgtksourceviewmm
+ c++ binding of GtkSourceView
+
+
+
+ libidl
+ devel/libIDL
+ Library for creating trees of CORBA IDL
+ file
+
+
+
+ libsigc++12
+ devel/libsigc++12
+ Callback Framework for C++
+
+
+
+ libwnck
+ x11-toolkits/libwnck
+ Library used for writing pagers and
+ taskslists
+
+
+
+ libwnck3
+ x11-toolkits/libwnck3
+ Library used for writing pagers and
+ taskslists
+
+
+
+ orbit2
+ devel/ORBit2
+ High-performance CORBA ORB with support for the
+ C language
+
+
+
+ pygnome2
+ x11-toolkits/py-gnome2
+ Python bindings for GNOME 2
+
+
+
+ pygobject
+ devel/py-gobject
+ Python 2, GObject 2.0 bindings
+
+
+
+ pygtk2
+ x11-toolkits/py-gtk2
+ Set of Python bindings for GTK+
+
+
+
+ pygtksourceview
+ x11-toolkits/py-gtksourceview
+ Python bindings for GtkSourceView 2
+
+
+
+ vte
+ x11-toolkits/vte
+ Terminal widget with improved accessibility and
+ I18N support
+
+
+
+
+
+
+ Deprecated Components: Do Not Use
+
+
+
+
+ Component
+ Description
+
+
+
+
+
+ HAVE_GNOME
+ Deprecated, do not use. Was used to check if a
+ component was installed. This was used for ports
+ that did not have
+ --enable/--disable
+ switches for their configure script. But the building
+ of parts of a port without a implicit request is
+ discouraged.
+
+
+
+ WANT_GNOME
+ Deprecated, do not use. Was used by ports that
+ needed USE_GNOME for optional
+ dependencies, which where defined after
+ bsd.port.pre.mk. Since
+ USE_GNOME can be used after the
+ inclusion of bsd.port.options.mk,
+ there is little need for this macro any more.
+
+
+
+ pangox-compat
+ pangox-compat has been
+ deprecated and split off from the
+ pango package.
+
+
+
+
+