- Move includes.nav*.sgml to share/sgml/navibar.ent and
   <lang>/share/sgml/navibar.l10n.ent.
 - Move includes.sgml and includes.xsl to
   share/sgml/common.ent, share/sgml/header.ent, <lang>/share/sgml/l10n.ent,
   and <lang>/share/sgml/header.l10n.ent.
 - Move most of XSLT libraries to share/sgml/*.xsl and
   <lang>/share/sgml/*.xsl.
 - Move news.xml and other *.xml files for the similar purpose
   to share/sgml/*.xml and <lang>/share/sgml/*.xml.
 - Switch to use a custom DTD for HTML document.  Now we use
   "-//FreeBSD//DTD HTML 4.01 Transitional-Based Extension", which is
   HTML 4.01 + some entities previously pulled via
   "<!ENTITY % includes SYSTEM "includes.sgml"> %includes;" line.
   The location of entity file will be resolved by using catalog file.
 - Add DOCTYPE declearation to XML documents.  This makes the followings
   possible:
   * Use of &foo; entities for SGML in an XML file instead of defining
     {$foo} as the same content.
   * &symbolic; entities for Latin characters.
 - Duplicated information between SGML and XML, or English and
   translated doc, has been removed as much as possible.
		
	
			
		
			
				
	
	
		
			307 lines
		
	
	
	
		
			12 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			307 lines
		
	
	
	
		
			12 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| <!--
 | ||
|      The FreeBSD Russian Documentation Project
 | ||
| 
 | ||
|      $FreeBSDru: frdp/www/ru/gnome/docs/porting.sgml,v 1.4 2004/09/21 07:31:07 den Exp $
 | ||
| 
 | ||
|      Original revision: 1.34
 | ||
| -->
 | ||
| 
 | ||
| <!DOCTYPE HTML PUBLIC "-//FreeBSD//DTD HTML 4.01 Transitional-Based Extension//EN" [
 | ||
| <!ENTITY base CDATA "../..">
 | ||
| <!ENTITY date "$FreeBSD: www/ru/gnome/docs/porting.sgml,v 1.4 2005/10/05 20:59:53 simon Exp $">
 | ||
| <!ENTITY title "Проект FreeBSD GNOME: Как создать порт">
 | ||
| <!ENTITY % navinclude.developers "INCLUDE">
 | ||
| <!ENTITY % gnomeincludes SYSTEM "../includes.sgml"> %gnomeincludes;
 | ||
| ]>
 | ||
| 
 | ||
| <html>
 | ||
|   &header;
 | ||
| 
 | ||
|   <p>В этом документе предполагается, что вы уже знаете, как работает система
 | ||
|     портов, и поэтому здесь даётся только специфичные для GNOME советы и
 | ||
|     замечания.  Инструкции общего характера можно найти в <a
 | ||
|     href="http://www.freebsd.org/doc/ru_RU.KOI8-R/books/porters-handbook/index.html">
 | ||
|     Руководстве по созданию портов FreeBSD</a>.</p>
 | ||
| 
 | ||
|   <h2>Макросы GNOME для Makefile</h2>
 | ||
| 
 | ||
|   <p>Приложения GNOME во FreeBSD используют инфраструктуру <b>USE_GNOME</b>.
 | ||
|     Для указания того, какие компоненты системы GNOME нужны вашему порту для
 | ||
|     построения, просто перечислите их все списком через пробел.  Например:</p>
 | ||
| 
 | ||
|   <pre>
 | ||
| USE_X_PREFIX=	yes
 | ||
| USE_GNOME=	gnomeprefix gnomehack libgnomeui
 | ||
|   </pre>
 | ||
| 
 | ||
|   <p>Компоненты <b>USE_GNOME</b> делятся на две следующие категории:</p>
 | ||
| 
 | ||
|   <ul>
 | ||
|     <li><p><a href="gnome2_porting.html">Компоненты GNOME 2</a></p></li>
 | ||
| 
 | ||
|     <li><p><a href="gnome_porting.html">Компоненты GNOME 1</a></p></li>
 | ||
|   </ul>
 | ||
| 
 | ||
|   <!-- I'm not sold on the utility of this section -->
 | ||
| 
 | ||
|   <p>Если вашему порту нужны только библиотеки <b>GTK2</b>, то кратчайшим
 | ||
|     способом указать на это является следующий:</p>
 | ||
| 
 | ||
|   <pre>
 | ||
| USE_X_PREFIX=	yes
 | ||
| USE_GNOME=	gtk20
 | ||
|   </pre>
 | ||
| 
 | ||
|   <p>Если вашему порту требуются только библиотеки <b>GTK1</b>, то кратчайшим
 | ||
|     способом указать на это является следующий:</p>
 | ||
| 
 | ||
|   <pre>
 | ||
| USE_X_PREFIX=	yes
 | ||
| USE_GNOME=	gtk12
 | ||
|   </pre>
 | ||
| 
 | ||
|   <p>Даже если ваше приложение требует только библиотеки GTK, другие компоненты
 | ||
|     <b>USE_GNOME</b> могут оказаться полезными.  Пожалуйста, просмотрите весь
 | ||
|     список, чтобы удостовериться в том, что ваш порт использует все нужные
 | ||
|     компоненты.</p>
 | ||
| 
 | ||
| <!-- end questionable section -->
 | ||
| 
 | ||
|   <p>Как только вы закончите работу над своим портом, не помешает проверить,
 | ||
|     что он зависит от правильного списка компонентов.  Чтобы увидеть перечень
 | ||
|     пакаджей, от которых действительно зависит ваш порт, воспользуйтесь
 | ||
|     командой <tt>make package-depends</tt>, которую нужно выдать из каталога
 | ||
|     вашего порта.</p>
 | ||
| 
 | ||
|   <p>В облегчении создания перечня необходимых компонентов может помочь анализ
 | ||
|     выдачи команды <tt>make configure</tt>.  В конце списка
 | ||
|     <tt>checking for...</tt> будет находиться строка вроде следующей:</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>Это список компонентов, которые используются приложением при построении.
 | ||
|     Обратите особое внимание на иерархический характер системы
 | ||
|     <b>USE_GNOME</b>; многие компоненты включаются из других директив
 | ||
|     <b>USE_GNOME</b>.  В примере выше <tt>USE_GNOME= libgnomeui</tt>
 | ||
|     подразумевает использование <tt>libbonoboui</tt>, что приводит к
 | ||
|     использованию <tt>libgnomecanvas</tt>, что приводит к использованию
 | ||
|     <tt>libglade2</tt>, которая использует <tt>gtk20</tt>.  Таким образом, даже
 | ||
|     если <tt>gtk+-2.0</tt> появляется в списке необходимых компонентов,
 | ||
|     <tt>gtk20</tt> можно исключить из списка <b>USE_GNOME</b>.  Имеется
 | ||
|     некоторое количество других таких случаев избыточности, которые можно
 | ||
|     исключить из этого списка.</p>
 | ||
| 
 | ||
|   <p>Для списка выше (взятого из <tt>sysutils/gok</tt>), в <tt>Makefile</tt>
 | ||
|     определено следующее:
 | ||
| 
 | ||
|   <pre>
 | ||
| USE_GNOME=	gnomehack gnomeprefix libgnomeui atspi libwnck
 | ||
|   </pre>
 | ||
| 
 | ||
|   <h2>Оболочка GNOME 1 против Оболочки GNOME 2</h2>
 | ||
| 
 | ||
|   <p>Изначально была только <tt>GNOME 1</tt>.  Когда появилась оболочка
 | ||
|     <tt>GNOME 2</tt>, была обеспечена максимальная совместимость с предыдущей
 | ||
|     версией, по понятным причинам.  Приложения <tt>GNOME 1</tt> могли нормально
 | ||
|     работать в оболочке <tt>GNOME 2</tt>, при условии, что они не используют
 | ||
|     специфичную для оболочки <tt>GNOME 1</tt> функциональность.</p>
 | ||
| 
 | ||
|   <p>Оболочка <tt>GNOME 1</tt> и все приложения, которые не работали в оболочке
 | ||
|     <tt>GNOME 2</tt>, были удалены из дерева портов.</p>
 | ||
| 
 | ||
|   <p>Для вас, как создателя порта приложения, это означает, что вы просто не
 | ||
|     должны добавлять приложения, специфичные для <tt>GNOME 1</tt>, в дерево
 | ||
|     портов.</p>
 | ||
| 
 | ||
|   <p>Если вы хотите определить, какая версия оболочки GNOME используется на
 | ||
|     машине пользователя, вы можете проверить значение переменной
 | ||
|     <b>GNOME_DESKTOP_VERSION</b>.  Значение этой переменной устанавливается в
 | ||
|     значение <tt>"1"</tt> или <tt>"2"</tt>, в зависимости от того, установлена
 | ||
|     ли версия оболочки <tt>GNOME 1</tt> или <tt>GNOME 2</tt>.</p>
 | ||
| 
 | ||
|   <h2>Опциональные зависимости GNOME</h2>
 | ||
| 
 | ||
|   <p>Если ваш порт может опционально использовать GNOME, вы должны задать
 | ||
|     <tt>WANT_GNOME= yes</tt> в вашем файле Makefile, а затем проверить, задана
 | ||
|     ли переменная <tt>HAVE_GNOME</tt> для каждого компонента из списка выше,
 | ||
|     которые может использовать ваш порт.  Так как это проверка выполнения
 | ||
|     условия, вам нужно поместить её между <tt>bsd.port.pre.mk</tt> и
 | ||
|     <tt>bsd.port.post.mk</tt>.  Например:</p>
 | ||
| 
 | ||
|   <pre>
 | ||
| WANT_GNOME=	yes
 | ||
| 
 | ||
| .include <bsd.port.pre.mk>
 | ||
| 
 | ||
| .if ${HAVE_GNOME:Mgnomepanel}!=""
 | ||
| 	USE_GNOME+=	gnomeprefix gnomepanel
 | ||
| 	CONFIGURE_ARGS+=	--with-gnome
 | ||
| 	PKGNAMESUFFIX=	-gnome
 | ||
| 	PLIST_SUB=	DATADIR="share/gnome"
 | ||
| .else
 | ||
| 	CONFIGURE_ARGS+=	--without-gnome
 | ||
| 	PLIST_SUB=	DATADIR="share"
 | ||
| .endif
 | ||
| 
 | ||
| .include <bsd.port.post.mk>
 | ||
|   </pre>
 | ||
| 
 | ||
|   <p>Здесь <tt>WANT_GNOME</tt> указывает системе портов на проверку
 | ||
|     существования различных компонент GNOME, перечисленных выше.  Для каждого
 | ||
|     найденного компонента его имя добавляется к <tt>HAVE_GNOME</tt>.  Так как
 | ||
|     этот порт может использовать <tt>gnomepanel</tt>, мы проверяем переменную
 | ||
|     <tt>HAVE_GNOME</tt> на предмет включения в неё <tt>gnomepanel</tt> (для
 | ||
|     выяснения более полной информации о синтаксисе make-строки
 | ||
|     :M<tt>pattern</tt>, пожалуйста, обратитесь к <a
 | ||
|     href="http://www.freebsd.org/cgi/man.cgi?query=make&apropos=0&sektion=0&manpath=FreeBSD+4.6-stable&format=html">
 | ||
|     страницам справочника о make(1)</a>).  Если будет найден компонент
 | ||
|     <tt>gnomepanel</tt>, то он будет добавлен к списку зависимостей
 | ||
|     <tt>USE_GNOME</tt>, и будут переданы специфичные для порта
 | ||
|     <tt>--with-gnome</tt> <tt>CONFIGURE_ARG</tt>.  В старой инфраструктуре
 | ||
|     GNOME переменная <tt>PKGNAMESUFFIX</tt> автоматически перенастраивалась
 | ||
|     на полноценный макрос <tt>USE_*</tt>.  Теперь это отдано человеку,
 | ||
|     создающему порт.  В нашем примерном порте к его имени добавляется
 | ||
|     <tt>-gnome</tt> для указания на то, что он строится с поддержкой GNOME.
 | ||
|     То же самое имеет место и для <tt>DATADIR</tt> <tt>PLIST_SUB</tt>.
 | ||
|     Создатель порта должен решить, когда выполнять подстановку
 | ||
|     <tt>DATADIR</tt>.  Хорошим правилом является добавление <tt>DATADIR</tt>
 | ||
|     <tt>PLIST_SUB</tt> при использовании компонента <tt>gnomeprefix</tt>.</p>
 | ||
| 
 | ||
|   <p><b>Замечание:</b> Вы не можете добавлять дополнительные компоненты
 | ||
|     <tt>USE_GNOME</tt>, используемые по умолчанию, после
 | ||
|     <tt>.include <bsd.port.pre.mk></tt>.  Поэтому следующее использование
 | ||
|     будет <font color="#FF0000"><b>неправильным</b></font>:</p>
 | ||
| 
 | ||
|   <pre>
 | ||
| .include <bsd.port.pre.mk>
 | ||
| 
 | ||
| .if ${HAVE_GNOME:Mgnomelibs}!=""
 | ||
| 	USE_GNOME+=	libgnome
 | ||
| .else
 | ||
| 	USE_GNOME+=	gtk12  # ОШИБКА!
 | ||
| .endif
 | ||
|   </pre>
 | ||
| 
 | ||
|   <p>Это заставит систему построения думать, что требуется использование GNOME,
 | ||
|     и тогда <tt>pkg-plist</tt> будет изменён соответствующим образом, что
 | ||
|     приведёт к ошибке при построении пакаджа.  Если вы хотите добавить
 | ||
|     используемые по умолчанию компоненты <tt>USE_GNOME</tt>, сделайте это
 | ||
|     <b>перед</b> строкой <tt> .include <bsd.port.pre.mk></tt>.</p>
 | ||
| 
 | ||
|   <p>Чтобы принудительно вызвать безусловное использование опциональных
 | ||
|     зависимостей GNOME, вы можете добавить <tt>WITH_GNOME= yes</tt> в файл
 | ||
|     <tt>/etc/make.conf</tt> или в командную строку make.  При этом при проверке
 | ||
|     зависимости от GNOME будет всегда возвращаться возвращаться положительное
 | ||
|     значение.  Если вы хотите, чтобы система всегда возвращала отрицательный
 | ||
|     результат при проверке на зависимость от GNOME, вы можете добавить
 | ||
|     <tt>WITHOUT_GNOME= yes</tt> в <tt>/etc/make.conf</tt> или командную строку
 | ||
|     make.</p>
 | ||
| 
 | ||
|   <p>Дополнительную информацию об инфраструктуре USE_GNOME можно найти при
 | ||
|     просмотре исходных текстов и комментариев в файле
 | ||
|     <tt>${PORTSDIR}/Mk/bsd.gnome.mk</tt>.</p>
 | ||
| 
 | ||
| <!-- End GNOME-related Makefile macros -->
 | ||
| 
 | ||
| <!-- Begin GNOME OMF -->
 | ||
|   <h2>Установка OMF</h2>
 | ||
| 
 | ||
|   <p>Большое количество приложений GNOME (особенно приложения GNOME 2)
 | ||
|     устанавливают файлы Open Source Metadata Framework (OMF), которые содержат
 | ||
|     информацию о файлах справки для этих приложений,  Эти OMF-файлы требуют
 | ||
|     особой обработки через ScrollKeeper для того, чтобы такие приложения, как
 | ||
|     Yelp могли находить справочную документацию.  Для выполнения полноценной
 | ||
|     регистрации этих файлов OMF при установке приложений GNOME из пакаджей
 | ||
|     вы должны проверить, что файл <tt>pkg-plist</tt> вашего порта имеет
 | ||
|     следующие описания для <em>каждого</em> перечисленного файла OMF.</p>
 | ||
| 
 | ||
|   <pre>
 | ||
| @exec scrollkeeper-install -q \
 | ||
| 	%D/path/to/help_file.omf \
 | ||
| 	2>/dev/null || /usr/bin/true
 | ||
| @unexec scrollkeeper-uninstall -q \
 | ||
| 	%D/path/to/help_file.omf \
 | ||
| 	2>/dev/null || /usr/bin/true
 | ||
|   </pre>
 | ||
| 
 | ||
|   <p>К примеру:</p>
 | ||
| 
 | ||
|   <pre>
 | ||
| @exec scrollkeeper-install -q \
 | ||
| 	%D/share/gnome/bug-buddy/bug-buddy-C.omf \
 | ||
| 	2>/dev/null || /usr/bin/true
 | ||
| @unexec scrollkeeper-uninstall -q \
 | ||
| 	%D/share/gnome/bug-buddy/bug-buddy-C.omf \
 | ||
| 	2>/dev/null || /usr/bin/true
 | ||
|   </pre>
 | ||
| 
 | ||
| <!-- End GNOME OMF -->
 | ||
| 
 | ||
| <!-- Begin GNOME libtool -->
 | ||
|   <h2>Проблемы с libtool</h2>
 | ||
| 
 | ||
|   <p>Большинство, если не все, приложений GNOME зависит от GNU libtool.  Они
 | ||
|     также используют систему конфигурации GNU configure.  Если ваш порт
 | ||
|     устанавливает совместно используемые библиотеки, вы должны добавить строку
 | ||
|     <tt>USE_LIBTOOL= yes</tt> к Makefile вашего порта.  При этом будут учтены
 | ||
|     все требования при использовании libtool, но это не избавит от таких вещей,
 | ||
|     как установка файлов .la.  Для обеспечения корректной установки совместно
 | ||
|     используемой библиотеки не забудьте также добавить следующую строку в
 | ||
|     скрипт <tt>configure</tt> вашего порта непосредственно после строки
 | ||
|     <tt>LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"</tt>:</p>
 | ||
| 
 | ||
|   <pre>
 | ||
| $ac_aux_dir/ltconfig $LIBTOOL_DEPS
 | ||
|   </pre>
 | ||
| 	    
 | ||
|   <p>Это отменит установку файлов .la и обеспечит передачу параметра
 | ||
|     <tt>${PTHREAD_LIBS}</tt> компоновщику.</p>
 | ||
| 
 | ||
| <!-- End GNOME libtool -->
 | ||
| 
 | ||
| <!-- Begin GNOME distfiles -->
 | ||
|   <h2>Дистрибутивные файлы</h2>
 | ||
| 
 | ||
|   <p>Для отделения дистрибутивных файлов GNOME 2 от дистрибутивных файлов GNOME
 | ||
|     1 и для обеспечения чистоты каталога с дистрибутивными файлами, порты GNOME
 | ||
|     1, которые сгружают свои дистрибутивные файлы с
 | ||
|     <tt>${MASTER_SITE_GNOME}</tt>, должны иметь следующую строку в своём
 | ||
|     Makefile:</p>
 | ||
| 
 | ||
|   <pre>
 | ||
| DIST_SUBDIR=    gnome
 | ||
|   </pre>
 | ||
| 
 | ||
|   <p>Порты GNOME 2, которые сгружают свои дистрибутивные файлы с
 | ||
|     <tt>${MASTER_SITE_GNOME}</tt>, должны иметь следующую строку в своём
 | ||
|     Makefile:</p>
 | ||
| 
 | ||
|   <pre>
 | ||
| DIST_SUBDIR=    gnome2
 | ||
|   </pre>
 | ||
| 
 | ||
|   <p>Некоторые дистрибутивные файлы GNOME распространяются как в формате
 | ||
|     tar gzip, так и tar bzip2.  Для экономии времени при сгрузке дистрибутивных
 | ||
|     файлов по медленным каналам связи вы должны использовать дистрибутивные
 | ||
|     файлы bzip2 там, где это возможно.  Для этого добавьте следующую строку
 | ||
|     в Makefile вашего порта:</p>
 | ||
| 
 | ||
|   <pre>
 | ||
| USE_BZIP2=  yes
 | ||
|   </pre>
 | ||
| 
 | ||
| <!-- End GNOME distfiles -->
 | ||
| 
 | ||
|   <p>Если вам нужна помощь при работе с портом, для примера взгляните на
 | ||
|     некоторые из <a href="/ports/gnome.html">существующих портов</a>.  К вашим
 | ||
|     услугам также и <a href="mailto:&email;@FreeBSD.org">список рассылки
 | ||
|     freebsd-gnome</a>.</p>
 | ||
| 
 | ||
|   &footer;
 | ||
| 
 | ||
|   </body>
 | ||
| </html>
 |