Update GNOME documentation to cover the newest FreeBSD GNOME

architecture.

Added here are 2 new pages containing component macros for GNOME1 and
for GNOME2. Additionally, all references to USE_GNOMENG have been removed,
some new sections have been added, and some sections have been reordered.
This commit is contained in:
Adam Weinberger 2003-04-20 22:49:27 +00:00
parent 40dc96dbec
commit 2d98881813
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/www/; revision=16645
3 changed files with 649 additions and 213 deletions

View file

@ -0,0 +1,316 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" [
<!ENTITY base CDATA "../..">
<!ENTITY date "$FreeBSD: www/en/gnome/docs/porting.sgml,v 1.27 2003/01/28 06:55:10 marcus Exp $">
<!ENTITY title "FreeBSD GNOME Project: GNOME 2 Components">
<!ENTITY % gnomeincludes SYSTEM "../includes.sgml"> %gnomeincludes;
<!ENTITY % includes SYSTEM "../../includes.sgml"> %includes;
]>
<html>
&header;
<table border="0">
<tr>
<td>
<!-- Begin USE_GNOME components list -->
<table border="1">
<tr>
<th>COMPONENT</th>
<th>ASSOCIATED PROGRAM</th>
<th>IMPLIED COMPONENTS</th>
</tr>
<tr>
<td><tt>atk</tt></td>
<td><tt>devel/atk</tt></td>
<td><tt>glib20</tt></td>
</tr>
<tr>
<td><tt>atspi</tt></td>
<td><tt>x11-toolkits/at-spi</tt></td>
<td><tt>gail libbonobo</tt></td>
</tr>
<tr>
<td><tt>bonoboactivation</tt></td>
<td><tt>devel/bonoboactivation</tt></td>
<td><tt>libxml2 orbit2</tt></td>
</tr>
<tr>
<td><tt>eel2</tt></td>
<td><tt>x11-toolkits/eel2</tt></td>
<td><tt>gnomevfs2 libgnomeui gail</tt></td>
</tr>
<tr>
<td><tt>esound</tt></td>
<td><tt>audio/esound</tt></td>
<td><tt></tt></td>
</tr>
<tr>
<td><tt>gail</tt></td>
<td><tt>x11-toolkits/gail</tt></td>
<td><tt>libgnomecanvas</tt></td>
</tr>
<tr>
<td><tt>gal2</tt></td>
<td><tt>x11-toolkits/gal2</tt></td>
<td><tt>gnomeui libgnomeprintui</tt></td>
</tr>
<tr>
<td><tt>gconf2</tt></td>
<td><tt>devel/gconf2</tt></td>
<td><tt>orbit2 libxml2 gtk20</tt></td>
</tr>
<tr>
<td><tt>glib20</tt></td>
<td><tt>devel/glib20</tt></td>
<td><tt>gnometarget</tt></td>
</tr>
<tr>
<td><tt>gnomeaudio</tt></td>
<td><tt>audio/gnomeaudio</tt></td>
<td><tt></tt></td>
</tr>
<tr>
<td><tt>gnomecontrolcenter2</tt></td>
<td><tt>sysutils/gnomecontrolcenter2</tt></td>
<td><tt>gnomedesktop metacity</tt></td>
</tr>
<tr>
<td><tt>gnomedesktop</tt></td>
<td><tt>x11/gnomedesktop</tt></td>
<td><tt>libgnomeui</tt></td>
</tr>
<tr>
<td><tt>gnomehack</tt></td>
<td colspan="2"><tt>gnomehack</tt> makes common GNOME
Makefile substitutions that nearly every GNOME port
requires to fit into the proper mtree structure. <b>Note</b>:
Including this option adds a <tt>pre-patch</tt> target to
your Makefile. Therefore, only explicitly define
<tt>post-patch</tt>.
</td>
</tr>
<tr>
<td><tt>gnomehier</tt></td>
<td colspan="2"><tt>gnomehier</tt> installs all the
directories needed for both the GNOME 1 and 2 desktops.
Only include this option if your port calls <tt>@dirrm</tt>
on one of the directories listed in the plist for
<tt>gnomehier</tt>.
</td>
</tr>
<tr>
<td><tt>gnomepanel</tt></td>
<td><tt>x11/gnomepanel</tt></td>
<td><tt>libwnck gnomedesktop</tt></td>
</tr>
<tr>
<td><tt>gnomeprefix</tt></td>
<td colspan="2"><tt>gnomeprefix</tt> sets some CONFIGURE_ARGS
to ensure data is placed properly within the GNOME hierarchy.
</td>
</tr>
<tr>
<td><tt>gnometarget</tt></td>
<td colspan="2"><tt>gnometarget</tt> sets
<tt>CONFIGURE_TARGET</tt> to
<tt>--build=${MACHINE_ARCH}-portbld-freebsd${OSREL}</tt>.
</td>
</tr>
<tr>
<td><tt>gnomevfs2</tt></td>
<td><tt>devel/gnomevfs2</tt></td>
<td><tt>gconf2 libbonobo gnomemimedata</tt></td>
</tr>
<tr>
<td><tt>gtk20</tt></td>
<td><tt>x11-toolkits/gtk20</tt></td>
<td><tt>atk pango</tt></td>
</tr>
<tr>
<td><tt>libartlgpl2</tt></td>
<td><tt>graphics/libartlgpl2</tt></td>
<td><tt></tt></td>
</tr>
<tr>
<td><tt>libbonobo</tt></td>
<td><tt>devel/libbonobo</tt></td>
<td><tt>bonoboactivation</tt></td>
</tr>
<tr>
<td><tt>libbonoboui</tt></td>
<td><tt>x11-toolkits/libbonoboui</tt></td>
<td><tt>libgnomecanvas libgnome</tt></td>
</tr>
<tr>
<td><tt>libgailgnome</tt></td>
<td><tt>x11-toolkits/libgail-gnome</tt></td>
<td><tt>libgnomeui atspi</tt></td>
</tr>
<tr>
<td><tt>libgda2</tt></td>
<td><tt>databases/libgda2</tt></td>
<td><tt>glib20 libxslt</tt></td>
</tr>
<tr>
<td><tt>libghttp</tt></td>
<td><tt>www/libghttp</tt></td>
<td><tt></tt></td>
</tr>
<tr>
<td><tt>libglade2</tt></td>
<td><tt>devel/libglade2</tt></td>
<td><tt>libxml2 gtk20</tt></td>
</tr>
<tr>
<td><tt>libgnome</tt></td>
<td><tt>x11/libgnome</tt></td>
<td><tt>libxslt gnomevfs2 esound</tt></td>
</tr>
<tr>
<td><tt>libgnomeui</tt></td>
<td><tt>x11-toolkits/libgnomeui</tt></td>
<td><tt>libbonoboui</tt></td>
</tr>
<tr>
<td><tt>libgnomecanvas</tt></td>
<td><tt>graphics/libgnomecanvas</tt></td>
<td><tt>libglade2 libartlgpl2</tt></td>
</tr>
<tr>
<td><tt>libgnomedb</tt></td>
<td><tt>databases/libgnomedb</tt></td>
<td><tt>libgnomeui libgda2</tt></td>
</tr>
<tr>
<td><tt>libgnomeprint</tt></td>
<td><tt>print/libgnomeprint</tt></td>
<td><tt>libbonobo libartlgpl2 gtk20</tt></td>
</tr>
<tr>
<td><tt>libgnomeprintui</tt></td>
<td><tt>x11-toolkits/libgnomeprintui</tt></td>
<td><tt>libgnomeprint libgnomecanvas</tt></td>
</tr>
<tr>
<td><tt>libgtkhtml</tt></td>
<td><tt>www/libgtkhtml</tt></td>
<td><tt>libxslt gnomevfs2 gail</tt></td>
</tr>
<tr>
<td><tt>libidl</tt></td>
<td><tt>devel/libIDL</tt></td>
<td><tt>glib20</tt></td>
</tr>
<tr>
<td><tt>libwnck</tt></td>
<td><tt>x11-toolkits/libwnck</tt></td>
<td><tt>gtk20</tt></td>
</tr>
<tr>
<td><tt>librsvg2</tt></td>
<td><tt>graphics/librsvg2</tt></td>
<td><tt>gtk20</tt></td>
</tr>
<tr>
<td><tt>libxml2</tt></td>
<td><tt>textproc/libxml2</tt></td>
<td><tt></tt></td>
</tr>
<tr>
<td><tt>libxslt</tt></td>
<td><tt>textproc/libxslt</tt></td>
<td><tt>libxml2</tt></td>
</tr>
<tr>
<td><tt>libzvt</tt></td>
<td><tt>x11-toolkits/libzvt</tt></td>
<td><tt>gtk20</tt></td>
</tr>
<tr>
<td><tt>linc</tt></td>
<td><tt>net/linc</tt></td>
<td><tt>glib20</tt></td>
</tr>
<tr>
<td><tt>nautilus2</tt></td>
<td><tt>x11-fm/nautilus</tt></td>
<td><tt>librsvg2 eel2 gnomedesktop gnomecontrolcenter</tt></td>
</tr>
<tr>
<td><tt>metacity</tt></td>
<td><tt>x11-wm/metacity</tt></td>
<td><tt>gconf2 glade2</tt></td>
</tr>
<tr>
<td><tt>orbit2</tt></td>
<td><tt>devel/ORBit2</tt></td>
<td><tt>libidl linc</tt></td>
</tr>
<tr>
<td><tt>pango</tt></td>
<td><tt>x11-toolkits/pango</tt></td>
<td><tt>glib20</tt></td>
</tr>
<tr>
<td><tt>vte</tt></td>
<td><tt>x11-toolkits/vte</tt></td>
<td><tt>gtk20</tt></td>
</tr>
</table>
<!-- End GNOME-related Makefile macros -->
<p>If you still need help with your port, have a look at some of
the <a href="/ports/gnome.html">existing ports</a> for examples.
The <a href="mailto:&email;@FreeBSD.org">freebsd-gnome mailing
list</a> is also there for you.</p>
</td>
</tr>
</table>
&footer;
</body>
</html>

