Initial import, synchronized with English 1.34
This commit is contained in:
parent
1bf5f7fe14
commit
1b8cbc97e6
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/www/; revision=18677
1 changed files with 307 additions and 0 deletions
307
ru/gnome/docs/porting.sgml
Normal file
307
ru/gnome/docs/porting.sgml
Normal file
|
@ -0,0 +1,307 @@
|
||||||
|
<!--
|
||||||
|
The FreeBSD Russian Documentation Project
|
||||||
|
|
||||||
|
$FreeBSDru: frdp/www/ru/gnome/docs/porting.sgml,v 1.1 2003/11/02 10:03:55 andy Exp $
|
||||||
|
|
||||||
|
Original revision: 1.34
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" [
|
||||||
|
<!ENTITY base CDATA "../../..">
|
||||||
|
<!ENTITY date "$FreeBSD: www/en/gnome/docs/porting.sgml,v 1.34 2003/10/02 22:01:04 marcus Exp $">
|
||||||
|
<!ENTITY title "Проект FreeBSD GNOME: Как создать порт">
|
||||||
|
<!ENTITY % gnomeincludes SYSTEM "../includes.sgml"> %gnomeincludes;
|
||||||
|
<!ENTITY % includes SYSTEM "../../includes.sgml"> %includes;
|
||||||
|
]>
|
||||||
|
|
||||||
|
<html>
|
||||||
|
&header;
|
||||||
|
|
||||||
|
<p>В этом документе предполагается, что вы уже знаете, как работает система
|
||||||
|
портов, и поэтому здесь даётся только специфичные для GNOME советы и
|
||||||
|
замечания. Инструкции общего характера можно найти в <a
|
||||||
|
href="http://www.freebsd.org/doc/en_US.ISO8859-1/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>
|
Loading…
Reference in a new issue