%gnomeincludes; %includes; ]> &header;
| 
           This document assumes that you already know how port system works, and therefore only provides GNOME-specific hints and tips. General instructions can be found in the FreeBSD Porter's Handbook. GNOME Makefile MacrosFor ports that require GNOME, you should define the following in your port's Makefile: 
USE_GNOME=	yes
USE_X_PREFIX=	yes
          
          These will take care of the install prefix and requiring all the core GNOME dependencies. If your port can use GNOME, but it isn't required, you can define the following in your Makefile: 
WANT_GNOME=	yes
          
          If the ports system detects GNOME installed on the system then GNOME components will be built. Other useful GNOME-related macros that can be define in your port's Makefile include: 
 If your port can optionally use GNOME, you must set WANT_GNOME= yes in your Makefile, then check to see if HAVE_GNOME is set. Since this is a conditional evaluation, you need to stick it between bsd.port.pre.mk and bsd.port.post.mk. For example: 
WANT_GNOME=	yes
.include <bsd.port.pre.mk>
.if defined(HAVE_GNOME)
USE_GNOME=	yes
CONFIGURE_ARGS+=	--with-gnome
.else
CONFIGURE_ARGS+=	--without-gnome
.endif
.include <bsd.port.post.mk>
          
		  What happens here is WANT_GNOME tells the ports system to check for the existence of gnome-config. If it exists, HAVE_GNOME is set. If not, HAVE_GNOME remains unset. By setting USE_GNOME after checking for HAVE_GNOME the port will register all the GNOME dependencies properly. When building GNOME ports, remember that many applications require shared directories in ${PREFIX}/share/gnome. Ports should be constructed in a way such that files placed in these directories are removed before the package which created the directories (i.e. the package that has an appropriate @dirrm in its pkg-plist). For GNOME, the principle parent port is gnomecore. If your port incudes USE_GNOME= yes you should be fine. If you're uncertain if you need to require any other packages, you can use the script ${PORTSDIR}/Tools/scripts/gnomedepends.py to examine your port's pkg-plist: 
# cd /usr/ports/x11/mygnomeport
# /usr/ports/Tools/scripts/gnomedepends.py
According to the contents of pkg-plist the port depends on the following GNOME
port(s):
/usr/ports/mail/gmail, for directories:
	share/gnome/help
	share/gnome/apps
	share/gnome
/usr/ports/sysutils/gnomecontrolcenter, for directories:
	share/gnome/apps/Settings
	share/gnome/apps
/usr/ports/textproc/scrollkeeper, for directories:
	share/gnome/omf
	share/gnome
/usr/ports/x11/gnomecore, for directories:
	share/gnome/apps/System
/usr/ports/x11/gnomelibs, for directories:
	share/gnome/pixmaps
	share/gnome/help
          
		  To see a list of what packages your port will actually require, use the command make package-depends. GNOME InternationalizationGNOME relies on the gettext port to do internationalization (I18N). FreeBSD currently supports two versions of gettext: 0.10.35 and 0.11.1. Most ports can use 0.11.1. However, if, when compiling your port, you get an error building the .po translation files need to use the older version of gettext. To use the older gettext, add the following to your port's Makefile: 
BUILD_DEPENDS=  msgfmt-old:${PORTSDIR}/devel/gettext-old
CONFIGURE_ENV+= MSGFMT=${LOCALBASE}/bin/msgfmt-old \
	XGETTEXT=${LOCALBASE}/bin/xgettext-old
	  
	  When installing GNOME applications, make sure the translation files are put in /usr/X11R6/share/locale and not /usr/X11R6/share/gnome/locale. To do this, add the following to your port's Makefile's pre-patch: section: 
pre-patch:
	@find ${WRKSRC} -name "Makefile.in*" | xargs ${PERL} -pi -e \
		's|\$\(datadir\)/gnome/|\$\(datadir\)/|g ; \
		 s|\$\(datadir\)/locale|\$\(prefix\)/share/locale|g'
          
	  Also, make sure the translation files are installed as .mo files and not .gmo files. To do this, you can generally use this patch. Libtool IssuesMost if not all GNOME applications depend on GNU's libtool. They also use the GNU configure system. Newer versions of libtool have a problem with FreeBSD's USE_LIBTOOL macro. Use of this macro should be avoided. Instead, set GNU_CONFIGURE= yes, and use the following patch. This patch prevents the installation of .la files, prevents the building and installation of static archive libraries, and ensures that -pthread will be passed to the linker. DistfilesAs GNOME 2.0 gains developer momentum, things must be done to sort out the new GNOME 2.0 distfiles from the GNOME 1.0 distfiles, as well as do our part to keep the distfiles directory clean. To do this, GNOME 1.0 ports that download their distfiles from ${MASTER_SITE_GNOME} must add the following to their Makefile: 
DIST_SUBDIR=    gnome
      
	  GNOME 2.0 ports that download their distfiles from ${MASTER_SITE_GNOME} must include the following in their Makefile: DIST_SUBDIR= gnome2 Some GNOME distfiles come in both tar gzip as well as tar bzip2 format. To save time when downloading distfiles over slow links, you should use the bzip2 distfiles whenever possible. To do this, add the following to your port's Makefile: USE_BZIP2= yes If you still need help with your port, have a look at some of the existing ports for examples. The freebsd-gnome mailing list is also there for you.  |