View file

@ -0,0 +1,200 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" [
<!ENTITY base CDATA "../..">
<!ENTITY date "$FreeBSD: www/en/gnome/docs/porting.sgml,v 1.27 2003/01/28 06:55:10 marcus Exp $">
<!ENTITY title "FreeBSD GNOME Project: GNOME 1 Components">
<!ENTITY % gnomeincludes SYSTEM "../includes.sgml"> %gnomeincludes;
<!ENTITY % includes SYSTEM "../../includes.sgml"> %includes;
]>
<html>
&header;
<table border="0">
<tr>
<td>
<!-- Begin USE_GNOME components list -->
<table border="1">
<tr>
<th>COMPONENT</th>
<th>ASSOCIATED PROGRAM</th>
<th>IMPLIED COMPONENTS</th>
</tr>
<tr>
<td><tt>bonobo</tt></td>
<td><tt>devel/bonobo</tt></td>
<td><tt>oaf gnomeprint</tt></td>
</tr>
<tr>
<td><tt>esound</tt></td>
<td><tt>audio/esound</tt></td>
<td><tt></tt></td>
</tr>
<tr>
<td><tt>gal</tt></td>
<td><tt>x11-toolkits/gal</tt></td>
<td><tt>libglade</tt></td>
</tr>
<tr>
<td><tt>gconf</tt></td>
<td><tt>devel/gconf</tt></td>
<td><tt>oaf</tt></td>
</tr>
<tr>
<td><tt>gdkpixbuf</tt></td>
<td><tt>graphics/gdk-pixbuf</tt></td>
<td><tt>gtk12</tt></td>
</tr>
<tr>
<td><tt>glib12</tt></td>
<td><tt>devel/glib12</tt></td>
<td><tt></tt></td>
</tr>
<tr>
<td><tt>glibwww</tt></td>
<td><tt>www/glibwww</tt></td>
<td><tt>gnomelibs</tt></td>
</tr>
<tr>
<td><tt>gnomecanvas</tt></td>
<td><tt>graphics/gnomecanvas</tt></td>
<td><tt>gnomelibs gdkpixbuf</tt></td>
</tr>
<tr>
<td><tt>gnomedb</tt></td>
<td><tt>databases/gnomedb</tt></td>
<td><tt>libgda</tt></td>
</tr>
<tr>
<td><tt>gnomehack</tt></td>
<td colspan="2"><tt>gnomehack</tt> makes common GNOME
Makefile substitutions that nearly every GNOME port
requires to fit into the proper mtree structure. <b>Note</b>:
Including this option adds a <tt>pre-patch</tt> target to
your Makefile. Therefore, only explicitly define
<tt>post-patch</tt>.
</td>
</tr>
<tr>
<td><tt>gnomehier</tt></td>
<td colspan="2"><tt>gnomehier</tt> installs all the
directories needed for both the GNOME 1 and 2 desktops.
Only include this option if your port calls <tt>@dirrm</tt>
on one of the directories listed in the plist for
<tt>gnomehier</tt>.
</td>
</tr>
<tr>
<td><tt>gnomelibs</tt></td>
<td><tt>x11/gnomelibs</tt></td>
<td><tt>esound imlib libxml orbit</tt></td>
</tr>
<tr>
<td><tt>gnomemimedata</tt></td>
<td><tt>misc/gnomemimedata</tt></td>
<td><tt>gnomehier</tt></td>
</tr>
<tr>
<td><tt>gnomeprefix</tt></td>
<td colspan="2"><tt>gnomeprefix</tt> sets some CONFIGURE_ARGS
to ensure data is placed properly within the GNOME hierarchy.
</td>
</tr>
<tr>
<td><tt>gnomeprint</tt></td>
<td><tt>print/gnomeprint</tt></td>
<td><tt>gnomelibs gnomecanvas</tt></td>
</tr>
<tr>
<td><tt>gnomevfs</tt></td>
<td><tt>devel/gnomevfs</tt></td>
<td><tt>gnomemimedata gconf gnomelibs</tt></td>
</tr>
<tr>
<td><tt>gtk12</tt></td>
<td><tt>x11-toolkits/gtk12</tt></td>
<td><tt>glib12</tt></td>
</tr>
<tr>
<td><tt>gtkhtml</tt></td>
<td><tt>www/gtkhtml</tt></td>
<td><tt>glibwww gal libghttp libcapplet</tt></td>
</tr>
<tr>
<td><tt>imlib</tt></td>
<td><tt>graphics/imlib</tt></td>
<td><tt>gtk12</tt></td>
</tr>
<tr>
<td><tt>libcapplet</tt></td>
<td><tt>x11/libcapplet</tt></td>
<td><tt>gnomelibs</tt></td>
</tr>
<tr>
<td><tt>libgda</tt></td>
<td><tt>databases/libgda</tt></td>
<td><tt>gconf bonobo</tt></td>
</tr>
<tr>
<td><tt>libglade</tt></td>
<td><tt>devel/libglade</tt></td>
<td><tt>gnomedb</tt></td>
</tr>
<tr>
<td><tt>libpanel</tt></td>
<td><tt>x11/libpanel</tt></td>
<td><tt>gnomelibs</tt></td>
</tr>
<tr>
<td><tt>libxml</tt></td>
<td><tt>textproc/libxml</tt></td>
<td><tt>glib12</tt></td>
</tr>
<tr>
<td><tt>oaf</tt></td>
<td><tt>devel/oaf</tt></td>
<td><tt>orbit libxml</tt></td>
</tr>
<tr>
<td><tt>orbit</tt></td>
<td><tt>devel/ORBit</tt></td>
<td><tt>glib12</tt></td>
</tr>
</table>
<!-- End GNOME-related Makefile macros -->
<p>If you still need help with your port, have a look at some of
the <a href="/ports/gnome.html">existing ports</a> for examples.
The <a href="mailto:&email;@FreeBSD.org">freebsd-gnome mailing
list</a> is also there for you.</p>
</td>
</tr>
</table>
&footer;
</body>
</html>

