5305bb945d
- 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>
|