View file

@ -1,6 +1,6 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" [
<!ENTITY base CDATA "../..">
<!ENTITY date "$FreeBSD: www/en/gnome/docs/porting.sgml,v 1.26 2003/01/28 06:49:26 marcus Exp $">
<!ENTITY date "$FreeBSD: www/en/gnome/docs/porting.sgml,v 1.27 2003/01/28 06:55:10 marcus Exp $">
<!ENTITY title "FreeBSD GNOME Project: How To Make a Port">
<!ENTITY % gnomeincludes SYSTEM "../includes.sgml"> %gnomeincludes;
<!ENTITY % includes SYSTEM "../../includes.sgml"> %includes;
@ -10,193 +10,136 @@
<table border="0">
<tr>
<td>
<p>This document assumes that you already know how port system works,
<p>This document assumes that you already know how the port system works,
and therefore only provides GNOME-specific hints and tips. General
instructions can be found in the
<a href="http://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/index.html">FreeBSD Porter's Handbook</a>.
</p>
<h2>GNOME Makefile Macros</h2>
<p>Recently, the GNOME porting infrastructure underwent some
changes so that GNOME 1 applications can coexist with the GNOME
2 desktop and vice versa. This new infrastructure is called
<b>GNOMENG</b>. The GNOME team is working to port
applications using the old infrastructure over to GNOMENG.
Nearly every GNOME 1 port has been converted.</p>
<p>The majority of this section applies to GNOME 1 ports.
GNOME 2 ports still have not been fully brought under GNOMENG.
For those ports, simply listing out the <tt>BUILD_</tt>,
<tt>RUN_</tt>, and <tt>LIB_</tt> <tt>DEPENDS</tt> is sufficient
for the time being. GNOME 2 ports can still benefit from certain
GNOMENG options, such as <tt>gnomehack</tt>, <tt>gnomeprefix</tt>,
and <tt>gnomehier</tt>.</p>
<p>In GNOMENG, the list of GNOME components your port requires
is added to your port's Makefile:</p>
<p>GNOME applications under FreeBSD use the <b>USE_GNOME</b>
infrastructure. To specify which components of the GNOME
system your port needs in order to build, simply list them
all as a space-separated list. For example:</p>
<pre>
USE_X_PREFIX= yes
USE_GNOMENG= yes
USE_GNOME= &lt;list of GNOME components&gt;
USE_GNOME= gnomeprefix gnomehack libgnomeui
</pre>
<p>The list of GNOME components consists of one or more of
the following, each separated by a single space:</p>
<!-- Begin GNOMENG components list -->
<p>The <b>USE_GNOME</b> components are divided into the following two lists:</p>
<ul>
<li><p><tt>gnomehack</tt> : This is a collection of common
GNOME Makefile substitutions that is almost required for
every GNOME port to fit into the proper mtree structure.
For a specific list, please refer to
<tt>${PORTSDIR}/Mk/bsd.gnomeng.mk</tt>. <b>Note:</b>
Including this option adds a <tt>pre-patch</tt> target to
your Makefile. Therefore, if you already have a
<tt>pre-patch</tt> target in your Makefile, you must
change it to <tt>post-patch</tt>.</p></li>
<li><p><a href="gnome2_porting.html">GNOME 2 components</a></p></li>
<li><p><a href="gnome_porting.html">GNOME 1 components</a></p></li>
</ul>
<li><p><tt>gnomeprefix</tt> : This is a collection of
<tt>CONFIGURE_ARGS</tt> needed for every GNOME port that
has to have its data placed under the GNOME hierarchy. It
also includes some useful arguments that allow GNOME ports
to build in the presence of gtk-doc, and maintain
<tt>PREFIX</tt> safety.</p></li>
<li><p><tt>gnomehier</tt> : This adds a dependency on
<tt>misc/gnomehier</tt>. <tt>gnomehier</tt> installs all the
directories needed for both the GNOME 1 and 2 desktops. Only
include this option if your port calls <tt>@dirrm</tt> on
one of the directories listed in the plist for
<tt>gnomehier</tt>.</p></li>
<li><p><tt>gnomeaudio</tt> : This adds a dependency on
<tt>audio/gnomeaudio</tt>.</p></li>
<li><p><tt>esound</tt> : This adds a dependency on
<tt>audio/esound</tt> (replaces <tt>USE_ESOUND</tt>).</p></li>
<li><p><tt>libghttp</tt> : This adds a dependency on
<tt>www/libghttp</tt>.</p></li>
<li><p><tt>glib12</tt> : This adds a dependency on
<tt>devel/glib12</tt> (replaces <tt>USE_GLIB</tt>).</p></li>
<li><p><tt>gtk12</tt> : This adds a dependency on
<tt>x11-toolkits/gtk12</tt> (replaces <tt>USE_GTK</tt>).<br>
<i>Implies</i>: <tt>glib12</tt></p></li>
<li><p><tt>libxml</tt> : This adds a dependency on
<tt>textproc/libxml</tt>.<br>
<i>Implies</i>: <tt>glib12</tt></p></li>
<li><p><tt>gdkpixbuf</tt> : This adds a dependency on
<tt>graphics/gdk-pixbuf</tt>.<br>
<i>Implies</i>: <tt>gtk12</tt></p></li>
<li><p><tt>imlib</tt> : This adds a dependency on
<tt>graphics/imlib</tt> (replaces <tt>USE_IMLIB</tt>).<br>
<i>Implies</i>: <tt>gtk12</tt></p></li>
<li><p><tt>orbit</tt> : This adds a dependency on
<tt>devel/ORBit</tt>.<br>
<i>Implies</i>: <tt>glib12</tt></p></li>
<li><p><tt>gnomelibs</tt> : This adds a dependency on
<tt>x11/gnomelibs</tt> (replaces <tt>USE_GNOMELIBS</tt>).<br>
<i>Implies</i>: <tt>esound</tt> <tt>imlib</tt> <tt>libxml</tt>
<tt>orbit</tt></p></li>
<li><p><tt>gnomecanvas</tt> : This adds a dependency on
<tt>graphics/gnomecanvas</tt>.<br>
<i>Implies</i>: <tt>gnomelibs</tt> <tt>gdkpixbuf</tt></p></li>
<li><p><tt>oaf</tt> : This adds a dependency on
<tt>devel/oaf</tt>.<br>
<i>Implies</i>: <tt>orbit</tt> <tt>libxml</tt></p></li>
<li><p><tt>gnomemimedata</tt> : This adds a dependency on
<tt>misc/gnomemimedata</tt>.<br>
<i>Implies</i>: <tt>gnomehier</tt></p></li>
<li><p><tt>gconf</tt> : This adds a dependency on
<tt>devel/gconf</tt>.<br>
<i>Implies</i>: <tt>oaf</tt></p></li>
<li><p><tt>gnomevfs</tt> : This adds a dependency on
<tt>devel/gnomevfs</tt>.<br>
<i>Implies</i>: <tt>gnomemimedata</tt> <tt>gconf</tt>
<tt>gnomelibs</tt></p></li>
<li><p><tt>libcapplet</tt> : This adds a dependency on
<tt>x11/libcapplet</tt> (replaces <tt>USE_GNOMECTRL</tt>).
If your port installs a configuration applet (or capplet),
you must include this option.<br>
<i>Implies</i>: <tt>gnomelibs</tt></p></li>
<li><p><tt>gnomeprint</tt> : This adds a dependency on
<tt>print/gnomeprint</tt>.<br>
<i>Implies</i>: <tt>gnomelibs</tt> <tt>gnomecanvas</tt></p></li>
<li><p><tt>bonobo</tt> : This adds a dependency on
<tt>devel/bonobo</tt>.<br>
<i>Implies</i>: <tt>oaf</tt> <tt>gnomeprint</tt></p></li>
<li><p><tt>libgda</tt> : This adds a dependency on
<tt>databases/libgda</tt>.<br>
<i>Implies</i>: <tt>gconf</tt> <tt>bonobo</tt></p></li>
<li><p><tt>gnomedb</tt> : This adds a dependency on
<tt>databases/gnomedb</tt>.<br>
<i>Implies</i>: <tt>libgda</tt></p></li>
<li><p><tt>libglade</tt> : This adds a dependency on
<tt>devel/libglade</tt>.<br>
<i>Implies</i>: <tt>gnomedb</tt></p></li>
<li><p><tt>gal</tt> : This adds a dependency on
<tt>x11-toolkits/gal</tt>.<br>
<i>Implies</i>: <tt>libglade</tt></p></li>
<li><p><tt>glibwww</tt> : This adds a dependency on
<tt>www/glibwww</tt>.<br>
<i>Implies</i>: <tt>gnomelibs</tt></p></li>
<li><p><tt>gtkhtml</tt> : This adds a dependency on
<tt>www/gtkhtml</tt>.<br>
<i>Implies</i>: <tt>glibwww</tt> <tt>gal</tt> <tt>libghttp</tt>
<tt>libcapplet</tt></p></li>
<li><p><tt>libpanel</tt> : This adds a dependency on
<tt>x11/libpanel</tt>. Use this if your port installs
an applet that can be placed in the GNOME 1 panel. <b>Note:</b>
even though you can build GNOME 1 applets in a
GNOME 2 desktop environment, they will <b>not</b> work
with the GNOME 2 panel.<br>
<i>Implies</i>: <tt>gnomelibs</tt></p></li>
</ul>
<p>Let us take an example:</p>
<!-- I'm not sold on the utility of this section -->
<p>If your port needs only <b>GTK2</b> libraries, the following is
the shortest way to define this:</p>
<pre>
USE_X_PREFIX= yes
USE_GNOMENG= yes
USE_GNOME= gnomeprefix gnomehack gnomelibs bonobo libglade gal
USE_GNOME= gtk20
</pre>
<p>If your port needs only <b>GTK1</b> libraries, the following is
the shortest way to define this:</p>
<pre>
USE_X_PREFIX= yes
USE_GNOME= gtk12
</pre>
<p>Even if your application needs only the GTK libraries, other
<b>USE_GNOME</b> components may be useful. Please scan the entire
list to make sure your port uses all relevant components.</p>
<!-- end questionable section -->
<p>Many GNOME applications need the following to compile
properly and to look for components in the proper
locations:</p>
<pre>
post-patch:
@${REINPLACE_CMD} -e 's|-lpthread|${PTHREAD_LIBS}|g ; \
s|DATADIRNAME=lib|DATADIRNAME=share|g' ${WRKSRC}/configure
</pre>
<p>This port makes use of the new GNOMENG infrastructure. It
installs into the GNOME mtree, and uses the <tt>gnomehack</tt> to
remove some common Makefile Linuxisms. Since it uses <tt>gnomehack</tt>,
the <tt>pre-install</tt> target has been changed to a
<tt>post-install</tt> target. If this is not done, then the
<tt>pre-install</tt> target from <tt>gnomehack</tt> will be overwritten.
The port also requires gnomelibs, bonobo, libglade, and gal.
</p>
<p>Once you have finished with your port, it is a good idea to
verify that your port depends on the correct list of components.
To see a list of what packages your port will actually require,
use the command <tt>make package-depends</tt> from within
your port's directory.</p>
<p>To aid in creating the list of necessary components,
it can be helpful to examine the output of <tt>make configure</tt>.
At the end of the <tt>checking for...</tt> list, there will be a line
similar to this:</p>
<pre>
checking for libgnomeui-2.0 >= 2.0.0 cspi-1.0 >= 1.1.7
libspi-1.0 >= 1.1.7 libbonobo-2.0 >= 2.0.0 atk >= 1.0.0
gtk+-2.0 >= 2.0.0 gail libwnck-1.0 esound... yes
</pre>
<p>This is a list of the components upon which this application relies
to build. Pay close attention to the hierarchical layout of the
<b>USE_GNOME</b> system; many components are implied from other
<b>USE_GNOME</b> directives. In the above example,
<tt>USE_GNOME= libgnomeui</tt> implies use of <tt>libbonoboui</tt>,
which implies <tt>libgnomecanvas</tt>, which implies
<tt>libglade2</tt>, which implies <tt>gtk20</tt>. Thus, even
though <tt>gtk+-2.0</tt> appears in the list of requisite components,
<tt>gtk20</tt> can be eliminated from the <b>USE_GNOME</b> list.
There are a number of other such redundancies that can be eliminated
from this list.</p>
<p>For the above list (taken from sysutils/gok), the following is
defined in the <tt>Makefile</tt>:
<pre>
USE_GNOME= gnomehack gnomeprefix libgnomeui atspi libwnck
</pre>
<h2>GNOME 1 Desktop vs. GNOME 2 Desktop</h2>
<p>Certain aspects of the <tt>GNOME 1</tt> desktop environment are
incompatible with certain aspects of the <tt>GNOME 2</tt> desktop
environment. To ensure that a user does not compile a <tt>GNOME 2</tt>
component against their <tt>GNOME 1</tt> environment (or vice versa),
the user may set <b>GNOME_DESKTOP_VERSION</b> in their
<tt>/etc/make.conf</tt>. Even if a user has not explicitly set
<b>GNOME_DESKTOP_VERSION</b>, the FreeBSD GNOME architecture will
attempt to automatically deduce the desktop currently installed by
examining which components are already installed.</p>
<p>If compilation of a <tt>GNOME 2</tt> port is attempted on a
<tt>GNOME_DESKTOP_VERSION=1</tt> system, the compilation will
immediately abort and the user will be informed of the incompatability.</p>
<p>If your application can handle both <tt>GNOME 1</tt> and <tt>GNOME 2</tt>
compilation, you may check the value of <b>GNOME_DESKTOP_VERSION</b> to
determine for which desktop your port is compiling. For example:</p>
<pre>
USE_X_PREFIX= yes
USE_GNOME= gnomeprefix gnomehack
.if (${GNOME_DESKTOP_VERSION} == "1")
CONFIGURE_ARGS+= --with-gnome
USE_GNOME+= gtk12 libpanel
.else
CONFIGURE_ARGS+= --with-gnome2
USE_GNOME+= gtk20 gnomepanel
.endif
</pre>
<p>In this example, specific <tt>CONFIGURE_ARGS</tt> and <b>USE_GNOME</b>
components are set depending upon which <b>GNOME_DESKTOP_VERSION</b> is
installed or preferred by the user.</p>
<h2>Optional GNOME Dependencies</h2>
<p>If your port can optionally use GNOME, you must set
<tt>WANT_GNOME= yes</tt> in your Makefile, then check to see if
<tt>HAVE_GNOME</tt> is set for each component from the list
@ -233,13 +176,13 @@ PLIST_SUB= DATADIR="share"
If <tt>libpanel</tt> is found, then it is added the list of
<tt>USE_GNOME</tt> dependencies, and the port-specific
<tt>--with-gnome</tt> <tt>CONFIGURE_ARG</tt> is passed.
In the old GNOME infrastructure, <tt>PKGNAMESUFFIX</tt> was
In an old GNOME infrastructure, <tt>PKGNAMESUFFIX</tt> was
automatically adjusted by the proper <tt>USE_*</tt> macro.
In GNOMENG, it is up to the individual porter to do this.
Now it is up to the individual porter to do this.
Our example port appends <tt>-gnome</tt> to the port name
to indicate it has been built with GNOME support. The same is
true for the <tt>DATADIR</tt> <tt>PLIST_SUB</tt>. In GNOMENG,
the individual porter must decide when do the <tt>DATADIR</tt>
true for the <tt>DATADIR</tt> <tt>PLIST_SUB</tt>. The
individual porter must decide when do the <tt>DATADIR</tt>
substitution. A good rule of thumb is to add the <tt>DATADIR</tt>
<tt>PLIST_SUB</tt> when using the <tt>gnomeprefix</tt>
component.
@ -260,57 +203,26 @@ USE_GNOME+= gtk12 # WRONG!
.endif
</pre>
<p>This will make GNOMENG think that GNOME <em>is</em> desired, and
mark the <tt>pkg-plist</tt> accordingly, thus breaking package
builds. If you need to add default <tt>USE_GNOME</tt>
components, do so <b>above</b> the <tt>
.include &lt;bsd.port.pre.mk&gt;</tt> line.
<p>This will make the build system think that GNOME <em>is</em>
desired, and mark the <tt>pkg-plist</tt> accordingly, thus
breaking package builds. If you need to add default
<tt>USE_GNOME</tt> components, do so <b>above</b> the
<tt> .include &lt;bsd.port.pre.mk&gt;</tt> line.
</p>
<p>To enforce use of optional GNOME dependencies unconditionally,
you can add <tt>WITH_GNOME= yes</tt> to <tt>/etc/make.conf</tt>
or on the make command line. This makes GNOMENG always return
or on the make command line. This will always return
true when checking for optional GNOME dependencies. If you
want GNOMENG to always return false when checking for optional
want the system to always return false when checking for optional
GNOME dependencies, you can add <tt>WITHOUT_GNOME= yes</tt>
to <tt>/etc/make.conf</tt> or to the make command line.
</p>
<p>Once you have finished with your port, it is a good idea to
verify that your port depends on the correct list of components.
To see a list of what packages your port will actually require,
use the command <tt>make package-depends</tt> from within
your port's directory.</p>
<p>More information on the USE_GNOME infrastructure can be found
by looking at the source and comments of
<tt>${PORTSDIR}/Mk/bsd.gnome.mk</tt>.</p>
<p>More information on GNOMENG can be found by looking at the source
and comments of <tt>${PORTSDIR}/Mk/bsd.gnomeng.mk</tt>.</p>
<p><b>Note:</b> GNOMENG is temporary. That is, it was put
in place so that ports could be gradually migrated from the old
infrastructure to the new one. Once all ports have been
migrated, the old porting infrastructure as well as the
<tt>USE_GNOMENG</tt> macro will be removed.</p>
<p>The old infrastructure used the following Makefile macros
for building GNOME or GTK+ ports:</p>
<pre>
USE_ESOUND
USE_GLIB
USE_GNOMECTRL
USE_GNOMELIBS
USE_GTK
USE_IMLIB
WANT_ESOUND
WANT_GLIB
WANT_GNOMECTRL
WANT_GNOMELIBS
WANT_GTK
WANT_IMLIB
</pre>
<p>These are now deprecated.</p>
<!-- End GNOME-related Makefile macros -->
<!-- Begin GNOME OMF -->
@ -328,15 +240,23 @@ WANT_IMLIB
listed.</p>
<pre>
@exec scrollkeeper-install -q %D/path/to/help_file.omf 2&gt;/dev/null || /usr/bin/true
@unexec scrollkeeper-uninstall -q %D/path/to/help_file.omf 2&gt;/dev/null || /usr/bin/true
@exec scrollkeeper-install -q \
%D/path/to/help_file.omf \
2&gt;/dev/null || /usr/bin/true
@unexec scrollkeeper-uninstall -q \
%D/path/to/help_file.omf \
2&gt;/dev/null || /usr/bin/true
</pre>
<p>For example:</p>
<pre>
@exec scrollkeeper-install -q %D/share/gnome/bug-buddy/bug-buddy-C.omf 2&gt;/dev/null || /usr/bin/true
@unexec scrollkeeper-uninstall -q %D/share/gnome/bug-buddy/bug-buddy-C.omf 2&gt;/dev/null || /usr/bin/true
@exec scrollkeeper-install -q \
%D/share/gnome/bug-buddy/bug-buddy-C.omf \
2&gt;/dev/null || /usr/bin/true
@unexec scrollkeeper-uninstall -q \
%D/share/gnome/bug-buddy/bug-buddy-C.omf \
2&gt;/dev/null || /usr/bin/true
</pre>
<!-- End GNOME OMF -->